diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/Depend b/ap/libc/glibc/glibc-2.23/stdio-common/Depend
new file mode 100644
index 0000000..f3e1156
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/Depend
@@ -0,0 +1 @@
+localedata
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/Makefile b/ap/libc/glibc/glibc-2.23/stdio-common/Makefile
new file mode 100644
index 0000000..cc79d34
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/Makefile
@@ -0,0 +1,150 @@
+# Copyright (C) 1991-2016 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+#
+#	Specific makefile for stdio-common.
+#
+subdir	:= stdio-common
+
+include ../Makeconfig
+
+headers	:= stdio_ext.h printf.h bits/printf-ldbl.h bits/stdio_lim.h
+
+routines	:=							      \
+	ctermid cuserid							      \
+	_itoa _itowa itoa-digits itoa-udigits itowa-digits		      \
+	vfprintf vprintf printf_fp reg-printf printf-prs printf_fphex	      \
+	reg-modifier reg-type						      \
+	printf_size fprintf printf snprintf sprintf asprintf dprintf	      \
+	vfwprintf vfscanf vfwscanf					      \
+	fscanf scanf sscanf						      \
+	perror psignal							      \
+	tmpfile tmpfile64 tmpnam tmpnam_r tempnam tempname		      \
+	getline getw putw						      \
+	remove rename renameat						      \
+	flockfile ftrylockfile funlockfile				      \
+	isoc99_scanf isoc99_vscanf isoc99_fscanf isoc99_vfscanf isoc99_sscanf \
+	isoc99_vsscanf							      \
+	psiginfo
+
+aux	:= errlist siglist printf-parsemb printf-parsewc fxprintf
+
+tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
+	 temptest tst-fileno test-fwrite tst-ungetc tst-ferror \
+	 xbug errnobug \
+	 bug1 bug2 bug3 bug4 bug5 bug6 bug7 bug8 bug9 bug10 bug11 bug12 bug13 \
+	 tfformat tiformat tllformat tstdiomisc tst-printfsz tst-wc-printf \
+	 scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 scanf10 \
+	 scanf11 scanf12 tst-tmpnam tst-cookie tst-obprintf tst-sscanf \
+	 tst-swprintf tst-fseek tst-fmemopen test-vfprintf tst-gets \
+	 tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 \
+	 tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \
+	 tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \
+	 bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \
+	 scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 \
+	 bug-vfprintf-nargs tst-long-dbl-fphex tst-fphex-wide tst-sprintf3 \
+	 bug25 tst-printf-round bug23-2 bug23-3 bug23-4 bug26 tst-fmemopen3 \
+	 tst-printf-bz18872
+
+test-srcs = tst-unbputc tst-printf
+
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)tst-unbputc.out $(objpfx)tst-printf.out \
+		 $(objpfx)tst-printf-bz18872-mem.out \
+		 $(objpfx)tst-setvbuf1-cmp.out
+generated += tst-printf-bz18872.c tst-printf-bz18872.mtrace \
+	     tst-printf-bz18872-mem.out
+endif
+
+include ../Rules
+
+ifeq ($(run-built-tests),yes)
+LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ISO-8859-1 ja_JP.EUC-JP
+include ../gen-locales.mk
+
+$(objpfx)bug14.out: $(gen-locales)
+$(objpfx)scanf13.out: $(gen-locales)
+$(objpfx)test-vfprintf.out: $(gen-locales)
+$(objpfx)tst-grouping.out: $(gen-locales)
+$(objpfx)tst-sprintf.out: $(gen-locales)
+$(objpfx)tst-sscanf.out: $(gen-locales)
+$(objpfx)tst-swprintf.out: $(gen-locales)
+endif
+
+tst-printf-bz18872-ENV = MALLOC_TRACE=$(objpfx)tst-printf-bz18872.mtrace
+
+$(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc
+	$(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
+	$(evaluate-test)
+
+$(objpfx)tst-printf.out: tst-printf.sh $(objpfx)tst-printf
+	$(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
+	$(evaluate-test)
+
+# We generate this source because it requires a printf invocation with
+# 10K arguments.
+$(objpfx)tst-printf-bz18872.c: tst-printf-bz18872.sh
+	rm -f $@ && $(BASH) $^ > $@.new && mv $@.new $@
+
+$(objpfx)tst-printf-bz18872-mem.out: $(objpfx)tst-printf-bz18872.out
+	$(common-objpfx)malloc/mtrace $(objpfx)tst-printf-bz18872.mtrace > $@; \
+	$(evaluate-test)
+
+CFLAGS-vfprintf.c = -Wno-uninitialized
+CFLAGS-vfwprintf.c = -Wno-uninitialized
+
+CFLAGS-tmpfile.c = -fexceptions
+CFLAGS-tmpfile64.c = -fexceptions
+CFLAGS-tempname.c = -fexceptions
+CFLAGS-psignal.c = -fexceptions
+CFLAGS-vprintf.c = -fexceptions
+CFLAGS-cuserid.c = -fexceptions
+
+CFLAGS-vfprintf.c += -fexceptions
+CFLAGS-fprintf.c += -fexceptions
+CFLAGS-printf.c += -fexceptions
+CFLAGS-vfwprintf.c += -fexceptions
+CFLAGS-vfscanf.c += -fexceptions
+CFLAGS-vfwscanf.c += -fexceptions
+CFLAGS-fscanf.c += -fexceptions
+CFLAGS-scanf.c += -fexceptions
+CFLAGS-isoc99_vfscanf.c += -fexceptions
+CFLAGS-isoc99_vscanf.c += -fexceptions
+CFLAGS-isoc99_fscanf.c += -fexceptions
+CFLAGS-isoc99_scanf.c += -fexceptions
+CFLAGS-errlist.c = $(fno-unit-at-a-time)
+CFLAGS-siglist.c = $(fno-unit-at-a-time)
+
+# The following is a hack since we must compile scanf1{5,7}.c without any
+# GNU extension.  The latter are needed, though, when internal headers
+# are used.  So made sure we see the installed headers first.
+CFLAGS-scanf15.c = -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \
+		   -I../wctype
+CFLAGS-scanf17.c = -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \
+		   -I../wctype
+
+CPPFLAGS += $(libio-mtsafe)
+
+$(objpfx)tst-setvbuf1.out: /dev/null $(objpfx)tst-setvbuf1
+	$(test-program-cmd) > $@ 2>&1; \
+	$(evaluate-test)
+
+$(objpfx)tst-setvbuf1-cmp.out: tst-setvbuf1.expect $(objpfx)tst-setvbuf1.out
+	cmp $^ > $@; \
+	$(evaluate-test)
+
+$(objpfx)tst-printf-round: $(libm)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/Versions b/ap/libc/glibc/glibc-2.23/stdio-common/Versions
new file mode 100644
index 0000000..06b96f6
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/Versions
@@ -0,0 +1,64 @@
+libc {
+  GLIBC_2.0 {
+    # global variables
+    _sys_errlist; _sys_nerr; _sys_siglist;
+
+    # functions used in other libraries
+    __printf_fp; __vfscanf;
+
+    # variables in normal name space
+    sys_errlist; sys_nerr; sys_sigabbrev; sys_siglist;
+
+    # a*
+    asprintf;
+
+    # c*
+    ctermid; cuserid;
+
+    # d*
+    dprintf;
+
+    # f*
+    flockfile; fprintf; fscanf; ftrylockfile; funlockfile;
+
+    # g*
+    getline; getw;
+
+    # p*
+    parse_printf_format; perror; printf; putw;
+
+    # r*
+    register_printf_function; remove; rename;
+
+    # s*
+    scanf; snprintf; sprintf; sscanf;
+
+    # t*
+    tempnam; tmpfile; tmpnam; tmpnam_r;
+
+    # v*
+    vfprintf; vfscanf; vprintf;
+  }
+  GLIBC_2.1 {
+    # p*
+    printf_size; printf_size_info;
+
+    # t*
+    tmpfile; tmpfile64;
+  }
+  GLIBC_2.4 {
+    renameat;
+  }
+  GLIBC_2.7 {
+    __isoc99_scanf; __isoc99_vscanf; __isoc99_fscanf; __isoc99_vfscanf;
+    __isoc99_sscanf; __isoc99_vsscanf;
+  }
+  GLIBC_2.10 {
+    psiginfo;
+    register_printf_modifier; register_printf_type; register_printf_specifier;
+  }
+  GLIBC_PRIVATE {
+    # global variables
+    _itoa_lower_digits;
+  }
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/_i18n_number.h b/ap/libc/glibc/glibc-2.23/stdio-common/_i18n_number.h
new file mode 100644
index 0000000..324297b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/_i18n_number.h
@@ -0,0 +1,117 @@
+/* Copyright (C) 2000-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.org>, 2000.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdbool.h>
+#include <wchar.h>
+#include <wctype.h>
+
+#include "../locale/outdigits.h"
+#include "../locale/outdigitswc.h"
+
+static CHAR_T *
+_i18n_number_rewrite (CHAR_T *w, CHAR_T *rear_ptr, CHAR_T *end)
+{
+#ifdef COMPILE_WPRINTF
+# define decimal NULL
+# define thousands NULL
+#else
+  char decimal[MB_LEN_MAX + 1];
+  char thousands[MB_LEN_MAX + 1];
+#endif
+
+  /* "to_outpunct" is a map from ASCII decimal point and thousands-sep
+     to their equivalent in locale. This is defined for locales which
+     use extra decimal point and thousands-sep.  */
+  wctrans_t map = __wctrans ("to_outpunct");
+  wint_t wdecimal = __towctrans (L'.', map);
+  wint_t wthousands = __towctrans (L',', map);
+
+#ifndef COMPILE_WPRINTF
+  if (__glibc_unlikely (map != NULL))
+    {
+      mbstate_t state;
+      memset (&state, '\0', sizeof (state));
+
+      size_t n = __wcrtomb (decimal, wdecimal, &state);
+      if (n == (size_t) -1)
+	memcpy (decimal, ".", 2);
+      else
+	decimal[n] = '\0';
+
+      memset (&state, '\0', sizeof (state));
+
+      n = __wcrtomb (thousands, wthousands, &state);
+      if (n == (size_t) -1)
+	memcpy (thousands, ",", 2);
+      else
+	thousands[n] = '\0';
+    }
+#endif
+
+  /* Copy existing string so that nothing gets overwritten.  */
+  CHAR_T *src;
+  bool use_alloca = __libc_use_alloca ((rear_ptr - w) * sizeof (CHAR_T));
+  if (__builtin_expect (use_alloca, true))
+    src = (CHAR_T *) alloca ((rear_ptr - w) * sizeof (CHAR_T));
+  else
+    {
+      src = (CHAR_T *) malloc ((rear_ptr - w) * sizeof (CHAR_T));
+      if (src == NULL)
+	/* If we cannot allocate the memory don't rewrite the string.
+	   It is better than nothing.  */
+	return w;
+    }
+
+  CHAR_T *s = (CHAR_T *) __mempcpy (src, w,
+				    (rear_ptr - w) * sizeof (CHAR_T));
+
+  w = end;
+
+  /* Process all characters in the string.  */
+  while (--s >= src)
+    {
+      if (*s >= '0' && *s <= '9')
+	{
+	  if (sizeof (CHAR_T) == 1)
+	    w = (CHAR_T *) outdigit_value ((char *) w, *s - '0');
+	  else
+	    *--w = (CHAR_T) outdigitwc_value (*s - '0');
+	}
+      else if (__builtin_expect (map == NULL, 1) || (*s != '.' && *s != ','))
+	*--w = *s;
+      else
+	{
+	  if (sizeof (CHAR_T) == 1)
+	    {
+	      const char *outpunct = *s == '.' ? decimal : thousands;
+	      size_t dlen = strlen (outpunct);
+
+	      w -= dlen;
+	      while (dlen-- > 0)
+		w[dlen] = outpunct[dlen];
+	    }
+	  else
+	    *--w = *s == '.' ? (CHAR_T) wdecimal : (CHAR_T) wthousands;
+	}
+    }
+
+  if (! use_alloca)
+    free (src);
+
+  return w;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/_itoa.c b/ap/libc/glibc/glibc-2.23/stdio-common/_itoa.c
new file mode 100644
index 0000000..b05c59b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/_itoa.c
@@ -0,0 +1,479 @@
+/* Internal function for converting integers to ASCII.
+   Copyright (C) 1994-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Torbjorn Granlund <tege@matematik.su.se>
+   and Ulrich Drepper <drepper@gnu.org>.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <gmp-mparam.h>
+#include <gmp.h>
+#include <limits.h>
+#include <stdlib/gmp-impl.h>
+#include <stdlib/longlong.h>
+
+#include <_itoa.h>
+
+
+/* Canonize environment.  For some architectures not all values might
+   be defined in the GMP header files.  */
+#ifndef UMUL_TIME
+# define UMUL_TIME 1
+#endif
+#ifndef UDIV_TIME
+# define UDIV_TIME 3
+#endif
+
+/* Control memory layout.  */
+#ifdef PACK
+# undef PACK
+# define PACK __attribute__ ((packed))
+#else
+# define PACK
+#endif
+
+
+/* Declare local types.  */
+struct base_table_t
+{
+#if (UDIV_TIME > 2 * UMUL_TIME)
+  mp_limb_t base_multiplier;
+#endif
+  char flag;
+  char post_shift;
+#if BITS_PER_MP_LIMB == 32
+  struct
+    {
+      char normalization_steps;
+      char ndigits;
+      mp_limb_t base PACK;
+#if UDIV_TIME > 2 * UMUL_TIME
+      mp_limb_t base_ninv PACK;
+#endif
+    } big;
+#endif
+};
+
+/* To reduce the memory needed we include some fields of the tables
+   only conditionally.  */
+#if UDIV_TIME > 2 * UMUL_TIME
+# define SEL1(X) X,
+# define SEL2(X) ,X
+#else
+# define SEL1(X)
+# define SEL2(X)
+#endif
+
+
+/* We do not compile _itoa if we always can use _itoa_word.  */
+#if _ITOA_NEEDED
+/* Local variables.  */
+const struct base_table_t _itoa_base_table[] attribute_hidden =
+{
+# if BITS_PER_MP_LIMB == 64
+  /*  2 */ {SEL1(0ull) 1, 1},
+  /*  3 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 1},
+  /*  4 */ {SEL1(0ull) 1, 2},
+  /*  5 */ {SEL1(0xcccccccccccccccdull) 0, 2},
+  /*  6 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 2},
+  /*  7 */ {SEL1(0x2492492492492493ull) 1, 3},
+  /*  8 */ {SEL1(0ull) 1, 3},
+  /*  9 */ {SEL1(0xe38e38e38e38e38full) 0, 3},
+  /* 10 */ {SEL1(0xcccccccccccccccdull) 0, 3},
+  /* 11 */ {SEL1(0x2e8ba2e8ba2e8ba3ull) 0, 1},
+  /* 12 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 3},
+  /* 13 */ {SEL1(0x4ec4ec4ec4ec4ec5ull) 0, 2},
+  /* 14 */ {SEL1(0x2492492492492493ull) 1, 4},
+  /* 15 */ {SEL1(0x8888888888888889ull) 0, 3},
+  /* 16 */ {SEL1(0ull) 1, 4},
+  /* 17 */ {SEL1(0xf0f0f0f0f0f0f0f1ull) 0, 4},
+  /* 18 */ {SEL1(0xe38e38e38e38e38full) 0, 4},
+  /* 19 */ {SEL1(0xd79435e50d79435full) 0, 4},
+  /* 20 */ {SEL1(0xcccccccccccccccdull) 0, 4},
+  /* 21 */ {SEL1(0x8618618618618619ull) 1, 5},
+  /* 22 */ {SEL1(0x2e8ba2e8ba2e8ba3ull) 0, 2},
+  /* 23 */ {SEL1(0x642c8590b21642c9ull) 1, 5},
+  /* 24 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 4},
+  /* 25 */ {SEL1(0x47ae147ae147ae15ull) 1, 5},
+  /* 26 */ {SEL1(0x4ec4ec4ec4ec4ec5ull) 0, 3},
+  /* 27 */ {SEL1(0x97b425ed097b425full) 0, 4},
+  /* 28 */ {SEL1(0x2492492492492493ull) 1, 5},
+  /* 29 */ {SEL1(0x1a7b9611a7b9611bull) 1, 5},
+  /* 30 */ {SEL1(0x8888888888888889ull) 0, 4},
+  /* 31 */ {SEL1(0x0842108421084211ull) 1, 5},
+  /* 32 */ {SEL1(0ull) 1, 5},
+  /* 33 */ {SEL1(0x0f83e0f83e0f83e1ull) 0, 1},
+  /* 34 */ {SEL1(0xf0f0f0f0f0f0f0f1ull) 0, 5},
+  /* 35 */ {SEL1(0xea0ea0ea0ea0ea0full) 0, 5},
+  /* 36 */ {SEL1(0xe38e38e38e38e38full) 0, 5}
+# endif
+# if BITS_PER_MP_LIMB == 32
+  /*  2 */ {SEL1(0ul) 1, 1, {0, 31, 0x80000000ul SEL2(0xfffffffful)}},
+  /*  3 */ {SEL1(0xaaaaaaabul) 0, 1, {0, 20, 0xcfd41b91ul SEL2(0x3b563c24ul)}},
+  /*  4 */ {SEL1(0ul) 1, 2, {1, 15, 0x40000000ul SEL2(0xfffffffful)}},
+  /*  5 */ {SEL1(0xcccccccdul) 0, 2, {1, 13, 0x48c27395ul SEL2(0xc25c2684ul)}},
+  /*  6 */ {SEL1(0xaaaaaaabul) 0, 2, {0, 12, 0x81bf1000ul SEL2(0xf91bd1b6ul)}},
+  /*  7 */ {SEL1(0x24924925ul) 1, 3, {1, 11, 0x75db9c97ul SEL2(0x1607a2cbul)}},
+  /*  8 */ {SEL1(0ul) 1, 3, {1, 10, 0x40000000ul SEL2(0xfffffffful)}},
+  /*  9 */ {SEL1(0x38e38e39ul) 0, 1, {0, 10, 0xcfd41b91ul SEL2(0x3b563c24ul)}},
+  /* 10 */ {SEL1(0xcccccccdul) 0, 3, {2, 9, 0x3b9aca00ul SEL2(0x12e0be82ul)}},
+  /* 11 */ {SEL1(0xba2e8ba3ul) 0, 3, {0, 9, 0x8c8b6d2bul SEL2(0xd24cde04ul)}},
+  /* 12 */ {SEL1(0xaaaaaaabul) 0, 3, {3, 8, 0x19a10000ul SEL2(0x3fa39ab5ul)}},
+  /* 13 */ {SEL1(0x4ec4ec4ful) 0, 2, {2, 8, 0x309f1021ul SEL2(0x50f8ac5ful)}},
+  /* 14 */ {SEL1(0x24924925ul) 1, 4, {1, 8, 0x57f6c100ul SEL2(0x74843b1eul)}},
+  /* 15 */ {SEL1(0x88888889ul) 0, 3, {0, 8, 0x98c29b81ul SEL2(0xad0326c2ul)}},
+  /* 16 */ {SEL1(0ul) 1, 4, {3, 7, 0x10000000ul SEL2(0xfffffffful)}},
+  /* 17 */ {SEL1(0xf0f0f0f1ul) 0, 4, {3, 7, 0x18754571ul SEL2(0x4ef0b6bdul)}},
+  /* 18 */ {SEL1(0x38e38e39ul) 0, 2, {2, 7, 0x247dbc80ul SEL2(0xc0fc48a1ul)}},
+  /* 19 */ {SEL1(0xaf286bcbul) 1, 5, {2, 7, 0x3547667bul SEL2(0x33838942ul)}},
+  /* 20 */ {SEL1(0xcccccccdul) 0, 4, {1, 7, 0x4c4b4000ul SEL2(0xad7f29abul)}},
+  /* 21 */ {SEL1(0x86186187ul) 1, 5, {1, 7, 0x6b5a6e1dul SEL2(0x313c3d15ul)}},
+  /* 22 */ {SEL1(0xba2e8ba3ul) 0, 4, {0, 7, 0x94ace180ul SEL2(0xb8cca9e0ul)}},
+  /* 23 */ {SEL1(0xb21642c9ul) 0, 4, {0, 7, 0xcaf18367ul SEL2(0x42ed6de9ul)}},
+  /* 24 */ {SEL1(0xaaaaaaabul) 0, 4, {4, 6, 0x0b640000ul SEL2(0x67980e0bul)}},
+  /* 25 */ {SEL1(0x51eb851ful) 0, 3, {4, 6, 0x0e8d4a51ul SEL2(0x19799812ul)}},
+  /* 26 */ {SEL1(0x4ec4ec4ful) 0, 3, {3, 6, 0x1269ae40ul SEL2(0xbce85396ul)}},
+  /* 27 */ {SEL1(0x2f684bdbul) 1, 5, {3, 6, 0x17179149ul SEL2(0x62c103a9ul)}},
+  /* 28 */ {SEL1(0x24924925ul) 1, 5, {3, 6, 0x1cb91000ul SEL2(0x1d353d43ul)}},
+  /* 29 */ {SEL1(0x8d3dcb09ul) 0, 4, {2, 6, 0x23744899ul SEL2(0xce1deceaul)}},
+  /* 30 */ {SEL1(0x88888889ul) 0, 4, {2, 6, 0x2b73a840ul SEL2(0x790fc511ul)}},
+  /* 31 */ {SEL1(0x08421085ul) 1, 5, {2, 6, 0x34e63b41ul SEL2(0x35b865a0ul)}},
+  /* 32 */ {SEL1(0ul) 1, 5, {1, 6, 0x40000000ul SEL2(0xfffffffful)}},
+  /* 33 */ {SEL1(0x3e0f83e1ul) 0, 3, {1, 6, 0x4cfa3cc1ul SEL2(0xa9aed1b3ul)}},
+  /* 34 */ {SEL1(0xf0f0f0f1ul) 0, 5, {1, 6, 0x5c13d840ul SEL2(0x63dfc229ul)}},
+  /* 35 */ {SEL1(0xd41d41d5ul) 1, 6, {1, 6, 0x6d91b519ul SEL2(0x2b0fee30ul)}},
+  /* 36 */ {SEL1(0x38e38e39ul) 0, 3, {0, 6, 0x81bf1000ul SEL2(0xf91bd1b6ul)}}
+# endif
+};
+#endif
+
+char *
+_itoa_word (_ITOA_WORD_TYPE value, char *buflim,
+	    unsigned int base, int upper_case)
+{
+  const char *digits = (upper_case
+			? _itoa_upper_digits
+			: _itoa_lower_digits);
+
+  switch (base)
+    {
+#define SPECIAL(Base)							      \
+    case Base:								      \
+      do								      \
+	*--buflim = digits[value % Base];				      \
+      while ((value /= Base) != 0);					      \
+      break
+
+      SPECIAL (10);
+      SPECIAL (16);
+      SPECIAL (8);
+    default:
+      do
+	*--buflim = digits[value % base];
+      while ((value /= base) != 0);
+    }
+  return buflim;
+}
+#undef SPECIAL
+
+
+#if _ITOA_NEEDED
+char *
+_itoa (unsigned long long int value, char *buflim, unsigned int base,
+       int upper_case)
+{
+  const char *digits = (upper_case
+			? _itoa_upper_digits
+			: _itoa_lower_digits);
+  const struct base_table_t *brec = &_itoa_base_table[base - 2];
+
+  switch (base)
+    {
+# define RUN_2N(BITS) \
+      do								      \
+	{								      \
+	  /* `unsigned long long int' always has 64 bits.  */		      \
+	  mp_limb_t work_hi = value >> (64 - BITS_PER_MP_LIMB);		      \
+									      \
+	  if (BITS_PER_MP_LIMB == 32)					      \
+	    {								      \
+	      if (work_hi != 0)						      \
+		{							      \
+		  mp_limb_t work_lo;					      \
+		  int cnt;						      \
+									      \
+		  work_lo = value & 0xfffffffful;			      \
+		  for (cnt = BITS_PER_MP_LIMB / BITS; cnt > 0; --cnt)	      \
+		    {							      \
+		      *--buflim = digits[work_lo & ((1ul << BITS) - 1)];      \
+		      work_lo >>= BITS;					      \
+		    }							      \
+		  if (BITS_PER_MP_LIMB % BITS != 0)			      \
+		    {							      \
+		      work_lo						      \
+			|= ((work_hi					      \
+			     & ((1 << (BITS - BITS_PER_MP_LIMB%BITS))	      \
+				- 1))					      \
+			    << BITS_PER_MP_LIMB % BITS);		      \
+		      work_hi >>= BITS - BITS_PER_MP_LIMB % BITS;	      \
+		      if (work_hi == 0)					      \
+			work_hi = work_lo;				      \
+		      else						      \
+			*--buflim = digits[work_lo];			      \
+		    }							      \
+		}							      \
+	      else							      \
+		work_hi = value & 0xfffffffful;				      \
+	    }								      \
+	  do								      \
+	    {								      \
+	      *--buflim = digits[work_hi & ((1 << BITS) - 1)];		      \
+	      work_hi >>= BITS;						      \
+	    }								      \
+	  while (work_hi != 0);						      \
+	}								      \
+      while (0)
+    case 8:
+      RUN_2N (3);
+      break;
+
+    case 16:
+      RUN_2N (4);
+      break;
+
+    default:
+      {
+	char *bufend = buflim;
+# if BITS_PER_MP_LIMB == 64
+	mp_limb_t base_multiplier = brec->base_multiplier;
+	if (brec->flag)
+	  while (value != 0)
+	    {
+	      mp_limb_t quo, rem, x;
+	      mp_limb_t dummy __attribute__ ((unused));
+
+	      umul_ppmm (x, dummy, value, base_multiplier);
+	      quo = (x + ((value - x) >> 1)) >> (brec->post_shift - 1);
+	      rem = value - quo * base;
+	      *--buflim = digits[rem];
+	      value = quo;
+	    }
+	else
+	  while (value != 0)
+	    {
+	      mp_limb_t quo, rem, x;
+	      mp_limb_t dummy __attribute__ ((unused));
+
+	      umul_ppmm (x, dummy, value, base_multiplier);
+	      quo = x >> brec->post_shift;
+	      rem = value - quo * base;
+	      *--buflim = digits[rem];
+	      value = quo;
+	    }
+# endif
+# if BITS_PER_MP_LIMB == 32
+	mp_limb_t t[3];
+	int n;
+
+	/* First convert x0 to 1-3 words in base s->big.base.
+	   Optimize for frequent cases of 32 bit numbers.  */
+	if ((mp_limb_t) (value >> 32) >= 1)
+	  {
+#  if UDIV_TIME > 2 * UMUL_TIME || UDIV_NEEDS_NORMALIZATION
+	    int big_normalization_steps = brec->big.normalization_steps;
+	    mp_limb_t big_base_norm
+	      = brec->big.base << big_normalization_steps;
+#  endif
+	    if ((mp_limb_t) (value >> 32) >= brec->big.base)
+	      {
+		mp_limb_t x1hi, x1lo, r;
+		/* If you want to optimize this, take advantage of
+		   that the quotient in the first udiv_qrnnd will
+		   always be very small.  It might be faster just to
+		   subtract in a tight loop.  */
+
+#  if UDIV_TIME > 2 * UMUL_TIME
+		mp_limb_t x, xh, xl;
+
+		if (big_normalization_steps == 0)
+		  xh = 0;
+		else
+		  xh = (mp_limb_t) (value >> (64 - big_normalization_steps));
+		xl = (mp_limb_t) (value >> (32 - big_normalization_steps));
+		udiv_qrnnd_preinv (x1hi, r, xh, xl, big_base_norm,
+				   brec->big.base_ninv);
+
+		xl = ((mp_limb_t) value) << big_normalization_steps;
+		udiv_qrnnd_preinv (x1lo, x, r, xl, big_base_norm,
+				   brec->big.base_ninv);
+		t[2] = x >> big_normalization_steps;
+
+		if (big_normalization_steps == 0)
+		  xh = x1hi;
+		else
+		  xh = ((x1hi << big_normalization_steps)
+			| (x1lo >> (32 - big_normalization_steps)));
+		xl = x1lo << big_normalization_steps;
+		udiv_qrnnd_preinv (t[0], x, xh, xl, big_base_norm,
+				   brec->big.base_ninv);
+		t[1] = x >> big_normalization_steps;
+#  elif UDIV_NEEDS_NORMALIZATION
+		mp_limb_t x, xh, xl;
+
+		if (big_normalization_steps == 0)
+		  xh = 0;
+		else
+		  xh = (mp_limb_t) (value >> 64 - big_normalization_steps);
+		xl = (mp_limb_t) (value >> 32 - big_normalization_steps);
+		udiv_qrnnd (x1hi, r, xh, xl, big_base_norm);
+
+		xl = ((mp_limb_t) value) << big_normalization_steps;
+		udiv_qrnnd (x1lo, x, r, xl, big_base_norm);
+		t[2] = x >> big_normalization_steps;
+
+		if (big_normalization_steps == 0)
+		  xh = x1hi;
+		else
+		  xh = ((x1hi << big_normalization_steps)
+			| (x1lo >> 32 - big_normalization_steps));
+		xl = x1lo << big_normalization_steps;
+		udiv_qrnnd (t[0], x, xh, xl, big_base_norm);
+		t[1] = x >> big_normalization_steps;
+#  else
+		udiv_qrnnd (x1hi, r, 0, (mp_limb_t) (value >> 32),
+			    brec->big.base);
+		udiv_qrnnd (x1lo, t[2], r, (mp_limb_t) value, brec->big.base);
+		udiv_qrnnd (t[0], t[1], x1hi, x1lo, brec->big.base);
+#  endif
+		n = 3;
+	      }
+	    else
+	      {
+#  if UDIV_TIME > 2 * UMUL_TIME
+		mp_limb_t x;
+
+		value <<= brec->big.normalization_steps;
+		udiv_qrnnd_preinv (t[0], x, (mp_limb_t) (value >> 32),
+				   (mp_limb_t) value, big_base_norm,
+				   brec->big.base_ninv);
+		t[1] = x >> brec->big.normalization_steps;
+#  elif UDIV_NEEDS_NORMALIZATION
+		mp_limb_t x;
+
+		value <<= big_normalization_steps;
+		udiv_qrnnd (t[0], x, (mp_limb_t) (value >> 32),
+			    (mp_limb_t) value, big_base_norm);
+		t[1] = x >> big_normalization_steps;
+#  else
+		udiv_qrnnd (t[0], t[1], (mp_limb_t) (value >> 32),
+			    (mp_limb_t) value, brec->big.base);
+#  endif
+		n = 2;
+	      }
+	  }
+	else
+	  {
+	    t[0] = value;
+	    n = 1;
+	  }
+
+	/* Convert the 1-3 words in t[], word by word, to ASCII.  */
+	do
+	  {
+	    mp_limb_t ti = t[--n];
+	    int ndig_for_this_limb = 0;
+
+#  if UDIV_TIME > 2 * UMUL_TIME
+	    mp_limb_t base_multiplier = brec->base_multiplier;
+	    if (brec->flag)
+	      while (ti != 0)
+		{
+		  mp_limb_t quo, rem, x;
+		  mp_limb_t dummy __attribute__ ((unused));
+
+		  umul_ppmm (x, dummy, ti, base_multiplier);
+		  quo = (x + ((ti - x) >> 1)) >> (brec->post_shift - 1);
+		  rem = ti - quo * base;
+		  *--buflim = digits[rem];
+		  ti = quo;
+		  ++ndig_for_this_limb;
+		}
+	    else
+	      while (ti != 0)
+		{
+		  mp_limb_t quo, rem, x;
+		  mp_limb_t dummy __attribute__ ((unused));
+
+		  umul_ppmm (x, dummy, ti, base_multiplier);
+		  quo = x >> brec->post_shift;
+		  rem = ti - quo * base;
+		  *--buflim = digits[rem];
+		  ti = quo;
+		  ++ndig_for_this_limb;
+		}
+#  else
+	    while (ti != 0)
+	      {
+		mp_limb_t quo, rem;
+
+		quo = ti / base;
+		rem = ti % base;
+		*--buflim = digits[rem];
+		ti = quo;
+		++ndig_for_this_limb;
+	      }
+#  endif
+	    /* If this wasn't the most significant word, pad with zeros.  */
+	    if (n != 0)
+	      while (ndig_for_this_limb < brec->big.ndigits)
+		{
+		  *--buflim = '0';
+		  ++ndig_for_this_limb;
+		}
+	  }
+	while (n != 0);
+# endif
+	if (buflim == bufend)
+	  *--buflim = '0';
+      }
+      break;
+    }
+
+  return buflim;
+}
+#endif
+
+char *
+_fitoa_word (_ITOA_WORD_TYPE value, char *buf, unsigned int base,
+	     int upper_case)
+{
+  char tmpbuf[sizeof (value) * 4];	      /* Worst case length: base 2.  */
+  char *cp = _itoa_word (value, tmpbuf + sizeof (value) * 4, base, upper_case);
+  while (cp < tmpbuf + sizeof (value) * 4)
+    *buf++ = *cp++;
+  return buf;
+}
+
+#if _ITOA_NEEDED
+char *
+_fitoa (unsigned long long value, char *buf, unsigned int base, int upper_case)
+{
+  char tmpbuf[sizeof (value) * 4];	      /* Worst case length: base 2.  */
+  char *cp = _itoa (value, tmpbuf + sizeof (value) * 4, base, upper_case);
+  while (cp < tmpbuf + sizeof (value) * 4)
+    *buf++ = *cp++;
+  return buf;
+}
+#endif
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/_itowa.c b/ap/libc/glibc/glibc-2.23/stdio-common/_itowa.c
new file mode 100644
index 0000000..acbb870
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/_itowa.c
@@ -0,0 +1,349 @@
+/* Internal function for converting integers to ASCII.
+   Copyright (C) 1994-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Torbjorn Granlund <tege@matematik.su.se>
+   and Ulrich Drepper <drepper@gnu.org>.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <gmp-mparam.h>
+#include <gmp.h>
+#include <limits.h>
+#include <stdlib/gmp-impl.h>
+#include <stdlib/longlong.h>
+
+#include <_itowa.h>
+
+
+/* Canonize environment.  For some architectures not all values might
+   be defined in the GMP header files.  */
+#ifndef UMUL_TIME
+# define UMUL_TIME 1
+#endif
+#ifndef UDIV_TIME
+# define UDIV_TIME 3
+#endif
+
+/* Control memory layout.  */
+#ifdef PACK
+# undef PACK
+# define PACK __attribute__ ((packed))
+#else
+# define PACK
+#endif
+
+
+/* Declare local types.  */
+struct base_table_t
+{
+#if (UDIV_TIME > 2 * UMUL_TIME)
+  mp_limb_t base_multiplier;
+#endif
+  char flag;
+  char post_shift;
+#if BITS_PER_MP_LIMB == 32
+  struct
+    {
+      char normalization_steps;
+      char ndigits;
+      mp_limb_t base PACK;
+#if UDIV_TIME > 2 * UMUL_TIME
+      mp_limb_t base_ninv PACK;
+#endif
+    } big;
+#endif
+};
+
+/* To reduce the memory needed we include some fields of the tables
+   only conditionally.  */
+#if UDIV_TIME > 2 * UMUL_TIME
+# define SEL1(X) X,
+# define SEL2(X) ,X
+#else
+# define SEL1(X)
+# define SEL2(X)
+#endif
+
+/* Factor table for the different bases.  */
+extern const struct base_table_t _itoa_base_table[] attribute_hidden;
+
+/* Lower-case digits.  */
+extern const wchar_t _itowa_lower_digits[] attribute_hidden;
+/* Upper-case digits.  */
+extern const wchar_t _itowa_upper_digits[] attribute_hidden;
+
+
+#if _ITOA_NEEDED
+wchar_t *
+_itowa (unsigned long long int value, wchar_t *buflim, unsigned int base,
+	int upper_case)
+{
+  const wchar_t *digits = (upper_case
+			   ? _itowa_upper_digits : _itowa_lower_digits);
+  wchar_t *bp = buflim;
+  const struct base_table_t *brec = &_itoa_base_table[base - 2];
+
+  switch (base)
+    {
+# define RUN_2N(BITS) \
+      do								      \
+	{								      \
+	  /* `unsigned long long int' always has 64 bits.  */		      \
+	  mp_limb_t work_hi = value >> (64 - BITS_PER_MP_LIMB);		      \
+									      \
+	  if (BITS_PER_MP_LIMB == 32)					      \
+	    {								      \
+	      if (work_hi != 0)						      \
+		{							      \
+		  mp_limb_t work_lo;					      \
+		  int cnt;						      \
+									      \
+		  work_lo = value & 0xfffffffful;			      \
+		  for (cnt = BITS_PER_MP_LIMB / BITS; cnt > 0; --cnt)	      \
+		    {							      \
+		      *--bp = digits[work_lo & ((1ul << BITS) - 1)];	      \
+		      work_lo >>= BITS;					      \
+		    }							      \
+		  if (BITS_PER_MP_LIMB % BITS != 0)			      \
+		    {							      \
+		      work_lo						      \
+			|= ((work_hi					      \
+			     & ((1 << (BITS - BITS_PER_MP_LIMB%BITS))	      \
+				- 1))					      \
+			    << BITS_PER_MP_LIMB % BITS);		      \
+		      work_hi >>= BITS - BITS_PER_MP_LIMB % BITS;	      \
+		      if (work_hi == 0)					      \
+			work_hi = work_lo;				      \
+		      else						      \
+			*--bp = digits[work_lo];			      \
+		    }							      \
+		}							      \
+	      else							      \
+		work_hi = value & 0xfffffffful;				      \
+	    }								      \
+	  do								      \
+	    {								      \
+	      *--bp = digits[work_hi & ((1 << BITS) - 1)];		      \
+	      work_hi >>= BITS;						      \
+	    }								      \
+	  while (work_hi != 0);						      \
+	}								      \
+      while (0)
+    case 8:
+      RUN_2N (3);
+      break;
+
+    case 16:
+      RUN_2N (4);
+      break;
+
+    default:
+      {
+# if BITS_PER_MP_LIMB == 64
+	mp_limb_t base_multiplier = brec->base_multiplier;
+	if (brec->flag)
+	  while (value != 0)
+	    {
+	      mp_limb_t quo, rem, x;
+	      mp_limb_t dummy __attribute__ ((unused));
+
+	      umul_ppmm (x, dummy, value, base_multiplier);
+	      quo = (x + ((value - x) >> 1)) >> (brec->post_shift - 1);
+	      rem = value - quo * base;
+	      *--bp = digits[rem];
+	      value = quo;
+	    }
+	else
+	  while (value != 0)
+	    {
+	      mp_limb_t quo, rem, x;
+	      mp_limb_t dummy __attribute__ ((unused));
+
+	      umul_ppmm (x, dummy, value, base_multiplier);
+	      quo = x >> brec->post_shift;
+	      rem = value - quo * base;
+	      *--bp = digits[rem];
+	      value = quo;
+	    }
+# endif
+# if BITS_PER_MP_LIMB == 32
+	mp_limb_t t[3];
+	int n;
+
+	/* First convert x0 to 1-3 words in base s->big.base.
+	   Optimize for frequent cases of 32 bit numbers.  */
+	if ((mp_limb_t) (value >> 32) >= 1)
+	  {
+# if UDIV_TIME > 2 * UMUL_TIME || UDIV_NEEDS_NORMALIZATION
+	    int big_normalization_steps = brec->big.normalization_steps;
+	    mp_limb_t big_base_norm
+	      = brec->big.base << big_normalization_steps;
+# endif
+	    if ((mp_limb_t) (value >> 32) >= brec->big.base)
+	      {
+		mp_limb_t x1hi, x1lo, r;
+		/* If you want to optimize this, take advantage of
+		   that the quotient in the first udiv_qrnnd will
+		   always be very small.  It might be faster just to
+		   subtract in a tight loop.  */
+
+# if UDIV_TIME > 2 * UMUL_TIME
+		mp_limb_t x, xh, xl;
+
+		if (big_normalization_steps == 0)
+		  xh = 0;
+		else
+		  xh = (mp_limb_t) (value >> (64 - big_normalization_steps));
+		xl = (mp_limb_t) (value >> (32 - big_normalization_steps));
+		udiv_qrnnd_preinv (x1hi, r, xh, xl, big_base_norm,
+				   brec->big.base_ninv);
+
+		xl = ((mp_limb_t) value) << big_normalization_steps;
+		udiv_qrnnd_preinv (x1lo, x, r, xl, big_base_norm,
+				   brec->big.base_ninv);
+		t[2] = x >> big_normalization_steps;
+
+		if (big_normalization_steps == 0)
+		  xh = x1hi;
+		else
+		  xh = ((x1hi << big_normalization_steps)
+			| (x1lo >> (32 - big_normalization_steps)));
+		xl = x1lo << big_normalization_steps;
+		udiv_qrnnd_preinv (t[0], x, xh, xl, big_base_norm,
+				   brec->big.base_ninv);
+		t[1] = x >> big_normalization_steps;
+# elif UDIV_NEEDS_NORMALIZATION
+		mp_limb_t x, xh, xl;
+
+		if (big_normalization_steps == 0)
+		  xh = 0;
+		else
+		  xh = (mp_limb_t) (value >> 64 - big_normalization_steps);
+		xl = (mp_limb_t) (value >> 32 - big_normalization_steps);
+		udiv_qrnnd (x1hi, r, xh, xl, big_base_norm);
+
+		xl = ((mp_limb_t) value) << big_normalization_steps;
+		udiv_qrnnd (x1lo, x, r, xl, big_base_norm);
+		t[2] = x >> big_normalization_steps;
+
+		if (big_normalization_steps == 0)
+		  xh = x1hi;
+		else
+		  xh = ((x1hi << big_normalization_steps)
+			| (x1lo >> 32 - big_normalization_steps));
+		xl = x1lo << big_normalization_steps;
+		udiv_qrnnd (t[0], x, xh, xl, big_base_norm);
+		t[1] = x >> big_normalization_steps;
+# else
+		udiv_qrnnd (x1hi, r, 0, (mp_limb_t) (value >> 32),
+			    brec->big.base);
+		udiv_qrnnd (x1lo, t[2], r, (mp_limb_t) value, brec->big.base);
+		udiv_qrnnd (t[0], t[1], x1hi, x1lo, brec->big.base);
+# endif
+		n = 3;
+	      }
+	    else
+	      {
+# if UDIV_TIME > 2 * UMUL_TIME
+		mp_limb_t x;
+
+		value <<= brec->big.normalization_steps;
+		udiv_qrnnd_preinv (t[0], x, (mp_limb_t) (value >> 32),
+				   (mp_limb_t) value, big_base_norm,
+				   brec->big.base_ninv);
+		t[1] = x >> brec->big.normalization_steps;
+# elif UDIV_NEEDS_NORMALIZATION
+		mp_limb_t x;
+
+		value <<= big_normalization_steps;
+		udiv_qrnnd (t[0], x, (mp_limb_t) (value >> 32),
+			    (mp_limb_t) value, big_base_norm);
+		t[1] = x >> big_normalization_steps;
+# else
+		udiv_qrnnd (t[0], t[1], (mp_limb_t) (value >> 32),
+			    (mp_limb_t) value, brec->big.base);
+# endif
+		n = 2;
+	      }
+	  }
+	else
+	  {
+	    t[0] = value;
+	    n = 1;
+	  }
+
+	/* Convert the 1-3 words in t[], word by word, to ASCII.  */
+	do
+	  {
+	    mp_limb_t ti = t[--n];
+	    int ndig_for_this_limb = 0;
+
+# if UDIV_TIME > 2 * UMUL_TIME
+	    mp_limb_t base_multiplier = brec->base_multiplier;
+	    if (brec->flag)
+	      while (ti != 0)
+		{
+		  mp_limb_t quo, rem, x;
+		  mp_limb_t dummy __attribute__ ((unused));
+
+		  umul_ppmm (x, dummy, ti, base_multiplier);
+		  quo = (x + ((ti - x) >> 1)) >> (brec->post_shift - 1);
+		  rem = ti - quo * base;
+		  *--bp = digits[rem];
+		  ti = quo;
+		  ++ndig_for_this_limb;
+		}
+	    else
+	      while (ti != 0)
+		{
+		  mp_limb_t quo, rem, x;
+		  mp_limb_t dummy __attribute__ ((unused));
+
+		  umul_ppmm (x, dummy, ti, base_multiplier);
+		  quo = x >> brec->post_shift;
+		  rem = ti - quo * base;
+		  *--bp = digits[rem];
+		  ti = quo;
+		  ++ndig_for_this_limb;
+		}
+# else
+	    while (ti != 0)
+	      {
+		mp_limb_t quo, rem;
+
+		quo = ti / base;
+		rem = ti % base;
+		*--bp = digits[rem];
+		ti = quo;
+		++ndig_for_this_limb;
+	      }
+# endif
+	    /* If this wasn't the most significant word, pad with zeros.  */
+	    if (n != 0)
+	      while (ndig_for_this_limb < brec->big.ndigits)
+		{
+		  *--bp = '0';
+		  ++ndig_for_this_limb;
+		}
+	  }
+	while (n != 0);
+# endif
+      }
+      break;
+    }
+
+  return bp;
+}
+#endif
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/_itowa.h b/ap/libc/glibc/glibc-2.23/stdio-common/_itowa.h
new file mode 100644
index 0000000..a5bf6d1
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/_itowa.h
@@ -0,0 +1,71 @@
+/* Internal function for converting integers to ASCII.
+   Copyright (C) 1994-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _ITOWA_H
+#define _ITOWA_H	1
+#include <features.h>
+#include <wchar.h>
+#include <_itoa.h>
+
+/* Convert VALUE into ASCII in base BASE (2..36).
+   Write backwards starting the character just before BUFLIM.
+   Return the address of the first (left-to-right) character in the number.
+   Use upper case letters iff UPPER_CASE is nonzero.  */
+
+extern wchar_t *_itowa (unsigned long long int value, wchar_t *buflim,
+			unsigned int base, int upper_case);
+
+static inline wchar_t *
+__attribute__ ((unused, always_inline))
+_itowa_word (_ITOA_WORD_TYPE value, wchar_t *buflim,
+	     unsigned int base, int upper_case)
+{
+  extern const wchar_t _itowa_upper_digits[] attribute_hidden;
+  extern const wchar_t _itowa_lower_digits[] attribute_hidden;
+  const wchar_t *digits = (upper_case
+			   ? _itowa_upper_digits : _itowa_lower_digits);
+  wchar_t *bp = buflim;
+
+  switch (base)
+    {
+#define SPECIAL(Base)							      \
+    case Base:								      \
+      do								      \
+	*--bp = digits[value % Base];					      \
+      while ((value /= Base) != 0);					      \
+      break
+
+      SPECIAL (10);
+      SPECIAL (16);
+      SPECIAL (8);
+    default:
+      do
+	*--bp = digits[value % base];
+      while ((value /= base) != 0);
+    }
+  return bp;
+}
+#undef SPECIAL
+
+#if !_ITOA_NEEDED
+/* No need for special long long versions.  */
+# define _itowa(value, buf, base, upper_case) \
+  _itowa_word (value, buf, base, upper_case)
+#endif
+
+#endif	/* itowa.h */
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/asprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/asprintf.c
new file mode 100644
index 0000000..5500aa9
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/asprintf.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#include <libioP.h>
+#define vasprintf(s, f, a) _IO_vasprintf (s, f, a)
+#undef __asprintf
+
+/* Write formatted output from FORMAT to a string which is
+   allocated with malloc and stored in *STRING_PTR.  */
+/* VARARGS2 */
+int
+___asprintf (char **string_ptr, const char *format, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, format);
+  done = vasprintf (string_ptr, format, arg);
+  va_end (arg);
+
+  return done;
+}
+ldbl_hidden_def (___asprintf, __asprintf)
+
+ldbl_strong_alias (___asprintf, __asprintf)
+ldbl_weak_alias (___asprintf, asprintf)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bits/printf-ldbl.h b/ap/libc/glibc/glibc-2.23/stdio-common/bits/printf-ldbl.h
new file mode 100644
index 0000000..aaa0921
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bits/printf-ldbl.h
@@ -0,0 +1,23 @@
+/* -mlong-double-64 compatibility mode for <printf.h> functions.
+   Copyright (C) 2006-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _PRINTF_H
+# error "Never include <bits/printf-ldbl.h> directly; use <printf.h> instead."
+#endif
+
+__LDBL_REDIR_DECL (printf_size)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug-vfprintf-nargs.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug-vfprintf-nargs.c
new file mode 100644
index 0000000..f3cfb4a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug-vfprintf-nargs.c
@@ -0,0 +1,78 @@
+/* Test for vfprintf nargs allocation overflow (BZ #13656).
+   Copyright (C) 2012-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Kees Cook <keescook@chromium.org>, 2012.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <inttypes.h>
+#include <string.h>
+#include <signal.h>
+
+static int
+format_failed (const char *fmt, const char *expected)
+{
+  char output[80];
+
+  printf ("%s : ", fmt);
+
+  memset (output, 0, sizeof output);
+  /* Having sprintf itself detect a failure is good.  */
+  if (sprintf (output, fmt, 1, 2, 3, "test") > 0
+      && strcmp (output, expected) != 0)
+    {
+      printf ("FAIL (output '%s' != expected '%s')\n", output, expected);
+      return 1;
+    }
+  puts ("ok");
+  return 0;
+}
+
+static int
+do_test (void)
+{
+  int rc = 0;
+  char buf[64];
+
+  /* Regular positionals work.  */
+  if (format_failed ("%1$d", "1") != 0)
+    rc = 1;
+
+  /* Regular width positionals work.  */
+  if (format_failed ("%1$*2$d", " 1") != 0)
+    rc = 1;
+
+  /* Positional arguments are constructed via read_int, so nargs can only
+     overflow on 32-bit systems.  On 64-bit systems, it will attempt to
+     allocate a giant amount of memory and possibly crash, which is the
+     expected situation.  Since the 64-bit behavior is arch-specific, only
+     test this on 32-bit systems.  */
+  if (sizeof (long int) == 4)
+    {
+      sprintf (buf, "%%1$d %%%" PRIdPTR "$d",
+	       (intptr_t) (UINT32_MAX / sizeof (int)));
+      if (format_failed (buf, "1 %$d") != 0)
+        rc = 1;
+    }
+
+  return rc;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug1.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug1.c
new file mode 100644
index 0000000..18e7d4c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug1.c
@@ -0,0 +1,30 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main (void)
+{
+  char *bp;
+  size_t size;
+  FILE *stream;
+  int lose = 0;
+
+  stream = open_memstream (&bp, &size);
+  fprintf (stream, "hello");
+  fflush (stream);
+  printf ("buf = %s, size = %Zu\n", bp, size);
+  lose |= size != 5;
+  lose |= strncmp (bp, "hello", size);
+  fprintf (stream, ", world");
+  fclose (stream);
+  printf ("buf = %s, size = %Zu\n", bp, size);
+  lose |= size != 12;
+  lose |= strncmp (bp, "hello, world", 12);
+
+  puts (lose ? "Test FAILED!" : "Test succeeded.");
+
+  free (bp);
+
+  return lose;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug1.input b/ap/libc/glibc/glibc-2.23/stdio-common/bug1.input
new file mode 100644
index 0000000..5595fa4
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug1.input
@@ -0,0 +1 @@
+95
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug10.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug10.c
new file mode 100644
index 0000000..c4f328d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug10.c
@@ -0,0 +1,25 @@
+#include <stdio.h>
+
+int
+main (int arc, char *argv[])
+{
+  int n, res;
+  unsigned int val;
+  char s[] = "111";
+  int result = 0;
+
+  n = 0;
+  res = sscanf(s, "%u %n", &val, &n);
+
+  printf("Result of sscanf = %d\n", res);
+  printf("Scanned format %%u = %u\n", val);
+  printf("Possibly scanned format %%n = %d\n", n);
+  result |= res != 1 || val != 111 || n != 3;
+
+
+  result |= sscanf ("", " %n", &n) == EOF;
+
+  puts (result ? "Test failed" : "All tests passed");
+
+  return result;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug11.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug11.c
new file mode 100644
index 0000000..c5af604
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug11.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main (int argc, char *argv[])
+{
+  int ret;
+  char buf [1024] = "Ooops";
+
+  ret = sscanf ("static char Term_bits[] = {", "static char %s = {", buf);
+  printf ("ret: %d, name: %s\n", ret, buf);
+
+  return strcmp (buf, "Term_bits[]") != 0 || ret != 1;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug12.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug12.c
new file mode 100644
index 0000000..48610c0
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug12.c
@@ -0,0 +1,46 @@
+#include <stdio.h>
+#include <string.h>
+
+char x[4096], z[4096], b[21], m[4096 * 4];
+
+int
+main (void)
+{
+  FILE *f = tmpfile ();
+  int i, failed = 0;
+
+  memset (x, 'x', 4096);
+  memset (z, 'z', 4096);
+  b[20] = 0;
+
+  for (i = 0; i <= 5; i++)
+    {
+      fwrite (x, 4096, 1, f);
+      fwrite (z, 4096, 1, f);
+    }
+  rewind (f);
+
+  fread (m, 4096 * 4 - 10, 1, f);
+  fread (b, 20, 1, f);
+  printf ("got %s (should be %s)\n", b, "zzzzzzzzzzxxxxxxxxxx");
+  if (strcmp (b, "zzzzzzzzzzxxxxxxxxxx"))
+    failed = 1;
+
+  fseek (f, -40, SEEK_CUR);
+  fread (b, 20, 1, f);
+  printf ("got %s (should be %s)\n", b, "zzzzzzzzzzzzzzzzzzzz");
+  if (strcmp (b, "zzzzzzzzzzzzzzzzzzzz"))
+    failed = 1;
+
+  fread (b, 20, 1, f);
+  printf ("got %s (should be %s)\n", b, "zzzzzzzzzzxxxxxxxxxx");
+  if (strcmp (b, "zzzzzzzzzzxxxxxxxxxx"))
+    failed = 1;
+
+  fread (b, 20, 1, f);
+  printf ("got %s (should be %s)\n", b, "xxxxxxxxxxxxxxxxxxxx");
+  if (strcmp (b, "xxxxxxxxxxxxxxxxxxxx"))
+    failed = 1;
+
+  return failed;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug13.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug13.c
new file mode 100644
index 0000000..1eca818
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug13.c
@@ -0,0 +1,30 @@
+#include <stdio.h>
+
+
+
+int
+main (void)
+{
+  int res = 0;
+  char buf[100];
+
+#define TEST(nr, result, format, args...) \
+  if (sprintf (buf, format, ## args) != result)				      \
+    {									      \
+      printf ("test %d failed (\"%s\",  %d)\n", nr, buf, result);	      \
+      res = 1;								      \
+    }
+
+  TEST (1, 2, "%d", -1);
+  TEST (2, 2, "% 2d", 1);
+  TEST (3, 3, "%#x", 1);
+  TEST (4, 2, "%+d", 1);
+  TEST (5, 2, "% d", 1);
+  TEST (6, 2, "%-d", -1);
+  TEST (7, 2, "%- 2d", 1);
+  TEST (8, 3, "%-#x", 1);
+  TEST (9, 2, "%-+d", 1);
+  TEST (10, 2, "%- d", 1);
+
+  return res;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug14.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug14.c
new file mode 100644
index 0000000..317d496
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug14.c
@@ -0,0 +1,29 @@
+/* Test case by Al Viro <aviro@redhat.com>.  */
+#include <locale.h>
+#include <wchar.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/* MB_CUR_MAX multibyte ones (6 UTF+0080, in this case) */
+static const char string[] = "\
+\xc2\x80\xc2\x80\xc2\x80\xc2\x80\xc2\x80\xc2\x80";
+
+int
+main (void)
+{
+  if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
+    {
+      puts ("cannot set locale");
+      exit (1);
+    }
+
+  wchar_t s[7];
+  int n = sscanf (string, "%l[\x80\xc2]", s);
+  if (n != 1)
+    {
+      printf ("return values %d != 1\n", n);
+      exit (1);
+    }
+
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug16.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug16.c
new file mode 100644
index 0000000..1112c39
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug16.c
@@ -0,0 +1,43 @@
+#include <stdio.h>
+#include <string.h>
+
+struct
+{
+  long double val;
+  const char str[4][7];
+} tests[] =
+{
+  { 0x0.FFFFp+0L, { "0X1P+0", "0X2P-1", "0X4P-2", "0X8P-3" } },
+  { 0x0.FFFFp+1L, { "0X1P+1", "0X2P+0", "0X4P-1", "0X8P-2" } },
+  { 0x0.FFFFp+2L, { "0X1P+2", "0X2P+1", "0X4P+0", "0X8P-1" } },
+  { 0x0.FFFFp+3L, { "0X1P+3", "0X2P+2", "0X4P+1", "0X8P+0" } }
+};
+
+static int
+do_test (void)
+{
+  char buf[100];
+  int ret = 0;
+
+  for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i)
+    {
+      snprintf (buf, sizeof (buf), "%.0LA", tests[i].val);
+
+      size_t j;
+      for (j = 0; j < 4; ++j)
+	if (strcmp (buf, tests[i].str[j]) == 0)
+	  break;
+
+      if (j == 4)
+	{
+	  printf ("%zd: got \"%s\", expected \"%s\" or equivalent\n",
+		  i, buf, tests[i].str[0]);
+	  ret = 1;
+	}
+    }
+
+  return ret;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug17.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug17.c
new file mode 100644
index 0000000..2ef3986
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug17.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <string.h>
+
+static int
+do_test (void)
+{
+  static const char expect[] = "0, 0, 0";
+  char buf[100];
+  int status = 0;
+
+  static const char fmt1[] = "%0d, %0ld, %0lld";
+  snprintf (buf, sizeof (buf), fmt1, 0, 0L, 0LL);
+  if (strcmp (buf, expect) != 0)
+    {
+      printf ("\"%s\": got \"%s\", expected \"%s\"\n", fmt1, buf, expect);
+      status = 1;
+    }
+
+  static const char fmt2[] = "%0u, %0lu, %0llu";
+  snprintf (buf, sizeof (buf), fmt2, 0u, 0uL, 0uLL);
+  if (strcmp (buf, expect) != 0)
+    {
+      printf ("\"%s\": got \"%s\", expected \"%s\"\n", fmt2, buf, expect);
+      status = 1;
+    }
+
+  return status;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug18.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug18.c
new file mode 100644
index 0000000..2e4c378
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug18.c
@@ -0,0 +1,48 @@
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+
+#ifndef CHAR
+# define CHAR char
+# define L(str) str
+# define SSCANF sscanf
+#endif
+
+
+static int
+do_test (void)
+{
+  printf("setting errno to EINTR\n");
+  errno = EINTR;
+
+  printf("checking sscanf\n");
+
+  CHAR str[] = L("7-11");
+  int i, j, n;
+
+  i = j = n = 0;
+  SSCANF (str, L(" %i - %i %n"), &i, &j, &n);
+  printf ("found %i-%i (length=%i)\n", i, j, n);
+
+  int result = 0;
+  if (i != 7)
+    {
+      printf ("i is %d, expected 7\n", i);
+      result = 1;
+    }
+  if (j != 11)
+    {
+      printf ("j is %d, expected 11\n", j);
+      result = 1;
+    }
+  if (n != 4)
+    {
+      printf ("n is %d, expected 4\n", j);
+      result = 1;
+    }
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug18a.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug18a.c
new file mode 100644
index 0000000..663cbf4
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug18a.c
@@ -0,0 +1,6 @@
+#include <wchar.h>
+#define CHAR wchar_t
+#define L(str) L##str
+#define SSCANF swscanf
+
+#include "bug18.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug19.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug19.c
new file mode 100644
index 0000000..e083304
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug19.c
@@ -0,0 +1,58 @@
+#include <assert.h>
+#include <errno.h>
+#include <stdio.h>
+
+#ifndef CHAR
+# define CHAR char
+# define L(str) str
+# define FPUTS fputs
+# define FSCANF fscanf
+#endif
+
+
+static int
+do_test (void)
+{
+  FILE *fp = tmpfile ();
+  if (fp == NULL)
+    {
+      puts ("cannot open file");
+      return 1;
+    }
+
+  FPUTS (L("7-11"), fp);
+  rewind (fp);
+
+  printf("setting errno to EINTR\n");
+  errno = EINTR;
+
+  printf("checking sscanf\n");
+
+  int i, j, n;
+
+  i = j = n = 0;
+  FSCANF (fp, L(" %i - %i %n"), &i, &j, &n);
+  printf ("found %i-%i (length=%i)\n", i, j, n);
+
+  int result = 0;
+  if (i != 7)
+    {
+      printf ("i is %d, expected 7\n", i);
+      result = 1;
+    }
+  if (j != 11)
+    {
+      printf ("j is %d, expected 11\n", j);
+      result = 1;
+    }
+  if (n != 4)
+    {
+      printf ("n is %d, expected 4\n", j);
+      result = 1;
+    }
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug19a.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug19a.c
new file mode 100644
index 0000000..c723398
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug19a.c
@@ -0,0 +1,7 @@
+#include <wchar.h>
+#define CHAR wchar_t
+#define L(str) L##str
+#define FPUTS fputws
+#define FSCANF fwscanf
+
+#include "bug19.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug2.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug2.c
new file mode 100644
index 0000000..79b89a4
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug2.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int
+main (void)
+{
+  int i;
+  puts ("This should print \"wow = I\" for I from 0 to 39 inclusive.");
+  for (i = 0; i < 40; i++)
+    printf ("%s = %d\n", "wow", i);
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug20.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug20.c
new file mode 100644
index 0000000..385f6ff
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug20.c
@@ -0,0 +1,32 @@
+/* BZ #5225 */
+#include <stdio.h>
+#include <string.h>
+#include <wchar.h>
+
+static int
+do_test (void)
+{
+  wchar_t in[] = L"123,abc,321";
+  /* This is the critical part for this test.  format must be in
+     read-only memory.  */
+  static const wchar_t format[50] = L"%d,%[^,],%d";
+  int out_d1, out_d2;
+  char out_s[50];
+  printf ("in='%ls' format='%ls'\n", in, format);
+  if (swscanf (in, format, &out_d1, out_s, &out_d2) != 3)
+    {
+      puts ("swscanf did not return 3");
+      return 1;
+    }
+  printf ("in='%ls' format='%ls'\n", in, format);
+  printf ("out_d1=%d out_s='%s' out_d2=%d\n", out_d1, out_s, out_d2);
+  if (out_d1 != 123 || strcmp (out_s, "abc") != 0 || out_d2 != 321)
+    {
+      puts ("swscanf did not return the correct values");
+      return 1;
+    }
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug21.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug21.c
new file mode 100644
index 0000000..ca27272
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug21.c
@@ -0,0 +1,25 @@
+#include <stdio.h>
+#include <libc-internal.h>
+
+static int
+do_test (void)
+{
+  static const char buf[] = " ";
+  char *str;
+
+  /* GCC in C99 mode treats %a as the C99 format expecting float *,
+     but glibc with _GNU_SOURCE treats %as as the GNU allocation
+     extension, so resulting in "warning: format '%a' expects argument
+     of type 'float *', but argument 3 has type 'char **'".  This
+     applies to the other %as, %aS and %a[] formats below as well.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat");
+  int r = sscanf (buf, "%as", &str);
+  DIAG_POP_NEEDS_COMMENT;
+  printf ("%d %p\n", r, str);
+
+  return r != -1 || str != NULL;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug22.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug22.c
new file mode 100644
index 0000000..b26399a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug22.c
@@ -0,0 +1,56 @@
+/* BZ #5424 */
+#include <stdio.h>
+#include <errno.h>
+
+/* INT_MAX + 1 */
+#define N 2147483648
+
+/* (INT_MAX / 2) + 2 */
+#define N2 1073741825
+
+/* INT_MAX - 3 */
+#define N3 2147483644
+
+#define STRINGIFY(S) #S
+#define MAKE_STR(S) STRINGIFY(S)
+
+#define SN MAKE_STR(N)
+#define SN2 MAKE_STR(N2)
+#define SN3 MAKE_STR(N3)
+
+static int
+do_test (void)
+{
+  int ret;
+
+  FILE *fp = fopen ("/dev/null", "w");
+  if (fp == NULL)
+    {
+      puts ("cannot open /dev/null");
+      return 1;
+    }
+
+  ret = fprintf (fp, "%" SN "d", 1);
+  printf ("ret = %d\n", ret);
+  if (ret != -1 || errno != EOVERFLOW)
+	  return 1;
+
+  ret = fprintf (fp, "%." SN "d", 1);
+  printf ("ret = %d\n", ret);
+  if (ret != -1 || errno != EOVERFLOW)
+	  return 1;
+
+  ret = fprintf (fp, "%." SN3 "d", 1);
+  printf ("ret = %d\n", ret);
+  if (ret != -1 || errno != EOVERFLOW)
+	  return 1;
+
+  ret = fprintf (fp, "%" SN2 "d%" SN2 "d", 1, 1);
+  printf ("ret = %d\n", ret);
+
+  return ret != -1 || errno != EOVERFLOW;
+}
+
+#define TIMEOUT 60
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug23-2.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug23-2.c
new file mode 100644
index 0000000..9e0cfe6
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug23-2.c
@@ -0,0 +1,70 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+static const char expected[] = "\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n";
+
+static int
+do_test (void)
+{
+  char *buf = malloc (strlen (expected) + 1);
+  snprintf (buf, strlen (expected) + 1,
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
+	    "a", "b", "c", "d", 5);
+  return strcmp (buf, expected) != 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug23-3.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug23-3.c
new file mode 100644
index 0000000..57c8cef
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug23-3.c
@@ -0,0 +1,50 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+int
+do_test (void)
+{
+  size_t instances = 16384;
+#define X0 "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+  const char *item = "\na\nabbcd55";
+#define X3 X0 X0 X0 X0 X0 X0 X0 X0
+#define X6 X3 X3 X3 X3 X3 X3 X3 X3
+#define X9 X6 X6 X6 X6 X6 X6 X6 X6
+#define X12 X9 X9 X9 X9 X9 X9 X9 X9
+#define X14 X12 X12 X12 X12
+#define TRAILER "%%%%%%%%%%%%%%%%%%%%%%%%%%"
+#define TRAILER2 TRAILER TRAILER
+  size_t length = instances * strlen (item) + strlen (TRAILER) + 1;
+
+  char *buf = malloc (length + 1);
+  snprintf (buf, length + 1,
+	    X14 TRAILER2 "\n",
+	    "a", "b", "c", "d", 5);
+
+  const char *p = buf;
+  size_t i;
+  for (i = 0; i < instances; ++i)
+    {
+      const char *expected;
+      for (expected = item; *expected; ++expected)
+	{
+	  if (*p != *expected)
+	    {
+	      printf ("mismatch at offset %zu (%zu): expected %d, got %d\n",
+		      (size_t) (p - buf), i, *expected & 0xFF, *p & 0xFF);
+	      return 1;
+	    }
+	  ++p;
+	}
+    }
+  if (strcmp (p, TRAILER "\n") != 0)
+    {
+      printf ("mismatch at trailer: [%s]\n", p);
+      return 1;
+    }
+  free (buf);
+  return 0;
+}
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug23-4.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug23-4.c
new file mode 100644
index 0000000..a478564
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug23-4.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/resource.h>
+
+#define LIMIT 1000000
+
+int
+main (void)
+{
+  struct rlimit lim;
+  getrlimit (RLIMIT_STACK, &lim);
+  lim.rlim_cur = 1048576;
+  setrlimit (RLIMIT_STACK, &lim);
+  char *fmtstr = malloc (4 * LIMIT + 1);
+  if (fmtstr == NULL)
+    abort ();
+  char *output = malloc (LIMIT + 1);
+  if (output == NULL)
+    abort ();
+  for (size_t i = 0; i < LIMIT; i++)
+    memcpy (fmtstr + 4 * i, "%1$d", 4);
+  fmtstr[4 * LIMIT] = '\0';
+  int ret = snprintf (output, LIMIT + 1, fmtstr, 0);
+  if (ret != LIMIT)
+    abort ();
+  for (size_t i = 0; i < LIMIT; i++)
+    if (output[i] != '0')
+      abort ();
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug23.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug23.c
new file mode 100644
index 0000000..dcc5428
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug23.c
@@ -0,0 +1,21 @@
+#include <stdio.h>
+#include <string.h>
+
+static char buf[32768];
+static const char expected[] = "\
+\n\
+a\n\
+abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n";
+
+static int
+do_test (void)
+{
+  snprintf (buf, sizeof (buf),
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
+	    "a", "b", "c", "d", 5);
+  return strcmp (buf, expected) != 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug24.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug24.c
new file mode 100644
index 0000000..4e6ffcc
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug24.c
@@ -0,0 +1,26 @@
+#include <stdio.h>
+#include <errno.h>
+
+static int
+do_test (void)
+{
+  FILE *fp = fopen ("/foobar_does_no_exit", "re");
+  if (fp != NULL)
+    {
+      /* A joker created this file.  Ignore the test.  */
+      fclose (fp);
+      return 0;
+    }
+
+  if (errno == ENOENT)
+    {
+      printf ("no bug\n");
+      return 0;
+    }
+
+  printf ("bug : expected ENOENT, got: %m\n");
+  return 1;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug25.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug25.c
new file mode 100644
index 0000000..30c1339
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug25.c
@@ -0,0 +1,70 @@
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+static const char expected[] = "\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n";
+
+static int
+do_test (void)
+{
+  char *buf = malloc (strlen (expected) + 1);
+  snprintf (buf, strlen (expected) + 1,
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+	    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
+	    "a", "b", "c", "d", 5);
+  return strcmp (buf, expected) != 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug26.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug26.c
new file mode 100644
index 0000000..4994f9c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug26.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2013-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <string.h>
+
+int
+main (void)
+{
+  FILE *f;
+  int lost = 0;
+  int c;
+  double d;
+  char s[] = "+.e";
+
+  f = fmemopen (s, strlen (s), "r");
+  /* This should fail to parse a floating-point number, and leave 'e' in the
+     input.  */
+  lost |= (fscanf (f, "%lf", &d) != 0);
+  c = fgetc (f);
+  lost |= c != 'e';
+  puts (lost ? "Test FAILED!" : "Test succeeded.");
+  return lost;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug3.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug3.c
new file mode 100644
index 0000000..6b2ed6b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug3.c
@@ -0,0 +1,53 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main (void)
+{
+  FILE *f;
+  int i;
+  const char filename[] = "/tmp/bug3.test";
+
+  f = fopen(filename, "w+");
+  for (i=0; i<9000; i++)
+    putc ('x', f);
+  fseek (f, 8180L, 0);
+  fwrite ("Where does this text go?", 1, 24, f);
+  fflush (f);
+
+  rewind (f);
+  for (i=0; i<9000; i++)
+    {
+      int j;
+
+      if ((j = getc(f)) != 'x')
+	{
+	  if (i != 8180)
+	    {
+	      printf ("Test FAILED!");
+	      return 1;
+	    }
+	  else
+	    {
+	      char buf[25];
+
+	      buf[0] = j;
+	      fread (buf + 1, 1, 23, f);
+	      buf[24] = '\0';
+	      if (strcmp (buf, "Where does this text go?") != 0)
+		{
+		  printf ("%s\nTest FAILED!\n", buf);
+		  return 1;
+		}
+	      i += 23;
+	    }
+	}
+    }
+
+  fclose(f);
+  remove(filename);
+
+  puts ("Test succeeded.");
+
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug4.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug4.c
new file mode 100644
index 0000000..a037786
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug4.c
@@ -0,0 +1,48 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+
+int stdio_block_read = 1, stdio_block_write = 1;
+
+int
+main (int argc, char *argv[])
+{
+  FILE *f;
+  int i;
+  char buffer[31];
+  const char filename[] = "/tmp/bug4.test";
+
+  while ((i = getopt (argc, argv, "rw")) != -1)
+    switch (i)
+      {
+      case 'r':
+	stdio_block_read = 0;
+	break;
+      case 'w':
+	stdio_block_write = 0;
+	break;
+      }
+
+  f = fopen (filename, "w+");
+  for (i = 0; i < 9000; ++i)
+    putc('x', f);
+
+  fseek (f, 8180L, 0);
+  fwrite ("Where does this text come from?", 1, 31, f);
+  fseek (f, 8180L, 0);
+  fread (buffer, 1, 31, f);
+  fwrite (buffer, 1, 31, stdout);
+  fclose (f);
+  remove (filename);
+
+  if (!memcmp (buffer, "Where does this text come from?", 31))
+    {
+      puts ("\nTest succeeded.");
+      return 0;
+    }
+  else
+    {
+      puts ("\nTest FAILED!");
+      return 1;
+    }
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug5.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug5.c
new file mode 100644
index 0000000..f655845
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug5.c
@@ -0,0 +1,69 @@
+/* If stdio is working correctly, after this is run infile and outfile
+   will have the same contents.  If the bug (found in GNU C library 0.3)
+   exhibits itself, outfile will be missing the 2nd through 1023rd
+   characters.  */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static char buf[8192];
+
+int
+main (void)
+{
+  FILE *in;
+  FILE *out;
+  static char inname[] = "/tmp/bug5.in";
+  static char outname[] = "/tmp/bug5.out";
+  char *printbuf;
+  size_t i;
+  int result;
+
+  /* Create a test file.  */
+  in = fopen (inname, "w+");
+  if (in == NULL)
+    {
+      perror (inname);
+      return 1;
+    }
+  for (i = 0; i < 1000; ++i)
+    fprintf (in, "%Zu\n", i);
+
+  out = fopen (outname, "w");
+  if (out == NULL)
+    {
+      perror (outname);
+      return 1;
+    }
+  if (fseek (in, 0L, SEEK_SET) != 0)
+    abort ();
+  putc (getc (in), out);
+  i = fread (buf, 1, sizeof (buf), in);
+  if (i == 0)
+    {
+      perror ("fread");
+      return 1;
+    }
+  if (fwrite (buf, 1, i, out) != i)
+    {
+      perror ("fwrite");
+      return 1;
+    }
+  fclose (in);
+  fclose (out);
+
+  puts ("There should be no further output from this test.");
+  fflush (stdout);
+
+  /* We must remove this entry to assure the `cmp' binary does not use
+     the perhaps incompatible new shared libraries.  */
+  unsetenv ("LD_LIBRARY_PATH");
+
+  asprintf (&printbuf, "cmp %s %s", inname, outname);
+  result = system (printbuf);
+  remove (inname);
+  remove (outname);
+
+  exit ((result != 0));
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug6.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug6.c
new file mode 100644
index 0000000..0db63a3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug6.c
@@ -0,0 +1,26 @@
+#include <stdio.h>
+
+int
+main (void)
+{
+  char buf[80];
+  int i;
+  int lost = 0;
+
+  scanf ("%2s", buf);
+  lost |= (buf[0] != 'X' || buf[1] != 'Y' || buf[2] != '\0');
+  if (lost)
+    puts ("test of %2s failed.");
+  scanf (" ");
+  scanf ("%d", &i);
+  lost |= (i != 1234);
+  if (lost)
+    puts ("test of %d failed.");
+  scanf ("%c", buf);
+  lost |= (buf[0] != 'L');
+  if (lost)
+    puts ("test of %c failed.\n");
+
+  puts (lost ? "Test FAILED!" : "Test succeeded.");
+  return lost;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug6.input b/ap/libc/glibc/glibc-2.23/stdio-common/bug6.input
new file mode 100644
index 0000000..d996e39
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug6.input
@@ -0,0 +1 @@
+XY 1234L
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug7.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug7.c
new file mode 100644
index 0000000..2b1efe3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug7.c
@@ -0,0 +1,69 @@
+/* Regression test for fseek and freopen bugs.  */
+
+#include <stdio.h>
+
+int
+main (int argc, char *argv[])
+{
+  int lose = 0;
+  char filename[L_tmpnam];
+  FILE *fp;
+
+  if (tmpnam (filename) == NULL)
+    {
+      printf ("tmpnam failed\n");
+      lose = 1;
+    }
+  else
+    {
+      fp = fopen (filename, "w+");
+      fprintf (fp, "Hello world!\n");
+      fflush (fp);
+      fseek (fp, 5L, SEEK_SET);
+      if (fseek (fp, -1L, SEEK_CUR) < 0)
+	{
+	  printf ("seek failed\n");
+	  lose = 1;
+	}
+      fclose (fp);
+      remove (filename);
+    }
+
+  {
+    FILE *file1;
+    FILE *file2;
+    char filename1[L_tmpnam];
+    char filename2[L_tmpnam];
+    int ch;
+
+    if (tmpnam (filename1) == NULL || tmpnam (filename2) == NULL)
+      {
+	printf ("tmpnam failed\n");
+	lose = 1;
+      }
+    else
+      {
+
+	file1 = fopen (filename1, "w");
+	fclose (file1);
+
+	file2 = fopen (filename2, "w");
+	fputc ('x', file2);
+	fclose (file2);
+
+	file1 = fopen (filename1, "r");
+	file2 = freopen (filename2, "r", file1);
+	if ((ch = fgetc (file2)) != 'x')
+	  {
+	    printf ("wrong character in reopened file, value = %d\n", ch);
+	    lose = 1;
+	  }
+	fclose (file2);
+	remove (filename1);
+	remove (filename2);
+      }
+  }
+
+  puts (lose ? "Test FAILED!" : "Test succeeded.");
+  return lose;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug8.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug8.c
new file mode 100644
index 0000000..77bbfe3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug8.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+    char buf[100];
+    int point, x, y;
+    int status = 0;
+
+    sscanf("0x10 10", "%x %x", &x, &y);
+    sprintf(buf, "%d %d", x, y);
+    puts (buf);
+    status |= strcmp (buf, "16 16");
+    sscanf("P012349876", "P%1d%4d%4d", &point, &x, &y);
+    sprintf(buf, "%d %d %d", point, x, y);
+    status |= strcmp (buf, "0 1234 9876");
+    puts (buf);
+    sscanf("P112349876", "P%1d%4d%4d", &point, &x, &y);
+    sprintf(buf, "%d %d %d", point, x, y);
+    status |= strcmp (buf, "1 1234 9876");
+    puts (buf);
+
+    puts (status ? "Test failed" : "Test passed");
+
+    return status;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/bug9.c b/ap/libc/glibc/glibc-2.23/stdio-common/bug9.c
new file mode 100644
index 0000000..732904d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/bug9.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main(int argc, char *argv[])
+{
+  char buf[100];
+  int a, b;
+  int status = 0;
+
+  sscanf ("12ab", "%dab%n", &a, &b);
+  sprintf (buf, "%d, %d", a, b);
+  puts (buf);
+  status |= strcmp (buf, "12, 4");
+
+  sscanf ("12ab100", "%dab%n100", &a, &b);
+  sprintf (buf, "%d, %d", a, b);
+  puts (buf);
+  status |= strcmp (buf, "12, 4");
+
+  return status;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/ctermid.c b/ap/libc/glibc/glibc-2.23/stdio-common/ctermid.c
new file mode 100644
index 0000000..d157789
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/ctermid.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stdio.h>
+
+
+/* Return the name of the controlling terminal.
+   If S is not NULL, the name is copied into it (it should be at
+   least L_ctermid bytes long), otherwise a static buffer is used.  */
+char *
+ctermid (char *s)
+{
+  __set_errno (ENOSYS);
+  return NULL;
+}
+
+
+stub_warning (ctermid)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/cuserid.c b/ap/libc/glibc/glibc-2.23/stdio-common/cuserid.c
new file mode 100644
index 0000000..574b464
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/cuserid.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <errno.h>
+
+/* Return the username of the caller.
+   If S is not NULL, it points to a buffer of at least L_cuserid bytes
+   into which the name is copied; otherwise, a static buffer is used.  */
+char *
+cuserid (char *s)
+{
+  __set_errno (ENOSYS);
+  return NULL;
+}
+
+
+stub_warning (cuserid)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/dprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/dprintf.c
new file mode 100644
index 0000000..e9762e2
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/dprintf.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#include <libioP.h>
+#define vdprintf(d, f, a) _IO_vdprintf (d, f, a)
+
+/* Write formatted output to D, according to the format string FORMAT.  */
+/* VARARGS2 */
+int
+__dprintf (int d, const char *format, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, format);
+  done = vdprintf (d, format, arg);
+  va_end (arg);
+
+  return done;
+}
+libc_hidden_def (__dprintf)
+ldbl_hidden_def (__dprintf, dprintf)
+ldbl_weak_alias (__dprintf, dprintf)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/errlist.c b/ap/libc/glibc/glibc-2.23/stdio-common/errlist.c
new file mode 100644
index 0000000..440a8e1
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/errlist.c
@@ -0,0 +1,36 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stddef.h>
+
+
+const char *const _sys_errlist[] =
+  {
+    "Error 0",			/* 0 */
+    "Argument out of function's domain", /* 1 = EDOM */
+    "Result out of range",	/* 2 = ERANGE */
+    "Operation not implemented", /* 3 = ENOSYS */
+    "Invalid argument",		/* 4 = EINVAL */
+    "Illegal seek",		/* 5 = ESPIPE */
+    "Bad file descriptor",	/* 6 = EBADF */
+    "Cannot allocate memory",	/* 7 = ENOMEM */
+    "Permission denied",	/* 8 = EACCES */
+    "Too many open files in system", /* 9 = ENFILE */
+    "Too many open files",	/* 10 = EMFILE */
+  };
+
+const int _sys_nerr = sizeof (_sys_errlist) / sizeof (_sys_errlist[0]);
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/errnobug.c b/ap/libc/glibc/glibc-2.23/stdio-common/errnobug.c
new file mode 100644
index 0000000..e046222
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/errnobug.c
@@ -0,0 +1,59 @@
+/* Regression test for reported old bug that errno is clobbered
+   by the first successful output to a stream on an unseekable object.
+   Copyright (C) 1995-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main (void)
+{
+  int fd[2];
+  FILE *f;
+
+  /* Get a stream that cannot seek.  */
+
+  if (pipe (fd))
+    {
+      perror ("pipe");
+      return 1;
+    }
+  f = fdopen (fd[1], "w");
+  if (f == NULL)
+    {
+      perror ("fdopen");
+      return 1;
+    }
+
+  errno = 0;
+  if (fputs ("fnord", f) == EOF)
+    {
+      perror ("fputs");
+      return 1;
+    }
+
+  if (errno)
+    {
+      perror ("errno gratuitously set -- TEST FAILED");
+      return 1;
+    }
+
+  puts ("Test succeeded.");
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/flockfile.c b/ap/libc/glibc/glibc-2.23/stdio-common/flockfile.c
new file mode 100644
index 0000000..34c59d7
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/flockfile.c
@@ -0,0 +1,29 @@
+/* Lock I/O stream.  Singlethreaded version.
+   Copyright (C) 1996-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+
+#undef _IO_flockfile
+
+void
+__flockfile (FILE *stream)
+{
+  /* Do nothing.  Using this version does not do any locking.  */
+}
+weak_alias (__flockfile, flockfile);
+weak_alias (__flockfile, _IO_flockfile)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/fprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/fprintf.c
new file mode 100644
index 0000000..1c41b0f
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/fprintf.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <libioP.h>
+
+
+/* Write formatted output to STREAM from the format string FORMAT.  */
+/* VARARGS2 */
+int
+__fprintf (FILE *stream, const char *format, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, format);
+  done = vfprintf (stream, format, arg);
+  va_end (arg);
+
+  return done;
+}
+ldbl_hidden_def (__fprintf, fprintf)
+ldbl_strong_alias (__fprintf, fprintf)
+
+/* We define the function with the real name here.  But deep down in
+   libio the original function _IO_fprintf is also needed.  So make
+   an alias.  */
+ldbl_weak_alias (__fprintf, _IO_fprintf)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/fscanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/fscanf.c
new file mode 100644
index 0000000..4c10444
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/fscanf.c
@@ -0,0 +1,36 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <libioP.h>
+#include <stdarg.h>
+#include <stdio.h>
+
+/* Read formatted input from STREAM according to the format string FORMAT.  */
+/* VARARGS2 */
+int
+__fscanf (FILE *stream, const char *format, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, format);
+  done = __vfscanf (stream, format, arg);
+  va_end (arg);
+
+  return done;
+}
+ldbl_strong_alias (__fscanf, fscanf)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/ftrylockfile.c b/ap/libc/glibc/glibc-2.23/stdio-common/ftrylockfile.c
new file mode 100644
index 0000000..fe871e1
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/ftrylockfile.c
@@ -0,0 +1,30 @@
+/* Try locking I/O stream.  Singlethreaded version.
+   Copyright (C) 1996-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+
+#undef _IO_ftrylockfile
+
+int
+__ftrylockfile (FILE *stream)
+{
+  /* Do nothing.  Using this version does not do any locking.  */
+  return 1;
+}
+weak_alias (__ftrylockfile, ftrylockfile);
+weak_alias (__ftrylockfile, _IO_ftrylockfile)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/funlockfile.c b/ap/libc/glibc/glibc-2.23/stdio-common/funlockfile.c
new file mode 100644
index 0000000..95fb068
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/funlockfile.c
@@ -0,0 +1,29 @@
+/* Unlock I/O stream.  Singlethreaded version.
+   Copyright (C) 1996-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+
+#undef _IO_funlockfile
+
+void
+__funlockfile (FILE *stream)
+{
+  /* Do nothing.  Using this version does not do any locking.  */
+}
+weak_alias (__funlockfile, _IO_funlockfile)
+weak_alias (__funlockfile, funlockfile);
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/fxprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/fxprintf.c
new file mode 100644
index 0000000..0972651
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/fxprintf.c
@@ -0,0 +1,55 @@
+/* Copyright (C) 2005-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.org>.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <assert.h>
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <wchar.h>
+#include <string.h>
+#include <libioP.h>
+
+
+int
+__fxprintf (FILE *fp, const char *fmt, ...)
+{
+  if (fp == NULL)
+    fp = stderr;
+
+  va_list ap;
+  va_start (ap, fmt);
+
+  int res;
+  if (_IO_fwide (fp, 0) > 0)
+    {
+      size_t len = strlen (fmt) + 1;
+      wchar_t wfmt[len];
+      for (size_t i = 0; i < len; ++i)
+	{
+	  assert (isascii (fmt[i]));
+	  wfmt[i] = fmt[i];
+	}
+      res = __vfwprintf (fp, wfmt, ap);
+    }
+  else
+    res = _IO_vfprintf (fp, fmt, ap);
+
+  va_end (ap);
+
+  return res;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/getline.c b/ap/libc/glibc/glibc-2.23/stdio-common/getline.c
new file mode 100644
index 0000000..39e4a39
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/getline.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stddef.h>
+#include <stdio.h>
+
+#undef __getline
+
+#include "../libio/libioP.h"
+#undef ssize_t
+#define ssize_t _IO_ssize_t
+#define __getdelim _IO_getdelim
+
+/* Like getdelim, but always looks for a newline.  */
+ssize_t
+__getline (char **lineptr, size_t *n, FILE *stream)
+{
+  return __getdelim (lineptr, n, '\n', stream);
+}
+
+weak_alias (__getline, getline)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/getw.c b/ap/libc/glibc/glibc-2.23/stdio-common/getw.c
new file mode 100644
index 0000000..abf5459
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/getw.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+
+#include <libio/iolibio.h>
+#define fread(p, m, n, s) _IO_fread (p, m, n, s)
+
+/* Read a word (int) from STREAM.  */
+int
+getw (FILE *stream)
+{
+  int w;
+
+  /* Is there a better way?  */
+  if (fread ((void *) &w, sizeof (w), 1, stream) != 1)
+    return EOF;
+  return w;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_fscanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_fscanf.c
new file mode 100644
index 0000000..6fe490a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_fscanf.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <libioP.h>
+#include <stdarg.h>
+#include <stdio.h>
+
+/* Read formatted input from STREAM according to the format string FORMAT.  */
+/* VARARGS2 */
+int
+__isoc99_fscanf (FILE *stream, const char *format, ...)
+{
+  va_list arg;
+  int done;
+
+  _IO_acquire_lock_clear_flags2 (stream);
+  stream->_flags2 |= _IO_FLAGS2_SCANF_STD;
+
+  va_start (arg, format);
+  done = _IO_vfscanf (stream, format, arg, NULL);
+  va_end (arg);
+
+  _IO_release_lock (stream);
+  return done;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_scanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_scanf.c
new file mode 100644
index 0000000..51f6c3c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_scanf.c
@@ -0,0 +1,44 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <libioP.h>
+
+
+/* Read formatted input from stdin according to the format string FORMAT.  */
+/* VARARGS1 */
+int
+__isoc99_scanf (const char *format, ...)
+{
+  va_list arg;
+  int done;
+
+#ifdef _IO_MTSAFE_IO
+  _IO_acquire_lock_clear_flags2 (stdin);
+#endif
+  stdin->_flags2 |= _IO_FLAGS2_SCANF_STD;
+
+  va_start (arg, format);
+  done = _IO_vfscanf (stdin, format, arg, NULL);
+  va_end (arg);
+
+#ifdef _IO_MTSAFE_IO
+  _IO_release_lock (stdin);
+#endif
+  return done;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_sscanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_sscanf.c
new file mode 100644
index 0000000..57207df
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_sscanf.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <libioP.h>
+
+/* Read formatted input from S, according to the format string FORMAT.  */
+/* VARARGS2 */
+int
+__isoc99_sscanf (const char *s, const char *format, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, format);
+  done = __isoc99_vsscanf (s, format, arg);
+  va_end (arg);
+
+  return done;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_vfscanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_vfscanf.c
new file mode 100644
index 0000000..d4dc436
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_vfscanf.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <libioP.h>
+#include <stdio.h>
+
+/* Read formatted input from STREAM according to the format string FORMAT.  */
+/* VARARGS2 */
+int
+__isoc99_vfscanf (FILE *stream, const char *format, _IO_va_list args)
+{
+  int done;
+
+  _IO_acquire_lock_clear_flags2 (stream);
+  stream->_flags2 |= _IO_FLAGS2_SCANF_STD;
+  done = _IO_vfscanf (stream, format, args, NULL);
+  _IO_release_lock (stream);
+  return done;
+}
+libc_hidden_def (__isoc99_vfscanf)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_vscanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_vscanf.c
new file mode 100644
index 0000000..2df433c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_vscanf.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <libioP.h>
+#include <stdio.h>
+
+/* Read formatted input from STDIN according to the format string FORMAT.  */
+/* VARARGS2 */
+int
+__isoc99_vscanf (const char *format, _IO_va_list args)
+{
+  int done;
+
+  _IO_acquire_lock_clear_flags2 (stdin);
+  stdin->_flags2 |= _IO_FLAGS2_SCANF_STD;
+  done = _IO_vfscanf (stdin, format, args, NULL);
+  _IO_release_lock (stdin);
+  return done;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_vsscanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_vsscanf.c
new file mode 100644
index 0000000..720f122
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/isoc99_vsscanf.c
@@ -0,0 +1,46 @@
+/* Copyright (C) 1993-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.
+
+   As a special exception, if you link the code in this file with
+   files compiled with a GNU compiler to produce an executable,
+   that does not cause the resulting executable to be covered by
+   the GNU Lesser General Public License.  This exception does not
+   however invalidate any other reasons why the executable file
+   might be covered by the GNU Lesser General Public License.
+   This exception applies to code released by its copyright holders
+   in files containing the exception.  */
+
+#include <libioP.h>
+#include <stdio.h>
+#include "../libio/strfile.h"
+
+int
+__isoc99_vsscanf (const char *string, const char *format, _IO_va_list args)
+{
+  int ret;
+  _IO_strfile sf;
+#ifdef _IO_MTSAFE_IO
+  sf._sbf._f._lock = NULL;
+#endif
+  _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
+  _IO_JUMPS (&sf._sbf) = &_IO_str_jumps;
+  _IO_str_init_static_internal (&sf, (char*)string, 0, NULL);
+  sf._sbf._f._flags2 |= _IO_FLAGS2_SCANF_STD;
+  ret = _IO_vfscanf (&sf._sbf._f, format, args, NULL);
+  return ret;
+}
+libc_hidden_def (__isoc99_vsscanf)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/itoa-digits.c b/ap/libc/glibc/glibc-2.23/stdio-common/itoa-digits.c
new file mode 100644
index 0000000..b819abc
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/itoa-digits.c
@@ -0,0 +1,24 @@
+/* Digits.
+   Copyright (C) 1994-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <_itoa.h>
+
+/* Lower-case digits.  */
+const char _itoa_lower_digits[36]
+	= "0123456789abcdefghijklmnopqrstuvwxyz";
+libc_hidden_data_def (_itoa_lower_digits)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/itoa-udigits.c b/ap/libc/glibc/glibc-2.23/stdio-common/itoa-udigits.c
new file mode 100644
index 0000000..ac303ca
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/itoa-udigits.c
@@ -0,0 +1,24 @@
+/* Digits.
+   Copyright (C) 1994-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <_itoa.h>
+
+/* Upper-case digits.  */
+const char _itoa_upper_digits[36]
+	= "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+libc_hidden_data_def (_itoa_upper_digits)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/itowa-digits.c b/ap/libc/glibc/glibc-2.23/stdio-common/itowa-digits.c
new file mode 100644
index 0000000..399d57e
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/itowa-digits.c
@@ -0,0 +1,26 @@
+/* Digits.
+   Copyright (C) 1994-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <wchar.h>
+
+/* Lower-case digits.  */
+const wchar_t _itowa_lower_digits[36] attribute_hidden
+	= L"0123456789abcdefghijklmnopqrstuvwxyz";
+/* Upper-case digits.  */
+const wchar_t _itowa_upper_digits[36] attribute_hidden
+	= L"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/perror.c b/ap/libc/glibc/glibc-2.23/stdio-common/perror.c
new file mode 100644
index 0000000..c2bba68
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/perror.c
@@ -0,0 +1,83 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <wchar.h>
+#include "libioP.h"
+
+static void
+perror_internal (FILE *fp, const char *s, int errnum)
+{
+  char buf[1024];
+  const char *colon;
+  const char *errstring;
+
+  if (s == NULL || *s == '\0')
+    s = colon = "";
+  else
+    colon = ": ";
+
+  errstring = __strerror_r (errnum, buf, sizeof buf);
+
+  (void) __fxprintf (fp, "%s%s%s\n", s, colon, errstring);
+}
+
+
+/* Print a line on stderr consisting of the text in S, a colon, a space,
+   a message describing the meaning of the contents of `errno' and a newline.
+   If S is NULL or "", the colon and space are omitted.  */
+void
+perror (const char *s)
+{
+  int errnum = errno;
+  FILE *fp;
+  int fd = -1;
+
+
+  /* The standard says that 'perror' must not change the orientation
+     of the stream.  What is supposed to happen when the stream isn't
+     oriented yet?  In this case we'll create a new stream which is
+     using the same underlying file descriptor.  */
+  if (__builtin_expect (_IO_fwide (stderr, 0) != 0, 1)
+      || (fd = __fileno (stderr)) == -1
+      || (fd = __dup (fd)) == -1
+      || (fp = fdopen (fd, "w+")) == NULL)
+    {
+      if (__glibc_unlikely (fd != -1))
+	__close (fd);
+
+      /* Use standard error as is.  */
+      perror_internal (stderr, s, errnum);
+    }
+  else
+    {
+      /* We don't have to do any special hacks regarding the file
+	 position.  Since the stderr stream wasn't used so far we just
+	 write to the descriptor.  */
+      perror_internal (fp, s, errnum);
+
+      if (_IO_ferror_unlocked (fp))
+	stderr->_flags |= _IO_ERR_SEEN;
+
+      /* Close the stream.  */
+      fclose (fp);
+    }
+}
+libc_hidden_def (perror)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/printf-parse.h b/ap/libc/glibc/glibc-2.23/stdio-common/printf-parse.h
new file mode 100644
index 0000000..0f21fed
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/printf-parse.h
@@ -0,0 +1,144 @@
+/* Internal header for parsing printf format strings.
+   Copyright (C) 1995-2016 Free Software Foundation, Inc.
+   This file is part of th GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <printf.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <string.h>
+#include <wchar.h>
+
+
+struct printf_spec
+  {
+    /* Information parsed from the format spec.  */
+    struct printf_info info;
+
+    /* Pointers into the format string for the end of this format
+       spec and the next (or to the end of the string if no more).  */
+    const UCHAR_T *end_of_fmt, *next_fmt;
+
+    /* Position of arguments for precision and width, or -1 if `info' has
+       the constant value.  */
+    int prec_arg, width_arg;
+
+    int data_arg;		/* Position of data argument.  */
+    int data_arg_type;		/* Type of first argument.  */
+    /* Number of arguments consumed by this format specifier.  */
+    size_t ndata_args;
+    /* Size of the parameter for PA_USER type.  */
+    int size;
+  };
+
+
+/* The various kinds off arguments that can be passed to printf.  */
+union printf_arg
+  {
+    wchar_t pa_wchar;
+    int pa_int;
+    long int pa_long_int;
+    long long int pa_long_long_int;
+    unsigned int pa_u_int;
+    unsigned long int pa_u_long_int;
+    unsigned long long int pa_u_long_long_int;
+    double pa_double;
+    long double pa_long_double;
+    const char *pa_string;
+    const wchar_t *pa_wstring;
+    void *pa_pointer;
+    void *pa_user;
+  };
+
+
+#ifndef DONT_NEED_READ_INT
+/* Read a simple integer from a string and update the string pointer.
+   It is assumed that the first character is a digit.  */
+static int
+read_int (const UCHAR_T * *pstr)
+{
+  int retval = **pstr - L_('0');
+
+  while (ISDIGIT (*++(*pstr)))
+    if (retval >= 0)
+      {
+	if (INT_MAX / 10 < retval)
+	  retval = -1;
+	else
+	  {
+	    int digit = **pstr - L_('0');
+
+	    retval *= 10;
+	    if (INT_MAX - digit < retval)
+	      retval = -1;
+	    else
+	      retval += digit;
+	  }
+      }
+
+  return retval;
+}
+#endif
+
+
+/* These are defined in reg-printf.c.  */
+extern printf_arginfo_size_function **__printf_arginfo_table attribute_hidden;
+extern printf_function **__printf_function_table attribute_hidden;
+extern printf_va_arg_function **__printf_va_arg_table attribute_hidden;
+
+
+/* Find the next spec in FORMAT, or the end of the string.  Returns
+   a pointer into FORMAT, to a '%' or a '\0'.  */
+__extern_always_inline const unsigned char *
+__find_specmb (const unsigned char *format)
+{
+  return (const unsigned char *) __strchrnul ((const char *) format, '%');
+}
+
+__extern_always_inline const unsigned int *
+__find_specwc (const unsigned int *format)
+{
+  return (const unsigned int *) __wcschrnul ((const wchar_t *) format, L'%');
+}
+
+
+/* FORMAT must point to a '%' at the beginning of a spec.  Fills in *SPEC
+   with the parsed details.  POSN is the number of arguments already
+   consumed.  At most MAXTYPES - POSN types are filled in TYPES.  Return
+   the number of args consumed by this spec; *MAX_REF_ARG is updated so it
+   remains the highest argument index used.  */
+extern size_t __parse_one_specmb (const unsigned char *format, size_t posn,
+				  struct printf_spec *spec,
+				  size_t *max_ref_arg) attribute_hidden;
+
+extern size_t __parse_one_specwc (const unsigned int *format, size_t posn,
+				  struct printf_spec *spec,
+				  size_t *max_ref_arg) attribute_hidden;
+
+
+
+/* This variable is defined in reg-modifier.c.  */
+struct printf_modifier_record;
+extern struct printf_modifier_record **__printf_modifier_table
+     attribute_hidden;
+
+/* Handle registered modifiers.  */
+extern int __handle_registered_modifier_mb (const unsigned char **format,
+					    struct printf_info *info)
+     attribute_hidden;
+extern int __handle_registered_modifier_wc (const unsigned int **format,
+					    struct printf_info *info)
+     attribute_hidden;
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/printf-parsemb.c b/ap/libc/glibc/glibc-2.23/stdio-common/printf-parsemb.c
new file mode 100644
index 0000000..66cef10
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/printf-parsemb.c
@@ -0,0 +1,407 @@
+/* Helper functions for parsing printf format strings.
+   Copyright (C) 1995-2016 Free Software Foundation, Inc.
+   This file is part of th GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <ctype.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/param.h>
+#include <wchar.h>
+#include <wctype.h>
+
+#ifndef COMPILE_WPRINTF
+# define CHAR_T		char
+# define UCHAR_T	unsigned char
+# define INT_T		int
+# define L_(Str)	Str
+# define ISDIGIT(Ch)	isdigit (Ch)
+# define HANDLE_REGISTERED_MODIFIER __handle_registered_modifier_mb
+#else
+# define CHAR_T		wchar_t
+# define UCHAR_T	unsigned int
+# define INT_T		wint_t
+# define L_(Str)	L##Str
+# define ISDIGIT(Ch)	iswdigit (Ch)
+# define HANDLE_REGISTERED_MODIFIER __handle_registered_modifier_wc
+#endif
+
+#include "printf-parse.h"
+
+#define NDEBUG 1
+#include <assert.h>
+
+
+
+/* FORMAT must point to a '%' at the beginning of a spec.  Fills in *SPEC
+   with the parsed details.  POSN is the number of arguments already
+   consumed.  At most MAXTYPES - POSN types are filled in TYPES.  Return
+   the number of args consumed by this spec; *MAX_REF_ARG is updated so it
+   remains the highest argument index used.  */
+size_t
+attribute_hidden
+#ifdef COMPILE_WPRINTF
+__parse_one_specwc (const UCHAR_T *format, size_t posn,
+		    struct printf_spec *spec, size_t *max_ref_arg)
+#else
+__parse_one_specmb (const UCHAR_T *format, size_t posn,
+		    struct printf_spec *spec, size_t *max_ref_arg)
+#endif
+{
+  unsigned int n;
+  size_t nargs = 0;
+
+  /* Skip the '%'.  */
+  ++format;
+
+  /* Clear information structure.  */
+  spec->data_arg = -1;
+  spec->info.alt = 0;
+  spec->info.space = 0;
+  spec->info.left = 0;
+  spec->info.showsign = 0;
+  spec->info.group = 0;
+  spec->info.i18n = 0;
+  spec->info.extra = 0;
+  spec->info.pad = ' ';
+  spec->info.wide = sizeof (UCHAR_T) > 1;
+
+  /* Test for positional argument.  */
+  if (ISDIGIT (*format))
+    {
+      const UCHAR_T *begin = format;
+
+      n = read_int (&format);
+
+      if (n != 0 && *format == L_('$'))
+	/* Is positional parameter.  */
+	{
+	  ++format;		/* Skip the '$'.  */
+	  if (n != -1)
+	    {
+	      spec->data_arg = n - 1;
+	      *max_ref_arg = MAX (*max_ref_arg, n);
+	    }
+	}
+      else
+	/* Oops; that was actually the width and/or 0 padding flag.
+	   Step back and read it again.  */
+	format = begin;
+    }
+
+  /* Check for spec modifiers.  */
+  do
+    {
+      switch (*format)
+	{
+	case L_(' '):
+	  /* Output a space in place of a sign, when there is no sign.  */
+	  spec->info.space = 1;
+	  continue;
+	case L_('+'):
+	  /* Always output + or - for numbers.  */
+	  spec->info.showsign = 1;
+	  continue;
+	case L_('-'):
+	  /* Left-justify things.  */
+	  spec->info.left = 1;
+	  continue;
+	case L_('#'):
+	  /* Use the "alternate form":
+	     Hex has 0x or 0X, FP always has a decimal point.  */
+	  spec->info.alt = 1;
+	  continue;
+	case L_('0'):
+	  /* Pad with 0s.  */
+	  spec->info.pad = '0';
+	  continue;
+	case L_('\''):
+	  /* Show grouping in numbers if the locale information
+	     indicates any.  */
+	  spec->info.group = 1;
+	  continue;
+	case L_('I'):
+	  /* Use the internationalized form of the output.  Currently
+	     means to use the `outdigits' of the current locale.  */
+	  spec->info.i18n = 1;
+	  continue;
+	default:
+	  break;
+	}
+      break;
+    }
+  while (*++format);
+
+  if (spec->info.left)
+    spec->info.pad = ' ';
+
+  /* Get the field width.  */
+  spec->width_arg = -1;
+  spec->info.width = 0;
+  if (*format == L_('*'))
+    {
+      /* The field width is given in an argument.
+	 A negative field width indicates left justification.  */
+      const UCHAR_T *begin = ++format;
+
+      if (ISDIGIT (*format))
+	{
+	  /* The width argument might be found in a positional parameter.  */
+	  n = read_int (&format);
+
+	  if (n != 0 && *format == L_('$'))
+	    {
+	      if (n != -1)
+		{
+		  spec->width_arg = n - 1;
+		  *max_ref_arg = MAX (*max_ref_arg, n);
+		}
+	      ++format;		/* Skip '$'.  */
+	    }
+	}
+
+      if (spec->width_arg < 0)
+	{
+	  /* Not in a positional parameter.  Consume one argument.  */
+	  spec->width_arg = posn++;
+	  ++nargs;
+	  format = begin;	/* Step back and reread.  */
+	}
+    }
+  else if (ISDIGIT (*format))
+    {
+      int n = read_int (&format);
+
+      /* Constant width specification.  */
+      if (n != -1)
+	spec->info.width = n;
+    }
+  /* Get the precision.  */
+  spec->prec_arg = -1;
+  /* -1 means none given; 0 means explicit 0.  */
+  spec->info.prec = -1;
+  if (*format == L_('.'))
+    {
+      ++format;
+      if (*format == L_('*'))
+	{
+	  /* The precision is given in an argument.  */
+	  const UCHAR_T *begin = ++format;
+
+	  if (ISDIGIT (*format))
+	    {
+	      n = read_int (&format);
+
+	      if (n != 0 && *format == L_('$'))
+		{
+		  if (n != -1)
+		    {
+		      spec->prec_arg = n - 1;
+		      *max_ref_arg = MAX (*max_ref_arg, n);
+		    }
+		  ++format;
+		}
+	    }
+
+	  if (spec->prec_arg < 0)
+	    {
+	      /* Not in a positional parameter.  */
+	      spec->prec_arg = posn++;
+	      ++nargs;
+	      format = begin;
+	    }
+	}
+      else if (ISDIGIT (*format))
+	{
+	  int n = read_int (&format);
+
+	  if (n != -1)
+	    spec->info.prec = n;
+	}
+      else
+	/* "%.?" is treated like "%.0?".  */
+	spec->info.prec = 0;
+    }
+
+  /* Check for type modifiers.  */
+  spec->info.is_long_double = 0;
+  spec->info.is_short = 0;
+  spec->info.is_long = 0;
+  spec->info.is_char = 0;
+  spec->info.user = 0;
+
+  if (__builtin_expect (__printf_modifier_table == NULL, 1)
+      || __printf_modifier_table[*format] == NULL
+      || HANDLE_REGISTERED_MODIFIER (&format, &spec->info) != 0)
+    switch (*format++)
+      {
+      case L_('h'):
+	/* ints are short ints or chars.  */
+	if (*format != L_('h'))
+	  spec->info.is_short = 1;
+	else
+	  {
+	    ++format;
+	    spec->info.is_char = 1;
+	  }
+	break;
+      case L_('l'):
+	/* ints are long ints.  */
+	spec->info.is_long = 1;
+	if (*format != L_('l'))
+	  break;
+	++format;
+	/* FALLTHROUGH */
+      case L_('L'):
+	/* doubles are long doubles, and ints are long long ints.  */
+      case L_('q'):
+	/* 4.4 uses this for long long.  */
+	spec->info.is_long_double = 1;
+	break;
+      case L_('z'):
+      case L_('Z'):
+	/* ints are size_ts.  */
+	assert (sizeof (size_t) <= sizeof (unsigned long long int));
+#if LONG_MAX != LONG_LONG_MAX
+	spec->info.is_long_double = (sizeof (size_t)
+				     > sizeof (unsigned long int));
+#endif
+	spec->info.is_long = sizeof (size_t) > sizeof (unsigned int);
+	break;
+      case L_('t'):
+	assert (sizeof (ptrdiff_t) <= sizeof (long long int));
+#if LONG_MAX != LONG_LONG_MAX
+	spec->info.is_long_double = (sizeof (ptrdiff_t) > sizeof (long int));
+#endif
+	spec->info.is_long = sizeof (ptrdiff_t) > sizeof (int);
+	break;
+      case L_('j'):
+	assert (sizeof (uintmax_t) <= sizeof (unsigned long long int));
+#if LONG_MAX != LONG_LONG_MAX
+	spec->info.is_long_double = (sizeof (uintmax_t)
+				     > sizeof (unsigned long int));
+#endif
+	spec->info.is_long = sizeof (uintmax_t) > sizeof (unsigned int);
+	break;
+      default:
+	/* Not a recognized modifier.  Backup.  */
+	--format;
+	break;
+      }
+
+  /* Get the format specification.  */
+  spec->info.spec = (wchar_t) *format++;
+  spec->size = -1;
+  if (__builtin_expect (__printf_function_table == NULL, 1)
+      || spec->info.spec > UCHAR_MAX
+      || __printf_arginfo_table[spec->info.spec] == NULL
+      /* We don't try to get the types for all arguments if the format
+	 uses more than one.  The normal case is covered though.  If
+	 the call returns -1 we continue with the normal specifiers.  */
+      || (int) (spec->ndata_args = (*__printf_arginfo_table[spec->info.spec])
+				   (&spec->info, 1, &spec->data_arg_type,
+				    &spec->size)) < 0)
+    {
+      /* Find the data argument types of a built-in spec.  */
+      spec->ndata_args = 1;
+
+      switch (spec->info.spec)
+	{
+	case L'i':
+	case L'd':
+	case L'u':
+	case L'o':
+	case L'X':
+	case L'x':
+#if LONG_MAX != LONG_LONG_MAX
+	  if (spec->info.is_long_double)
+	    spec->data_arg_type = PA_INT|PA_FLAG_LONG_LONG;
+	  else
+#endif
+	    if (spec->info.is_long)
+	      spec->data_arg_type = PA_INT|PA_FLAG_LONG;
+	    else if (spec->info.is_short)
+	      spec->data_arg_type = PA_INT|PA_FLAG_SHORT;
+	    else if (spec->info.is_char)
+	      spec->data_arg_type = PA_CHAR;
+	    else
+	      spec->data_arg_type = PA_INT;
+	  break;
+	case L'e':
+	case L'E':
+	case L'f':
+	case L'F':
+	case L'g':
+	case L'G':
+	case L'a':
+	case L'A':
+	  if (spec->info.is_long_double)
+	    spec->data_arg_type = PA_DOUBLE|PA_FLAG_LONG_DOUBLE;
+	  else
+	    spec->data_arg_type = PA_DOUBLE;
+	  break;
+	case L'c':
+	  spec->data_arg_type = PA_CHAR;
+	  break;
+	case L'C':
+	  spec->data_arg_type = PA_WCHAR;
+	  break;
+	case L's':
+	  spec->data_arg_type = PA_STRING;
+	  break;
+	case L'S':
+	  spec->data_arg_type = PA_WSTRING;
+	  break;
+	case L'p':
+	  spec->data_arg_type = PA_POINTER;
+	  break;
+	case L'n':
+	  spec->data_arg_type = PA_INT|PA_FLAG_PTR;
+	  break;
+
+	case L'm':
+	default:
+	  /* An unknown spec will consume no args.  */
+	  spec->ndata_args = 0;
+	  break;
+	}
+    }
+
+  if (spec->data_arg == -1 && spec->ndata_args > 0)
+    {
+      /* There are args consumed, but no positional spec.  Use the
+	 next sequential arg position.  */
+      spec->data_arg = posn;
+      nargs += spec->ndata_args;
+    }
+
+  if (spec->info.spec == L'\0')
+    /* Format ended before this spec was complete.  */
+    spec->end_of_fmt = spec->next_fmt = format - 1;
+  else
+    {
+      /* Find the next format spec.  */
+      spec->end_of_fmt = format;
+#ifdef COMPILE_WPRINTF
+      spec->next_fmt = __find_specwc (format);
+#else
+      spec->next_fmt = __find_specmb (format);
+#endif
+    }
+
+  return nargs;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/printf-parsewc.c b/ap/libc/glibc/glibc-2.23/stdio-common/printf-parsewc.c
new file mode 100644
index 0000000..3de67d8
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/printf-parsewc.c
@@ -0,0 +1,2 @@
+#define COMPILE_WPRINTF	1
+#include "printf-parsemb.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/printf-prs.c b/ap/libc/glibc/glibc-2.23/stdio-common/printf-prs.c
new file mode 100644
index 0000000..b51b567
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/printf-prs.c
@@ -0,0 +1,102 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <printf.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+#include <sys/param.h>
+
+#include "../locale/localeinfo.h"
+
+#ifndef COMPILE_WPRINTF
+# define CHAR_T		char
+# define UCHAR_T	unsigned char
+# define INT_T		int
+# define L_(Str)	Str
+# define ISDIGIT(Ch)	isdigit (Ch)
+# define ISASCII(Ch)	isascii (Ch)
+# define MBRLEN(Cp, L, St) __mbrlen (Cp, L, St)
+
+# define PUT(F, S, N)	_IO_sputn (F, S, N)
+# define PAD(Padchar)							      \
+  if (width > 0)							      \
+    done += _IO_padn (s, Padchar, width)
+#else
+# define vfprintf	vfwprintf
+# define CHAR_T		wchar_t
+# define UCHAR_T	uwchar_t
+# define INT_T		wint_t
+# define L_(Str)	L##Str
+# define ISDIGIT(Ch)	iswdigit (Ch)
+
+# define PUT(F, S, N)	_IO_sputn (F, S, N)
+# define PAD(Padchar)							      \
+  if (width > 0)							      \
+    done += _IO_wpadn (s, Padchar, width)
+#endif
+
+#define DONT_NEED_READ_INT
+#include "printf-parse.h"
+
+
+size_t
+parse_printf_format (const char *fmt, size_t n, int *argtypes)
+{
+  size_t nargs;			/* Number of arguments.  */
+  size_t max_ref_arg;		/* Highest index used in a positional arg.  */
+  struct printf_spec spec;
+  const unsigned char *f = (const unsigned char *) fmt;
+
+  nargs = 0;
+  max_ref_arg = 0;
+
+  /* Search for format specifications.  */
+  for (f = __find_specmb (f); *f != '\0'; f = spec.next_fmt)
+    {
+      /* Parse this spec.  */
+      nargs += __parse_one_specmb (f, nargs, &spec, &max_ref_arg);
+
+      /* If the width is determined by an argument this is an int.  */
+      if (spec.width_arg != -1 && (size_t) spec.width_arg < n)
+	argtypes[spec.width_arg] = PA_INT;
+
+      /* If the precision is determined by an argument this is an int.  */
+      if (spec.prec_arg != -1 && (size_t) spec.prec_arg < n)
+	argtypes[spec.prec_arg] = PA_INT;
+
+      if ((size_t) spec.data_arg < n)
+	switch (spec.ndata_args)
+	  {
+	  case 0:		/* No arguments.  */
+	    break;
+	  case 1:		/* One argument; we already have the type.  */
+	    argtypes[spec.data_arg] = spec.data_arg_type;
+	    break;
+	  default:
+	    /* We have more than one argument for this format spec.  We must
+               call the arginfo function again to determine all the types.  */
+	    (void) (*__printf_arginfo_table[spec.info.spec])
+	      (&spec.info, n - spec.data_arg, &argtypes[spec.data_arg],
+	       &spec.size);
+	    break;
+	  }
+    }
+
+  return MAX (nargs, max_ref_arg);
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/printf.c b/ap/libc/glibc/glibc-2.23/stdio-common/printf.c
new file mode 100644
index 0000000..acc67d2
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/printf.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <libioP.h>
+#include <stdarg.h>
+#include <stdio.h>
+
+#undef printf
+
+/* Write formatted output to stdout from the format string FORMAT.  */
+/* VARARGS1 */
+int
+__printf (const char *format, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, format);
+  done = vfprintf (stdout, format, arg);
+  va_end (arg);
+
+  return done;
+}
+
+#undef _IO_printf
+ldbl_strong_alias (__printf, printf);
+/* This is for libg++.  */
+ldbl_strong_alias (__printf, _IO_printf);
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/printf.h b/ap/libc/glibc/glibc-2.23/stdio-common/printf.h
new file mode 100644
index 0000000..d731216
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/printf.h
@@ -0,0 +1,188 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef	_PRINTF_H
+
+#define	_PRINTF_H	1
+#include <features.h>
+
+__BEGIN_DECLS
+
+#define	__need_FILE
+#include <stdio.h>
+#define	__need_size_t
+#define __need_wchar_t
+#include <stddef.h>
+#include <stdarg.h>
+
+
+struct printf_info
+{
+  int prec;			/* Precision.  */
+  int width;			/* Width.  */
+  wchar_t spec;			/* Format letter.  */
+  unsigned int is_long_double:1;/* L flag.  */
+  unsigned int is_short:1;	/* h flag.  */
+  unsigned int is_long:1;	/* l flag.  */
+  unsigned int alt:1;		/* # flag.  */
+  unsigned int space:1;		/* Space flag.  */
+  unsigned int left:1;		/* - flag.  */
+  unsigned int showsign:1;	/* + flag.  */
+  unsigned int group:1;		/* ' flag.  */
+  unsigned int extra:1;		/* For special use.  */
+  unsigned int is_char:1;	/* hh flag.  */
+  unsigned int wide:1;		/* Nonzero for wide character streams.  */
+  unsigned int i18n:1;		/* I flag.  */
+  unsigned int __pad:4;		/* Unused so far.  */
+  unsigned short int user;	/* Bits for user-installed modifiers.  */
+  wchar_t pad;			/* Padding character.  */
+};
+
+
+/* Type of a printf specifier-handler function.
+   STREAM is the FILE on which to write output.
+   INFO gives information about the format specification.
+   ARGS is a vector of pointers to the argument data;
+   the number of pointers will be the number returned
+   by the associated arginfo function for the same INFO.
+
+   The function should return the number of characters written,
+   or -1 for errors.  */
+
+typedef int printf_function (FILE *__stream,
+			     const struct printf_info *__info,
+			     const void *const *__args);
+
+/* Type of a printf specifier-arginfo function.
+   INFO gives information about the format specification.
+   N, ARGTYPES, *SIZE has to contain the size of the parameter for
+   user-defined types, and return value are as for parse_printf_format
+   except that -1 should be returned if the handler cannot handle
+   this case.  This allows to partially overwrite the functionality
+   of existing format specifiers.  */
+
+typedef int printf_arginfo_size_function (const struct printf_info *__info,
+					  size_t __n, int *__argtypes,
+					  int *__size);
+
+/* Old version of 'printf_arginfo_function' without a SIZE parameter.  */
+
+typedef int printf_arginfo_function (const struct printf_info *__info,
+				     size_t __n, int *__argtypes);
+
+/* Type of a function to get a value of a user-defined from the
+   variable argument list.  */
+typedef void printf_va_arg_function (void *__mem, va_list *__ap);
+
+
+/* Register FUNC to be called to format SPEC specifiers; ARGINFO must be
+   specified to determine how many arguments a SPEC conversion requires and
+   what their types are.  */
+
+extern int register_printf_specifier (int __spec, printf_function __func,
+				      printf_arginfo_size_function __arginfo)
+  __THROW;
+
+
+/* Obsolete interface similar to register_printf_specifier.  It can only
+   handle basic data types because the ARGINFO callback does not return
+   information on the size of the user-defined type.  */
+
+extern int register_printf_function (int __spec, printf_function __func,
+				     printf_arginfo_function __arginfo)
+  __THROW __attribute_deprecated__;
+
+
+/* Register a new modifier character sequence.  If the call succeeds
+   it returns a positive value representing the bit set in the USER
+   field in 'struct printf_info'.  */
+
+extern int register_printf_modifier (const wchar_t *__str) __wur __THROW;
+
+
+/* Register variable argument handler for user type.  The return value
+   is to be used in ARGINFO functions to signal the use of the
+   type.  */
+extern int register_printf_type (printf_va_arg_function __fct) __wur __THROW;
+
+
+/* Parse FMT, and fill in N elements of ARGTYPES with the
+   types needed for the conversions FMT specifies.  Returns
+   the number of arguments required by FMT.
+
+   The ARGINFO function registered with a user-defined format is passed a
+   `struct printf_info' describing the format spec being parsed.  A width
+   or precision of INT_MIN means a `*' was used to indicate that the
+   width/precision will come from an arg.  The function should fill in the
+   array it is passed with the types of the arguments it wants, and return
+   the number of arguments it wants.  */
+
+extern size_t parse_printf_format (const char *__restrict __fmt, size_t __n,
+				   int *__restrict __argtypes) __THROW;
+
+
+/* Codes returned by `parse_printf_format' for basic types.
+
+   These values cover all the standard format specifications.
+   Users can reserve new values after PA_LAST for their own types
+   using 'register_printf_type'.  */
+
+enum
+{				/* C type: */
+  PA_INT,			/* int */
+  PA_CHAR,			/* int, cast to char */
+  PA_WCHAR,			/* wide char */
+  PA_STRING,			/* const char *, a '\0'-terminated string */
+  PA_WSTRING,			/* const wchar_t *, wide character string */
+  PA_POINTER,			/* void * */
+  PA_FLOAT,			/* float */
+  PA_DOUBLE,			/* double */
+  PA_LAST
+};
+
+/* Flag bits that can be set in a type returned by `parse_printf_format'.  */
+#define	PA_FLAG_MASK		0xff00
+#define	PA_FLAG_LONG_LONG	(1 << 8)
+#define	PA_FLAG_LONG_DOUBLE	PA_FLAG_LONG_LONG
+#define	PA_FLAG_LONG		(1 << 9)
+#define	PA_FLAG_SHORT		(1 << 10)
+#define	PA_FLAG_PTR		(1 << 11)
+
+
+
+/* Function which can be registered as `printf'-handlers.  */
+
+/* Print floating point value using using abbreviations for the orders
+   of magnitude used for numbers ('k' for kilo, 'm' for mega etc).  If
+   the format specifier is a uppercase character powers of 1000 are
+   used.  Otherwise powers of 1024.  */
+extern int printf_size (FILE *__restrict __fp,
+			const struct printf_info *__info,
+			const void *const *__restrict __args) __THROW;
+
+/* This is the appropriate argument information function for `printf_size'.  */
+extern int printf_size_info (const struct printf_info *__restrict
+			     __info, size_t __n, int *__restrict __argtypes)
+     __THROW;
+
+#ifdef __LDBL_COMPAT
+# include <bits/printf-ldbl.h>
+#endif
+
+__END_DECLS
+
+#endif /* printf.h  */
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/printf_fp.c b/ap/libc/glibc/glibc-2.23/stdio-common/printf_fp.c
new file mode 100644
index 0000000..4134f8a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/printf_fp.c
@@ -0,0 +1,1333 @@
+/* Floating point output for `printf'.
+   Copyright (C) 1995-2016 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+   Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* The gmp headers need some configuration frobs.  */
+#define HAVE_ALLOCA 1
+
+#include <libioP.h>
+#include <alloca.h>
+#include <ctype.h>
+#include <float.h>
+#include <gmp-mparam.h>
+#include <gmp.h>
+#include <ieee754.h>
+#include <stdlib/gmp-impl.h>
+#include <stdlib/longlong.h>
+#include <stdlib/fpioconst.h>
+#include <locale/localeinfo.h>
+#include <limits.h>
+#include <math.h>
+#include <printf.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdbool.h>
+#include <rounding-mode.h>
+
+#ifdef COMPILE_WPRINTF
+# define CHAR_T        wchar_t
+#else
+# define CHAR_T        char
+#endif
+
+#include "_i18n_number.h"
+
+#ifndef NDEBUG
+# define NDEBUG			/* Undefine this for debugging assertions.  */
+#endif
+#include <assert.h>
+
+/* This defines make it possible to use the same code for GNU C library and
+   the GNU I/O library.	 */
+#define PUT(f, s, n) _IO_sputn (f, s, n)
+#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : _IO_padn (f, c, n))
+/* We use this file GNU C library and GNU I/O library.	So make
+   names equal.	 */
+#undef putc
+#define putc(c, f) (wide \
+		    ? (int)_IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f))
+#define size_t     _IO_size_t
+#define FILE	     _IO_FILE
+
+/* Macros for doing the actual output.  */
+
+#define outchar(ch)							      \
+  do									      \
+    {									      \
+      const int outc = (ch);						      \
+      if (putc (outc, fp) == EOF)					      \
+	{								      \
+	  if (buffer_malloced)						      \
+	    free (wbuffer);						      \
+	  return -1;							      \
+	}								      \
+      ++done;								      \
+    } while (0)
+
+#define PRINT(ptr, wptr, len)						      \
+  do									      \
+    {									      \
+      size_t outlen = (len);						      \
+      if (len > 20)							      \
+	{								      \
+	  if (PUT (fp, wide ? (const char *) wptr : ptr, outlen) != outlen)   \
+	    {								      \
+	      if (buffer_malloced)					      \
+		free (wbuffer);						      \
+	      return -1;						      \
+	    }								      \
+	  ptr += outlen;						      \
+	  done += outlen;						      \
+	}								      \
+      else								      \
+	{								      \
+	  if (wide)							      \
+	    while (outlen-- > 0)					      \
+	      outchar (*wptr++);					      \
+	  else								      \
+	    while (outlen-- > 0)					      \
+	      outchar (*ptr++);						      \
+	}								      \
+    } while (0)
+
+#define PADN(ch, len)							      \
+  do									      \
+    {									      \
+      if (PAD (fp, ch, len) != len)					      \
+	{								      \
+	  if (buffer_malloced)						      \
+	    free (wbuffer);						      \
+	  return -1;							      \
+	}								      \
+      done += len;							      \
+    }									      \
+  while (0)
+
+/* We use the GNU MP library to handle large numbers.
+
+   An MP variable occupies a varying number of entries in its array.  We keep
+   track of this number for efficiency reasons.  Otherwise we would always
+   have to process the whole array.  */
+#define MPN_VAR(name) mp_limb_t *name; mp_size_t name##size
+
+#define MPN_ASSIGN(dst,src)						      \
+  memcpy (dst, src, (dst##size = src##size) * sizeof (mp_limb_t))
+#define MPN_GE(u,v) \
+  (u##size > v##size || (u##size == v##size && __mpn_cmp (u, v, u##size) >= 0))
+
+extern mp_size_t __mpn_extract_double (mp_ptr res_ptr, mp_size_t size,
+				       int *expt, int *is_neg,
+				       double value);
+extern mp_size_t __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
+					    int *expt, int *is_neg,
+					    long double value);
+extern unsigned int __guess_grouping (unsigned int intdig_max,
+				      const char *grouping);
+
+
+static wchar_t *group_number (wchar_t *buf, wchar_t *bufend,
+			      unsigned int intdig_no, const char *grouping,
+			      wchar_t thousands_sep, int ngroups)
+     internal_function;
+
+struct hack_digit_param
+{
+  /* Sign of the exponent.  */
+  int expsign;
+  /* The type of output format that will be used: 'e'/'E' or 'f'.  */
+  int type;
+  /* and the exponent.	*/
+  int exponent;
+  /* The fraction of the floting-point value in question  */
+  MPN_VAR(frac);
+  /* Scaling factor.  */
+  MPN_VAR(scale);
+  /* Temporary bignum value.  */
+  MPN_VAR(tmp);
+};
+
+static wchar_t
+hack_digit (struct hack_digit_param *p)
+{
+  mp_limb_t hi;
+
+  if (p->expsign != 0 && p->type == 'f' && p->exponent-- > 0)
+    hi = 0;
+  else if (p->scalesize == 0)
+    {
+      hi = p->frac[p->fracsize - 1];
+      p->frac[p->fracsize - 1] = __mpn_mul_1 (p->frac, p->frac,
+	p->fracsize - 1, 10);
+    }
+  else
+    {
+      if (p->fracsize < p->scalesize)
+	hi = 0;
+      else
+	{
+	  hi = mpn_divmod (p->tmp, p->frac, p->fracsize,
+	    p->scale, p->scalesize);
+	  p->tmp[p->fracsize - p->scalesize] = hi;
+	  hi = p->tmp[0];
+
+	  p->fracsize = p->scalesize;
+	  while (p->fracsize != 0 && p->frac[p->fracsize - 1] == 0)
+	    --p->fracsize;
+	  if (p->fracsize == 0)
+	    {
+	      /* We're not prepared for an mpn variable with zero
+		 limbs.  */
+	      p->fracsize = 1;
+	      return L'0' + hi;
+	    }
+	}
+
+      mp_limb_t _cy = __mpn_mul_1 (p->frac, p->frac, p->fracsize, 10);
+      if (_cy != 0)
+	p->frac[p->fracsize++] = _cy;
+    }
+
+  return L'0' + hi;
+}
+
+int
+___printf_fp (FILE *fp,
+	      const struct printf_info *info,
+	      const void *const *args)
+{
+  /* The floating-point value to output.  */
+  union
+    {
+      double dbl;
+      __long_double_t ldbl;
+    }
+  fpnum;
+
+  /* Locale-dependent representation of decimal point.	*/
+  const char *decimal;
+  wchar_t decimalwc;
+
+  /* Locale-dependent thousands separator and grouping specification.  */
+  const char *thousands_sep = NULL;
+  wchar_t thousands_sepwc = 0;
+  const char *grouping;
+
+  /* "NaN" or "Inf" for the special cases.  */
+  const char *special = NULL;
+  const wchar_t *wspecial = NULL;
+
+  /* We need just a few limbs for the input before shifting to the right
+     position.	*/
+  mp_limb_t fp_input[(LDBL_MANT_DIG + BITS_PER_MP_LIMB - 1) / BITS_PER_MP_LIMB];
+  /* We need to shift the contents of fp_input by this amount of bits.	*/
+  int to_shift = 0;
+
+  struct hack_digit_param p;
+  /* Sign of float number.  */
+  int is_neg = 0;
+
+  /* Counter for number of written characters.	*/
+  int done = 0;
+
+  /* General helper (carry limb).  */
+  mp_limb_t cy;
+
+  /* Nonzero if this is output on a wide character stream.  */
+  int wide = info->wide;
+
+  /* Buffer in which we produce the output.  */
+  wchar_t *wbuffer = NULL;
+  /* Flag whether wbuffer is malloc'ed or not.  */
+  int buffer_malloced = 0;
+
+  p.expsign = 0;
+
+  /* Figure out the decimal point character.  */
+  if (info->extra == 0)
+    {
+      decimal = _NL_CURRENT (LC_NUMERIC, DECIMAL_POINT);
+      decimalwc = _NL_CURRENT_WORD (LC_NUMERIC, _NL_NUMERIC_DECIMAL_POINT_WC);
+    }
+  else
+    {
+      decimal = _NL_CURRENT (LC_MONETARY, MON_DECIMAL_POINT);
+      if (*decimal == '\0')
+	decimal = _NL_CURRENT (LC_NUMERIC, DECIMAL_POINT);
+      decimalwc = _NL_CURRENT_WORD (LC_MONETARY,
+				    _NL_MONETARY_DECIMAL_POINT_WC);
+      if (decimalwc == L'\0')
+	decimalwc = _NL_CURRENT_WORD (LC_NUMERIC,
+				      _NL_NUMERIC_DECIMAL_POINT_WC);
+    }
+  /* The decimal point character must not be zero.  */
+  assert (*decimal != '\0');
+  assert (decimalwc != L'\0');
+
+  if (info->group)
+    {
+      if (info->extra == 0)
+	grouping = _NL_CURRENT (LC_NUMERIC, GROUPING);
+      else
+	grouping = _NL_CURRENT (LC_MONETARY, MON_GROUPING);
+
+      if (*grouping <= 0 || *grouping == CHAR_MAX)
+	grouping = NULL;
+      else
+	{
+	  /* Figure out the thousands separator character.  */
+	  if (wide)
+	    {
+	      if (info->extra == 0)
+		thousands_sepwc =
+		  _NL_CURRENT_WORD (LC_NUMERIC, _NL_NUMERIC_THOUSANDS_SEP_WC);
+	      else
+		thousands_sepwc =
+		  _NL_CURRENT_WORD (LC_MONETARY,
+				    _NL_MONETARY_THOUSANDS_SEP_WC);
+	    }
+	  else
+	    {
+	      if (info->extra == 0)
+		thousands_sep = _NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP);
+	      else
+		thousands_sep = _NL_CURRENT (LC_MONETARY, MON_THOUSANDS_SEP);
+	    }
+
+	  if ((wide && thousands_sepwc == L'\0')
+	      || (! wide && *thousands_sep == '\0'))
+	    grouping = NULL;
+	  else if (thousands_sepwc == L'\0')
+	    /* If we are printing multibyte characters and there is a
+	       multibyte representation for the thousands separator,
+	       we must ensure the wide character thousands separator
+	       is available, even if it is fake.  */
+	    thousands_sepwc = 0xfffffffe;
+	}
+    }
+  else
+    grouping = NULL;
+
+  /* Fetch the argument value.	*/
+#ifndef __NO_LONG_DOUBLE_MATH
+  if (info->is_long_double && sizeof (long double) > sizeof (double))
+    {
+      fpnum.ldbl = *(const long double *) args[0];
+
+      /* Check for special values: not a number or infinity.  */
+      if (isnan (fpnum.ldbl))
+	{
+	  is_neg = signbit (fpnum.ldbl);
+	  if (isupper (info->spec))
+	    {
+	      special = "NAN";
+	      wspecial = L"NAN";
+	    }
+	    else
+	      {
+		special = "nan";
+		wspecial = L"nan";
+	      }
+	}
+      else if (isinf (fpnum.ldbl))
+	{
+	  is_neg = signbit (fpnum.ldbl);
+	  if (isupper (info->spec))
+	    {
+	      special = "INF";
+	      wspecial = L"INF";
+	    }
+	  else
+	    {
+	      special = "inf";
+	      wspecial = L"inf";
+	    }
+	}
+      else
+	{
+	  p.fracsize = __mpn_extract_long_double (fp_input,
+						(sizeof (fp_input) /
+						 sizeof (fp_input[0])),
+						&p.exponent, &is_neg,
+						fpnum.ldbl);
+	  to_shift = 1 + p.fracsize * BITS_PER_MP_LIMB - LDBL_MANT_DIG;
+	}
+    }
+  else
+#endif	/* no long double */
+    {
+      fpnum.dbl = *(const double *) args[0];
+
+      /* Check for special values: not a number or infinity.  */
+      if (isnan (fpnum.dbl))
+	{
+	  is_neg = signbit (fpnum.dbl);
+	  if (isupper (info->spec))
+	    {
+	      special = "NAN";
+	      wspecial = L"NAN";
+	    }
+	  else
+	    {
+	      special = "nan";
+	      wspecial = L"nan";
+	    }
+	}
+      else if (isinf (fpnum.dbl))
+	{
+	  is_neg = signbit (fpnum.dbl);
+	  if (isupper (info->spec))
+	    {
+	      special = "INF";
+	      wspecial = L"INF";
+	    }
+	  else
+	    {
+	      special = "inf";
+	      wspecial = L"inf";
+	    }
+	}
+      else
+	{
+	  p.fracsize = __mpn_extract_double (fp_input,
+					   (sizeof (fp_input)
+					    / sizeof (fp_input[0])),
+					   &p.exponent, &is_neg, fpnum.dbl);
+	  to_shift = 1 + p.fracsize * BITS_PER_MP_LIMB - DBL_MANT_DIG;
+	}
+    }
+
+  if (special)
+    {
+      int width = info->width;
+
+      if (is_neg || info->showsign || info->space)
+	--width;
+      width -= 3;
+
+      if (!info->left && width > 0)
+	PADN (' ', width);
+
+      if (is_neg)
+	outchar ('-');
+      else if (info->showsign)
+	outchar ('+');
+      else if (info->space)
+	outchar (' ');
+
+      PRINT (special, wspecial, 3);
+
+      if (info->left && width > 0)
+	PADN (' ', width);
+
+      return done;
+    }
+
+
+  /* We need three multiprecision variables.  Now that we have the p.exponent
+     of the number we can allocate the needed memory.  It would be more
+     efficient to use variables of the fixed maximum size but because this
+     would be really big it could lead to memory problems.  */
+  {
+    mp_size_t bignum_size = ((abs (p.exponent) + BITS_PER_MP_LIMB - 1)
+			     / BITS_PER_MP_LIMB
+			     + (LDBL_MANT_DIG / BITS_PER_MP_LIMB > 2 ? 8 : 4))
+			    * sizeof (mp_limb_t);
+    p.frac = (mp_limb_t *) alloca (bignum_size);
+    p.tmp = (mp_limb_t *) alloca (bignum_size);
+    p.scale = (mp_limb_t *) alloca (bignum_size);
+  }
+
+  /* We now have to distinguish between numbers with positive and negative
+     exponents because the method used for the one is not applicable/efficient
+     for the other.  */
+  p.scalesize = 0;
+  if (p.exponent > 2)
+    {
+      /* |FP| >= 8.0.  */
+      int scaleexpo = 0;
+      int explog = LDBL_MAX_10_EXP_LOG;
+      int exp10 = 0;
+      const struct mp_power *powers = &_fpioconst_pow10[explog + 1];
+      int cnt_h, cnt_l, i;
+
+      if ((p.exponent + to_shift) % BITS_PER_MP_LIMB == 0)
+	{
+	  MPN_COPY_DECR (p.frac + (p.exponent + to_shift) / BITS_PER_MP_LIMB,
+			 fp_input, p.fracsize);
+	  p.fracsize += (p.exponent + to_shift) / BITS_PER_MP_LIMB;
+	}
+      else
+	{
+	  cy = __mpn_lshift (p.frac +
+			     (p.exponent + to_shift) / BITS_PER_MP_LIMB,
+			     fp_input, p.fracsize,
+			     (p.exponent + to_shift) % BITS_PER_MP_LIMB);
+	  p.fracsize += (p.exponent + to_shift) / BITS_PER_MP_LIMB;
+	  if (cy)
+	    p.frac[p.fracsize++] = cy;
+	}
+      MPN_ZERO (p.frac, (p.exponent + to_shift) / BITS_PER_MP_LIMB);
+
+      assert (powers > &_fpioconst_pow10[0]);
+      do
+	{
+	  --powers;
+
+	  /* The number of the product of two binary numbers with n and m
+	     bits respectively has m+n or m+n-1 bits.	*/
+	  if (p.exponent >= scaleexpo + powers->p_expo - 1)
+	    {
+	      if (p.scalesize == 0)
+		{
+#ifndef __NO_LONG_DOUBLE_MATH
+		  if (LDBL_MANT_DIG > _FPIO_CONST_OFFSET * BITS_PER_MP_LIMB
+		      && info->is_long_double)
+		    {
+#define _FPIO_CONST_SHIFT \
+  (((LDBL_MANT_DIG + BITS_PER_MP_LIMB - 1) / BITS_PER_MP_LIMB) \
+   - _FPIO_CONST_OFFSET)
+		      /* 64bit const offset is not enough for
+			 IEEE quad long double.  */
+		      p.tmpsize = powers->arraysize + _FPIO_CONST_SHIFT;
+		      memcpy (p.tmp + _FPIO_CONST_SHIFT,
+			      &__tens[powers->arrayoff],
+			      p.tmpsize * sizeof (mp_limb_t));
+		      MPN_ZERO (p.tmp, _FPIO_CONST_SHIFT);
+		      /* Adjust p.exponent, as scaleexpo will be this much
+			 bigger too.  */
+		      p.exponent += _FPIO_CONST_SHIFT * BITS_PER_MP_LIMB;
+		    }
+		  else
+#endif
+		    {
+		      p.tmpsize = powers->arraysize;
+		      memcpy (p.tmp, &__tens[powers->arrayoff],
+			      p.tmpsize * sizeof (mp_limb_t));
+		    }
+		}
+	      else
+		{
+		  cy = __mpn_mul (p.tmp, p.scale, p.scalesize,
+				  &__tens[powers->arrayoff
+					 + _FPIO_CONST_OFFSET],
+				  powers->arraysize - _FPIO_CONST_OFFSET);
+		  p.tmpsize = p.scalesize +
+		    powers->arraysize - _FPIO_CONST_OFFSET;
+		  if (cy == 0)
+		    --p.tmpsize;
+		}
+
+	      if (MPN_GE (p.frac, p.tmp))
+		{
+		  int cnt;
+		  MPN_ASSIGN (p.scale, p.tmp);
+		  count_leading_zeros (cnt, p.scale[p.scalesize - 1]);
+		  scaleexpo = (p.scalesize - 2) * BITS_PER_MP_LIMB - cnt - 1;
+		  exp10 |= 1 << explog;
+		}
+	    }
+	  --explog;
+	}
+      while (powers > &_fpioconst_pow10[0]);
+      p.exponent = exp10;
+
+      /* Optimize number representations.  We want to represent the numbers
+	 with the lowest number of bytes possible without losing any
+	 bytes. Also the highest bit in the scaling factor has to be set
+	 (this is a requirement of the MPN division routines).  */
+      if (p.scalesize > 0)
+	{
+	  /* Determine minimum number of zero bits at the end of
+	     both numbers.  */
+	  for (i = 0; p.scale[i] == 0 && p.frac[i] == 0; i++)
+	    ;
+
+	  /* Determine number of bits the scaling factor is misplaced.	*/
+	  count_leading_zeros (cnt_h, p.scale[p.scalesize - 1]);
+
+	  if (cnt_h == 0)
+	    {
+	      /* The highest bit of the scaling factor is already set.	So
+		 we only have to remove the trailing empty limbs.  */
+	      if (i > 0)
+		{
+		  MPN_COPY_INCR (p.scale, p.scale + i, p.scalesize - i);
+		  p.scalesize -= i;
+		  MPN_COPY_INCR (p.frac, p.frac + i, p.fracsize - i);
+		  p.fracsize -= i;
+		}
+	    }
+	  else
+	    {
+	      if (p.scale[i] != 0)
+		{
+		  count_trailing_zeros (cnt_l, p.scale[i]);
+		  if (p.frac[i] != 0)
+		    {
+		      int cnt_l2;
+		      count_trailing_zeros (cnt_l2, p.frac[i]);
+		      if (cnt_l2 < cnt_l)
+			cnt_l = cnt_l2;
+		    }
+		}
+	      else
+		count_trailing_zeros (cnt_l, p.frac[i]);
+
+	      /* Now shift the numbers to their optimal position.  */
+	      if (i == 0 && BITS_PER_MP_LIMB - cnt_h > cnt_l)
+		{
+		  /* We cannot save any memory.	 So just roll both numbers
+		     so that the scaling factor has its highest bit set.  */
+
+		  (void) __mpn_lshift (p.scale, p.scale, p.scalesize, cnt_h);
+		  cy = __mpn_lshift (p.frac, p.frac, p.fracsize, cnt_h);
+		  if (cy != 0)
+		    p.frac[p.fracsize++] = cy;
+		}
+	      else if (BITS_PER_MP_LIMB - cnt_h <= cnt_l)
+		{
+		  /* We can save memory by removing the trailing zero limbs
+		     and by packing the non-zero limbs which gain another
+		     free one. */
+
+		  (void) __mpn_rshift (p.scale, p.scale + i, p.scalesize - i,
+				       BITS_PER_MP_LIMB - cnt_h);
+		  p.scalesize -= i + 1;
+		  (void) __mpn_rshift (p.frac, p.frac + i, p.fracsize - i,
+				       BITS_PER_MP_LIMB - cnt_h);
+		  p.fracsize -= p.frac[p.fracsize - i - 1] == 0 ? i + 1 : i;
+		}
+	      else
+		{
+		  /* We can only save the memory of the limbs which are zero.
+		     The non-zero parts occupy the same number of limbs.  */
+
+		  (void) __mpn_rshift (p.scale, p.scale + (i - 1),
+				       p.scalesize - (i - 1),
+				       BITS_PER_MP_LIMB - cnt_h);
+		  p.scalesize -= i;
+		  (void) __mpn_rshift (p.frac, p.frac + (i - 1),
+				       p.fracsize - (i - 1),
+				       BITS_PER_MP_LIMB - cnt_h);
+		  p.fracsize -=
+		    p.frac[p.fracsize - (i - 1) - 1] == 0 ? i : i - 1;
+		}
+	    }
+	}
+    }
+  else if (p.exponent < 0)
+    {
+      /* |FP| < 1.0.  */
+      int exp10 = 0;
+      int explog = LDBL_MAX_10_EXP_LOG;
+      const struct mp_power *powers = &_fpioconst_pow10[explog + 1];
+
+      /* Now shift the input value to its right place.	*/
+      cy = __mpn_lshift (p.frac, fp_input, p.fracsize, to_shift);
+      p.frac[p.fracsize++] = cy;
+      assert (cy == 1 || (p.frac[p.fracsize - 2] == 0 && p.frac[0] == 0));
+
+      p.expsign = 1;
+      p.exponent = -p.exponent;
+
+      assert (powers != &_fpioconst_pow10[0]);
+      do
+	{
+	  --powers;
+
+	  if (p.exponent >= powers->m_expo)
+	    {
+	      int i, incr, cnt_h, cnt_l;
+	      mp_limb_t topval[2];
+
+	      /* The __mpn_mul function expects the first argument to be
+		 bigger than the second.  */
+	      if (p.fracsize < powers->arraysize - _FPIO_CONST_OFFSET)
+		cy = __mpn_mul (p.tmp, &__tens[powers->arrayoff
+					    + _FPIO_CONST_OFFSET],
+				powers->arraysize - _FPIO_CONST_OFFSET,
+				p.frac, p.fracsize);
+	      else
+		cy = __mpn_mul (p.tmp, p.frac, p.fracsize,
+				&__tens[powers->arrayoff + _FPIO_CONST_OFFSET],
+				powers->arraysize - _FPIO_CONST_OFFSET);
+	      p.tmpsize = p.fracsize + powers->arraysize - _FPIO_CONST_OFFSET;
+	      if (cy == 0)
+		--p.tmpsize;
+
+	      count_leading_zeros (cnt_h, p.tmp[p.tmpsize - 1]);
+	      incr = (p.tmpsize - p.fracsize) * BITS_PER_MP_LIMB
+		     + BITS_PER_MP_LIMB - 1 - cnt_h;
+
+	      assert (incr <= powers->p_expo);
+
+	      /* If we increased the p.exponent by exactly 3 we have to test
+		 for overflow.	This is done by comparing with 10 shifted
+		 to the right position.	 */
+	      if (incr == p.exponent + 3)
+		{
+		  if (cnt_h <= BITS_PER_MP_LIMB - 4)
+		    {
+		      topval[0] = 0;
+		      topval[1]
+			= ((mp_limb_t) 10) << (BITS_PER_MP_LIMB - 4 - cnt_h);
+		    }
+		  else
+		    {
+		      topval[0] = ((mp_limb_t) 10) << (BITS_PER_MP_LIMB - 4);
+		      topval[1] = 0;
+		      (void) __mpn_lshift (topval, topval, 2,
+					   BITS_PER_MP_LIMB - cnt_h);
+		    }
+		}
+
+	      /* We have to be careful when multiplying the last factor.
+		 If the result is greater than 1.0 be have to test it
+		 against 10.0.  If it is greater or equal to 10.0 the
+		 multiplication was not valid.  This is because we cannot
+		 determine the number of bits in the result in advance.  */
+	      if (incr < p.exponent + 3
+		  || (incr == p.exponent + 3 &&
+		      (p.tmp[p.tmpsize - 1] < topval[1]
+		       || (p.tmp[p.tmpsize - 1] == topval[1]
+			   && p.tmp[p.tmpsize - 2] < topval[0]))))
+		{
+		  /* The factor is right.  Adapt binary and decimal
+		     exponents.	 */
+		  p.exponent -= incr;
+		  exp10 |= 1 << explog;
+
+		  /* If this factor yields a number greater or equal to
+		     1.0, we must not shift the non-fractional digits down. */
+		  if (p.exponent < 0)
+		    cnt_h += -p.exponent;
+
+		  /* Now we optimize the number representation.	 */
+		  for (i = 0; p.tmp[i] == 0; ++i);
+		  if (cnt_h == BITS_PER_MP_LIMB - 1)
+		    {
+		      MPN_COPY (p.frac, p.tmp + i, p.tmpsize - i);
+		      p.fracsize = p.tmpsize - i;
+		    }
+		  else
+		    {
+		      count_trailing_zeros (cnt_l, p.tmp[i]);
+
+		      /* Now shift the numbers to their optimal position.  */
+		      if (i == 0 && BITS_PER_MP_LIMB - 1 - cnt_h > cnt_l)
+			{
+			  /* We cannot save any memory.	 Just roll the
+			     number so that the leading digit is in a
+			     separate limb.  */
+
+			  cy = __mpn_lshift (p.frac, p.tmp, p.tmpsize,
+			    cnt_h + 1);
+			  p.fracsize = p.tmpsize + 1;
+			  p.frac[p.fracsize - 1] = cy;
+			}
+		      else if (BITS_PER_MP_LIMB - 1 - cnt_h <= cnt_l)
+			{
+			  (void) __mpn_rshift (p.frac, p.tmp + i, p.tmpsize - i,
+					       BITS_PER_MP_LIMB - 1 - cnt_h);
+			  p.fracsize = p.tmpsize - i;
+			}
+		      else
+			{
+			  /* We can only save the memory of the limbs which
+			     are zero.	The non-zero parts occupy the same
+			     number of limbs.  */
+
+			  (void) __mpn_rshift (p.frac, p.tmp + (i - 1),
+					       p.tmpsize - (i - 1),
+					       BITS_PER_MP_LIMB - 1 - cnt_h);
+			  p.fracsize = p.tmpsize - (i - 1);
+			}
+		    }
+		}
+	    }
+	  --explog;
+	}
+      while (powers != &_fpioconst_pow10[1] && p.exponent > 0);
+      /* All factors but 10^-1 are tested now.	*/
+      if (p.exponent > 0)
+	{
+	  int cnt_l;
+
+	  cy = __mpn_mul_1 (p.tmp, p.frac, p.fracsize, 10);
+	  p.tmpsize = p.fracsize;
+	  assert (cy == 0 || p.tmp[p.tmpsize - 1] < 20);
+
+	  count_trailing_zeros (cnt_l, p.tmp[0]);
+	  if (cnt_l < MIN (4, p.exponent))
+	    {
+	      cy = __mpn_lshift (p.frac, p.tmp, p.tmpsize,
+				 BITS_PER_MP_LIMB - MIN (4, p.exponent));
+	      if (cy != 0)
+		p.frac[p.tmpsize++] = cy;
+	    }
+	  else
+	    (void) __mpn_rshift (p.frac, p.tmp, p.tmpsize, MIN (4, p.exponent));
+	  p.fracsize = p.tmpsize;
+	  exp10 |= 1;
+	  assert (p.frac[p.fracsize - 1] < 10);
+	}
+      p.exponent = exp10;
+    }
+  else
+    {
+      /* This is a special case.  We don't need a factor because the
+	 numbers are in the range of 1.0 <= |fp| < 8.0.  We simply
+	 shift it to the right place and divide it by 1.0 to get the
+	 leading digit.	 (Of course this division is not really made.)	*/
+      assert (0 <= p.exponent && p.exponent < 3 &&
+	      p.exponent + to_shift < BITS_PER_MP_LIMB);
+
+      /* Now shift the input value to its right place.	*/
+      cy = __mpn_lshift (p.frac, fp_input, p.fracsize, (p.exponent + to_shift));
+      p.frac[p.fracsize++] = cy;
+      p.exponent = 0;
+    }
+
+  {
+    int width = info->width;
+    wchar_t *wstartp, *wcp;
+    size_t chars_needed;
+    int expscale;
+    int intdig_max, intdig_no = 0;
+    int fracdig_min;
+    int fracdig_max;
+    int dig_max;
+    int significant;
+    int ngroups = 0;
+    char spec = _tolower (info->spec);
+
+    if (spec == 'e')
+      {
+	p.type = info->spec;
+	intdig_max = 1;
+	fracdig_min = fracdig_max = info->prec < 0 ? 6 : info->prec;
+	chars_needed = 1 + 1 + (size_t) fracdig_max + 1 + 1 + 4;
+	/*	       d   .	 ddd	     e	 +-  ddd  */
+	dig_max = INT_MAX;		/* Unlimited.  */
+	significant = 1;		/* Does not matter here.  */
+      }
+    else if (spec == 'f')
+      {
+	p.type = 'f';
+	fracdig_min = fracdig_max = info->prec < 0 ? 6 : info->prec;
+	dig_max = INT_MAX;		/* Unlimited.  */
+	significant = 1;		/* Does not matter here.  */
+	if (p.expsign == 0)
+	  {
+	    intdig_max = p.exponent + 1;
+	    /* This can be really big!	*/  /* XXX Maybe malloc if too big? */
+	    chars_needed = (size_t) p.exponent + 1 + 1 + (size_t) fracdig_max;
+	  }
+	else
+	  {
+	    intdig_max = 1;
+	    chars_needed = 1 + 1 + (size_t) fracdig_max;
+	  }
+      }
+    else
+      {
+	dig_max = info->prec < 0 ? 6 : (info->prec == 0 ? 1 : info->prec);
+	if ((p.expsign == 0 && p.exponent >= dig_max)
+	    || (p.expsign != 0 && p.exponent > 4))
+	  {
+	    if ('g' - 'G' == 'e' - 'E')
+	      p.type = 'E' + (info->spec - 'G');
+	    else
+	      p.type = isupper (info->spec) ? 'E' : 'e';
+	    fracdig_max = dig_max - 1;
+	    intdig_max = 1;
+	    chars_needed = 1 + 1 + (size_t) fracdig_max + 1 + 1 + 4;
+	  }
+	else
+	  {
+	    p.type = 'f';
+	    intdig_max = p.expsign == 0 ? p.exponent + 1 : 0;
+	    fracdig_max = dig_max - intdig_max;
+	    /* We need space for the significant digits and perhaps
+	       for leading zeros when < 1.0.  The number of leading
+	       zeros can be as many as would be required for
+	       exponential notation with a negative two-digit
+	       p.exponent, which is 4.  */
+	    chars_needed = (size_t) dig_max + 1 + 4;
+	  }
+	fracdig_min = info->alt ? fracdig_max : 0;
+	significant = 0;		/* We count significant digits.	 */
+      }
+
+    if (grouping)
+      {
+	/* Guess the number of groups we will make, and thus how
+	   many spaces we need for separator characters.  */
+	ngroups = __guess_grouping (intdig_max, grouping);
+	/* Allocate one more character in case rounding increases the
+	   number of groups.  */
+	chars_needed += ngroups + 1;
+      }
+
+    /* Allocate buffer for output.  We need two more because while rounding
+       it is possible that we need two more characters in front of all the
+       other output.  If the amount of memory we have to allocate is too
+       large use `malloc' instead of `alloca'.  */
+    if (__builtin_expect (chars_needed >= (size_t) -1 / sizeof (wchar_t) - 2
+			  || chars_needed < fracdig_max, 0))
+      {
+	/* Some overflow occurred.  */
+	__set_errno (ERANGE);
+	return -1;
+      }
+    size_t wbuffer_to_alloc = (2 + chars_needed) * sizeof (wchar_t);
+    buffer_malloced = ! __libc_use_alloca (wbuffer_to_alloc);
+    if (__builtin_expect (buffer_malloced, 0))
+      {
+	wbuffer = (wchar_t *) malloc (wbuffer_to_alloc);
+	if (wbuffer == NULL)
+	  /* Signal an error to the caller.  */
+	  return -1;
+      }
+    else
+      wbuffer = (wchar_t *) alloca (wbuffer_to_alloc);
+    wcp = wstartp = wbuffer + 2;	/* Let room for rounding.  */
+
+    /* Do the real work: put digits in allocated buffer.  */
+    if (p.expsign == 0 || p.type != 'f')
+      {
+	assert (p.expsign == 0 || intdig_max == 1);
+	while (intdig_no < intdig_max)
+	  {
+	    ++intdig_no;
+	    *wcp++ = hack_digit (&p);
+	  }
+	significant = 1;
+	if (info->alt
+	    || fracdig_min > 0
+	    || (fracdig_max > 0 && (p.fracsize > 1 || p.frac[0] != 0)))
+	  *wcp++ = decimalwc;
+      }
+    else
+      {
+	/* |fp| < 1.0 and the selected p.type is 'f', so put "0."
+	   in the buffer.  */
+	*wcp++ = L'0';
+	--p.exponent;
+	*wcp++ = decimalwc;
+      }
+
+    /* Generate the needed number of fractional digits.	 */
+    int fracdig_no = 0;
+    int added_zeros = 0;
+    while (fracdig_no < fracdig_min + added_zeros
+	   || (fracdig_no < fracdig_max && (p.fracsize > 1 || p.frac[0] != 0)))
+      {
+	++fracdig_no;
+	*wcp = hack_digit (&p);
+	if (*wcp++ != L'0')
+	  significant = 1;
+	else if (significant == 0)
+	  {
+	    ++fracdig_max;
+	    if (fracdig_min > 0)
+	      ++added_zeros;
+	  }
+      }
+
+    /* Do rounding.  */
+    wchar_t last_digit = wcp[-1] != decimalwc ? wcp[-1] : wcp[-2];
+    wchar_t next_digit = hack_digit (&p);
+    bool more_bits;
+    if (next_digit != L'0' && next_digit != L'5')
+      more_bits = true;
+    else if (p.fracsize == 1 && p.frac[0] == 0)
+      /* Rest of the number is zero.  */
+      more_bits = false;
+    else if (p.scalesize == 0)
+      {
+	/* Here we have to see whether all limbs are zero since no
+	   normalization happened.  */
+	size_t lcnt = p.fracsize;
+	while (lcnt >= 1 && p.frac[lcnt - 1] == 0)
+	  --lcnt;
+	more_bits = lcnt > 0;
+      }
+    else
+      more_bits = true;
+    int rounding_mode = get_rounding_mode ();
+    if (round_away (is_neg, (last_digit - L'0') & 1, next_digit >= L'5',
+		    more_bits, rounding_mode))
+      {
+	wchar_t *wtp = wcp;
+
+	if (fracdig_no > 0)
+	  {
+	    /* Process fractional digits.  Terminate if not rounded or
+	       radix character is reached.  */
+	    int removed = 0;
+	    while (*--wtp != decimalwc && *wtp == L'9')
+	      {
+		*wtp = L'0';
+		++removed;
+	      }
+	    if (removed == fracdig_min && added_zeros > 0)
+	      --added_zeros;
+	    if (*wtp != decimalwc)
+	      /* Round up.  */
+	      (*wtp)++;
+	    else if (__builtin_expect (spec == 'g' && p.type == 'f' && info->alt
+				       && wtp == wstartp + 1
+				       && wstartp[0] == L'0',
+				       0))
+	      /* This is a special case: the rounded number is 1.0,
+		 the format is 'g' or 'G', and the alternative format
+		 is selected.  This means the result must be "1.".  */
+	      --added_zeros;
+	  }
+
+	if (fracdig_no == 0 || *wtp == decimalwc)
+	  {
+	    /* Round the integer digits.  */
+	    if (*(wtp - 1) == decimalwc)
+	      --wtp;
+
+	    while (--wtp >= wstartp && *wtp == L'9')
+	      *wtp = L'0';
+
+	    if (wtp >= wstartp)
+	      /* Round up.  */
+	      (*wtp)++;
+	    else
+	      /* It is more critical.  All digits were 9's.  */
+	      {
+		if (p.type != 'f')
+		  {
+		    *wstartp = '1';
+		    p.exponent += p.expsign == 0 ? 1 : -1;
+
+		    /* The above p.exponent adjustment could lead to 1.0e-00,
+		       e.g. for 0.999999999.  Make sure p.exponent 0 always
+		       uses + sign.  */
+		    if (p.exponent == 0)
+		      p.expsign = 0;
+		  }
+		else if (intdig_no == dig_max)
+		  {
+		    /* This is the case where for p.type %g the number fits
+		       really in the range for %f output but after rounding
+		       the number of digits is too big.	 */
+		    *--wstartp = decimalwc;
+		    *--wstartp = L'1';
+
+		    if (info->alt || fracdig_no > 0)
+		      {
+			/* Overwrite the old radix character.  */
+			wstartp[intdig_no + 2] = L'0';
+			++fracdig_no;
+		      }
+
+		    fracdig_no += intdig_no;
+		    intdig_no = 1;
+		    fracdig_max = intdig_max - intdig_no;
+		    ++p.exponent;
+		    /* Now we must print the p.exponent.	*/
+		    p.type = isupper (info->spec) ? 'E' : 'e';
+		  }
+		else
+		  {
+		    /* We can simply add another another digit before the
+		       radix.  */
+		    *--wstartp = L'1';
+		    ++intdig_no;
+		  }
+
+		/* While rounding the number of digits can change.
+		   If the number now exceeds the limits remove some
+		   fractional digits.  */
+		if (intdig_no + fracdig_no > dig_max)
+		  {
+		    wcp -= intdig_no + fracdig_no - dig_max;
+		    fracdig_no -= intdig_no + fracdig_no - dig_max;
+		  }
+	      }
+	  }
+      }
+
+    /* Now remove unnecessary '0' at the end of the string.  */
+    while (fracdig_no > fracdig_min + added_zeros && *(wcp - 1) == L'0')
+      {
+	--wcp;
+	--fracdig_no;
+      }
+    /* If we eliminate all fractional digits we perhaps also can remove
+       the radix character.  */
+    if (fracdig_no == 0 && !info->alt && *(wcp - 1) == decimalwc)
+      --wcp;
+
+    if (grouping)
+      {
+	/* Rounding might have changed the number of groups.  We allocated
+	   enough memory but we need here the correct number of groups.  */
+	if (intdig_no != intdig_max)
+	  ngroups = __guess_grouping (intdig_no, grouping);
+
+	/* Add in separator characters, overwriting the same buffer.  */
+	wcp = group_number (wstartp, wcp, intdig_no, grouping, thousands_sepwc,
+			    ngroups);
+      }
+
+    /* Write the p.exponent if it is needed.  */
+    if (p.type != 'f')
+      {
+	if (__glibc_unlikely (p.expsign != 0 && p.exponent == 4 && spec == 'g'))
+	  {
+	    /* This is another special case.  The p.exponent of the number is
+	       really smaller than -4, which requires the 'e'/'E' format.
+	       But after rounding the number has an p.exponent of -4.  */
+	    assert (wcp >= wstartp + 1);
+	    assert (wstartp[0] == L'1');
+	    __wmemcpy (wstartp, L"0.0001", 6);
+	    wstartp[1] = decimalwc;
+	    if (wcp >= wstartp + 2)
+	      {
+		__wmemset (wstartp + 6, L'0', wcp - (wstartp + 2));
+		wcp += 4;
+	      }
+	    else
+	      wcp += 5;
+	  }
+	else
+	  {
+	    *wcp++ = (wchar_t) p.type;
+	    *wcp++ = p.expsign ? L'-' : L'+';
+
+	    /* Find the magnitude of the p.exponent.	*/
+	    expscale = 10;
+	    while (expscale <= p.exponent)
+	      expscale *= 10;
+
+	    if (p.exponent < 10)
+	      /* Exponent always has at least two digits.  */
+	      *wcp++ = L'0';
+	    else
+	      do
+		{
+		  expscale /= 10;
+		  *wcp++ = L'0' + (p.exponent / expscale);
+		  p.exponent %= expscale;
+		}
+	      while (expscale > 10);
+	    *wcp++ = L'0' + p.exponent;
+	  }
+      }
+
+    /* Compute number of characters which must be filled with the padding
+       character.  */
+    if (is_neg || info->showsign || info->space)
+      --width;
+    width -= wcp - wstartp;
+
+    if (!info->left && info->pad != '0' && width > 0)
+      PADN (info->pad, width);
+
+    if (is_neg)
+      outchar ('-');
+    else if (info->showsign)
+      outchar ('+');
+    else if (info->space)
+      outchar (' ');
+
+    if (!info->left && info->pad == '0' && width > 0)
+      PADN ('0', width);
+
+    {
+      char *buffer = NULL;
+      char *buffer_end = NULL;
+      char *cp = NULL;
+      char *tmpptr;
+
+      if (! wide)
+	{
+	  /* Create the single byte string.  */
+	  size_t decimal_len;
+	  size_t thousands_sep_len;
+	  wchar_t *copywc;
+	  size_t factor = (info->i18n
+			   ? _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX)
+			   : 1);
+
+	  decimal_len = strlen (decimal);
+
+	  if (thousands_sep == NULL)
+	    thousands_sep_len = 0;
+	  else
+	    thousands_sep_len = strlen (thousands_sep);
+
+	  size_t nbuffer = (2 + chars_needed * factor + decimal_len
+			    + ngroups * thousands_sep_len);
+	  if (__glibc_unlikely (buffer_malloced))
+	    {
+	      buffer = (char *) malloc (nbuffer);
+	      if (buffer == NULL)
+		{
+		  /* Signal an error to the caller.  */
+		  free (wbuffer);
+		  return -1;
+		}
+	    }
+	  else
+	    buffer = (char *) alloca (nbuffer);
+	  buffer_end = buffer + nbuffer;
+
+	  /* Now copy the wide character string.  Since the character
+	     (except for the decimal point and thousands separator) must
+	     be coming from the ASCII range we can esily convert the
+	     string without mapping tables.  */
+	  for (cp = buffer, copywc = wstartp; copywc < wcp; ++copywc)
+	    if (*copywc == decimalwc)
+	      cp = (char *) __mempcpy (cp, decimal, decimal_len);
+	    else if (*copywc == thousands_sepwc)
+	      cp = (char *) __mempcpy (cp, thousands_sep, thousands_sep_len);
+	    else
+	      *cp++ = (char) *copywc;
+	}
+
+      tmpptr = buffer;
+      if (__glibc_unlikely (info->i18n))
+	{
+#ifdef COMPILE_WPRINTF
+	  wstartp = _i18n_number_rewrite (wstartp, wcp,
+					  wbuffer + wbuffer_to_alloc);
+	  wcp = wbuffer + wbuffer_to_alloc;
+	  assert ((uintptr_t) wbuffer <= (uintptr_t) wstartp);
+	  assert ((uintptr_t) wstartp
+		  < (uintptr_t) wbuffer + wbuffer_to_alloc);
+#else
+	  tmpptr = _i18n_number_rewrite (tmpptr, cp, buffer_end);
+	  cp = buffer_end;
+	  assert ((uintptr_t) buffer <= (uintptr_t) tmpptr);
+	  assert ((uintptr_t) tmpptr < (uintptr_t) buffer_end);
+#endif
+	}
+
+      PRINT (tmpptr, wstartp, wide ? wcp - wstartp : cp - tmpptr);
+
+      /* Free the memory if necessary.  */
+      if (__glibc_unlikely (buffer_malloced))
+	{
+	  free (buffer);
+	  free (wbuffer);
+	}
+    }
+
+    if (info->left && width > 0)
+      PADN (info->pad, width);
+  }
+  return done;
+}
+ldbl_hidden_def (___printf_fp, __printf_fp)
+ldbl_strong_alias (___printf_fp, __printf_fp)
+
+/* Return the number of extra grouping characters that will be inserted
+   into a number with INTDIG_MAX integer digits.  */
+
+unsigned int
+__guess_grouping (unsigned int intdig_max, const char *grouping)
+{
+  unsigned int groups;
+
+  /* We treat all negative values like CHAR_MAX.  */
+
+  if (*grouping == CHAR_MAX || *grouping <= 0)
+    /* No grouping should be done.  */
+    return 0;
+
+  groups = 0;
+  while (intdig_max > (unsigned int) *grouping)
+    {
+      ++groups;
+      intdig_max -= *grouping++;
+
+      if (*grouping == CHAR_MAX
+#if CHAR_MIN < 0
+	  || *grouping < 0
+#endif
+	  )
+	/* No more grouping should be done.  */
+	break;
+      else if (*grouping == 0)
+	{
+	  /* Same grouping repeats.  */
+	  groups += (intdig_max - 1) / grouping[-1];
+	  break;
+	}
+    }
+
+  return groups;
+}
+
+/* Group the INTDIG_NO integer digits of the number in [BUF,BUFEND).
+   There is guaranteed enough space past BUFEND to extend it.
+   Return the new end of buffer.  */
+
+static wchar_t *
+internal_function
+group_number (wchar_t *buf, wchar_t *bufend, unsigned int intdig_no,
+	      const char *grouping, wchar_t thousands_sep, int ngroups)
+{
+  wchar_t *p;
+
+  if (ngroups == 0)
+    return bufend;
+
+  /* Move the fractional part down.  */
+  __wmemmove (buf + intdig_no + ngroups, buf + intdig_no,
+	      bufend - (buf + intdig_no));
+
+  p = buf + intdig_no + ngroups - 1;
+  do
+    {
+      unsigned int len = *grouping++;
+      do
+	*p-- = buf[--intdig_no];
+      while (--len > 0);
+      *p-- = thousands_sep;
+
+      if (*grouping == CHAR_MAX
+#if CHAR_MIN < 0
+	  || *grouping < 0
+#endif
+	  )
+	/* No more grouping should be done.  */
+	break;
+      else if (*grouping == 0)
+	/* Same grouping repeats.  */
+	--grouping;
+    } while (intdig_no > (unsigned int) *grouping);
+
+  /* Copy the remaining ungrouped digits.  */
+  do
+    *p-- = buf[--intdig_no];
+  while (p > buf);
+
+  return bufend + ngroups;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/printf_fphex.c b/ap/libc/glibc/glibc-2.23/stdio-common/printf_fphex.c
new file mode 100644
index 0000000..255c7e0
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/printf_fphex.c
@@ -0,0 +1,496 @@
+/* Print floating point number in hexadecimal notation according to ISO C99.
+   Copyright (C) 1997-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <ctype.h>
+#include <ieee754.h>
+#include <math.h>
+#include <printf.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <wchar.h>
+#include <_itoa.h>
+#include <_itowa.h>
+#include <locale/localeinfo.h>
+#include <stdbool.h>
+#include <rounding-mode.h>
+
+/* #define NDEBUG 1*/		/* Undefine this for debugging assertions.  */
+#include <assert.h>
+
+/* This defines make it possible to use the same code for GNU C library and
+   the GNU I/O library.	 */
+#include <libioP.h>
+#define PUT(f, s, n) _IO_sputn (f, s, n)
+#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : _IO_padn (f, c, n))
+/* We use this file GNU C library and GNU I/O library.	So make
+   names equal.	 */
+#undef putc
+#define putc(c, f) (wide \
+		     ? (int)_IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f))
+#define size_t     _IO_size_t
+#define FILE	     _IO_FILE
+
+/* Macros for doing the actual output.  */
+
+#define outchar(ch)							      \
+  do									      \
+    {									      \
+      const int outc = (ch);						      \
+      if (putc (outc, fp) == EOF)					      \
+	return -1;							      \
+      ++done;								      \
+    } while (0)
+
+#define PRINT(ptr, wptr, len)						      \
+  do									      \
+    {									      \
+      size_t outlen = (len);						      \
+      if (wide)								      \
+	while (outlen-- > 0)						      \
+	  outchar (*wptr++);						      \
+      else								      \
+	while (outlen-- > 0)						      \
+	  outchar (*ptr++);						      \
+    } while (0)
+
+#define PADN(ch, len)							      \
+  do									      \
+    {									      \
+      if (PAD (fp, ch, len) != len)					      \
+	return -1;							      \
+      done += len;							      \
+    }									      \
+  while (0)
+
+#ifndef MIN
+# define MIN(a,b) ((a)<(b)?(a):(b))
+#endif
+
+
+int
+__printf_fphex (FILE *fp,
+		const struct printf_info *info,
+		const void *const *args)
+{
+  /* The floating-point value to output.  */
+  union
+    {
+      union ieee754_double dbl;
+      long double ldbl;
+    }
+  fpnum;
+
+  /* Locale-dependent representation of decimal point.	*/
+  const char *decimal;
+  wchar_t decimalwc;
+
+  /* "NaN" or "Inf" for the special cases.  */
+  const char *special = NULL;
+  const wchar_t *wspecial = NULL;
+
+  /* Buffer for the generated number string for the mantissa.  The
+     maximal size for the mantissa is 128 bits.  */
+  char numbuf[32];
+  char *numstr;
+  char *numend;
+  wchar_t wnumbuf[32];
+  wchar_t *wnumstr;
+  wchar_t *wnumend;
+  int negative;
+
+  /* The maximal exponent of two in decimal notation has 5 digits.  */
+  char expbuf[5];
+  char *expstr;
+  wchar_t wexpbuf[5];
+  wchar_t *wexpstr;
+  int expnegative;
+  int exponent;
+
+  /* Non-zero is mantissa is zero.  */
+  int zero_mantissa;
+
+  /* The leading digit before the decimal point.  */
+  char leading;
+
+  /* Precision.  */
+  int precision = info->prec;
+
+  /* Width.  */
+  int width = info->width;
+
+  /* Number of characters written.  */
+  int done = 0;
+
+  /* Nonzero if this is output on a wide character stream.  */
+  int wide = info->wide;
+
+
+  /* Figure out the decimal point character.  */
+  if (info->extra == 0)
+    {
+      decimal = _NL_CURRENT (LC_NUMERIC, DECIMAL_POINT);
+      decimalwc = _NL_CURRENT_WORD (LC_NUMERIC, _NL_NUMERIC_DECIMAL_POINT_WC);
+    }
+  else
+    {
+      decimal = _NL_CURRENT (LC_MONETARY, MON_DECIMAL_POINT);
+      decimalwc = _NL_CURRENT_WORD (LC_MONETARY,
+				    _NL_MONETARY_DECIMAL_POINT_WC);
+    }
+  /* The decimal point character must never be zero.  */
+  assert (*decimal != '\0' && decimalwc != L'\0');
+
+
+  /* Fetch the argument value.	*/
+#ifndef __NO_LONG_DOUBLE_MATH
+  if (info->is_long_double && sizeof (long double) > sizeof (double))
+    {
+      fpnum.ldbl = *(const long double *) args[0];
+
+      /* Check for special values: not a number or infinity.  */
+      if (isnan (fpnum.ldbl))
+	{
+	  if (isupper (info->spec))
+	    {
+	      special = "NAN";
+	      wspecial = L"NAN";
+	    }
+	  else
+	    {
+	      special = "nan";
+	      wspecial = L"nan";
+	    }
+	}
+      else
+	{
+	  if (isinf (fpnum.ldbl))
+	    {
+	      if (isupper (info->spec))
+		{
+		  special = "INF";
+		  wspecial = L"INF";
+		}
+	      else
+		{
+		  special = "inf";
+		  wspecial = L"inf";
+		}
+	    }
+	}
+      negative = signbit (fpnum.ldbl);
+    }
+  else
+#endif	/* no long double */
+    {
+      fpnum.dbl.d = *(const double *) args[0];
+
+      /* Check for special values: not a number or infinity.  */
+      if (isnan (fpnum.dbl.d))
+	{
+	  if (isupper (info->spec))
+	    {
+	      special = "NAN";
+	      wspecial = L"NAN";
+	    }
+	  else
+	    {
+	      special = "nan";
+	      wspecial = L"nan";
+	    }
+	}
+      else
+	{
+	  if (isinf (fpnum.dbl.d))
+	    {
+	      if (isupper (info->spec))
+		{
+		  special = "INF";
+		  wspecial = L"INF";
+		}
+	      else
+		{
+		  special = "inf";
+		  wspecial = L"inf";
+		}
+	    }
+	}
+      negative = signbit (fpnum.dbl.d);
+    }
+
+  if (special)
+    {
+      int width = info->width;
+
+      if (negative || info->showsign || info->space)
+	--width;
+      width -= 3;
+
+      if (!info->left && width > 0)
+	PADN (' ', width);
+
+      if (negative)
+	outchar ('-');
+      else if (info->showsign)
+	outchar ('+');
+      else if (info->space)
+	outchar (' ');
+
+      PRINT (special, wspecial, 3);
+
+      if (info->left && width > 0)
+	PADN (' ', width);
+
+      return done;
+    }
+
+  if (info->is_long_double == 0 || sizeof (double) == sizeof (long double))
+    {
+      /* We have 52 bits of mantissa plus one implicit digit.  Since
+	 52 bits are representable without rest using hexadecimal
+	 digits we use only the implicit digits for the number before
+	 the decimal point.  */
+      unsigned long long int num;
+
+      num = (((unsigned long long int) fpnum.dbl.ieee.mantissa0) << 32
+	     | fpnum.dbl.ieee.mantissa1);
+
+      zero_mantissa = num == 0;
+
+      if (sizeof (unsigned long int) > 6)
+	{
+	  wnumstr = _itowa_word (num, wnumbuf + (sizeof wnumbuf) / sizeof (wchar_t), 16,
+				 info->spec == 'A');
+	  numstr = _itoa_word (num, numbuf + sizeof numbuf, 16,
+			       info->spec == 'A');
+	}
+      else
+	{
+	  wnumstr = _itowa (num, wnumbuf + sizeof wnumbuf / sizeof (wchar_t), 16,
+			    info->spec == 'A');
+	  numstr = _itoa (num, numbuf + sizeof numbuf, 16,
+			  info->spec == 'A');
+	}
+
+      /* Fill with zeroes.  */
+      while (wnumstr > wnumbuf + (sizeof wnumbuf - 52) / sizeof (wchar_t))
+	{
+	  *--wnumstr = L'0';
+	  *--numstr = '0';
+	}
+
+      leading = fpnum.dbl.ieee.exponent == 0 ? '0' : '1';
+
+      exponent = fpnum.dbl.ieee.exponent;
+
+      if (exponent == 0)
+	{
+	  if (zero_mantissa)
+	    expnegative = 0;
+	  else
+	    {
+	      /* This is a denormalized number.  */
+	      expnegative = 1;
+	      exponent = IEEE754_DOUBLE_BIAS - 1;
+	    }
+	}
+      else if (exponent >= IEEE754_DOUBLE_BIAS)
+	{
+	  expnegative = 0;
+	  exponent -= IEEE754_DOUBLE_BIAS;
+	}
+      else
+	{
+	  expnegative = 1;
+	  exponent = -(exponent - IEEE754_DOUBLE_BIAS);
+	}
+    }
+#ifdef PRINT_FPHEX_LONG_DOUBLE
+  else
+    PRINT_FPHEX_LONG_DOUBLE;
+#endif
+
+  /* Look for trailing zeroes.  */
+  if (! zero_mantissa)
+    {
+      wnumend = &wnumbuf[sizeof wnumbuf / sizeof wnumbuf[0]];
+      numend = &numbuf[sizeof numbuf / sizeof numbuf[0]];
+      while (wnumend[-1] == L'0')
+	{
+	  --wnumend;
+	  --numend;
+	}
+
+      bool do_round_away = false;
+
+      if (precision != -1 && precision < numend - numstr)
+	{
+	  char last_digit = precision > 0 ? numstr[precision - 1] : leading;
+	  char next_digit = numstr[precision];
+	  int last_digit_value = (last_digit >= 'A' && last_digit <= 'F'
+				  ? last_digit - 'A' + 10
+				  : (last_digit >= 'a' && last_digit <= 'f'
+				     ? last_digit - 'a' + 10
+				     : last_digit - '0'));
+	  int next_digit_value = (next_digit >= 'A' && next_digit <= 'F'
+				  ? next_digit - 'A' + 10
+				  : (next_digit >= 'a' && next_digit <= 'f'
+				     ? next_digit - 'a' + 10
+				     : next_digit - '0'));
+	  bool more_bits = ((next_digit_value & 7) != 0
+			    || precision + 1 < numend - numstr);
+	  int rounding_mode = get_rounding_mode ();
+	  do_round_away = round_away (negative, last_digit_value & 1,
+				      next_digit_value >= 8, more_bits,
+				      rounding_mode);
+	}
+
+      if (precision == -1)
+	precision = numend - numstr;
+      else if (do_round_away)
+	{
+	  /* Round up.  */
+	  int cnt = precision;
+	  while (--cnt >= 0)
+	    {
+	      char ch = numstr[cnt];
+	      /* We assume that the digits and the letters are ordered
+		 like in ASCII.  This is true for the rest of GNU, too.  */
+	      if (ch == '9')
+		{
+		  wnumstr[cnt] = (wchar_t) info->spec;
+		  numstr[cnt] = info->spec;	/* This is tricky,
+						   think about it!  */
+		  break;
+		}
+	      else if (tolower (ch) < 'f')
+		{
+		  ++numstr[cnt];
+		  ++wnumstr[cnt];
+		  break;
+		}
+	      else
+		{
+		  numstr[cnt] = '0';
+		  wnumstr[cnt] = L'0';
+		}
+	    }
+	  if (cnt < 0)
+	    {
+	      /* The mantissa so far was fff...f  Now increment the
+		 leading digit.  Here it is again possible that we
+		 get an overflow.  */
+	      if (leading == '9')
+		leading = info->spec;
+	      else if (tolower (leading) < 'f')
+		++leading;
+	      else
+		{
+		  leading = '1';
+		  if (expnegative)
+		    {
+		      exponent -= 4;
+		      if (exponent <= 0)
+			{
+			  exponent = -exponent;
+			  expnegative = 0;
+			}
+		    }
+		  else
+		    exponent += 4;
+		}
+	    }
+	}
+    }
+  else
+    {
+      if (precision == -1)
+	precision = 0;
+      numend = numstr;
+      wnumend = wnumstr;
+    }
+
+  /* Now we can compute the exponent string.  */
+  expstr = _itoa_word (exponent, expbuf + sizeof expbuf, 10, 0);
+  wexpstr = _itowa_word (exponent,
+			 wexpbuf + sizeof wexpbuf / sizeof (wchar_t), 10, 0);
+
+  /* Now we have all information to compute the size.  */
+  width -= ((negative || info->showsign || info->space)
+	    /* Sign.  */
+	    + 2    + 1 + 0 + precision + 1 + 1
+	    /* 0x    h   .   hhh         P   ExpoSign.  */
+	    + ((expbuf + sizeof expbuf) - expstr));
+	    /* Exponent.  */
+
+  /* Count the decimal point.
+     A special case when the mantissa or the precision is zero and the `#'
+     is not given.  In this case we must not print the decimal point.  */
+  if (precision > 0 || info->alt)
+    width -= wide ? 1 : strlen (decimal);
+
+  if (!info->left && info->pad != '0' && width > 0)
+    PADN (' ', width);
+
+  if (negative)
+    outchar ('-');
+  else if (info->showsign)
+    outchar ('+');
+  else if (info->space)
+    outchar (' ');
+
+  outchar ('0');
+  if ('X' - 'A' == 'x' - 'a')
+    outchar (info->spec + ('x' - 'a'));
+  else
+    outchar (info->spec == 'A' ? 'X' : 'x');
+
+  if (!info->left && info->pad == '0' && width > 0)
+    PADN ('0', width);
+
+  outchar (leading);
+
+  if (precision > 0 || info->alt)
+    {
+      const wchar_t *wtmp = &decimalwc;
+      PRINT (decimal, wtmp, wide ? 1 : strlen (decimal));
+    }
+
+  if (precision > 0)
+    {
+      ssize_t tofill = precision - (numend - numstr);
+      PRINT (numstr, wnumstr, MIN (numend - numstr, precision));
+      if (tofill > 0)
+	PADN ('0', tofill);
+    }
+
+  if ('P' - 'A' == 'p' - 'a')
+    outchar (info->spec + ('p' - 'a'));
+  else
+    outchar (info->spec == 'A' ? 'P' : 'p');
+
+  outchar (expnegative ? '-' : '+');
+
+  PRINT (expstr, wexpstr, (expbuf + sizeof expbuf) - expstr);
+
+  if (info->left && info->pad != '0' && width > 0)
+    PADN (info->pad, width);
+
+  return done;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/printf_size.c b/ap/libc/glibc/glibc-2.23/stdio-common/printf_size.c
new file mode 100644
index 0000000..154ba9d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/printf_size.c
@@ -0,0 +1,245 @@
+/* Print size value using units for orders of magnitude.
+   Copyright (C) 1997-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+   Based on a proposal by Larry McVoy <lm@sgi.com>.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <ctype.h>
+#include <ieee754.h>
+#include <math.h>
+#include <printf.h>
+#include <libioP.h>
+
+
+/* This defines make it possible to use the same code for GNU C library and
+   the GNU I/O library.	 */
+#define PUT(f, s, n) _IO_sputn (f, s, n)
+#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : _IO_padn (f, c, n))
+/* We use this file GNU C library and GNU I/O library.	So make
+   names equal.	 */
+#undef putc
+#define putc(c, f) (wide \
+		    ? (int)_IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f))
+#define size_t	_IO_size_t
+#define FILE	_IO_FILE
+
+/* Macros for doing the actual output.  */
+
+#define outchar(ch)							      \
+  do									      \
+    {									      \
+      const int outc = (ch);						      \
+      if (putc (outc, fp) == EOF)					      \
+	return -1;							      \
+      ++done;								      \
+    } while (0)
+
+#define PRINT(ptr, wptr, len)						      \
+  do									      \
+    {									      \
+      size_t outlen = (len);						      \
+      if (len > 20)							      \
+	{								      \
+	  if (PUT (fp, wide ? (const char *) wptr : ptr, outlen) != outlen)   \
+	    return -1;							      \
+	  ptr += outlen;						      \
+	  done += outlen;						      \
+	}								      \
+      else								      \
+	{								      \
+	  if (wide)							      \
+	    while (outlen-- > 0)					      \
+	      outchar (*wptr++);					      \
+	  else								      \
+	    while (outlen-- > 0)					      \
+	      outchar (*ptr++);						      \
+	}								      \
+    } while (0)
+
+#define PADN(ch, len)							      \
+  do									      \
+    {									      \
+      if (PAD (fp, ch, len) != len)					      \
+	return -1;							      \
+      done += len;							      \
+    }									      \
+  while (0)
+
+/* Prototype for helper functions.  */
+extern int __printf_fp (FILE *fp, const struct printf_info *info,
+			const void *const *args);
+
+
+int
+__printf_size (FILE *fp, const struct printf_info *info,
+	       const void *const *args)
+{
+  /* Units for the both formats.  */
+#define BINARY_UNITS	" kmgtpezy"
+#define DECIMAL_UNITS	" KMGTPEZY"
+  static const char units[2][sizeof (BINARY_UNITS)] =
+  {
+    BINARY_UNITS,	/* For binary format.  */
+    DECIMAL_UNITS	/* For decimal format.  */
+  };
+  const char *tag = units[isupper (info->spec) != 0];
+  int divisor = isupper (info->spec) ? 1000 : 1024;
+
+  /* The floating-point value to output.  */
+  union
+    {
+      union ieee754_double dbl;
+      long double ldbl;
+    }
+  fpnum;
+  const void *ptr = &fpnum;
+
+  int is_neg = 0;
+
+  /* "NaN" or "Inf" for the special cases.  */
+  const char *special = NULL;
+  const wchar_t *wspecial = NULL;
+
+  struct printf_info fp_info;
+  int done = 0;
+  int wide = info->wide;
+
+  /* Fetch the argument value.	*/
+#ifndef __NO_LONG_DOUBLE_MATH
+  if (info->is_long_double && sizeof (long double) > sizeof (double))
+    {
+      fpnum.ldbl = *(const long double *) args[0];
+
+      /* Check for special values: not a number or infinity.  */
+      if (isnan (fpnum.ldbl))
+	{
+	  special = "nan";
+	  wspecial = L"nan";
+	  // is_neg = 0;	Already zero
+	}
+      else if (isinf (fpnum.ldbl))
+	{
+	  is_neg = signbit (fpnum.ldbl);
+	  special = "inf";
+	  wspecial = L"inf";
+	}
+      else
+	while (fpnum.ldbl >= divisor && tag[1] != '\0')
+	  {
+	    fpnum.ldbl /= divisor;
+	    ++tag;
+	  }
+    }
+  else
+#endif	/* no long double */
+    {
+      fpnum.dbl.d = *(const double *) args[0];
+
+      /* Check for special values: not a number or infinity.  */
+      if (isnan (fpnum.dbl.d))
+	{
+	  special = "nan";
+	  wspecial = L"nan";
+	  // is_neg = 0;	Already zero
+	}
+      else if (isinf (fpnum.dbl.d))
+	{
+	  is_neg = signbit (fpnum.dbl.d);
+	  special = "inf";
+	  wspecial = L"inf";
+	}
+      else
+	while (fpnum.dbl.d >= divisor && tag[1] != '\0')
+	  {
+	    fpnum.dbl.d /= divisor;
+	    ++tag;
+	  }
+    }
+
+  if (special)
+    {
+      int width = info->prec > info->width ? info->prec : info->width;
+
+      if (is_neg || info->showsign || info->space)
+	--width;
+      width -= 3;
+
+      if (!info->left && width > 0)
+	PADN (' ', width);
+
+      if (is_neg)
+	outchar ('-');
+      else if (info->showsign)
+	outchar ('+');
+      else if (info->space)
+	outchar (' ');
+
+      PRINT (special, wspecial, 3);
+
+      if (info->left && width > 0)
+	PADN (' ', width);
+
+      return done;
+    }
+
+  /* Prepare to print the number.  We want to use `__printf_fp' so we
+     have to prepare a `printf_info' structure.  */
+  fp_info = *info;
+  fp_info.spec = 'f';
+  fp_info.prec = info->prec < 0 ? 3 : info->prec;
+  fp_info.wide = wide;
+
+  if (fp_info.left && fp_info.pad == L' ')
+    {
+      /* We must do the padding ourself since the unit character must
+	 be placed before the padding spaces.  */
+      fp_info.width = 0;
+
+      done = __printf_fp (fp, &fp_info, &ptr);
+      if (done > 0)
+	{
+	  outchar (*tag);
+	  if (info->width > done)
+	    PADN (' ', info->width - done);
+	}
+    }
+  else
+    {
+      /* We can let __printf_fp do all the printing and just add our
+	 unit character afterwards.  */
+      fp_info.width = info->width - 1;
+
+      done = __printf_fp (fp, &fp_info, &ptr);
+      if (done > 0)
+	outchar (*tag);
+    }
+
+  return done;
+}
+ldbl_strong_alias (__printf_size, printf_size);
+
+/* This is the function used by `vfprintf' to determine number and
+   type of the arguments.  */
+int
+printf_size_info (const struct printf_info *info, size_t n, int *argtypes)
+{
+  /* We need only one double or long double argument.  */
+  if (n >= 1)
+    argtypes[0] = PA_DOUBLE | (info->is_long_double ? PA_FLAG_LONG_DOUBLE : 0);
+
+  return 1;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/psiginfo-data.h b/ap/libc/glibc/glibc-2.23/stdio-common/psiginfo-data.h
new file mode 100644
index 0000000..05bb76c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/psiginfo-data.h
@@ -0,0 +1,50 @@
+#if NOW == SIGILL
+P (ILL_ILLOPC, N_("Illegal opcode"))
+P (ILL_ILLOPN, N_("Illegal operand"))
+P (ILL_ILLADR, N_("Illegal addressing mode"))
+P (ILL_ILLTRP, N_("Illegal trap"))
+P (ILL_PRVOPC, N_("Privileged opcode"))
+P (ILL_PRVREG, N_("Privileged register"))
+P (ILL_COPROC, N_("Coprocessor error"))
+P (ILL_BADSTK, N_("Internal stack error"))
+#endif
+#if NOW == SIGFPE
+P (FPE_INTDIV, N_("Integer divide by zero"))
+P (FPE_INTOVF, N_("Integer overflow"))
+P (FPE_FLTDIV, N_("Floating-point divide by zero"))
+P (FPE_FLTOVF, N_("Floating-point overflow"))
+P (FPE_FLTUND, N_("Floating-point underflow"))
+P (FPE_FLTRES, N_("Floating-poing inexact result"))
+P (FPE_FLTINV, N_("Invalid floating-point operation"))
+P (FPE_FLTSUB, N_("Subscript out of range"))
+#endif
+#if NOW == SIGSEGV
+P (SEGV_MAPERR, N_("Address not mapped to object"))
+P (SEGV_ACCERR, N_("Invalid permissions for mapped object"))
+#endif
+#if NOW == SIGBUS
+P (BUS_ADRALN, N_("Invalid address alignment"))
+P (BUS_ADRERR, N_("Nonexisting physical address"))
+P (BUS_OBJERR, N_("Object-specific hardware error"))
+#endif
+#if NOW == SIGTRAP
+P (TRAP_BRKPT, N_("Process breakpoint"))
+P (TRAP_TRACE, N_("Process trace trap"))
+#endif
+#if NOW == SIGCLD
+P (CLD_EXITED, N_("Child has exited"))
+P (CLD_KILLED, N_("Child has terminated abnormally and did not create a core file"))
+P (CLD_DUMPED, N_("Child has terminated abnormally and created a core file"))
+P (CLD_TRAPPED, N_("Traced child has trapped"))
+P (CLD_STOPPED, N_("Child has stopped"))
+P (CLD_CONTINUED, N_("Stopped child has continued"))
+#endif
+#if NOW == SIGPOLL
+P (POLL_IN, N_("Data input available"))
+P (POLL_OUT, N_("Output buffers available"))
+P (POLL_MSG, N_("Input message available"))
+P (POLL_ERR, N_("I/O error"))
+P (POLL_PRI, N_("High priority input available"))
+P (POLL_HUP, N_("Device disconnected"))
+#endif
+#undef P
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/psiginfo-define.h b/ap/libc/glibc/glibc-2.23/stdio-common/psiginfo-define.h
new file mode 100644
index 0000000..e1d1a35
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/psiginfo-define.h
@@ -0,0 +1,15 @@
+static const union C(codestrs_t_, NOW) {
+  struct {
+#define P(n, s) char MF(__LINE__)[sizeof (s)];
+#include "psiginfo-data.h"
+  };
+  char str[0];
+} C(codestrs_, NOW) = { {
+#define P(n, s) s,
+#include "psiginfo-data.h"
+  } };
+static const uint8_t C(codes_, NOW)[] = {
+#define P(n, s) [(n) - 1] = offsetof (union C(codestrs_t_, NOW), MF(__LINE__)),
+#include "psiginfo-data.h"
+};
+#undef NOW
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/psiginfo.c b/ap/libc/glibc/glibc-2.23/stdio-common/psiginfo.c
new file mode 100644
index 0000000..96c6e91
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/psiginfo.c
@@ -0,0 +1,203 @@
+/* Copyright (C) 2009-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <libintl.h>
+#include <signal.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <not-cancel.h>
+
+
+#define MF(l) MF1 (l)
+#define MF1(l) str_##l
+#define C(s1, s2) C1 (s1, s2)
+#define C1(s1, s2) s1##s2
+
+#define NOW SIGILL
+#include "psiginfo-define.h"
+
+#define NOW SIGFPE
+#include "psiginfo-define.h"
+
+#define NOW SIGSEGV
+#include "psiginfo-define.h"
+
+#define NOW SIGBUS
+#include "psiginfo-define.h"
+
+#define NOW SIGTRAP
+#include "psiginfo-define.h"
+
+#define NOW SIGCLD
+#include "psiginfo-define.h"
+
+#define NOW SIGPOLL
+#include "psiginfo-define.h"
+
+
+/* Print out on stderr a line consisting of the test in S, a colon, a space,
+   a message describing the meaning of the signal number PINFO and a newline.
+   If S is NULL or "", the colon and space are omitted.  */
+void
+psiginfo (const siginfo_t *pinfo, const char *s)
+{
+  char buf[512];
+  FILE *fp = __fmemopen (buf, sizeof (buf), "w");
+  if (fp == NULL)
+    {
+      const char *colon;
+
+      if (s == NULL || *s == '\0')
+	s = colon = "";
+      else
+	colon = ": ";
+
+      __fxprintf (NULL, "%s%ssignal %d\n", s, colon, pinfo->si_signo);
+      return;
+    }
+
+  if (s != NULL && *s != '\0')
+    fprintf (fp, "%s: ", s);
+
+  const char *desc;
+  if (pinfo->si_signo >= 0 && pinfo->si_signo < NSIG
+      && ((desc = _sys_siglist[pinfo->si_signo]) != NULL
+#ifdef SIGRTMIN
+	  || (pinfo->si_signo >= SIGRTMIN && pinfo->si_signo < SIGRTMAX)
+#endif
+	 ))
+    {
+#ifdef SIGRTMIN
+      if (desc == NULL)
+	{
+	  if (pinfo->si_signo - SIGRTMIN < SIGRTMAX - pinfo->si_signo)
+	    {
+	      if (pinfo->si_signo == SIGRTMIN)
+		fprintf (fp, "SIGRTMIN (");
+	      else
+		fprintf (fp, "SIGRTMIN+%d (", pinfo->si_signo - SIGRTMIN);
+	    }
+	  else
+	    {
+	      if (pinfo->si_signo == SIGRTMAX)
+		fprintf (fp, "SIGRTMAX (");
+	      else
+		fprintf (fp, "SIGRTMAX-%d (", SIGRTMAX - pinfo->si_signo);
+	    }
+	}
+      else
+#endif
+	fprintf (fp, "%s (", _(desc));
+
+      const char *base = NULL;
+      const uint8_t *offarr = NULL;
+      size_t offarr_len = 0;
+      switch (pinfo->si_signo)
+	{
+#define H(sig) \
+	case sig:							      \
+	  base = C(codestrs_, sig).str;					      \
+	  offarr = C (codes_, sig);					      \
+	  offarr_len = sizeof (C (codes_, sig)) / sizeof (C (codes_, sig)[0]);\
+	  break
+
+	  H (SIGILL);
+	  H (SIGFPE);
+	  H (SIGSEGV);
+	  H (SIGBUS);
+	  H (SIGTRAP);
+	  H (SIGCHLD);
+	  H (SIGPOLL);
+	}
+
+      const char *str = NULL;
+      if (offarr != NULL
+	  && pinfo->si_code >= 1 && pinfo->si_code <= offarr_len)
+	str = base + offarr[pinfo->si_code - 1];
+      else
+	switch (pinfo->si_code)
+	  {
+	  case SI_USER:
+	    str = N_("Signal sent by kill()");
+	    break;
+	  case SI_QUEUE:
+	    str = N_("Signal sent by sigqueue()");
+	    break;
+	  case SI_TIMER:
+	    str = N_("Signal generated by the expiration of a timer");
+	    break;
+	  case SI_ASYNCIO:
+	    str = N_("\
+Signal generated by the completion of an asynchronous I/O request");
+	    break;
+	  case SI_MESGQ:
+	    str = N_("\
+Signal generated by the arrival of a message on an empty message queue");
+	    break;
+#ifdef SI_TKILL
+	  case SI_TKILL:
+	    str = N_("Signal sent by tkill()");
+	    break;
+#endif
+#ifdef SI_ASYNCNL
+	  case SI_ASYNCNL:
+	    str = N_("\
+Signal generated by the completion of an asynchronous name lookup request");
+	    break;
+#endif
+#ifdef SI_SIGIO
+	  case SI_SIGIO:
+	    str = N_("\
+Signal generated by the completion of an I/O request");
+	    break;
+#endif
+#ifdef SI_KERNEL
+	  case SI_KERNEL:
+	    str = N_("Signal sent by the kernel");
+	    break;
+#endif
+	  }
+
+      if (str != NULL)
+	fprintf (fp, "%s ", _(str));
+      else
+	fprintf (fp, "%d ", pinfo->si_code);
+
+      if (pinfo->si_signo == SIGILL || pinfo->si_signo == SIGFPE
+	  || pinfo->si_signo == SIGSEGV || pinfo->si_signo == SIGBUS)
+	fprintf (fp, "[%p])\n", pinfo->si_addr);
+      else if (pinfo->si_signo == SIGCHLD)
+	fprintf (fp, "%ld %d %ld)\n",
+		 (long int) pinfo->si_pid, pinfo->si_status,
+		 (long int) pinfo->si_uid);
+      else if (pinfo->si_signo == SIGPOLL)
+	fprintf (fp, "%ld)\n", (long int) pinfo->si_band);
+      else
+	fprintf (fp, "%ld %ld)\n",
+		 (long int) pinfo->si_pid, (long int) pinfo->si_uid);
+    }
+  else
+    fprintf (fp, _("Unknown signal %d\n"),  pinfo->si_signo);
+
+  fclose (fp);
+
+  write_not_cancel (STDERR_FILENO, buf, strlen (buf));
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/psignal.c b/ap/libc/glibc/glibc-2.23/stdio-common/psignal.c
new file mode 100644
index 0000000..f391ada
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/psignal.c
@@ -0,0 +1,52 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <libintl.h>
+#include <wchar.h>
+
+/* Print out on stderr a line consisting of the test in S, a colon, a space,
+   a message describing the meaning of the signal number SIG and a newline.
+   If S is NULL or "", the colon and space are omitted.  */
+void
+psignal (int sig, const char *s)
+{
+  const char *colon, *desc;
+
+  if (s == NULL || *s == '\0')
+    s = colon = "";
+  else
+    colon = ": ";
+
+  if (sig >= 0 && sig < NSIG && (desc = _sys_siglist[sig]) != NULL)
+    (void) __fxprintf (NULL, "%s%s%s\n", s, colon, _(desc));
+  else
+    {
+      char *buf;
+
+      if (__asprintf (&buf, _("%s%sUnknown signal %d\n"), s, colon, sig) < 0)
+	(void) __fxprintf (NULL, "%s%s%s\n", s, colon, _("Unknown signal"));
+      else
+	{
+	  (void) __fxprintf (NULL, "%s", buf);
+
+	  free (buf);
+	}
+    }
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/putw.c b/ap/libc/glibc/glibc-2.23/stdio-common/putw.c
new file mode 100644
index 0000000..a70d3a0
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/putw.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <libio/iolibio.h>
+#define fwrite(p, n, m, s) _IO_fwrite (p, n, m, s)
+
+/* Write the word (int) W to STREAM.  */
+int
+putw (int w, FILE *stream)
+{
+  /* Is there a better way?  */
+  if (fwrite ((const void *) &w, sizeof (w), 1, stream) < 1)
+    return EOF;
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/reg-modifier.c b/ap/libc/glibc/glibc-2.23/stdio-common/reg-modifier.c
new file mode 100644
index 0000000..9a9a678
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/reg-modifier.c
@@ -0,0 +1,202 @@
+/* Copyright (C) 2009-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <limits.h>
+#include <printf.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <libc-lock.h>
+
+
+struct printf_modifier_record
+{
+  struct printf_modifier_record *next;
+  int bit;
+  wchar_t str[0];
+};
+
+struct printf_modifier_record **__printf_modifier_table attribute_hidden;
+
+__libc_lock_define_initialized (static, lock)
+
+/* Bits to hand out.  */
+static int next_bit;
+
+
+int
+__register_printf_modifier (const wchar_t *str)
+{
+  if (str[0] == L'\0')
+    {
+    einval:
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  const wchar_t *wc = str;
+  while (*wc != L'\0')
+    if (*wc < 0 || *wc > (wchar_t) UCHAR_MAX)
+      goto einval;
+    else
+      ++wc;
+
+  if (next_bit / 8 == sizeof (((struct printf_info *) NULL)->user))
+    {
+      __set_errno (ENOSPC);
+      return -1;
+    }
+
+  int result = -1;
+  __libc_lock_lock (lock);
+
+  if (__printf_modifier_table == NULL)
+    {
+      __printf_modifier_table = calloc (UCHAR_MAX,
+					sizeof (*__printf_modifier_table));
+      if (__printf_modifier_table == NULL)
+	goto out;
+    }
+
+  /* Create enough room for the string.  But we don't need the first
+     character. */
+  struct printf_modifier_record *newp = malloc (sizeof (*newp)
+						+ ((wc - str)
+						   * sizeof (wchar_t)));
+  if (newp == NULL)
+    goto out;
+
+  newp->next = __printf_modifier_table[(unsigned char) *str];
+  newp->bit = 1 << next_bit++;
+  __wmemcpy (newp->str, str + 1, wc - str);
+
+  __printf_modifier_table[(unsigned char) *str] = newp;
+
+  result = newp->bit;
+
+ out:
+  __libc_lock_unlock (lock);
+
+  return result;
+}
+weak_alias (__register_printf_modifier, register_printf_modifier)
+
+
+#include <stdio.h>
+int
+attribute_hidden
+__handle_registered_modifier_mb (const unsigned char **format,
+				 struct printf_info *info)
+{
+  struct printf_modifier_record *runp = __printf_modifier_table[**format];
+
+  int best_bit = 0;
+  int best_len = 0;
+  const unsigned char *best_cp = NULL;
+
+  while (runp != NULL)
+    {
+      const unsigned char *cp = *format + 1;
+      wchar_t *fcp = runp->str;
+
+      while (*cp != '\0' && *fcp != L'\0')
+	if (*cp != *fcp)
+	  break;
+	else
+	  ++cp, ++fcp;
+
+      if (*fcp == L'\0' && cp - *format > best_len)
+	{
+	  best_cp = cp;
+	  best_len = cp - *format;
+	  best_bit = runp->bit;
+	}
+
+      runp = runp->next;
+    }
+
+  if (best_bit != 0)
+    {
+      info->user |= best_bit;
+      *format = best_cp;
+      return 0;
+    }
+
+  return 1;
+}
+
+
+int
+attribute_hidden
+__handle_registered_modifier_wc (const unsigned int **format,
+				 struct printf_info *info)
+{
+  struct printf_modifier_record *runp = __printf_modifier_table[**format];
+
+  int best_bit = 0;
+  int best_len = 0;
+  const unsigned int *best_cp = NULL;
+
+  while (runp != NULL)
+    {
+      const unsigned int *cp = *format + 1;
+      wchar_t *fcp = runp->str;
+
+      while (*cp != '\0' && *fcp != L'\0')
+	if (*cp != *fcp)
+	  break;
+	else
+	  ++cp, ++fcp;
+
+      if (*fcp == L'\0' && cp - *format > best_len)
+	{
+	  best_cp = cp;
+	  best_len = cp - *format;
+	  best_bit = runp->bit;
+	}
+
+      runp = runp->next;
+    }
+
+  if (best_bit != 0)
+    {
+      info->user |= best_bit;
+      *format = best_cp;
+      return 0;
+    }
+
+  return 1;
+}
+
+
+libc_freeres_fn (free_mem)
+{
+  if (__printf_modifier_table != NULL)
+    {
+      for (int i = 0; i < UCHAR_MAX; ++i)
+	{
+	  struct printf_modifier_record *runp = __printf_modifier_table[i];
+	  while (runp != NULL)
+	    {
+	      struct printf_modifier_record *oldp = runp;
+	      runp = runp->next;
+	      free (oldp);
+	    }
+	}
+      free (__printf_modifier_table);
+    }
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/reg-printf.c b/ap/libc/glibc/glibc-2.23/stdio-common/reg-printf.c
new file mode 100644
index 0000000..cd64c2a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/reg-printf.c
@@ -0,0 +1,86 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <limits.h>
+#include <printf.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <libc-lock.h>
+
+
+/* Array of functions indexed by format character.  */
+libc_freeres_ptr (printf_arginfo_size_function **__printf_arginfo_table)
+  attribute_hidden;
+printf_function **__printf_function_table attribute_hidden;
+
+__libc_lock_define_initialized (static, lock)
+
+int __register_printf_specifier (int, printf_function,
+				 printf_arginfo_size_function);
+int __register_printf_function (int, printf_function,
+				printf_arginfo_function);
+
+
+/* Register FUNC to be called to format SPEC specifiers.  */
+int
+__register_printf_specifier (int spec, printf_function converter,
+			     printf_arginfo_size_function arginfo)
+{
+  if (spec < 0 || spec > (int) UCHAR_MAX)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  int result = 0;
+  __libc_lock_lock (lock);
+
+  if (__printf_function_table == NULL)
+    {
+      __printf_arginfo_table = (printf_arginfo_size_function **)
+	calloc (UCHAR_MAX + 1, sizeof (void *) * 2);
+      if (__printf_arginfo_table == NULL)
+	{
+	  result = -1;
+	  goto out;
+	}
+
+      __printf_function_table = (printf_function **)
+	(__printf_arginfo_table + UCHAR_MAX + 1);
+    }
+
+  __printf_function_table[spec] = converter;
+  __printf_arginfo_table[spec] = arginfo;
+
+ out:
+  __libc_lock_unlock (lock);
+
+  return result;
+}
+weak_alias (__register_printf_specifier, register_printf_specifier)
+
+
+/* Register FUNC to be called to format SPEC specifiers.  */
+int
+__register_printf_function (int spec, printf_function converter,
+			    printf_arginfo_function arginfo)
+{
+  return __register_printf_specifier (spec, converter,
+				      (printf_arginfo_size_function*) arginfo);
+}
+weak_alias (__register_printf_function, register_printf_function)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/reg-type.c b/ap/libc/glibc/glibc-2.23/stdio-common/reg-type.c
new file mode 100644
index 0000000..aaaf46a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/reg-type.c
@@ -0,0 +1,61 @@
+/* Copyright (C) 2009-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <printf.h>
+#include <stdlib.h>
+#include <libc-lock.h>
+
+
+/* Array of functions indexed by format character.  */
+libc_freeres_ptr (printf_va_arg_function **__printf_va_arg_table)
+  attribute_hidden;
+
+__libc_lock_define_initialized (static, lock);
+
+/* Last type allocated.  */
+static int pa_next_type = PA_LAST;
+
+
+int
+__register_printf_type (printf_va_arg_function fct)
+{
+  int result = -1;
+  __libc_lock_lock (lock);
+
+  if (__printf_va_arg_table == NULL)
+    {
+      __printf_va_arg_table = (printf_va_arg_function **)
+	calloc (0x100 - PA_LAST, sizeof (void *));
+      if (__printf_va_arg_table == NULL)
+	goto out;
+    }
+
+  if (pa_next_type == 0x100)
+    __set_errno (ENOSPC);
+  else
+    {
+      result = pa_next_type++;
+      __printf_va_arg_table[result - PA_LAST] = fct;
+    }
+
+ out:
+  __libc_lock_unlock (lock);
+
+  return result;
+}
+weak_alias (__register_printf_type, register_printf_type)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/remove.c b/ap/libc/glibc/glibc-2.23/stdio-common/remove.c
new file mode 100644
index 0000000..7bbe476
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/remove.c
@@ -0,0 +1,30 @@
+/* ANSI C `remove' function to delete a file or directory.  Stub version.
+   Copyright (C) 1995-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stdio.h>
+
+int
+remove (const char *file)
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+libc_hidden_def (remove)
+
+stub_warning (remove)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/rename.c b/ap/libc/glibc/glibc-2.23/stdio-common/rename.c
new file mode 100644
index 0000000..993a96f
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/rename.c
@@ -0,0 +1,37 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <errno.h>
+
+
+/* Rename the file OLD to NEW.  */
+int
+rename (const char *old, const char *new)
+{
+  if (old == NULL || new == NULL)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  __set_errno (ENOSYS);
+  return -1;
+}
+
+
+stub_warning (rename)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/renameat.c b/ap/libc/glibc/glibc-2.23/stdio-common/renameat.c
new file mode 100644
index 0000000..4069802
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/renameat.c
@@ -0,0 +1,44 @@
+/* Copyright (C) 2005-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+
+
+/* Rename the file OLD relative to OLDFD to NEW relative to NEWFD.  */
+int
+renameat (int oldfd, const char *old, int newfd, const char *new)
+{
+  if ((oldfd < 0 && oldfd != AT_FDCWD) || (newfd < 0 && newfd != AT_FDCWD))
+    {
+      __set_errno (EBADF);
+      return -1;
+    }
+
+  if (old == NULL || new == NULL)
+    {
+      __set_errno (EINVAL);
+      return -1;
+    }
+
+  __set_errno (ENOSYS);
+  return -1;
+}
+
+
+stub_warning (renameat)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf.c
new file mode 100644
index 0000000..c020bb8
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#include <libioP.h>
+
+
+/* Read formatted input from stdin according to the format string FORMAT.  */
+/* VARARGS1 */
+int
+__scanf (const char *format, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, format);
+  done = _IO_vfscanf (stdin, format, arg, NULL);
+  va_end (arg);
+
+  return done;
+}
+ldbl_strong_alias (__scanf, scanf)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf1.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf1.c
new file mode 100644
index 0000000..be6d63e
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf1.c
@@ -0,0 +1,15 @@
+#include  <stdio.h>
+#include  <stdlib.h>
+
+int
+main (int argc, char *argv[])
+{
+  int i,n,r;
+
+  n = i = r = -1;
+  r = sscanf ("1234:567", "%d%n", &i, &n);
+  printf ("%d %d %d\n", r, n, i);
+  if (r != 1 || i != 1234 || n != 4)
+    abort ();
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf10.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf10.c
new file mode 100644
index 0000000..f896137
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf10.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main (int argc, char *argv[])
+{
+  const char teststring[] = "<tag `word'>";
+  int retc, a, b;
+
+  retc = sscanf (teststring, "<%*s `%n%*s%n'>", &a, &b);
+
+  printf ("retc=%d a=%d b=%d\n", retc, a, b);
+
+  return retc == -1 && a == 6 && b == 12 ? 0 : 1;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf11.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf11.c
new file mode 100644
index 0000000..fcf9846
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf11.c
@@ -0,0 +1,46 @@
+/* Copyright (C) 2001-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <ctype.h>
+#include <stdio.h>
+
+int
+main (int argc, char *argv[])
+{
+  int exc = 0;
+  int retc;
+  float f;
+  int d;
+  char str[] = "x 1";
+  int c;
+
+  for (c = 1; c < 127; ++c)
+    if (! isdigit (c) && ! isspace (c))
+      {
+	str[0] = c;
+	retc = sscanf (str, "%e %d", &f, &d);
+	if (retc != 0)
+	  {
+	    printf ("sscanf (\"%s\", \"%%e %%d\", ...) == %d, not 0\n",
+		    str, retc);
+	    exc = 1;
+	  }
+      }
+
+  return exc;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf12.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf12.c
new file mode 100644
index 0000000..db37e2f
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf12.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main (void)
+{
+  double d;
+  int c;
+
+  if (scanf ("%lg", &d) != 0)
+    {
+      printf ("scanf didn't failed\n");
+      exit (1);
+    }
+  c = getchar ();
+  if (c != ' ')
+    {
+      printf ("c is `%c', not ` '\n", c);
+      exit (1);
+    }
+
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf12.input b/ap/libc/glibc/glibc-2.23/stdio-common/scanf12.input
new file mode 100644
index 0000000..41aa98a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf12.input
@@ -0,0 +1 @@
++ foo
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf13.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf13.c
new file mode 100644
index 0000000..720224a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf13.c
@@ -0,0 +1,186 @@
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+int
+main (void)
+{
+  char *sp1, *sp2, *sp3, *sp4;
+  wchar_t *lsp1, *lsp2, *lsp3, *lsp4;
+  int result = 0;
+  char buf[2048+64];
+  size_t i;
+
+#define FAIL() \
+  do {							\
+    result = 1;						\
+    printf ("test at line %d failed\n", __LINE__);	\
+  } while (0)
+
+  setlocale (LC_ALL, "de_DE.UTF-8");
+  if (sscanf ("A  \xc3\x84-\t\t\xc3\x84-abcdefbcd\t\xc3\x84-B",
+	      "A%ms%10ms%4m[bcd]%4mcB", &sp1, &sp2, &sp3, &sp4) != 4)
+    FAIL ();
+  else
+    {
+      if (strcmp (sp1, "\xc3\x84-") != 0)
+	FAIL ();
+      free (sp1);
+      if (strcmp (sp2, "\xc3\x84-abcdefb") != 0)
+	FAIL ();
+      free (sp2);
+      if (strcmp (sp3, "cd") != 0)
+	FAIL ();
+      free (sp3);
+      if (memcmp (sp4, "\t\xc3\x84-", 4) != 0)
+	FAIL ();
+      free (sp4);
+    }
+
+  if (sscanf ("A  \xc3\x84-\t\t\xc3\x84-abcdefbcd\t\xc3\x84-BB",
+	      "A%mS%10mls%4ml[bcd]%4mCB", &lsp1, &lsp2, &lsp3, &lsp4) != 4)
+    FAIL ();
+  else
+    {
+      if (wcscmp (lsp1, L"\xc4-") != 0)
+	FAIL ();
+      free (lsp1);
+      if (wcscmp (lsp2, L"\xc4-abcdefbc") != 0)
+	FAIL ();
+      free (lsp2);
+      if (wcscmp (lsp3, L"d") != 0)
+	FAIL ();
+      free (lsp3);
+      if (memcmp (lsp4, L"\t\xc4-B", 4 * sizeof (wchar_t)) != 0)
+	FAIL ();
+      free (lsp4);
+    }
+
+  memset (buf, '/', sizeof (buf));
+  buf[0] = '\t';
+  buf[1] = ' ';
+  buf[2] = 0xc3;
+  buf[3] = 0x84;
+  buf[2048] = 0xc3;
+  buf[2049] = 0x84;
+  buf[2058] = '\t';
+  buf[2059] = 'a';
+  if (sscanf (buf, "%ms%mc", &sp1, &sp2) != 2)
+    FAIL ();
+  else
+    {
+      if (sp1[0] != '\xc3' || sp1[1] != '\x84'
+	  || sp1[2046] != '\xc3' || sp1[2047] != '\x84'
+	  || sp1[2056] != '\0')
+	FAIL ();
+      sp1[2046] = '/';
+      sp1[2047] = '/';
+      for (i = 2; i < 2056; i++)
+	if (sp1[i] != '/')
+	  FAIL ();
+      free (sp1);
+      if (sp2[0] != '\t')
+	FAIL ();
+      free (sp2);
+    }
+  if (sscanf (buf, "%2048ms%mc", &sp3, &sp4) != 2)
+    FAIL ();
+  else
+    {
+      if (sp3[0] != '\xc3' || sp3[1] != '\x84'
+	  || sp3[2046] != '\xc3' || sp3[2047] != '\x84'
+	  || sp3[2048] != '\0')
+	FAIL ();
+      for (i = 2; i < 2046; i++)
+	if (sp3[i] != '/')
+	  FAIL ();
+      free (sp3);
+      if (sp4[0] != '/')
+	FAIL ();
+      free (sp4);
+    }
+  if (sscanf (buf, "%4mc%1500m[dr/]%548m[abc/d]%3mc", &sp1, &sp2, &sp3, &sp4)
+      != 4)
+    FAIL ();
+  else
+    {
+      if (memcmp (sp1, "\t \xc3\x84", 4) != 0)
+	FAIL ();
+      free (sp1);
+      for (i = 0; i < 1500; i++)
+	if (sp2[i] != '/')
+	  FAIL ();
+      if (sp2[1500] != '\0')
+	FAIL ();
+      free (sp2);
+      for (i = 0; i < 544; i++)
+	if (sp3[i] != '/')
+	  FAIL ();
+      if (sp3[544] != '\0')
+	FAIL ();
+      free (sp3);
+      if (memcmp (sp4, "\xc3\x84/", 3) != 0)
+	FAIL ();
+      free (sp4);
+    }
+  if (sscanf (buf, "%mS%mC", &lsp1, &lsp2) != 2)
+    FAIL ();
+  else
+    {
+      if (lsp1[0] != L'\xc4' || lsp1[2045] != L'\xc4'
+	  || lsp1[2054] != L'\0')
+	FAIL ();
+      lsp1[2045] = L'/';
+      for (i = 1; i < 2054; i++)
+	if (lsp1[i] != L'/')
+	  FAIL ();
+      free (lsp1);
+      if (lsp2[0] != L'\t')
+	FAIL ();
+      free (lsp2);
+    }
+  if (sscanf (buf, "%2048mls%mlc", &lsp3, &lsp4) != 2)
+    FAIL ();
+  else
+    {
+      if (lsp3[0] != L'\xc4' || lsp3[2045] != L'\xc4'
+	  || lsp3[2048] != L'\0')
+	FAIL ();
+      lsp3[2045] = L'/';
+      for (i = 1; i < 2048; i++)
+	if (lsp3[i] != L'/')
+	  FAIL ();
+      free (lsp3);
+      if (lsp4[0] != L'/')
+	FAIL ();
+      free (lsp4);
+    }
+  if (sscanf (buf, "%4mC%1500ml[dr/]%548ml[abc/d]%3mlc",
+	      &lsp1, &lsp2, &lsp3, &lsp4) != 4)
+    FAIL ();
+  else
+    {
+      if (memcmp (lsp1, L"\t \xc4/", 4 * sizeof (wchar_t)) != 0)
+	FAIL ();
+      free (lsp1);
+      for (i = 0; i < 1500; i++)
+	if (lsp2[i] != L'/')
+	  FAIL ();
+      if (lsp2[1500] != L'\0')
+	FAIL ();
+      free (lsp2);
+      for (i = 0; i < 543; i++)
+	if (lsp3[i] != L'/')
+	  FAIL ();
+      if (lsp3[543] != L'\0')
+	FAIL ();
+      free (lsp3);
+      if (memcmp (lsp4, L"\xc4//", 3 * sizeof (wchar_t)) != 0)
+	FAIL ();
+      free (lsp4);
+    }
+
+  return result;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf14.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf14.c
new file mode 100644
index 0000000..cffccb0
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf14.c
@@ -0,0 +1,137 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+#include <libc-internal.h>
+
+#define FAIL() \
+  do {							\
+    result = 1;						\
+    printf ("test at line %d failed\n", __LINE__);	\
+  } while (0)
+
+int
+main (void)
+{
+  wchar_t *lsp;
+  char *sp;
+  float f;
+  double d;
+  char c[8];
+  int result = 0;
+
+  if (sscanf (" 0.25s x", "%e%3c", &f, c) != 2)
+    FAIL ();
+  else if (f != 0.25 || memcmp (c, "s x", 3) != 0)
+    FAIL ();
+  /* GCC in C99 mode treats %a as the C99 format expecting float *,
+     but glibc with _GNU_SOURCE treats %as as the GNU allocation
+     extension, so resulting in "warning: format '%a' expects argument
+     of type 'float *', but argument 3 has type 'char **'".  This
+     applies to the other %as, %aS and %a[] formats below as well.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat");
+  if (sscanf (" 1.25s x", "%as%2c", &sp, c) != 2)
+    FAIL ();
+  else
+    {
+      if (strcmp (sp, "1.25s") != 0 || memcmp (c, " x", 2) != 0)
+	FAIL ();
+      memset (sp, 'x', sizeof "1.25s");
+      free (sp);
+    }
+  DIAG_POP_NEEDS_COMMENT;
+  if (sscanf (" 2.25s x", "%las%2c", &d, c) != 2)
+    FAIL ();
+  else if (d != 2.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+  /* See explanation above.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat");
+  if (sscanf (" 3.25S x", "%4aS%3c", &lsp, c) != 2)
+    FAIL ();
+  else
+    {
+      if (wcscmp (lsp, L"3.25") != 0 || memcmp (c, "S x", 3) != 0)
+	FAIL ();
+      memset (lsp, 'x', sizeof L"3.25");
+      free (lsp);
+    }
+  if (sscanf ("4.25[0-9.] x", "%a[0-9.]%8c", &sp, c) != 2)
+    FAIL ();
+  else
+    {
+      if (strcmp (sp, "4.25") != 0 || memcmp (c, "[0-9.] x", 8) != 0)
+	FAIL ();
+      memset (sp, 'x', sizeof "4.25");
+      free (sp);
+    }
+  DIAG_POP_NEEDS_COMMENT;
+  if (sscanf ("5.25[0-9.] x", "%la[0-9.]%2c", &d, c) != 2)
+    FAIL ();
+  else if (d != 5.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+
+  const char *tmpdir = getenv ("TMPDIR");
+  if (tmpdir == NULL || tmpdir[0] == '\0')
+    tmpdir = "/tmp";
+
+  char fname[strlen (tmpdir) + sizeof "/tst-scanf14.XXXXXX"];
+  sprintf (fname, "%s/tst-scanf14.XXXXXX", tmpdir);
+  if (fname == NULL)
+    FAIL ();
+
+  /* Create a temporary file.   */
+  int fd = mkstemp (fname);
+  if (fd == -1)
+    FAIL ();
+
+  FILE *fp = fdopen (fd, "w+");
+  if (fp == NULL)
+    FAIL ();
+  else
+    {
+      if (fputs (" 1.25s x", fp) == EOF)
+	FAIL ();
+      if (fseek (fp, 0, SEEK_SET) != 0)
+	FAIL ();
+      /* See explanation above.  */
+      DIAG_PUSH_NEEDS_COMMENT;
+      DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat");
+      if (fscanf (fp, "%as%2c", &sp, c) != 2)
+	FAIL ();
+      else
+	{
+	  if (strcmp (sp, "1.25s") != 0 || memcmp (c, " x", 2) != 0)
+	    FAIL ();
+	  memset (sp, 'x', sizeof "1.25s");
+	  free (sp);
+	}
+      DIAG_POP_NEEDS_COMMENT;
+
+      if (freopen (fname, "r", stdin) == NULL)
+	FAIL ();
+      else
+	{
+	  /* See explanation above.  */
+	  DIAG_PUSH_NEEDS_COMMENT;
+	  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat");
+	  if (scanf ("%as%2c", &sp, c) != 2)
+	    FAIL ();
+	  else
+	    {
+	      if (strcmp (sp, "1.25s") != 0 || memcmp (c, " x", 2) != 0)
+		FAIL ();
+	      memset (sp, 'x', sizeof "1.25s");
+	      free (sp);
+	    }
+	  DIAG_POP_NEEDS_COMMENT;
+	}
+
+      fclose (fp);
+    }
+
+  remove (fname);
+
+  return result;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf15.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf15.c
new file mode 100644
index 0000000..a3ab15d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf15.c
@@ -0,0 +1,99 @@
+#undef _GNU_SOURCE
+#define _XOPEN_SOURCE 600
+#undef _LIBC
+#undef _IO_MTSAFE_IO
+/* The following macro definitions are a hack.  They word around disabling
+   the GNU extension while still using a few internal headers.  */
+#define u_char unsigned char
+#define u_short unsigned short
+#define u_int unsigned int
+#define u_long unsigned long
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#define FAIL() \
+  do {							\
+    result = 1;						\
+    printf ("test at line %d failed\n", __LINE__);	\
+  } while (0)
+
+int
+main (void)
+{
+  float f;
+  double d;
+  char c[8];
+  int result = 0;
+
+  if (sscanf (" 0.25s x", "%e%3c", &f, c) != 2)
+    FAIL ();
+  else if (f != 0.25 || memcmp (c, "s x", 3) != 0)
+    FAIL ();
+  if (sscanf (" 1.25s x", "%as%2c", &f, c) != 2)
+    FAIL ();
+  else if (f != 1.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+  if (sscanf (" 2.25s x", "%las%2c", &d, c) != 2)
+    FAIL ();
+  else if (d != 2.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+  if (sscanf (" 3.25S x", "%4aS%2c", &f, c) != 2)
+    FAIL ();
+  else if (f != 3.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+  if (sscanf (" 4.25[0-9.] x", "%a[0-9.]%2c", &f, c) != 2)
+    FAIL ();
+  else if (f != 4.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+  if (sscanf (" 5.25[0-9.] x", "%la[0-9.]%2c", &d, c) != 2)
+    FAIL ();
+  else if (d != 5.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+
+  const char *tmpdir = getenv ("TMPDIR");
+  if (tmpdir == NULL || tmpdir[0] == '\0')
+    tmpdir = "/tmp";
+
+  char fname[strlen (tmpdir) + sizeof "/tst-scanf15.XXXXXX"];
+  sprintf (fname, "%s/tst-scanf15.XXXXXX", tmpdir);
+  if (fname == NULL)
+    FAIL ();
+
+  /* Create a temporary file.   */
+  int fd = mkstemp (fname);
+  if (fd == -1)
+    FAIL ();
+
+  FILE *fp = fdopen (fd, "w+");
+  if (fp == NULL)
+    FAIL ();
+  else
+    {
+      if (fputs (" 1.25s x", fp) == EOF)
+	FAIL ();
+      if (fseek (fp, 0, SEEK_SET) != 0)
+	FAIL ();
+      if (fscanf (fp, "%as%2c", &f, c) != 2)
+	FAIL ();
+      else if (f != 1.25 || memcmp (c, " x", 2) != 0)
+	FAIL ();
+
+      if (freopen (fname, "r", stdin) == NULL)
+	FAIL ();
+      else
+	{
+	  if (scanf ("%as%2c", &f, c) != 2)
+	    FAIL ();
+	  else if (f != 1.25 || memcmp (c, " x", 2) != 0)
+	    FAIL ();
+	}
+
+      fclose (fp);
+    }
+
+  remove (fname);
+
+  return result;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf16.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf16.c
new file mode 100644
index 0000000..3e3cb41
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf16.c
@@ -0,0 +1,147 @@
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#define FAIL() \
+  do {							\
+    result = 1;						\
+    printf ("test at line %d failed\n", __LINE__);	\
+  } while (0)
+
+static int
+xsscanf (const char *str, const char *fmt, ...)
+{
+  va_list ap;
+  va_start (ap, fmt);
+  int ret = vsscanf (str, fmt, ap);
+  va_end (ap);
+  return ret;
+}
+
+static int
+xscanf (const char *fmt, ...)
+{
+  va_list ap;
+  va_start (ap, fmt);
+  int ret = vscanf (fmt, ap);
+  va_end (ap);
+  return ret;
+}
+
+static int
+xfscanf (FILE *f, const char *fmt, ...)
+{
+  va_list ap;
+  va_start (ap, fmt);
+  int ret = vfscanf (f, fmt, ap);
+  va_end (ap);
+  return ret;
+}
+
+int
+main (void)
+{
+  wchar_t *lsp;
+  char *sp;
+  float f;
+  double d;
+  char c[8];
+  int result = 0;
+
+  if (xsscanf (" 0.25s x", "%e%3c", &f, c) != 2)
+    FAIL ();
+  else if (f != 0.25 || memcmp (c, "s x", 3) != 0)
+    FAIL ();
+  if (xsscanf (" 1.25s x", "%as%2c", &sp, c) != 2)
+    FAIL ();
+  else
+    {
+      if (strcmp (sp, "1.25s") != 0 || memcmp (c, " x", 2) != 0)
+	FAIL ();
+      memset (sp, 'x', sizeof "1.25s");
+      free (sp);
+    }
+  if (xsscanf (" 2.25s x", "%las%2c", &d, c) != 2)
+    FAIL ();
+  else if (d != 2.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+  if (xsscanf (" 3.25S x", "%4aS%3c", &lsp, c) != 2)
+    FAIL ();
+  else
+    {
+      if (wcscmp (lsp, L"3.25") != 0 || memcmp (c, "S x", 3) != 0)
+	FAIL ();
+      memset (lsp, 'x', sizeof L"3.25");
+      free (lsp);
+    }
+  if (xsscanf ("4.25[0-9.] x", "%a[0-9.]%8c", &sp, c) != 2)
+    FAIL ();
+  else
+    {
+      if (strcmp (sp, "4.25") != 0 || memcmp (c, "[0-9.] x", 8) != 0)
+	FAIL ();
+      memset (sp, 'x', sizeof "4.25");
+      free (sp);
+    }
+  if (xsscanf ("5.25[0-9.] x", "%la[0-9.]%2c", &d, c) != 2)
+    FAIL ();
+  else if (d != 5.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+
+  const char *tmpdir = getenv ("TMPDIR");
+  if (tmpdir == NULL || tmpdir[0] == '\0')
+    tmpdir = "/tmp";
+
+  char fname[strlen (tmpdir) + sizeof "/tst-scanf16.XXXXXX"];
+  sprintf (fname, "%s/tst-scanf16.XXXXXX", tmpdir);
+  if (fname == NULL)
+    FAIL ();
+
+  /* Create a temporary file.   */
+  int fd = mkstemp (fname);
+  if (fd == -1)
+    FAIL ();
+
+  FILE *fp = fdopen (fd, "w+");
+  if (fp == NULL)
+    FAIL ();
+  else
+    {
+      if (fputs (" 1.25s x", fp) == EOF)
+	FAIL ();
+      if (fseek (fp, 0, SEEK_SET) != 0)
+	FAIL ();
+      if (xfscanf (fp, "%as%2c", &sp, c) != 2)
+	FAIL ();
+      else
+	{
+	  if (strcmp (sp, "1.25s") != 0 || memcmp (c, " x", 2) != 0)
+	    FAIL ();
+	  memset (sp, 'x', sizeof "1.25s");
+	  free (sp);
+	}
+
+      if (freopen (fname, "r", stdin) == NULL)
+	FAIL ();
+      else
+	{
+	  if (xscanf ("%as%2c", &sp, c) != 2)
+	    FAIL ();
+	  else
+	    {
+	      if (strcmp (sp, "1.25s") != 0 || memcmp (c, " x", 2) != 0)
+		FAIL ();
+	      memset (sp, 'x', sizeof "1.25s");
+	      free (sp);
+	    }
+	}
+
+      fclose (fp);
+    }
+
+  remove (fname);
+
+  return result;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf17.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf17.c
new file mode 100644
index 0000000..b6c0e63
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf17.c
@@ -0,0 +1,130 @@
+#undef _GNU_SOURCE
+#define _XOPEN_SOURCE 600
+#undef _LIBC
+#undef _IO_MTSAFE_IO
+/* The following macro definitions are a hack.  They word around disabling
+   the GNU extension while still using a few internal headers.  */
+#define u_char unsigned char
+#define u_short unsigned short
+#define u_int unsigned int
+#define u_long unsigned long
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+
+#define FAIL() \
+  do {							\
+    result = 1;						\
+    printf ("test at line %d failed\n", __LINE__);	\
+  } while (0)
+
+static int
+xsscanf (const char *str, const char *fmt, ...)
+{
+  va_list ap;
+  va_start (ap, fmt);
+  int ret = vsscanf (str, fmt, ap);
+  va_end (ap);
+  return ret;
+}
+
+static int
+xscanf (const char *fmt, ...)
+{
+  va_list ap;
+  va_start (ap, fmt);
+  int ret = vscanf (fmt, ap);
+  va_end (ap);
+  return ret;
+}
+
+static int
+xfscanf (FILE *f, const char *fmt, ...)
+{
+  va_list ap;
+  va_start (ap, fmt);
+  int ret = vfscanf (f, fmt, ap);
+  va_end (ap);
+  return ret;
+}
+
+int
+main (void)
+{
+  float f;
+  double d;
+  char c[8];
+  int result = 0;
+
+  if (xsscanf (" 0.25s x", "%e%3c", &f, c) != 2)
+    FAIL ();
+  else if (f != 0.25 || memcmp (c, "s x", 3) != 0)
+    FAIL ();
+  if (xsscanf (" 1.25s x", "%as%2c", &f, c) != 2)
+    FAIL ();
+  else if (f != 1.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+  if (xsscanf (" 2.25s x", "%las%2c", &d, c) != 2)
+    FAIL ();
+  else if (d != 2.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+  if (xsscanf (" 3.25S x", "%4aS%2c", &f, c) != 2)
+    FAIL ();
+  else if (f != 3.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+  if (xsscanf (" 4.25[0-9.] x", "%a[0-9.]%2c", &f, c) != 2)
+    FAIL ();
+  else if (f != 4.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+  if (xsscanf (" 5.25[0-9.] x", "%la[0-9.]%2c", &d, c) != 2)
+    FAIL ();
+  else if (d != 5.25 || memcmp (c, " x", 2) != 0)
+    FAIL ();
+
+  const char *tmpdir = getenv ("TMPDIR");
+  if (tmpdir == NULL || tmpdir[0] == '\0')
+    tmpdir = "/tmp";
+
+  char fname[strlen (tmpdir) + sizeof "/tst-scanf17.XXXXXX"];
+  sprintf (fname, "%s/tst-scanf17.XXXXXX", tmpdir);
+  if (fname == NULL)
+    FAIL ();
+
+  /* Create a temporary file.   */
+  int fd = mkstemp (fname);
+  if (fd == -1)
+    FAIL ();
+
+  FILE *fp = fdopen (fd, "w+");
+  if (fp == NULL)
+    FAIL ();
+  else
+    {
+      if (fputs (" 1.25s x", fp) == EOF)
+	FAIL ();
+      if (fseek (fp, 0, SEEK_SET) != 0)
+	FAIL ();
+      if (xfscanf (fp, "%as%2c", &f, c) != 2)
+	FAIL ();
+      else if (f != 1.25 || memcmp (c, " x", 2) != 0)
+	FAIL ();
+
+      if (freopen (fname, "r", stdin) == NULL)
+	FAIL ();
+      else
+	{
+	  if (xscanf ("%as%2c", &f, c) != 2)
+	    FAIL ();
+	  else if (f != 1.25 || memcmp (c, " x", 2) != 0)
+	    FAIL ();
+	}
+
+      fclose (fp);
+    }
+
+  remove (fname);
+
+  return result;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf2.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf2.c
new file mode 100644
index 0000000..452104d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf2.c
@@ -0,0 +1,25 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(int argc, char *argv[])
+{
+    int point, x, y;
+
+    point = x = y = -1;
+    sscanf("0x10 10", "%x %x", &x, &y);
+    printf("%d %d\n", x, y);
+    if (x != 0x10 || y != 0x10)
+      abort ();
+    point = x = y = -1;
+    sscanf("P012349876", "P%1d%4d%4d", &point, &x, &y);
+    printf("%d %d %d\n", point, x, y);
+    if (point != 0 || x != 1234 || y != 9876)
+      abort ();
+    point = x = y = -1;
+    sscanf("P112349876", "P%1d%4d%4d", &point, &x, &y);
+    printf("%d %d %d\n", point, x, y);
+    if (point != 1 || x != 1234 || y != 9876)
+      abort ();
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf3.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf3.c
new file mode 100644
index 0000000..33495cc
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf3.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(int arc, char *argv[])
+{
+  int n, res;
+  unsigned int val;
+  char s[] = "111";
+
+  val = n = -1;
+  res = sscanf(s, "%u %n", &val, &n);
+  printf("Result of sscanf = %d\n", res);
+  printf("Scanned format %%u = %u\n", val);
+  printf("Possibly scanned format %%n = %d\n", n);
+  if (n != 3 || val != 111 || res != 1)
+    abort ();
+
+  val = n = -1;
+  res = sscanf(s, "%u%n", &val, &n);
+  printf("Result of sscanf = %d\n", res);
+  printf("Scanned format %%u = %u\n", val);
+  printf("Possibly scanned format %%n = %d\n", n);
+  if (n != 3 || val != 111 || res != 1)
+    abort ();
+
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf4.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf4.c
new file mode 100644
index 0000000..9bb14bb
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf4.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <libc-internal.h>
+
+int
+main(int arc, char *argv[])
+{
+  int res;
+  unsigned int val;
+
+  FILE *fp = fopen ("/dev/null", "r");
+
+  val = 0;
+  res = fscanf(fp, "%n", &val);
+
+  printf("Result of fscanf %%n = %d\n", res);
+  printf("Scanned format = %d\n", val);
+
+  /* We're testing exactly the case the warning is for.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat-zero-length");
+
+  res = fscanf(fp, "");
+
+  DIAG_POP_NEEDS_COMMENT;
+
+  printf("Result of fscanf \"\" = %d\n", res);
+  if (res != 0)
+    abort ();
+
+  res = fscanf(fp, "BLURB");
+  printf("Result of fscanf \"BLURB\" = %d\n", res);
+  if (res >= 0)
+    abort ();
+
+  fclose (fp);
+
+  return 0;
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf5.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf5.c
new file mode 100644
index 0000000..fb4acfa
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf5.c
@@ -0,0 +1,21 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(int argc, char *argv[])
+{
+  int a, b;
+
+  a = b = -1;
+  sscanf ("12ab", "%dab%n", &a, &b);
+  printf ("%d, %d\n", a, b);
+  if (a != 12 || b != 4)
+    abort ();
+
+  a = b = -1;
+  sscanf ("12ab100", "%dab%n100", &a, &b);
+  printf ("%d, %d\n", a, b);
+  if (a != 12 || b != 4)
+    abort ();
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf7.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf7.c
new file mode 100644
index 0000000..53ddf4c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf7.c
@@ -0,0 +1,33 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <libc-internal.h>
+
+int
+main (int argc, char *argv[])
+{
+  long long int n;
+  int ret;
+
+  n = -1;
+  ret = sscanf ("1000", "%lld", &n);
+  printf ("%%lld: ret: %d, n: %Ld\n", ret, n);
+  if (ret != 1 || n != 1000L)
+    abort ();
+
+  n = -2;
+
+  /* We are testing a corner case of the scanf format string here.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat");
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat-extra-args");
+
+  ret = sscanf ("1000", "%llld", &n);
+
+  DIAG_POP_NEEDS_COMMENT;
+
+  printf ("%%llld: ret: %d, n: %Ld\n", ret, n);
+  if (ret > 0 || n >= 0L)
+    abort ();
+
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf8.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf8.c
new file mode 100644
index 0000000..731ca8b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf8.c
@@ -0,0 +1,16 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+int
+main (int argc, char *argv[])
+{
+  int ret;
+  char buf [1024] = "Ooops";
+
+  ret = sscanf ("static char Term_bits[] = {", "static char %s = {", buf);
+  printf ("ret: %d, name: %s\n", ret, buf);
+  if (ret != 1 || strcmp (buf, "Term_bits[]") != 0)
+    abort ();
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/scanf9.c b/ap/libc/glibc/glibc-2.23/stdio-common/scanf9.c
new file mode 100644
index 0000000..7aca354
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/scanf9.c
@@ -0,0 +1,30 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main (void)
+{
+  int matches;
+  char str[10];
+
+  str[0] = '\0';
+  matches = -9;
+  matches = sscanf ("x ]", "%[^] ]", str);
+  printf ("Matches = %d, string str = \"%s\".\n", matches, str);
+  printf ("str should be \"x\".\n");
+
+  if (strcmp (str, "x"))
+    abort ();
+
+  str[0] = '\0';
+  matches = -9;
+  matches = sscanf (" ] x", "%[] ]", str);
+  printf ("Matches = %d, string str = \"%s\".\n", matches, str);
+  printf ("str should be \" ] \".\n");
+
+  if (strcmp (str, " ] "))
+    abort ();
+
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/siglist.c b/ap/libc/glibc/glibc-2.23/stdio-common/siglist.c
new file mode 100644
index 0000000..9dbceb7
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/siglist.c
@@ -0,0 +1,36 @@
+/* Define list of all signal numbers and their names.
+   Copyright (C) 1997-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stddef.h>
+#include <signal.h>
+#include <libintl.h>
+
+const char *const _sys_siglist[NSIG] =
+{
+#define init_sig(sig, abbrev, desc)   [sig] = desc,
+#include <siglist.h>
+#undef init_sig
+};
+
+
+const char *const _sys_sigabbrev[NSIG] =
+{
+#define init_sig(sig, abbrev, desc)   [sig] = abbrev,
+#include <siglist.h>
+#undef init_sig
+};
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/snprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/snprintf.c
new file mode 100644
index 0000000..a3cc518
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/snprintf.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <libioP.h>
+#define __vsnprintf(s, l, f, a) _IO_vsnprintf (s, l, f, a)
+
+/* Write formatted output into S, according to the format
+   string FORMAT, writing no more than MAXLEN characters.  */
+/* VARARGS3 */
+int
+__snprintf (char *s, size_t maxlen, const char *format, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, format);
+  done = __vsnprintf (s, maxlen, format, arg);
+  va_end (arg);
+
+  return done;
+}
+ldbl_weak_alias (__snprintf, snprintf)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/sprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/sprintf.c
new file mode 100644
index 0000000..76f51f6
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/sprintf.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <libioP.h>
+#define vsprintf(s, f, a) _IO_vsprintf (s, f, a)
+
+/* Write formatted output into S, according to the format string FORMAT.  */
+/* VARARGS2 */
+int
+__sprintf (char *s, const char *format, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, format);
+  done = vsprintf (s, format, arg);
+  va_end (arg);
+
+  return done;
+}
+ldbl_hidden_def (__sprintf, sprintf)
+ldbl_strong_alias (__sprintf, sprintf)
+ldbl_strong_alias (__sprintf, _IO_sprintf)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/sscanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/sscanf.c
new file mode 100644
index 0000000..9936361
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/sscanf.c
@@ -0,0 +1,41 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <libioP.h>
+#define __vsscanf(s, f, a) _IO_vsscanf (s, f, a)
+
+/* Read formatted input from S, according to the format string FORMAT.  */
+/* VARARGS2 */
+int
+__sscanf (const char *s, const char *format, ...)
+{
+  va_list arg;
+  int done;
+
+  va_start (arg, format);
+  done = __vsscanf (s, format, arg);
+  va_end (arg);
+
+  return done;
+}
+ldbl_hidden_def (__sscanf, sscanf)
+ldbl_strong_alias (__sscanf, sscanf)
+#undef _IO_sscanf
+/* This is for libg++.  */
+ldbl_strong_alias (__sscanf, _IO_sscanf)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/stdio_ext.h b/ap/libc/glibc/glibc-2.23/stdio-common/stdio_ext.h
new file mode 100644
index 0000000..eca2b19
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/stdio_ext.h
@@ -0,0 +1,86 @@
+/* Functions to access FILE structure internals.
+   Copyright (C) 2000-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* This header contains the same definitions as the header of the same name
+   on Sun's Solaris OS.  */
+
+#ifndef _STDIO_EXT_H
+#define _STDIO_EXT_H	1
+
+#include <stdio.h>
+
+enum
+{
+  /* Query current state of the locking status.  */
+  FSETLOCKING_QUERY = 0,
+#define FSETLOCKING_QUERY	FSETLOCKING_QUERY
+  /* The library protects all uses of the stream functions, except for
+     uses of the *_unlocked functions, by calls equivalent to flockfile().  */
+  FSETLOCKING_INTERNAL,
+#define FSETLOCKING_INTERNAL	FSETLOCKING_INTERNAL
+  /* The user will take care of locking.  */
+  FSETLOCKING_BYCALLER
+#define FSETLOCKING_BYCALLER	FSETLOCKING_BYCALLER
+};
+
+
+__BEGIN_DECLS
+
+/* Return the size of the buffer of FP in bytes currently in use by
+   the given stream.  */
+extern size_t __fbufsize (FILE *__fp) __THROW;
+
+
+/* Return non-zero value iff the stream FP is opened readonly, or if the
+   last operation on the stream was a read operation.  */
+extern int __freading (FILE *__fp) __THROW;
+
+/* Return non-zero value iff the stream FP is opened write-only or
+   append-only, or if the last operation on the stream was a write
+   operation.  */
+extern int __fwriting (FILE *__fp) __THROW;
+
+
+/* Return non-zero value iff stream FP is not opened write-only or
+   append-only.  */
+extern int __freadable (FILE *__fp) __THROW;
+
+/* Return non-zero value iff stream FP is not opened read-only.  */
+extern int __fwritable (FILE *__fp) __THROW;
+
+
+/* Return non-zero value iff the stream FP is line-buffered.  */
+extern int __flbf (FILE *__fp) __THROW;
+
+
+/* Discard all pending buffered I/O on the stream FP.  */
+extern void __fpurge (FILE *__fp) __THROW;
+
+/* Return amount of output in bytes pending on a stream FP.  */
+extern size_t __fpending (FILE *__fp) __THROW;
+
+/* Flush all line-buffered files.  */
+extern void _flushlbf (void);
+
+
+/* Set locking status of stream FP to TYPE.  */
+extern int __fsetlocking (FILE *__fp, int __type) __THROW;
+
+__END_DECLS
+
+#endif	/* stdio_ext.h */
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/stdio_lim.h.in b/ap/libc/glibc/glibc-2.23/stdio-common/stdio_lim.h.in
new file mode 100644
index 0000000..dc9cdbe
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/stdio_lim.h.in
@@ -0,0 +1,42 @@
+/* Copyright (C) 1994-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _STDIO_H && !defined __need_FOPEN_MAX && !defined __need_IOV_MAX
+# error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
+#endif
+
+#ifdef _STDIO_H
+# define L_tmpnam @L_tmpnam@
+# define TMP_MAX @TMP_MAX@
+# define FILENAME_MAX @FILENAME_MAX@
+
+# ifdef __USE_POSIX
+#  define L_ctermid @L_ctermid@
+#  if !defined __USE_XOPEN2K || defined __USE_GNU
+#   define L_cuserid @L_cuserid@
+#  endif
+# endif
+#endif
+
+#if defined __need_FOPEN_MAX || defined _STDIO_H
+# undef  FOPEN_MAX
+# define FOPEN_MAX @FOPEN_MAX@
+#endif
+
+#if defined __need_IOV_MAX && !defined IOV_MAX
+@define_IOV_MAX@
+#endif
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tempnam.c b/ap/libc/glibc/glibc-2.23/stdio-common/tempnam.c
new file mode 100644
index 0000000..7a53262
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tempnam.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <string.h>
+
+/* Generate a unique temporary filename using up to five characters of
+   PFX if it is not NULL.  The directory to put this file in is
+   searched for as follows: First the environment variable "TMPDIR" is
+   checked.  If it contains the name of a directory, that directory is
+   used.  If not and if DIR is not NULL, that value is checked.  If
+   that fails, P_tmpdir is tried and finally "/tmp".  The storage for
+   the filename is allocated by `malloc'.  */
+char *
+tempnam (const char *dir, const char *pfx)
+{
+  char buf[FILENAME_MAX];
+
+  if (__path_search (buf, FILENAME_MAX, dir, pfx, 1))
+    return NULL;
+
+  if (__gen_tempname (buf, 0, 0, __GT_NOCREATE))
+    return NULL;
+
+  return __strdup (buf);
+}
+
+link_warning (tempnam,
+	      "the use of `tempnam' is dangerous, better use `mkstemp'")
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tempname.c b/ap/libc/glibc/glibc-2.23/stdio-common/tempname.c
new file mode 100644
index 0000000..07102c5
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tempname.c
@@ -0,0 +1,51 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#define __need_size_t
+#include <stddef.h>
+#include <stdio.h>
+#include <errno.h>
+
+/* Perform the "SVID path search malarkey" on DIR and PFX.  Write a
+   template suitable for use in __gen_tempname into TMPL, bounded
+   by TMPL_LEN. */
+int
+__path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx,
+	       int try_tmpdir)
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+stub_warning (__path_search)
+
+/* Generate a (hopefully) unique temporary filename
+   in DIR (if applicable), using template TMPL.
+   KIND determines what to do with that name.  It may be one of:
+     __GT_FILE:		create a file and return a read-write fd.
+     __GT_BIGFILE:	same, but use open64() (or equivalent).
+     __GT_DIR:		create a directory.
+     __GT_NOCREATE:	just find a name not currently in use.
+ */
+
+int
+__gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+
+stub_warning (__gen_tempname)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/temptest.c b/ap/libc/glibc/glibc-2.23/stdio-common/temptest.c
new file mode 100644
index 0000000..c8cf852
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/temptest.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+char *files[500];
+
+int
+main (int argc, char *argv[])
+{
+  FILE *fp;
+  int i;
+
+  for (i = 0; i < 500; i++) {
+    files[i] = tempnam (NULL, "file");
+    if (files[i] == NULL) {
+      printf ("tempnam failed\n");
+      exit (1);
+    }
+    printf ("file: %s\n", files[i]);
+    fp = fopen (files[i], "w");
+    fclose (fp);
+  }
+
+  for (i = 0; i < 500; i++)
+    remove (files[i]);
+
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/test-fseek.c b/ap/libc/glibc/glibc-2.23/stdio-common/test-fseek.c
new file mode 100644
index 0000000..455b2be
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/test-fseek.c
@@ -0,0 +1,87 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+
+#define TESTFILE "/tmp/test.dat"
+
+static int
+do_test (void)
+{
+  FILE *fp;
+  int i, j;
+
+  puts ("\nFile seek test");
+  fp = fopen (TESTFILE, "w");
+  if (fp == NULL)
+    {
+      perror (TESTFILE);
+      return 1;
+    }
+
+  for (i = 0; i < 256; i++)
+    putc (i, fp);
+  if (freopen (TESTFILE, "r", fp) != fp)
+    {
+      perror ("Cannot open file for reading");
+      return 1;
+    }
+
+  for (i = 1; i <= 255; i++)
+    {
+      printf ("%3d\n", i);
+      fseek (fp, (long) -i, SEEK_END);
+      if ((j = getc (fp)) != 256 - i)
+	{
+	  printf ("SEEK_END failed %d\n", j);
+	  break;
+	}
+      if (fseek (fp, (long) i, SEEK_SET))
+	{
+	  puts ("Cannot SEEK_SET");
+	  break;
+	}
+      if ((j = getc (fp)) != i)
+	{
+	  printf ("SEEK_SET failed %d\n", j);
+	  break;
+	}
+      if (fseek (fp, (long) i, SEEK_SET))
+	{
+	  puts ("Cannot SEEK_SET");
+	  break;
+	}
+      if (fseek (fp, (long) (i >= 128 ? -128 : 128), SEEK_CUR))
+	{
+	  puts ("Cannot SEEK_CUR");
+	  break;
+	}
+      if ((j = getc (fp)) != (i >= 128 ? i - 128 : i + 128))
+	{
+	  printf ("SEEK_CUR failed %d\n", j);
+	  break;
+	}
+    }
+  fclose (fp);
+  remove (TESTFILE);
+
+  puts ((i > 255) ? "Test succeeded." : "Test FAILED!");
+  return (i > 255) ? 0 : 1;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/test-fwrite.c b/ap/libc/glibc/glibc-2.23/stdio-common/test-fwrite.c
new file mode 100644
index 0000000..5677c6d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/test-fwrite.c
@@ -0,0 +1,71 @@
+#include <stdio.h>
+#include <string.h>
+
+static int
+do_test (void)
+{
+  FILE *f = tmpfile ();
+  char obuf[99999], ibuf[sizeof obuf];
+  char *line;
+  size_t linesz;
+
+  if (! f)
+    {
+      perror ("tmpfile");
+      return 1;
+    }
+
+  if (fputs ("line\n", f) == EOF)
+    {
+      perror ("fputs");
+      return 1;
+    }
+
+  memset (obuf, 'z', sizeof obuf);
+  memset (ibuf, 'y', sizeof ibuf);
+
+  if (fwrite (obuf, sizeof obuf, 1, f) != 1)
+    {
+      perror ("fwrite");
+      return 1;
+    }
+
+  rewind (f);
+
+  line = NULL;
+  linesz = 0;
+  if (getline (&line, &linesz, f) != 5)
+    {
+      perror ("getline");
+      return 1;
+    }
+  if (strcmp (line, "line\n"))
+    {
+      puts ("Lines differ.  Test FAILED!");
+      return 1;
+    }
+
+  if (fread (ibuf, sizeof ibuf, 1, f) != 1)
+    {
+      perror ("fread");
+      return 1;
+    }
+
+  if (memcmp (ibuf, obuf, sizeof ibuf))
+    {
+      puts ("Buffers differ.  Test FAILED!");
+      return 1;
+    }
+
+  asprintf (&line, "\
+GDB is free software and you are welcome to distribute copies of it\n\
+ under certain conditions; type \"show copying\" to see the conditions.\n\
+There is absolutely no warranty for GDB; type \"show warranty\" for details.\n\
+");
+
+  puts ("Test succeeded.");
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/test-popen.c b/ap/libc/glibc/glibc-2.23/stdio-common/test-popen.c
new file mode 100644
index 0000000..caf5731
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/test-popen.c
@@ -0,0 +1,105 @@
+/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+static void
+write_data (FILE *stream)
+{
+  int i;
+  for (i=0; i<100; i++)
+    fprintf (stream, "%d\n", i);
+  if (ferror (stream))
+    {
+      fprintf (stderr, "Output to stream failed.\n");
+      exit (1);
+    }
+}
+
+static void
+read_data (FILE *stream)
+{
+  int i, j;
+
+  for (i=0; i<100; i++)
+    {
+      if (fscanf (stream, "%d\n", &j) != 1 || j != i)
+	{
+	  if (ferror (stream))
+	    perror ("fscanf");
+	  puts ("Test FAILED!");
+	  exit (1);
+	}
+    }
+}
+
+static int
+do_test (void)
+{
+  FILE *output, *input;
+  int wstatus, rstatus;
+
+  /* We must remove this entry to assure the `cat' binary does not use
+     the perhaps incompatible new shared libraries.  */
+  unsetenv ("LD_LIBRARY_PATH");
+
+  output = popen ("/bin/cat >/tmp/tstpopen.tmp", "w");
+  if (output == NULL)
+    {
+      perror ("popen");
+      puts ("Test FAILED!");
+      exit (1);
+    }
+  write_data (output);
+  wstatus = pclose (output);
+  printf ("writing pclose returned %d\n", wstatus);
+  input = popen ("/bin/cat /tmp/tstpopen.tmp", "r");
+  if (input == NULL)
+    {
+      perror ("/tmp/tstpopen.tmp");
+      puts ("Test FAILED!");
+      exit (1);
+    }
+  read_data (input);
+  rstatus = pclose (input);
+  printf ("reading pclose returned %d\n", rstatus);
+
+  remove ("/tmp/tstpopen.tmp");
+
+  errno = 0;
+  output = popen ("/bin/cat", "m");
+  if (output != NULL)
+    {
+      puts ("popen called with illegal mode does not return NULL");
+      puts ("Test FAILED!");
+      exit (1);
+    }
+  if (errno != EINVAL)
+    {
+      puts ("popen called with illegal mode does not set errno to EINVAL");
+      puts ("Test FAILED!");
+      exit (1);
+    }
+
+  puts (wstatus | rstatus  ? "Test FAILED!" : "Test succeeded.");
+  return (wstatus | rstatus);
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/test-vfprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/test-vfprintf.c
new file mode 100644
index 0000000..b8829ea
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/test-vfprintf.c
@@ -0,0 +1,136 @@
+/* Tests of *printf for very large strings.
+   Copyright (C) 2000-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <locale.h>
+#include <mcheck.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <libc-internal.h>
+
+
+const char *locs[] =
+{
+  "C", "de_DE.ISO-8859-1", "de_DE.UTF-8", "ja_JP.EUC-JP"
+};
+#define nlocs (sizeof (locs) / sizeof (locs[0]))
+
+
+char large[50000];
+
+static int
+do_test (void)
+{
+  char buf[25];
+  size_t i;
+  int res = 0;
+  int fd;
+
+  mtrace ();
+
+  strcpy (buf, "/tmp/test-vfprintfXXXXXX");
+  fd = mkstemp (buf);
+  if (fd == -1)
+    {
+      printf ("cannot open temporary file: %m\n");
+      exit (1);
+    }
+  unlink (buf);
+
+  for (i = 0; i < nlocs; ++i)
+    {
+      FILE *fp;
+      struct stat st;
+      int fd2;
+
+      setlocale (LC_ALL, locs[i]);
+
+      memset (large, '\1', sizeof (large));
+      large[sizeof (large) - 1] = '\0';
+
+      fd2 = dup (fd);
+      if (fd2 == -1)
+	{
+	  printf ("cannot dup for locale %s: %m\n",
+		  setlocale (LC_ALL, NULL));
+	  exit (1);
+	}
+
+      if (ftruncate (fd2, 0) != 0)
+	{
+	  printf ("cannot truncate file for locale %s: %m\n",
+		  setlocale (LC_ALL, NULL));
+	  exit (1);
+	}
+
+      fp = fdopen (fd2, "a");
+      if (fp == NULL)
+	{
+	  printf ("cannot create FILE for locale %s: %m\n",
+		  setlocale (LC_ALL, NULL));
+	  exit (1);
+	}
+
+      fprintf (fp, "%s", large);
+      fprintf (fp, "%.*s", 30000, large);
+      large[20000] = '\0';
+      /* We're testing a large format string here and need to generate it
+         to avoid this source file being ridiculous.  So disable the warning
+         about a generated format string.  */
+      DIAG_PUSH_NEEDS_COMMENT;
+      DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat-security");
+      fprintf (fp, large);
+      DIAG_POP_NEEDS_COMMENT;
+      fprintf (fp, "%-1.300000000s", "hello");
+
+      if (fflush (fp) != 0 || ferror (fp) != 0 || fclose (fp) != 0)
+	{
+	  printf ("write error for locale %s: %m\n",
+		  setlocale (LC_ALL, NULL));
+	  exit (1);
+	}
+
+      if (fstat (fd, &st) != 0)
+	{
+	  printf ("cannot stat for locale %s: %m\n",
+		  setlocale (LC_ALL, NULL));
+	  exit (1);
+	}
+      else if (st.st_size != 50000 + 30000 + 19999 + 5)
+	{
+	  printf ("file size incorrect for locale %s: %jd instead of %jd\n",
+		  setlocale (LC_ALL, NULL),
+		  (intmax_t) st.st_size,
+		  (intmax_t) 50000 + 30000 + 19999 + 5);
+	  res = 1;
+	}
+      else
+	printf ("locale %s OK\n", setlocale (LC_ALL, NULL));
+    }
+
+  close (fd);
+
+  return res;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/test_rdwr.c b/ap/libc/glibc/glibc-2.23/stdio-common/test_rdwr.c
new file mode 100644
index 0000000..3b994d1
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/test_rdwr.c
@@ -0,0 +1,128 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+int
+main (int argc, char **argv)
+{
+  static const char hello[] = "Hello, world.\n";
+  static const char replace[] = "Hewwo, world.\n";
+  static const size_t replace_from = 2, replace_to = 4;
+  char filename[FILENAME_MAX];
+  char *name = strrchr (*argv, '/');
+  char buf[BUFSIZ];
+  FILE *f;
+  int lose = 0;
+
+  if (name != NULL)
+    ++name;
+  else
+    name = *argv;
+
+  (void) sprintf (filename, "/tmp/%s.test", name);
+
+  f = fopen (filename, "w+");
+  if (f == NULL)
+    {
+      perror (filename);
+      exit (1);
+    }
+
+  (void) fputs (hello, f);
+  rewind (f);
+  (void) fgets (buf, sizeof (buf), f);
+  rewind (f);
+  (void) fputs (buf, f);
+  rewind (f);
+  {
+    size_t i;
+    for (i = 0; i < replace_from; ++i)
+      {
+	int c = getc (f);
+	if (c == EOF)
+	  {
+	    printf ("EOF at %Zu.\n", i);
+	    lose = 1;
+	    break;
+	  }
+	else if (c != hello[i])
+	  {
+	    printf ("Got '%c' instead of '%c' at %Zu.\n",
+		    (unsigned char) c, hello[i], i);
+	    lose = 1;
+	    break;
+	  }
+      }
+  }
+
+  {
+    long int where = ftell (f);
+    if (where == (long int) replace_from)
+      {
+	size_t i;
+	for (i = replace_from; i < replace_to; ++i)
+	  if (putc(replace[i], f) == EOF)
+	    {
+	      printf ("putc('%c') got %s at %Zu.\n",
+		      replace[i], strerror (errno), i);
+	      lose = 1;
+	      break;
+	    }
+      }
+    else if (where == -1L)
+      {
+	printf ("ftell got %s (should be at %Zu).\n",
+		strerror (errno), replace_from);
+	lose = 1;
+      }
+    else
+      {
+	printf ("ftell returns %lu; should be %Zu.\n", where, replace_from);
+	lose = 1;
+      }
+  }
+
+  if (!lose)
+    {
+      rewind (f);
+      if (fgets (buf, sizeof (buf), f) == NULL)
+	{
+	  printf ("fgets got %s.\n", strerror(errno));
+	  lose = 1;
+	}
+      else if (strcmp (buf, replace))
+	{
+	  printf ("Read \"%s\" instead of \"%s\".\n", buf, replace);
+	  lose = 1;
+	}
+    }
+
+  if (lose)
+    printf ("Test FAILED!  Losing file is \"%s\".\n", filename);
+  else
+    {
+      (void) remove (filename);
+      puts ("Test succeeded.");
+    }
+
+  return lose ? EXIT_FAILURE : EXIT_SUCCESS;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tfformat.c b/ap/libc/glibc/glibc-2.23/stdio-common/tfformat.c
new file mode 100644
index 0000000..5cb366d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tfformat.c
@@ -0,0 +1,4130 @@
+#include <stdio.h>
+
+/* Tests taken from Cygnus C library. */
+
+typedef struct
+{
+  int line;
+  double value;
+  const char *result;
+  const char *format_string;
+} sprint_double_type;
+
+sprint_double_type sprint_doubles[] =
+{
+  {__LINE__,  30.3,			"<          +30.3>", "<%+15.10g>"},
+  {__LINE__,  10.0,			"<10.00>", "<%5.2f>"},
+
+  {__LINE__,  1.002121970718271e+05,	"100212.19707   ", "%0-15.5f"},
+  {__LINE__, -1.002121970718271e+05,	"-100212.19707  ", "%0-15.5f"},
+  {__LINE__,  1.002121970718271e+05,	"000100212.19707", "%015.5f"},
+  {__LINE__, -1.002121970718271e+05,	"-00100212.19707", "%015.5f"},
+  {__LINE__,  1.002121970718271e+05,	"+00100212.19707", "%+015.5f"},
+  {__LINE__, -1.002121970718271e+05,	"-00100212.19707", "%+015.5f"},
+  {__LINE__,  1.002121970718271e+05,	" 00100212.19707", "% 015.5f"},
+  {__LINE__, -1.002121970718271e+05,	"-00100212.19707", "% 015.5f"},
+  {__LINE__,  1.002121970718271e+05,	"+100212.19707  ", "%+-15.5f"},
+  {__LINE__, -1.002121970718271e+05,	"-100212.19707  ", "%+-15.5f"},
+
+  {__LINE__, -1.002121970718271e+29,	"-1.0E+29", "%.1E"},
+  {__LINE__, -1.002126048612756e-02,	"-1.002126E-02", "%+#E"},
+  {__LINE__, -1.002653755271637e+00,	"-1.00265", "%G"},
+  {__LINE__, -1.003238744365917e-23,	"-0.00", "%4.2f"},
+  {__LINE__, -1.005084840877781e-29,	"  -0", "%4.f"},
+  {__LINE__, -1.005362549674427e+01,	"-10.0536", "%#g"},
+  {__LINE__, -1.005915042991691e-17,	"-1.00592E-17", "%G"},
+  {__LINE__, -1.007829874228503e-18,	"-1.00783e-18", "%.7g"},
+  {__LINE__, -1.007829874228503e-18,	"-1.007830e-18", "%#.7g"},
+  {__LINE__, -1.009390937771849e+15,	"-1009390937771848.628657", "%+f"},
+  {__LINE__, -1.010679382726182e-29,	"-0.0000000", "%.7f"},
+  {__LINE__, -1.010691853346650e+13,	"-10106918533466.497934", "%+f"},
+  {__LINE__, -1.013412912122286e-22,	"-1.01E-22", "%.2E"},
+  {__LINE__, -1.019269582113858e-25,	"  -0", "%4.0f"},
+  {__LINE__, -1.019886033368556e+24,	"-1.019886E+24", "%+.7G"},
+  {__LINE__, -1.021037413548719e+02,	"-102.103741", "%f"},
+  {__LINE__, -1.023833576089065e+26,	"-1.023834E+26", "%+E"},
+  {__LINE__, -1.024736652408627e+10,	"-10247366524.086265", "%+f"},
+  {__LINE__, -1.025439198495476e+09,	"-1.02544e+09", "%+g"},
+  {__LINE__, -1.027080247585776e-04,	"-0.0001027", "%6.7f"},
+  {__LINE__, -1.028096307262016e+18,	"-1.0281E+18", "%3G"},
+  {__LINE__, -1.029604290697901e-02,	"-0.010296", "%g"},
+  {__LINE__, -1.034347730570491e+16,	"-10343477305704908.975059", "%+f"},
+  {__LINE__, -1.034663325049286e+22,	"-1.0E+22", "%#.1E"},
+  {__LINE__, -1.034843152721857e-14,	"    -0", "%6.f"},
+  {__LINE__, -1.036082122299529e-29,	"-1.04e-29", "%4.3g"},
+  {__LINE__, -1.037213662365954e-09,	"-1e-09", "%3.e"},
+  {__LINE__, -1.038563976775690e-12,	"-0.000000", "%f"},
+  {__LINE__, -1.040910158681323e-02,	"-0.0104091", "%+G"},
+  {__LINE__, -1.044680094714482e-20,	"-1.04468E-20", "%G"},
+  {__LINE__, -1.044990054091126e+24,	"-1.044990E+24", "%+E"},
+  {__LINE__, -1.045693871096982e+11,	"-1.045694e+11", "%+e"},
+  {__LINE__, -1.045714133591312e-04,	"-0.000104571", "%+#3g"},
+  {__LINE__, -1.046215079103016e-15,	"-1.04622e-15", "%g"},
+  {__LINE__, -1.046285293993789e-18,	"-1.04629E-18", "%+4G"},
+  {__LINE__, -1.046306092899333e-06,	"-0.00", "%0.2f"},
+  {__LINE__, -1.047308973649206e-22,	"-1.05E-22", "%+1.3G"},
+  {__LINE__, -1.047369032507755e+01,	"-1.047369E+01", "%E"},
+  {__LINE__, -1.048986365562919e-21,	"-1.05E-21", "%+.2E"},
+  {__LINE__, -1.049530193156793e-17,	"-1.04953E-17", "%+G"},
+  {__LINE__, -1.050073419263768e+25,	"-1.05007e+25", "%g"},
+  {__LINE__, -1.051739652002504e-28,	"-0.000000", "%+f"},
+  {__LINE__, -1.054493420082636e+21,	"-1.0545e+21", "%#5.4e"},
+  {__LINE__, -1.055867291029098e+18,	"-1.05587e+18", "%g"},
+  {__LINE__, -1.056514389757866e-16,	"-1.05651E-16", "%5.6G"},
+  {__LINE__, -1.057180924868704e+15,	"-1057180924868704", "%4.f"},
+  {__LINE__, -1.058455468395683e-23,	"-1.05846e-23", "%g"},
+  {__LINE__, -1.062560982393212e+08,	"-1.06256e+08", "%g"},
+  {__LINE__, -1.063365829241138e-10,	"-1.063366e-10", "%+e"},
+  {__LINE__, -1.063568908667280e-19,	"-1.06357E-19", "%+G"},
+  {__LINE__, -1.063734263253492e-13,	"-0.000000", "%0f"},
+  {__LINE__, -1.064472689765495e-13,	"-1E-13", "%4.0G"},
+  {__LINE__, -1.067192610000129e-25,	"-1.06719E-25", "%G"},
+  {__LINE__, -1.068401334996592e-12,	"-0.0000000", "%+.7f"},
+  {__LINE__, -1.069012628653724e-13,	"-1.069013E-13", "%+.7G"},
+  {__LINE__, -1.069451976810790e+16,	"-10694519768107904.056365", "%f"},
+  {__LINE__, -1.069568935323556e+17,	"-1.06957e+17", "%g"},
+  {__LINE__, -1.071351044854107e-29,	"-1.07135e-29", "%g"},
+  {__LINE__, -1.072274197526185e-21,	"-1E-21", "%1.G"},
+  {__LINE__, -1.073875921752995e+23,	"-1E+23", "%5.E"},
+  {__LINE__, -1.074835151152265e-12,	"-1.0748e-12", "%1.5g"},
+  {__LINE__, -1.075171047088241e-19,	"-1.07517E-19", "%#G"},
+  {__LINE__, -1.076258826412760e+22,	"-1.076259e+22", "%+e"},
+  {__LINE__, -1.076365103160401e+06,	"-1.07637E+06", "%+4.6G"},
+  {__LINE__, -1.076817750454633e+08,	"-1e+08", "%4.g"},
+  {__LINE__, -1.078615405755685e-30,	"-1e-30", "%4.g"},
+  {__LINE__, -1.078629622917468e-25,	"-1.078630e-25", "%e"},
+  {__LINE__, -1.079352432833170e+11,	"-107935243283", "%+2.f"},
+  {__LINE__, -1.081431147440215e+16,	"-10814311474402147.439378", "%+f"},
+  {__LINE__, -1.083042116905339e-16,	"-1.083e-16", "%.5g"},
+  {__LINE__, -1.085351710708553e-10,	"-1.085e-10", "%1.4g"},
+  {__LINE__, -1.085796045618276e+07,	"-1.085796e+07", "%e"},
+  {__LINE__, -1.087398259981007e+22,	"-1.0874e+22", "%g"},
+  {__LINE__, -1.087986044402224e-11,	"-1.087986e-11", "%e"},
+  {__LINE__, -1.090451848762709e-02,	"-1.090452e-02", "%e"},
+  {__LINE__, -1.091463236899737e+11,	"-1.091463E+11", "%#E"},
+  {__LINE__, -1.091617921737384e-29,	"-1.09162e-29", "%3g"},
+  {__LINE__, -1.092049328579047e-17,	"-1.092049E-17", "%E"},
+  {__LINE__, -1.093647615472090e+06,	"-1093647.61547", "%6.5f"},
+  {__LINE__, -1.094133175602384e-08,	"-1.1E-08", "%0.1E"},
+  {__LINE__, -1.095397916728214e-23,	"-1e-23", "%6.e"},
+  {__LINE__, -1.098958790437321e+02,	"-109.895879", "%+#f"},
+  {__LINE__, -1.100194638181594e-20,	"-1.100195e-20", "%e"},
+  {__LINE__, -1.102174253534260e+05,	"-1.1e+05", "%2.3g"},
+  {__LINE__, -1.102890180316350e-12,	"-1.10289e-12", "%+g"},
+  {__LINE__, -1.105582337418378e+00,	"-1.11", "%3.3g"},
+  {__LINE__, -1.110515122647056e+04,	"-1.E+04", "%#0.G"},
+  {__LINE__, -1.111365895262625e-18,	"-1e-18", "%0.g"},
+  {__LINE__, -1.112010622677495e+04,	"-11120.1", "%g"},
+  {__LINE__, -1.112580043156699e-23,	"-1.11258e-23", "%1g"},
+  {__LINE__, -1.112829057091303e+08,	"-1.11283e+08", "%+2g"},
+  {__LINE__, -1.115019046200472e+18,	"-1.1150190e+18", "%+#.7e"},
+  {__LINE__, -1.118078332268016e-13,	"-1.12E-13", "%1.3G"},
+  {__LINE__, -1.119113571963886e+08,	"-1.119114e+08", "%e"},
+  {__LINE__, -1.120102397563448e-15,	"-1.12e-15", "%.4g"},
+  {__LINE__, -1.120707480791434e-19,	"-1.12071e-19", "%g"},
+  {__LINE__, -1.124243676139007e-07,	"-0.000000", "%f"},
+  {__LINE__, -1.125025214608798e+15,	"-1.12503E+15", "%0G"},
+  {__LINE__, -1.126074395136447e+06,	"-1E+06", "%+.0G"},
+  {__LINE__, -1.127203019940870e-06,	"-0.000001", "%+#7f"},
+  {__LINE__, -1.130577648480677e+01,	"-1.130578e+01", "%e"},
+  {__LINE__, -1.131469694425240e-11,	"-1.13147e-11", "%#0.6g"},
+  {__LINE__, -1.132225023239752e+02,	"-113.223", "%G"},
+  {__LINE__, -1.133702113050128e+20,	"-1E+20", "%+3.E"},
+  {__LINE__, -1.135529466224404e-13,	"-1.13553e-13", "%#g"},
+  {__LINE__, -1.137587210063004e+21,	"-1e+21", "%.1g"},
+  {__LINE__, -1.140765637106361e-21,	"-1.1e-21", "%+.1e"},
+  {__LINE__, -1.141182595083699e-18,	"-0.000000", "%f"},
+  {__LINE__, -1.141695709120972e+00,	"-1.1417", "%3G"},
+  {__LINE__, -1.143199141708028e+18,	"-1143199141708027833", "%2.f"},
+  {__LINE__, -1.146712902056139e+21,	"-1146712902056139071760.298975", "%f"},
+  {__LINE__, -1.146837903839073e-02,	" -0.0", "%+5.1f"},
+  {__LINE__, -1.147363016107446e+10,	"-1.14736e+10", "%+7g"},
+  {__LINE__, -1.149575523465052e+20,	"-114957552346505220697.28140", "%+.5f"},
+  {__LINE__, -1.152748955392589e+13,	"-1.15275E+13", "%G"},
+  {__LINE__, -1.152751106015483e-17,	"-1E-17", "%+3.E"},
+  {__LINE__, -1.155539139258226e-18,	"-1.2e-18", "%+.2g"},
+  {__LINE__, -1.157089280563492e+20,	"-1.15709e+20", "%g"},
+  {__LINE__, -1.161217745859779e+19,	"-1.161218E+19", "%E"},
+  {__LINE__, -1.162293536734798e+10,	"-11622935367.347980", "%f"},
+  {__LINE__, -1.162629909468603e+20,	"-1.16E+20", "%.3G"},
+  {__LINE__, -1.164979155838631e+24,	"-1.16498E+24", "%G"},
+  {__LINE__, -1.165103052644816e-20,	" -1e-20", "%+7.g"},
+  {__LINE__, -1.166448459023264e-08,	"-0.000000", "%f"},
+  {__LINE__, -1.167694506705309e+28,	"-1e+28", "%.1g"},
+  {__LINE__, -1.169901754818745e-28,	"-0.000000", "%+f"},
+  {__LINE__, -1.170330336216446e+08,	" -1e+08", "%7.g"},
+  {__LINE__, -1.170946623214213e-17,	"-1.17095E-17", "%G"},
+  {__LINE__, -1.174581596799302e+27,	"-1.174582e+27", "%+e"},
+  {__LINE__, -1.174763473995155e-28,	"-1E-28", "%.1G"},
+  {__LINE__, -1.175885640508038e-23,	"-1E-23", "%+.0E"},
+  {__LINE__, -1.177268411775439e-05,	"-0.000012", "%#2.6f"},
+  {__LINE__, -1.177739669428001e-30,	"-1.17774E-30", "%G"},
+  {__LINE__, -1.178059639880544e-02,	"-0.0117806", "%+.7G"},
+  {__LINE__, -1.178793300854446e-13,	"-1.2E-13", "%+#0.2G"},
+  {__LINE__, -1.179629345138058e-04,	"-0.000118", "%0.3g"},
+  {__LINE__, -1.180730292213358e-25,	"-1.18073e-25", "%g"},
+  {__LINE__, -1.180766261654697e+02,	"-118.077", "%3g"},
+  {__LINE__, -1.181880261069391e-29,	"-1.181880e-29", "%+#e"},
+  {__LINE__, -1.183752810063514e-09,	"-1.18375e-09", "%#g"},
+  {__LINE__, -1.184191742443406e-21,	"-1.184192e-21", "%e"},
+  {__LINE__, -1.184859760488406e-26,	"-1.18486E-26", "%G"},
+  {__LINE__, -1.187276828720072e-29,	"-1.18728E-29", "%G"},
+  {__LINE__, -1.187992907205195e-04,	"-1.187993E-04", "%E"},
+  {__LINE__, -1.190586192763405e-28,	"-1.E-28", "%#1.E"},
+  {__LINE__, -1.192104053032086e+02,	"-119.21", "%G"},
+  {__LINE__, -1.192917884333569e+26,	"-1.192918E+26", "%E"},
+  {__LINE__, -1.195900753509801e+22,	"-1.1959e+22", "%g"},
+  {__LINE__, -1.196559413116537e-28,	"-0.000000", "%6.6f"},
+  {__LINE__, -1.197534588732952e+12,	"-1.19753e+12", "%#g"},
+  {__LINE__, -1.200279514790649e-25,	"-0.0000", "%0.4f"},
+  {__LINE__, -1.203806667944635e+10,	"-1.2038067E+10", "%5.7E"},
+  {__LINE__, -1.204344885974736e+07,	"-1.204E+07", "%#2.4G"},
+  {__LINE__, -1.205668007693083e+00,	"-1.20567", "%g"},
+  {__LINE__, -1.205898515218947e-11,	"-1.2059e-11", "%+g"},
+  {__LINE__, -1.206787414909373e-05,	"-1.2e-05", "%2.2g"},
+  {__LINE__, -1.207905830366447e+15,	"-1.207906e+15", "%6.7g"},
+  {__LINE__, -1.208067010597729e-17,	"-1.208067e-17", "%5e"},
+  {__LINE__, -1.210189135822574e+01,	"-12", "%+2.0f"},
+  {__LINE__, -1.211560695948122e+10,	"-1.21156e+10", "%+g"},
+  {__LINE__, -1.214003025273234e-18,	"-1.214e-18", "%+g"},
+  {__LINE__, -1.214096815259005e+17,	"-121409681525900459.142520", "%f"},
+  {__LINE__, -1.214699041716797e-14,	"-1.2147E-14", "%G"},
+  {__LINE__, -1.215061611919443e+14,	"-121506161191944.306310", "%+#f"},
+  {__LINE__, -1.217491221065185e+27,	"-1.21749e+27", "%g"},
+  {__LINE__, -1.218538401534388e-11,	"-1.218538e-11", "%#e"},
+  {__LINE__, -1.218810085883466e+16,	"-1e+16", "%+.1g"},
+  {__LINE__, -1.219422688169801e+08,	"-1.219423e+08", "%e"},
+  {__LINE__, -1.220473194407651e-14,	"-1.2205E-14", "%1.5G"},
+  {__LINE__, -1.220824440193375e-02,	"-0.012208", "%4f"},
+  {__LINE__, -1.221520240637007e+13,	"-1.221520E+13", "%1E"},
+  {__LINE__, -1.221894719843486e+29,	"-1.22189E+29", "%G"},
+  {__LINE__, -1.223020108610281e+25,	"-1.22302E+25", "%G"},
+  {__LINE__, -1.223203206227728e-02,	"-0.012232", "%G"},
+  {__LINE__, -1.225661737076919e-15,	"-1.22566E-15", "%G"},
+  {__LINE__, -1.228147221003795e-08,	"-1.22815E-08", "%G"},
+  {__LINE__, -1.228298534591771e+20,	"-1.22830E+20", "%#G"},
+  {__LINE__, -1.228469080229780e-02,	"-0.012285", "%0f"},
+  {__LINE__, -1.229161950699222e-09,	"-1e-09", "%0.e"},
+  {__LINE__, -1.231294820136559e-17,	"-1.231295E-17", "%1.7G"},
+  {__LINE__, -1.232588663406698e-21,	"-1E-21", "%+0.G"},
+  {__LINE__, -1.233381256982191e-26,	"-0.000000", "%f"},
+  {__LINE__, -1.233435864835578e+14,	"-1.23344e+14", "%#g"},
+  {__LINE__, -1.237409567806099e-25,	"-1.23741E-25", "%#G"},
+  {__LINE__, -1.238244697758558e-02,	"-1.238245e-02", "%7e"},
+  {__LINE__, -1.239393163123284e+26,	"-1.23939e+26", "%+g"},
+  {__LINE__, -1.240484781756132e-18,	"-1E-18", "%4.E"},
+  {__LINE__, -1.241420286838750e+23,	"-1E+23", "%2.E"},
+  {__LINE__, -1.243781122052343e-18,	"-1.243781e-18", "%+e"},
+  {__LINE__, -1.244421506844779e+07,	"-1.244422E+07", "%+6E"},
+  {__LINE__, -1.245754054764741e-21,	"-1e-21", "%5.0g"},
+  {__LINE__, -1.245992228426733e-24,	"-0.000000", "%f"},
+  {__LINE__, -1.246498277739883e-12,	"-0.0000000", "%5.7f"},
+  {__LINE__, -1.247130891343776e-18,	"-1.24713E-18", "%G"},
+  {__LINE__, -1.247309461703025e-03,	"-0.0012473", "%#5.5G"},
+  {__LINE__, -1.248139162966407e-29,	"-1.e-29", "%+#6.g"},
+  {__LINE__, -1.249756153623776e+08,	"-1.249756e+08", "%e"},
+  {__LINE__, -1.250899983565585e-10,	"-1.2509e-10", "%5g"},
+  {__LINE__, -1.250957368798327e+19,	"-1.25096E+19", "%0G"},
+  {__LINE__, -1.252630814464822e-02,	"-0.012526", "%+f"},
+  {__LINE__, -1.253076368257011e-28,	"-0.000000", "%f"},
+  {__LINE__, -1.254243507039370e+01,	"-1.254244e+01", "%e"},
+  {__LINE__, -1.257605614492298e-12,	"-1.257606E-12", "%6.7G"},
+  {__LINE__, -1.258041911573120e+06,	"-1258041.911573", "%+f"},
+  {__LINE__, -1.261670983426507e-25,	"-0.00", "%.2f"},
+  {__LINE__, -1.263216883336562e-14,	"-1.26322e-14", "%g"},
+  {__LINE__, -1.266846944498751e-15,	"-1e-15", "%0.g"},
+  {__LINE__, -1.266977908502326e+06,	"-1266978", "%+1.f"},
+  {__LINE__, -1.267006162870084e-23,	"-1.267006e-23", "%e"},
+  {__LINE__, -1.269144609375931e+01,	"-1.269145e+01", "%+e"},
+  {__LINE__, -1.269458714257904e+25,	"-1.26946E+25", "%G"},
+  {__LINE__, -1.276697325772662e-02,	"-0.0128", "%7.3G"},
+  {__LINE__, -1.278855081807602e+15,	"-1278855081807601.87891", "%#0.5f"},
+  {__LINE__, -1.278966821639612e+20,	"-1.278967E+20", "%3E"},
+  {__LINE__, -1.281942705258106e+03,	"-1281.94", "%+G"},
+  {__LINE__, -1.282331291499203e+14,	"-128233129149920.266343", "%+f"},
+  {__LINE__, -1.285125739341808e-28,	"-1.28513e-28", "%g"},
+  {__LINE__, -1.285700693704978e+11,	"-1.285701E+11", "%E"},
+  {__LINE__, -1.286574096459251e+28,	"-1.287E+28", "%6.4G"},
+  {__LINE__, -1.287967889247240e+03,	"-1287.97", "%G"},
+  {__LINE__, -1.288913808801319e-27,	"-1.3e-27", "%7.1e"},
+  {__LINE__, -1.289147517760377e-18,	"-1.289148E-18", "%E"},
+  {__LINE__, -1.289355006600107e+23,	"-1.28936E+23", "%+G"},
+  {__LINE__, -1.291232014623979e+01,	"-1.29123E+01", "%+.5E"},
+  {__LINE__, -1.293658562875966e-18,	"-1.29366e-18", "%+g"},
+  {__LINE__, -1.294982911983638e-19,	"-1.29498E-19", "%#G"},
+  {__LINE__, -1.296123363481695e-13,	"-1.296123E-13", "%E"},
+  {__LINE__, -1.296632862070602e-20,	"-1.29663e-20", "%+g"},
+  {__LINE__, -1.297801639022777e+23,	"-129780163902277735132884.11777", "%#0.5f"},
+  {__LINE__, -1.297886574534611e+16,	"-1.297887e+16", "%+e"},
+  {__LINE__, -1.300588216308401e+11,	"-1.30e+11", "%.2e"},
+  {__LINE__, -1.301296100909062e-10,	"-1.3013e-10", "%+g"},
+  {__LINE__, -1.303144244306468e-07,	"-1.303144E-07", "%E"},
+  {__LINE__, -1.304096315024042e-20,	"-1.3041E-20", "%+G"},
+  {__LINE__, -1.304817970675085e+16,	"-1.304818E+16", "%+E"},
+  {__LINE__, -1.304870304632683e-15,	" -1e-15", "%7.g"},
+  {__LINE__, -1.305213586757638e-18,	"-1.30521e-18", "%g"},
+  {__LINE__, -1.306880734910465e-22,	"-1.306881E-22", "%E"},
+  {__LINE__, -1.308964092631446e-23,	"-1.30896e-23", "%g"},
+  {__LINE__, -1.312070555198201e+26,	"-131207055519820126043839537", "%+7.f"},
+  {__LINE__, -1.312511609151056e-30,	"-1.312512E-30", "%#E"},
+  {__LINE__, -1.313087359008389e-23,	"-0.000000", "%+f"},
+  {__LINE__, -1.316948423042059e-02,	"-1.316948E-02", "%+E"},
+  {__LINE__, -1.317080882577385e+29,	"-1.317E+29", "%+.4G"},
+  {__LINE__, -1.317514598984346e+24,	"-1.317515e+24", "%e"},
+  {__LINE__, -1.317817551125923e-21,	"-1.31782E-21", "%+G"},
+  {__LINE__, -1.319603985988120e+29,	"-131960398598811989856471882376.354188", "%f"},
+  {__LINE__, -1.328850458671907e+06,	"-1e+06", "%.0e"},
+  {__LINE__, -1.328945346449817e-23,	"-1.328945e-23", "%+e"},
+  {__LINE__, -1.330146584094221e-08,	"-1e-08", "%+5.g"},
+  {__LINE__, -1.332609617892115e+00,	"-1.33261", "%2.7G"},
+#ifndef __PCCNECV70__
+  {__LINE__, -1.332751724965715e+22,	"-13327517249657150344432.920974", "%f"},
+  {__LINE__, -1.333194379353273e-19,	"-0.000000", "%f"},
+  {__LINE__, -1.334304387932777e-06,	"-1.334304e-06", "%e"},
+  {__LINE__, -1.334306581172082e-05,	"-1.3e-05", "%+1.2g"},
+  {__LINE__, -1.335283510893438e-05,	" -1E-05", "%7.G"},
+  {__LINE__, -1.337939692108373e+11,	"-1.33794e+11", "%+4g"},
+  {__LINE__, -1.339117288874809e-03,	"-0.001", "%1.3f"},
+  {__LINE__, -1.340100588141492e+27,	"-1.340101E+27", "%E"},
+  {__LINE__, -1.341953272572953e-19,	"-0.000000", "%+f"},
+  {__LINE__, -1.343058354301620e-02,	"-1.343058e-02", "%e"},
+  {__LINE__, -1.346662720871543e+22,	"-1.34666E+22", "%#G"},
+  {__LINE__, -1.354010578652210e-02,	"-0.0135401", "%#g"},
+  {__LINE__, -1.354066549307666e-12,	"    -0", "%+6.f"},
+  {__LINE__, -1.355284719365947e+21,	"-1.35528e+21", "%g"},
+  {__LINE__, -1.356326532145087e+29,	"-1E+29", "%4.G"},
+  {__LINE__, -1.357278618897291e+19,	"-13572786188972911780.581398", "%f"},
+  {__LINE__, -1.357537331348202e-10,	"-0.000", "%+.3f"},
+  {__LINE__, -1.360011287595868e-10,	"-0.000000", "%f"},
+  {__LINE__, -1.360506902899232e+16,	"-13605069028992320.", "%#5.f"},
+  {__LINE__, -1.361102570277000e+10,	"-1.3611E+10", "%G"},
+  {__LINE__, -1.362601255900219e+07,	"-1.363E+07", "%.4G"},
+  {__LINE__, -1.366078182354771e+10,	"-1.36608E+10", "%0G"},
+  {__LINE__, -1.366667926615127e+08,	"-136666792.661513", "%f"},
+  {__LINE__, -1.367162823743231e-12,	"-0.000000", "%#f"},
+  {__LINE__, -1.371523037550709e+09,	"-1.37152e+09", "%+g"},
+  {__LINE__, -1.374328925986197e-17,	"-1.37e-17", "%.2e"},
+  {__LINE__, -1.374995603898421e-26,	"-1.375e-26", "%+g"},
+  {__LINE__, -1.376726539375688e+09,	"-1.376727E+09", "%+E"},
+  {__LINE__, -1.378351117694958e-13,	"-0.000000", "%f"},
+  {__LINE__, -1.378514699313619e-14,	"-1.378515e-14", "%e"},
+  {__LINE__, -1.379347588942324e-23,	"-1.4e-23", "%+.1e"},
+  {__LINE__, -1.380380583822272e-17,	"-0.000000", "%+f"},
+  {__LINE__, -1.381658659947406e+19,	"-1.38166e+19", "%g"},
+  {__LINE__, -1.382775316390237e+29,	"-138277531639023653298181670834.3104", "%+#7.4f"},
+  {__LINE__, -1.383541138922400e+00,	"-1.383541E+00", "%E"},
+  {__LINE__, -1.384625301445090e+01,	"-13.8", "%+.3g"},
+  {__LINE__, -1.386844086284027e-13,	"-1.38684E-13", "%+G"},
+  {__LINE__, -1.386930516448650e-28,	"-1.386931E-28", "%E"},
+  {__LINE__, -1.387444896054260e-07,	"-1.38744E-07", "%G"},
+  {__LINE__, -1.389685107980798e+22,	"-1.38969E+22", "%G"},
+  {__LINE__, -1.390880300369347e+03,	"-1390.880300", "%f"},
+  {__LINE__, -1.391423370198150e-17,	"-1E-17", "%+2.G"},
+  {__LINE__, -1.394441767471218e-09,	"-1.394442e-09", "%e"},
+  {__LINE__, -1.396275525062527e-20,	"-1.39628E-20", "%G"},
+  {__LINE__, -1.397045957455157e+24,	"-1E+24", "%.0E"},
+  {__LINE__, -1.397458546930799e+21,	"-1397458546930798526375.383517", "%f"},
+  {__LINE__, -1.397584578988941e-14,	"-1.39758e-14", "%5g"},
+  {__LINE__, -1.397789397300823e+09,	"-1.398e+09", "%.4g"},
+  {__LINE__, -1.398167472294874e+21,	"-1.398167E+21", "%+7E"},
+  {__LINE__, -1.398809636136688e-16,	"-0.000000", "%+f"},
+  {__LINE__, -1.399545335304119e+26,	"-139954533530411872277454676.805064", "%#5f"},
+  {__LINE__, -1.400102603335755e+20,	"-140010260333575509150.705329", "%2f"},
+  {__LINE__, -1.401212746235235e+04,	"-1.401213e+04", "%e"},
+  {__LINE__, -1.404409427681801e+07,	"-1E+07", "%4.E"},
+  {__LINE__, -1.406018114263948e-25,	"-1e-25", "%3.e"},
+  {__LINE__, -1.406245608096877e-06,	"-1.4e-06", "%+.1e"},
+  {__LINE__, -1.410697254683835e-10,	"-1.410697e-10", "%e"},
+  {__LINE__, -1.410739097553846e+25,	"-1.410739E+25", "%+E"},
+  {__LINE__, -1.410850631189577e+04,	"-14108.5", "%.6g"},
+  {__LINE__, -1.411680434455781e+28,	"-14116804344557807304738616949.180141", "%f"},
+  {__LINE__, -1.413309465660099e-27,	"-1.413309E-27", "%+#E"},
+  {__LINE__, -1.418468741386300e+09,	"-1418468741.386300", "%f"},
+  {__LINE__, -1.420277110892909e+06,	"-1.42028e+06", "%1g"},
+  {__LINE__, -1.420417889565590e-17,	"-1.42E-17", "%.2E"},
+  {__LINE__, -1.421098212056305e+08,	"-1.421098e+08", "%4e"},
+  {__LINE__, -1.421792812798986e-20,	" -1E-20", "%7.G"},
+  {__LINE__, -1.423675488122461e+18,	"-1423675488122461363.360571", "%f"},
+  {__LINE__, -1.423810545840653e+15,	"-1E+15", "%3.E"},
+  {__LINE__, -1.424242673476368e-15,	"-1.424243e-15", "%e"},
+  {__LINE__, -1.427847435688733e-01,	"-1.427847E-01", "%E"},
+  {__LINE__, -1.433897734612555e-04,	"-0.0001", "%3.g"},
+  {__LINE__, -1.434537754075696e-24,	"-1.435E-24", "%+0.3E"},
+  {__LINE__, -1.434774864809324e-24,	"-1E-24", "%2.E"},
+  {__LINE__, -1.435583851565142e-11,	"-1E-11", "%.0E"},
+  {__LINE__, -1.438791024010112e+11,	"-1.43879e+11", "%#.6g"},
+  {__LINE__, -1.439267565343777e+27,	"-1.4e+27", "%2.1e"},
+  {__LINE__, -1.439440602670449e+02,	"-143.944", "%G"},
+  {__LINE__, -1.439494412124925e+13,	"-14394944121249.251268", "%f"},
+  {__LINE__, -1.440032823245152e+10,	"-14400328232.451516", "%f"},
+  {__LINE__, -1.440174494009562e-08,	"-0.000000", "%7f"},
+  {__LINE__, -1.440827804010568e+07,	"-1.E+07", "%#6.1G"},
+  {__LINE__, -1.442760907195336e+09,	"-1.44276E+09", "%+5G"},
+  {__LINE__, -1.444655304181403e+10,	"-14446553041.814035", "%7f"},
+  {__LINE__, -1.444995766787036e+04,	"-14450", "%5G"},
+  {__LINE__, -1.445078682874535e-13,	"-1E-13", "%3.E"},
+  {__LINE__, -1.446781469662328e+01,	"-14.4678", "%G"},
+  {__LINE__, -1.447795251395321e-04,	"-0.000145", "%+f"},
+  {__LINE__, -1.448193079247108e-02,	"-0.014", "%4.2G"},
+  {__LINE__, -1.449552967961345e+14,	"-1E+14", "%1.E"},
+  {__LINE__, -1.451269763513571e+10,	"-14512697635.135705", "%6f"},
+  {__LINE__, -1.451843176990292e+12,	"-1e+12", "%1.g"},
+  {__LINE__, -1.452631405935931e+06,	"-1.452631e+06", "%e"},
+  {__LINE__, -1.452753650285897e+21,	"-1452753650285897091265.496783", "%5f"},
+  {__LINE__, -1.453811512433860e-05,	"-1e-05", "%+6.g"},
+  {__LINE__, -1.454071430557372e+13,	"-1.4541E+13", "%.4E"},
+  {__LINE__, -1.455956079562999e+03,	"-1455.96", "%G"},
+  {__LINE__, -1.459712196146602e-17,	"-1.45971e-17", "%g"},
+  {__LINE__, -1.461857733495947e-02,	"-1.4619E-02", "%.4E"},
+  {__LINE__, -1.465257069090911e-11,	"-1.465257E-11", "%+E"},
+  {__LINE__, -1.465306607257042e+05,	"-146531", "%g"},
+  {__LINE__, -1.465857076315921e+20,	"-1.46586E+20", "%+G"},
+  {__LINE__, -1.467919792051489e+16,	"-1.46792e+16", "%2g"},
+  {__LINE__, -1.469271519834567e+20,	"-146927151983456720785", "%+.0f"},
+  {__LINE__, -1.472961447442697e-28,	"-1.47296e-28", "%#g"},
+  {__LINE__, -1.473385695190456e-12,	"-1.473386E-12", "%E"},
+  {__LINE__, -1.485003089033267e-10,	"-1.485E-10", "%2G"},
+  {__LINE__, -1.490541379072390e-18,	"-1.490541E-18", "%4E"},
+  {__LINE__, -1.490683434793125e+22,	"-14906834347931249951102.472551", "%#f"},
+  {__LINE__, -1.498356837215425e+20,	"-1.49836E+20", "%#G"},
+  {__LINE__, -1.498677007818122e+14,	"-1.49868E+14", "%+4G"},
+  {__LINE__, -1.502143197677119e+23,	"-150214319767711934616727.", "%#7.f"},
+  {__LINE__, -1.503563770470753e-24,	"-1.50356e-24", "%.6g"},
+  {__LINE__, -1.504643092793197e-18,	"-1.504643e-18", "%+4e"},
+  {__LINE__, -1.507017706254022e-13,	"-1.50702e-13", "%+g"},
+  {__LINE__, -1.507054033750081e-22,	"-0.000000", "%f"},
+  {__LINE__, -1.508662346022339e+16,	"-1.508662E+16", "%#E"},
+  {__LINE__, -1.509366882438902e+08,	"-2e+08", "%4.g"},
+  {__LINE__, -1.511086567087967e+20,	"-1.51109e+20", "%g"},
+  {__LINE__, -1.514959134622707e-18,	"-0.000000", "%+f"},
+  {__LINE__, -1.515730120364204e+06,	"-2E+06", "%0.G"},
+  {__LINE__, -1.516372763118606e-09,	"-1.51637e-09", "%g"},
+  {__LINE__, -1.520610443546204e+27,	"-1.52061e+27", "%g"},
+  {__LINE__, -1.522040655642012e+11,	"-1.52204E+11", "%+2G"},
+  {__LINE__, -1.523772495014966e-24,	"-2E-24", "%2.G"},
+  {__LINE__, -1.523980825983892e-05,	"-0.000", "%2.3f"},
+  {__LINE__, -1.526696214603152e-03,	"-0.0015267", "%+6.5G"},
+  {__LINE__, -1.528680540769583e+00,	"-1.5287", "%0.5G"},
+  {__LINE__, -1.529951830525433e+08,	"-1.529952e+08", "%+e"},
+  {__LINE__, -1.533052896559935e+05,	"-153305", "%4.0f"},
+  {__LINE__, -1.533829640475152e-03,	"-0.00153383", "%+#g"},
+  {__LINE__, -1.535617804643105e-30,	"-1.535618e-30", "%e"},
+  {__LINE__, -1.537623698361821e+16,	"-15376236983618207.7875719", "%4.7f"},
+  {__LINE__, -1.544994895330616e+24,	"-1.54499e+24", "%g"},
+  {__LINE__, -1.545083356728403e+17,	"-1.545083e+17", "%e"},
+  {__LINE__, -1.545684535393879e+12,	"-1.55E+12", "%3.3G"},
+  {__LINE__, -1.545878334099427e+13,	"-15458783340994.268762", "%1f"},
+  {__LINE__, -1.547697185980564e-18,	"-1.5477e-18", "%.6g"},
+  {__LINE__, -1.548576527172579e-29,	"-1.5E-29", "%2.2G"},
+  {__LINE__, -1.549712227835891e+08,	"-1.549712e+08", "%#6.7g"},
+  {__LINE__, -1.550010819435335e-21,	"-1.55001E-21", "%G"},
+  {__LINE__, -1.551412476164257e+14,	"-1.551412E+14", "%E"},
+  {__LINE__, -1.553156638090030e+01,	" -2E+01", "%7.G"},
+  {__LINE__, -1.553733233064355e-01,	"-0.2", "%3.g"},
+  {__LINE__, -1.558391111609365e+00,	"-1.558391", "%+f"},
+  {__LINE__, -1.562004019284766e+15,	"-1.562E+15", "%6.5G"},
+  {__LINE__, -1.562195733239758e-16,	"-0.000000", "%f"},
+  {__LINE__, -1.563953339012525e-14,	"-1.56395E-14", "%1G"},
+  {__LINE__, -1.568317638534983e+18,	"-1.56832E+18", "%1G"},
+  {__LINE__, -1.568546851135348e+04,	"-15685.5", "%+#G"},
+  {__LINE__, -1.574297872228857e+18,	"-1.574298e+18", "%e"},
+  {__LINE__, -1.575696460196291e-21,	"-1.5757E-21", "%G"},
+  {__LINE__, -1.576324848379791e+25,	"-1.57632E+25", "%+G"},
+  {__LINE__, -1.577524395140843e+06,	"-1.5775E+06", "%.5G"},
+  {__LINE__, -1.585122856675091e+12,	"-1585122856675.091452", "%f"},
+  {__LINE__, -1.586734674395556e-02,	"-1.586735E-02", "%E"},
+  {__LINE__, -1.592602264315192e+22,	"-1.5926E+22", "%G"},
+  {__LINE__, -1.594121556700562e+05,	"-2E+05", "%+.0G"},
+  {__LINE__, -1.598538116193430e+22,	"-1.59854e+22", "%+g"},
+  {__LINE__, -1.605647463222382e+18,	"-1.6056E+18", "%.5G"},
+  {__LINE__, -1.610891449201191e+06,	"-1.6109E+06", "%#6.4E"},
+  {__LINE__, -1.614593168166818e-05,	"-1.61459E-05", "%G"},
+  {__LINE__, -1.615597722557325e-03,	"-0.001616", "%f"},
+  {__LINE__, -1.616038022182124e-29,	"-1.61604E-29", "%1G"},
+  {__LINE__, -1.618380771451625e-28,	"-2e-28", "%+1.g"},
+  {__LINE__, -1.620287456872150e+10,	"-1.620e+10", "%#7.3e"},
+  {__LINE__, -1.620469955611903e-29,	"-0.000000", "%f"},
+  {__LINE__, -1.622580720690927e+20,	"-1.622581E+20", "%+#E"},
+  {__LINE__, -1.622752500991079e-12,	"-1.622753E-12", "%E"},
+  {__LINE__, -1.622771933776459e+08,	"-1.6228E+08", "%+4.4E"},
+  {__LINE__, -1.623894567037391e+09,	"-1.623895e+09", "%#e"},
+  {__LINE__, -1.624021408185354e-25,	"-1.624E-25", "%.5G"},
+  {__LINE__, -1.624405320939366e-06,	"-1.62441e-06", "%+#g"},
+  {__LINE__, -1.631236208958857e-25,	"-1.631236e-25", "%#e"},
+  {__LINE__, -1.632165969536046e+20,	"-1.63217E+20", "%G"},
+  {__LINE__, -1.632859596256475e+06,	"-1.63286E+06", "%G"},
+  {__LINE__, -1.634371961703112e+06,	"-1.634372E+06", "%+E"},
+  {__LINE__, -1.637230383641845e+24,	"-1.63723e+24", "%#g"},
+  {__LINE__, -1.638081480475853e+17,	"-1.63808e+17", "%+g"},
+  {__LINE__, -1.638279690467673e+14,	"-163827969046767.325523", "%#f"},
+  {__LINE__, -1.640360249548215e-29,	"-1.64036e-29", "%+6.6g"},
+  {__LINE__, -1.645691728060833e-30,	"-1.64569e-30", "%g"},
+  {__LINE__, -1.648548965852592e-03,	"   -0", "%5.f"},
+  {__LINE__, -1.650100957771182e+21,	"-1650100957771182308420.065965", "%+f"},
+  {__LINE__, -1.650957176011913e-02,	"-0.016510", "%#4.5G"},
+  {__LINE__, -1.651165108095301e+29,	"-165116510809530137038336761179.380119", "%f"},
+  {__LINE__, -1.657132845094847e-06,	"-0.000002", "%f"},
+  {__LINE__, -1.657152146172541e+12,	"-1.657152E+12", "%.7G"},
+  {__LINE__, -1.658377345516132e-06,	"-0.00", "%.2f"},
+  {__LINE__, -1.658850468902324e+20,	"-1.659e+20", "%.4g"},
+  {__LINE__, -1.661723557149830e+18,	"-1.66172E+18", "%G"},
+  {__LINE__, -1.663570885140273e+14,	"-166357088514027", "%2.f"},
+  {__LINE__, -1.665186944896906e+25,	"-1.66519E+25", "%G"},
+  {__LINE__, -1.675910137717036e+22,	"-2e+22", "%5.g"},
+  {__LINE__, -1.677447987675587e-15,	"-1.67745E-15", "%G"},
+  {__LINE__, -1.677510590697220e+06,	"-1677510.590697", "%5f"},
+  {__LINE__, -1.677658141289510e-18,	"-2E-18", "%+5.G"},
+  {__LINE__, -1.678316848066192e-03,	"-1.678317E-03", "%E"},
+  {__LINE__, -1.681506404024821e+24,	"-1.68151E+24", "%G"},
+  {__LINE__, -1.688584243722160e+12,	"-1.68858E+12", "%+#G"},
+  {__LINE__, -1.689468295411408e+28,	"-1.68947E+28", "%+G"},
+  {__LINE__, -1.690746767470207e-11,	"-1.69075E-11", "%G"},
+  {__LINE__, -1.692773960755248e-14,	"-2E-14", "%4.E"},
+  {__LINE__, -1.693349092740995e-18,	"-1.69335e-18", "%g"},
+  {__LINE__, -1.693642321808920e-26,	"-1.69364E-26", "%G"},
+  {__LINE__, -1.694579128700042e-12,	"-0.000000", "%f"},
+  {__LINE__, -1.695454897264717e-08,	"-1.7E-08", "%+4.3G"},
+  {__LINE__, -1.695733278397589e+19,	"-1.695733e+19", "%4e"},
+  {__LINE__, -1.699522534409388e-05,	"-1.69952E-05", "%G"},
+  {__LINE__, -1.701752039544919e+00,	"-2", "%.0f"},
+  {__LINE__, -1.702304998615036e+16,	"-1.7023E+16", "%1G"},
+  {__LINE__, -1.703113580904556e-25,	"-1.703114e-25", "%+e"},
+  {__LINE__, -1.705165515454546e+29,	"-1.705166e+29", "%+e"},
+  {__LINE__, -1.707392568277288e-05,	"-1.70739E-05", "%G"},
+  {__LINE__, -1.707477319256742e+09,	"-1707477319.26", "%7.2f"},
+  {__LINE__, -1.709669107513969e-03,	" -0.002", "%7.g"},
+  {__LINE__, -1.713284011412432e-24,	"-1.713e-24", "%3.3e"},
+  {__LINE__, -1.715512203951086e-28,	"-1.715512E-28", "%E"},
+  {__LINE__, -1.716880832248879e+13,	"-1.71688e+13", "%+g"},
+  {__LINE__, -1.720722835740680e-15,	"-1.7E-15", "%.1E"},
+  {__LINE__, -1.721855769574895e+07,	"-17218557.695749", "%3f"},
+  {__LINE__, -1.722449437415368e+01,	"-1.722449e+01", "%e"},
+  {__LINE__, -1.723218805116591e-29,	"-2e-29", "%.0g"},
+  {__LINE__, -1.726129004920195e-05,	"-1.72613E-05", "%0G"},
+  {__LINE__, -1.727400228037571e-28,	"-0.0000000", "%2.7f"},
+  {__LINE__, -1.730008745782339e-23,	"-1.73e-23", "%.4g"},
+  {__LINE__, -1.731875670201859e+09,	"-1.73188E+09", "%G"},
+  {__LINE__, -1.732142976428085e+10,	"-2E+10", "%+6.0E"},
+  {__LINE__, -1.732699651229194e-02,	"-0.017327", "%5g"},
+  {__LINE__, -1.734772870736446e-12,	"-0.000000", "%+f"},
+  {__LINE__, -1.738576887938331e+09,	"-1.73858e+09", "%g"},
+  {__LINE__, -1.738759937912438e-08,	"-1.73876e-08", "%+2g"},
+  {__LINE__, -1.739320154069143e-18,	"-0.0000", "%1.4f"},
+  {__LINE__, -1.739870415800800e+16,	"-1.73987e+16", "%g"},
+  {__LINE__, -1.741290506928618e+04,	"-17412.9", "%G"},
+  {__LINE__, -1.742520800031913e+29,	"-1.742521e+29", "%7e"},
+  {__LINE__, -1.747620095195231e+01,	"-2e+01", "%+2.g"},
+  {__LINE__, -1.749860675924882e-21,	"-1.74986E-21", "%G"},
+  {__LINE__, -1.752675363661431e-06,	"-1.7527E-06", "%.5G"},
+  {__LINE__, -1.752871508059699e-06,	"     -0", "%7.f"},
+  {__LINE__, -1.755178530989839e+25,	"-1.7551785e+25", "%1.7e"},
+  {__LINE__, -1.755566213249512e-07,	"-1.755566e-07", "%.6e"},
+  {__LINE__, -1.756193485005071e-24,	"-1.75619E-24", "%+2.6G"},
+  {__LINE__, -1.758501410496218e+03,	"-1758.501", "%.7G"},
+  {__LINE__, -1.758795617219102e+20,	"-1.75880E+20", "%#6G"},
+  {__LINE__, -1.760538679276709e+03,	"-2e+03", "%+1.e"},
+  {__LINE__, -1.762660914833003e+27,	"-1.76266E+27", "%G"},
+  {__LINE__, -1.765122691141907e+19,	"-17651226911419071186.1", "%5.1f"},
+  {__LINE__, -1.765313277389086e-18,	"-2E-18", "%+1.E"},
+  {__LINE__, -1.765821717148734e+19,	"-1.76582E+19", "%G"},
+  {__LINE__, -1.767048687863149e-17,	"-1.77E-17", "%+.3G"},
+  {__LINE__, -1.768661645451962e+18,	"-1.77E+18", "%+.3G"},
+  {__LINE__, -1.769753257452233e+01,	"-17.6975", "%G"},
+  {__LINE__, -1.770945665065531e+28,	"-1.770946E+28", "%0.7G"},
+  {__LINE__, -1.776713865753894e-09,	"-2e-09", "%1.g"},
+  {__LINE__, -1.778424845787448e+03,	"-1.7784E+03", "%.4E"},
+  {__LINE__, -1.779060610701250e+06,	"-1.779061E+06", "%E"},
+  {__LINE__, -1.781447182110762e-27,	"-1.781447E-27", "%E"},
+  {__LINE__, -1.782655842123784e-13,	"-2.E-13", "%#2.1G"},
+  {__LINE__, -1.783071018169166e+16,	"-17830710181691664.217851", "%+f"},
+  {__LINE__, -1.784665985294415e+25,	"-2E+25", "%3.G"},
+  {__LINE__, -1.787297600658096e+25,	"-2E+25", "%+5.E"},
+  {__LINE__, -1.788200250255718e+12,	"-1.7882E+12", "%2.4E"},
+  {__LINE__, -1.792860730579114e-09,	"-1.79286E-09", "%G"},
+  {__LINE__, -1.793122797100936e+24,	"-1.793123e+24", "%e"},
+  {__LINE__, -1.793761706915029e-25,	"-0.000000", "%f"},
+  {__LINE__, -1.793947567431932e+22,	"-1.79395e+22", "%g"},
+  {__LINE__, -1.796428035404303e-18,	"-1.79643e-18", "%g"},
+  {__LINE__, -1.797113144273918e-16,	"-1.79711E-16", "%.6G"},
+  {__LINE__, -1.798796767828424e-29,	"-1.7988E-29", "%G"},
+  {__LINE__, -1.805004010633763e-11,	"-1.805e-11", "%2.5g"},
+  {__LINE__, -1.806936269752338e-26,	"-1.80694e-26", "%g"},
+  {__LINE__, -1.807122541760172e-10,	"-1.80712e-10", "%g"},
+  {__LINE__, -1.808295407815630e-06,	"-1.8083E-06", "%+G"},
+  {__LINE__, -1.813893236685959e+15,	"-1813893236685959", "%0.f"},
+  {__LINE__, -1.816201530145367e+06,	"-1816202", "%+2.f"},
+  {__LINE__, -1.822811219123512e+13,	"-1.82281e+13", "%g"},
+  {__LINE__, -1.826276499170243e-25,	"-2E-25", "%+3.G"},
+  {__LINE__, -1.832399287433839e-26,	"-1.832399E-26", "%#4E"},
+  {__LINE__, -1.833597815584463e-18,	"-0.000000", "%+3f"},
+  {__LINE__, -1.834165532712233e+28,	"-1.834166E+28", "%.7G"},
+  {__LINE__, -1.837633147831083e+28,	"-1.8376331e+28", "%.7e"},
+  {__LINE__, -1.839756716742518e-01,	"-0.2", "%+0.G"},
+  {__LINE__, -1.840101206950368e-14,	"-1.840101E-14", "%+E"},
+  {__LINE__, -1.842043645474877e+17,	"-1.84204e+17", "%+g"},
+  {__LINE__, -1.842155892969934e+17,	"-1.84216e+17", "%+g"},
+  {__LINE__, -1.843566073012842e-25,	"-1.84357E-25", "%G"},
+  {__LINE__, -1.843976321320497e-02,	"-0.02", "%+4.2f"},
+  {__LINE__, -1.845299931651554e+11,	"-1.8453E+11", "%0.4E"},
+  {__LINE__, -1.846199038659889e-06,	"-1.8462e-06", "%0.5g"},
+  {__LINE__, -1.847062180184169e-30,	"-1.847062E-30", "%5E"},
+  {__LINE__, -1.847962158722201e-16,	"-0.000000", "%f"},
+  {__LINE__, -1.849446376756582e+15,	"-1.8E+15", "%2.2G"},
+  {__LINE__, -1.853168465523878e-24,	"-2E-24", "%1.E"},
+  {__LINE__, -1.853601367230139e+10,	"-1.853601e+10", "%e"},
+  {__LINE__, -1.857367903775364e+18,	"-1.86E+18", "%1.3G"},
+  {__LINE__, -1.858332820633906e-05,	"-0.000019", "%7f"},
+  {__LINE__, -1.860243811657223e-23,	"-1.860244e-23", "%e"},
+  {__LINE__, -1.860660612539794e+08,	"-1.86066e+08", "%+6.5e"},
+  {__LINE__, -1.861160816251124e-09,	"-2E-09", "%1.G"},
+  {__LINE__, -1.862380636974688e-25,	"-1.9E-25", "%.2G"},
+  {__LINE__, -1.864168808453004e+15,	"-1.86417E+15", "%G"},
+  {__LINE__, -1.864273144411246e+07,	"-1.86427e+07", "%g"},
+  {__LINE__, -1.864929236615802e-02,	"-2e-02", "%+3.e"},
+  {__LINE__, -1.865010503480847e+19,	"-2E+19", "%4.G"},
+  {__LINE__, -1.866276374553144e+22,	"-1.866276e+22", "%e"},
+  {__LINE__, -1.870809567910649e+09,	"-1.870810e+09", "%e"},
+  {__LINE__, -1.872555495839008e-13,	"-1.872555E-13", "%3E"},
+  {__LINE__, -1.874465717110388e-22,	"-1.874466E-22", "%E"},
+  {__LINE__, -1.874916306627632e+21,	"-1874916306627632422987.517202", "%f"},
+  {__LINE__, -1.875804322194491e-23,	"-0.000000", "%+f"},
+  {__LINE__, -1.876662099198587e-04,	"-0.000187666", "%G"},
+  {__LINE__, -1.876775504795760e-25,	"-1.87678e-25", "%0g"},
+  {__LINE__, -1.879343051002554e-20,	"   -0.", "%#6.f"},
+  {__LINE__, -1.881535445774717e-15,	"-1.881535e-15", "%e"},
+  {__LINE__, -1.887515901404300e+00,	"-1.888", "%2.4G"},
+  {__LINE__, -1.887730637149009e+17,	"-1.887731E+17", "%E"},
+  {__LINE__, -1.889920303480086e+17,	"-1.889920e+17", "%+e"},
+  {__LINE__, -1.891903478784091e+04,	"-1.891903e+04", "%e"},
+  {__LINE__, -1.893550084305833e+16,	"-1.89355e+16", "%g"},
+  {__LINE__, -1.894675230197676e+05,	"-1.894675e+05", "%#e"},
+  {__LINE__, -1.898389624953187e-27,	"-1.898390e-27", "%+e"},
+  {__LINE__, -1.899250044644046e+21,	"-1899250044644046120367.875119", "%+4.6f"},
+  {__LINE__, -1.904187609804679e-02,	"-1.90419E-02", "%0.5E"},
+  {__LINE__, -1.904452538421193e-04,	"-2e-04", "%4.0e"},
+  {__LINE__, -1.904615326969061e-16,	"-1.904615e-16", "%1.7g"},
+  {__LINE__, -1.907761255064750e+02,	"-190.776126", "%f"},
+  {__LINE__, -1.910727641826707e-10,	" -2e-10", "%7.g"},
+  {__LINE__, -1.913149279262051e+15,	"-1.913149e+15", "%.7g"},
+  {__LINE__, -1.913235739298009e+28,	"-1.913236e+28", "%e"},
+  {__LINE__, -1.913526822735271e+18,	"-1.914e+18", "%.4g"},
+  {__LINE__, -1.913780977515583e+17,	"-191378097751558335.9150", "%5.4f"},
+  {__LINE__, -1.917095456962182e-10,	"-2E-10", "%4.G"},
+  {__LINE__, -1.918803033972851e+23,	"-191880303397285132405158.947222", "%f"},
+  {__LINE__, -1.926420984801848e+16,	"-19264209848018483.128840", "%+f"},
+  {__LINE__, -1.931905465942639e-10,	"-1.93191e-10", "%g"},
+  {__LINE__, -1.932907105840252e+06,	"-1.932907e+06", "%+#e"},
+  {__LINE__, -1.933091601918916e+15,	"-1.933092E+15", "%#E"},
+  {__LINE__, -1.934296184983361e+09,	"-1.9343e+09", "%1.6g"},
+  {__LINE__, -1.934637311832448e+11,	"-1.93464e+11", "%+g"},
+  {__LINE__, -1.936201483262186e+12,	"-2e+12", "%+6.g"},
+  {__LINE__, -1.939114661603911e+19,	"-1.93911E+19", "%G"},
+  {__LINE__, -1.940478182124347e-13,	"-0.000000", "%f"},
+  {__LINE__, -1.943218220654923e+08,	"-2E+08", "%+5.0G"},
+  {__LINE__, -1.943526872455779e-30,	"-1.9E-30", "%.1E"},
+  {__LINE__, -1.949869164681357e+19,	"-1.949869e+19", "%#3e"},
+  {__LINE__, -1.954181060535402e+23,	"-1.954181e+23", "%e"},
+  {__LINE__, -1.961581555579142e+14,	"-1.962E+14", "%.3E"},
+  {__LINE__, -1.964535562036915e+07,	"-1.96454E+07", "%G"},
+  {__LINE__, -1.969749653575926e+04,	"-19697.5", "%.6g"},
+  {__LINE__, -1.973475369169053e+15,	"-1.97348e+15", "%g"},
+  {__LINE__, -1.975658532866600e-21,	"-2e-21", "%+1.2g"},
+  {__LINE__, -1.984050343831260e+09,	"-1.984050E+09", "%E"},
+  {__LINE__, -1.984422410018571e+12,	"-1.984422e+12", "%+4.7g"},
+  {__LINE__, -1.984878687667223e-22,	"-0.000000", "%f"},
+  {__LINE__, -1.986116930967811e-28,	"-1.98612e-28", "%g"},
+  {__LINE__, -1.986774457812683e+02,	"-1.986774e+02", "%e"},
+  {__LINE__, -1.987274814938726e-04,	"-0.000198727", "%g"},
+  {__LINE__, -1.987319200580415e+10,	"-1.987319E+10", "%E"},
+  {__LINE__, -1.987980768698114e-19,	"-0.000000", "%3f"},
+  {__LINE__, -1.994698965044602e-29,	"-2E-29", "%+4.0G"},
+  {__LINE__, -1.997833122667050e+26,	"-1.99783E+26", "%G"},
+  {__LINE__, -1.999453681184129e-10,	"-0.00000", "%.5f"},
+  {__LINE__, -1.999897345839745e-16,	"-1.9999e-16", "%g"},
+  {__LINE__, -2.003703825123989e-22,	"-0.000000", "%f"},
+  {__LINE__, -2.004569188274957e-23,	"-2.00457E-23", "%G"},
+  {__LINE__, -2.005911883189058e+07,	"-2.00591E+07", "%G"},
+  {__LINE__, -2.006438312005722e-25,	"-2.006e-25", "%0.4g"},
+  {__LINE__, -2.017322171210280e+18,	"-2.01732E+18", "%+0G"},
+  {__LINE__, -2.017718635819594e-06,	"-2.01772e-06", "%5g"},
+  {__LINE__, -2.019187445568160e-12,	"-0.00", "%.2f"},
+  {__LINE__, -2.021022665608503e+25,	"-20210226656085028551501636.684", "%2.3f"},
+  {__LINE__, -2.022720393474145e+07,	"-2.02272E+07", "%#G"},
+  {__LINE__, -2.024506694471065e+23,	"-2.02451E+23", "%G"},
+  {__LINE__, -2.024884686553821e-15,	" -2e-15", "%7.g"},
+  {__LINE__, -2.027484636128966e-23,	"-2.0275E-23", "%.5G"},
+  {__LINE__, -2.028185530467237e+21,	"-2028185530467237374097.067", "%+4.3f"},
+  {__LINE__, -2.028388905566873e-09,	"-0.000000", "%f"},
+  {__LINE__, -2.029856507431584e-17,	"-2.02986E-17", "%G"},
+  {__LINE__, -2.029891733449167e+27,	"-2029891733449166846270372843.7190875", "%3.7f"},
+  {__LINE__, -2.031933616694469e+14,	"-2.031934E+14", "%#E"},
+  {__LINE__, -2.034011738471413e-10,	"-2.03401E-10", "%#G"},
+  {__LINE__, -2.036087355975756e+29,	"-203608735597575574161055556032.806635", "%+f"},
+  {__LINE__, -2.036355025137273e+09,	"-2.036355E+09", "%#.7G"},
+  {__LINE__, -2.038423730536878e+12,	"-2E+12", "%4.G"},
+  {__LINE__, -2.045209202278810e+23,	"-2.045209e+23", "%+#e"},
+  {__LINE__, -2.046794083517423e-06,	"-2.04679e-06", "%g"},
+  {__LINE__, -2.048042459678599e-19,	"-0.000000", "%f"},
+  {__LINE__, -2.050526462096153e+18,	"-2.05053e+18", "%+g"},
+  {__LINE__, -2.053583900249402e+13,	"-2.053584e+13", "%0.7g"},
+  {__LINE__, -2.054342100957522e-23,	"-2.05434E-23", "%#G"},
+  {__LINE__, -2.054793400141025e+11,	"-205479340014.1", "%+2.1f"},
+  {__LINE__, -2.059200689196498e-11,	"-0.000000", "%#f"},
+  {__LINE__, -2.060960692728114e-16,	"-0.000000", "%+f"},
+  {__LINE__, -2.061417528654300e-30,	"-2.06E-30", "%.3G"},
+  {__LINE__, -2.061513401198340e-29,	"-2.06151e-29", "%7g"},
+  {__LINE__, -2.061846698845984e+27,	"-2.061847E+27", "%E"},
+  {__LINE__, -2.063922242876789e-19,	"-2.06392e-19", "%#g"},
+  {__LINE__, -2.065359431805529e+03,	"-2065.359432", "%f"},
+  {__LINE__, -2.065529069992156e-04,	"-0.000206553", "%+G"},
+  {__LINE__, -2.066082546490980e-25,	"-2.06608e-25", "%5g"},
+  {__LINE__, -2.068394312095200e+17,	"-2.068394e+17", "%e"},
+  {__LINE__, -2.071024178556425e-10,	"-2.07102E-10", "%G"},
+  {__LINE__, -2.074401605950382e-22,	"-2.07e-22", "%1.3g"},
+  {__LINE__, -2.074731895144874e-26,	"-2.07473E-26", "%G"},
+  {__LINE__, -2.074895800882730e+18,	"-2074895800882730068.082083", "%+f"},
+  {__LINE__, -2.077336220500764e-30,	"-0", "%2.f"},
+  {__LINE__, -2.078067878561077e+09,	"-2.0781e+09", "%0.5g"},
+  {__LINE__, -2.080497889634533e+15,	"-2.080498E+15", "%4E"},
+  {__LINE__, -2.084717279367594e-21,	"-2.08472e-21", "%+g"},
+  {__LINE__, -2.087827915301948e+29,	"-2E+29", "%6.1G"},
+  {__LINE__, -2.090268686389680e+05,	"-2.090269e+05", "%1e"},
+  {__LINE__, -2.092036176589720e+24,	"-2.09204e+24", "%+g"},
+  {__LINE__, -2.093546373938615e-21,	"-2.093546e-21", "%#e"},
+  {__LINE__, -2.101302069316682e+18,	"-2.1013e+18", "%+7g"},
+  {__LINE__, -2.103463622286002e-13,	"-2.103464E-13", "%E"},
+  {__LINE__, -2.105622845016732e+06,	"-2105622.845017", "%1f"},
+  {__LINE__, -2.109999123037767e+28,	"-2.11E+28", "%.2E"},
+  {__LINE__, -2.110317013992166e+04,	"-21103.2", "%+g"},
+  {__LINE__, -2.112226142154618e+21,	"-2112226142154617569702.", "%#6.f"},
+  {__LINE__, -2.112519484486528e+06,	"-2.11252E+06", "%G"},
+  {__LINE__, -2.113439260812000e+23,	"-2E+23", "%1.G"},
+  {__LINE__, -2.113465893194608e-15,	"-2.1135E-15", "%.5G"},
+  {__LINE__, -2.113547784669409e+20,	"-2.1135e+20", "%2.5g"},
+  {__LINE__, -2.114146001321822e+28,	"-2.114146e+28", "%e"},
+  {__LINE__, -2.114509425574444e-30,	"  -0", "%4.f"},
+  {__LINE__, -2.114887421659561e-21,	"-0.000000", "%+f"},
+  {__LINE__, -2.121120215127601e+21,	"-2121120215127601404958.5683097", "%.7f"},
+  {__LINE__, -2.122555390665796e+06,	"-2E+06", "%0.G"},
+  {__LINE__, -2.123468430242052e-27,	"-0.000000", "%+f"},
+  {__LINE__, -2.123473598890635e+28,	"-2.12347e+28", "%+g"},
+  {__LINE__, -2.124328049748190e-04,	"-2.124328E-04", "%E"},
+  {__LINE__, -2.125633890999010e+28,	"-2E+28", "%+5.G"},
+  {__LINE__, -2.125697963566045e+21,	"-2.1257E+21", "%0G"},
+  {__LINE__, -2.127638109230109e+06,	"-2.12764e+06", "%+6g"},
+  {__LINE__, -2.128456114617786e+07,	"-2.128456E+07", "%E"},
+  {__LINE__, -2.128732742932824e-04,	"-2.128733E-04", "%#E"},
+  {__LINE__, -2.129654381588404e+27,	"-2129654381588404365999167566.7697564", "%+.7f"},
+  {__LINE__, -2.129792795009985e+20,	"-2.12979e+20", "%g"},
+  {__LINE__, -2.131026925664619e-20,	"-2e-20", "%.0e"},
+  {__LINE__, -2.132860730144188e-04,	"-0.0002", "%5.g"},
+  {__LINE__, -2.133620979309562e+06,	"-2e+06", "%3.e"},
+  {__LINE__, -2.133821423139120e-27,	"-2.13382E-27", "%.6G"},
+  {__LINE__, -2.134253401425940e-07,	"-0.000000", "%f"},
+  {__LINE__, -2.135469568156964e-29,	"-2.135470E-29", "%+7E"},
+  {__LINE__, -2.135723595288365e-25,	"-0.0", "%.1f"},
+  {__LINE__, -2.137642458920094e-09,	"-2.13764e-09", "%g"},
+  {__LINE__, -2.143412361116583e+12,	"-2.14341e+12", "%+g"},
+  {__LINE__, -2.144467087741129e-17,	"-2.14447e-17", "%+g"},
+  {__LINE__, -2.145726966596964e-11,	"-0.000000", "%2f"},
+  {__LINE__, -2.148318753042597e+08,	"-2.14832E+08", "%5G"},
+  {__LINE__, -2.149932310549644e-19,	"-2.14993e-19", "%g"},
+  {__LINE__, -2.150050917377646e-21,	" -0", "%3.f"},
+  {__LINE__, -2.150854313643430e-16,	"-0.000000", "%.6f"},
+  {__LINE__, -2.151071797121845e+00,	"-2.15107", "%+g"},
+  {__LINE__, -2.158728406865981e+14,	"-215872840686598.088666", "%7f"},
+  {__LINE__, -2.166062878011641e-23,	"-2.166063e-23", "%e"},
+  {__LINE__, -2.167045002060684e+12,	"-2.167045E+12", "%E"},
+  {__LINE__, -2.173752581051530e+20,	"-217375258105153035259.604621", "%f"},
+  {__LINE__, -2.175599129057555e+24,	"-2.175599E+24", "%E"},
+  {__LINE__, -2.176564454093042e-02,	"-0.0217656", "%+G"},
+  {__LINE__, -2.181270774327071e-12,	"-0.000000", "%#1f"},
+  {__LINE__, -2.184404769844158e-09,	"-2.2E-09", "%+.2G"},
+  {__LINE__, -2.184881476334310e-07,	"-2.18488e-07", "%g"},
+  {__LINE__, -2.189197211449684e-11,	"-2E-11", "%.0G"},
+  {__LINE__, -2.189451286805190e+20,	"-218945128680519029984", "%3.f"},
+  {__LINE__, -2.190642494146884e-27,	" -0.", "%#4.f"},
+  {__LINE__, -2.194727956725854e+06,	"-2.19E+06", "%.3G"},
+  {__LINE__, -2.196145868303877e+11,	"-219614586830.387726", "%+5f"},
+  {__LINE__, -2.196397972262690e-16,	"-0.000000", "%3f"},
+  {__LINE__, -2.202692843474668e-01,	"-2.203e-01", "%.3e"},
+  {__LINE__, -2.204528684782451e-21,	"-2.20453E-21", "%G"},
+  {__LINE__, -2.214926838821340e-16,	"-2e-16", "%+2.g"},
+  {__LINE__, -2.215558986352773e+18,	"-2215558986352773374", "%0.f"},
+  {__LINE__, -2.216976693056186e+27,	"-2216976693056186498154147557.215765", "%f"},
+  {__LINE__, -2.217348422793322e+13,	"-2.21735E+13", "%6G"},
+  {__LINE__, -2.217732695583920e-07,	"-0", "%.0f"},
+  {__LINE__, -2.221185494767834e-14,	"-2.22119e-14", "%g"},
+  {__LINE__, -2.224557193699609e-16,	"-2.224557E-16", "%E"},
+  {__LINE__, -2.227417758704028e-18,	"-0.000000", "%0f"},
+  {__LINE__, -2.231261655673006e-30,	"-2.231262E-30", "%E"},
+  {__LINE__, -2.233081938836160e+21,	"-2233081938836160240668.960", "%+6.3f"},
+  {__LINE__, -2.233158918439853e+05,	"-223316", "%2G"},
+  {__LINE__, -2.233802298007898e-30,	"-2.2338E-30", "%2G"},
+  {__LINE__, -2.233864858404732e+17,	"-223386485840473181.241350", "%f"},
+  {__LINE__, -2.241242805107749e+14,	"-2.24124E+14", "%G"},
+  {__LINE__, -2.244555498855249e+25,	"-2.24456E+25", "%#G"},
+  {__LINE__, -2.248170665127481e-07,	"-2.248171E-07", "%E"},
+  {__LINE__, -2.252558275567388e-13,	"-2.25256e-13", "%g"},
+  {__LINE__, -2.256190083496001e+13,	"-22561900834960.0136398", "%7.7f"},
+  {__LINE__, -2.259851596715945e+27,	"-2.259852e+27", "%e"},
+  {__LINE__, -2.260461480001174e-21,	"-0.000000", "%f"},
+  {__LINE__, -2.264128628428577e+22,	"-2.26413e+22", "%1g"},
+  {__LINE__, -2.265914518399595e-04,	"-0.000226591", "%G"},
+  {__LINE__, -2.266251557092826e+23,	"-2.26625e+23", "%g"},
+  {__LINE__, -2.268592252572450e+19,	"-2.268592e+19", "%2.6e"},
+  {__LINE__, -2.268597523847349e+11,	"-2.2686e+11", "%g"},
+  {__LINE__, -2.268963106935546e+05,	"-226896", "%+g"},
+  {__LINE__, -2.272527876808919e-24,	"-0.000000", "%#f"},
+  {__LINE__, -2.273366440479073e+02,	"-227.337", "%g"},
+  {__LINE__, -2.277858038556191e+25,	"-2.28E+25", "%0.3G"},
+  {__LINE__, -2.282019915623415e+25,	"-2E+25", "%5.E"},
+  {__LINE__, -2.283333247435650e-27,	"  -0", "%4.f"},
+  {__LINE__, -2.285230610829355e+23,	"-2E+23", "%2.G"},
+  {__LINE__, -2.290900253402985e+23,	"-2.2909E+23", "%G"},
+  {__LINE__, -2.293266953268186e+08,	"-2.29327e+08", "%g"},
+  {__LINE__, -2.293489603164786e+23,	"-229348960316478578391752.3076525", "%4.7f"},
+  {__LINE__, -2.294434667605481e+15,	"-2.2944E+15", "%.5G"},
+  {__LINE__, -2.296607768466765e+21,	"-2.29661E+21", "%G"},
+  {__LINE__, -2.297449967994012e+14,	"-229744996799401.23542", "%+.5f"},
+  {__LINE__, -2.301162556466583e-01,	"-0.230116", "%+#2g"},
+  {__LINE__, -2.301676246374004e+05,	"-230168.", "%#g"},
+  {__LINE__, -2.301976724487835e-01,	"-0.230198", "%5G"},
+  {__LINE__, -2.303269770571222e-15,	"-2.303270e-15", "%.6e"},
+  {__LINE__, -2.306451480495636e+23,	"-2.30645E+23", "%G"},
+  {__LINE__, -2.307659351219690e-17,	"-0.000000", "%+3f"},
+  {__LINE__, -2.309009762339430e+16,	"-2.30901E+16", "%G"},
+  {__LINE__, -2.309261751862100e+06,	"-2309261.751862", "%+f"},
+  {__LINE__, -2.309504876918634e-26,	" -2E-26", "%7.E"},
+  {__LINE__, -2.310910348147804e-26,	"-2e-26", "%5.g"},
+  {__LINE__, -2.317173552252235e+05,	"-231717.4", "%.7g"},
+  {__LINE__, -2.319517289618469e-23,	"-2.31952E-23", "%+G"},
+  {__LINE__, -2.320103195142527e+08,	"-2.320103E+08", "%+E"},
+  {__LINE__, -2.323523032125633e+24,	"-2323523032125633491773442.07419", "%.5f"},
+  {__LINE__, -2.326279126614399e-16,	"-0.000000", "%f"},
+  {__LINE__, -2.331393688620925e-09,	"-2.33139e-09", "%#g"},
+  {__LINE__, -2.334233527512469e+01,	"   -23", "%6.0f"},
+  {__LINE__, -2.337418834112767e+24,	" -2E+24", "%7.E"},
+  {__LINE__, -2.339455293612118e+12,	"-2339455293612.1", "%+.1f"},
+  {__LINE__, -2.341930318143367e-18,	"-2.E-18", "%#4.E"},
+  {__LINE__, -2.346107614950921e-17,	"-0.00000", "%+2.5f"},
+  {__LINE__, -2.348356578807972e+23,	"-2.34836e+23", "%g"},
+  {__LINE__, -2.351485855138244e+19,	"-2.351486e+19", "%+e"},
+  {__LINE__, -2.362101647639198e-15,	"-2.36210e-15", "%#g"},
+  {__LINE__, -2.369743873030115e+08,	"-2e+08", "%.1g"},
+  {__LINE__, -2.371658164739356e+25,	"-23716581647393559784120498.079574", "%f"},
+  {__LINE__, -2.372427847607163e+28,	"-2.37243E+28", "%G"},
+  {__LINE__, -2.375465465294647e+11,	"-2.375465e+11", "%e"},
+  {__LINE__, -2.377128971572195e-18,	"-0.0", "%1.1f"},
+  {__LINE__, -2.380322448568089e-13,	"-2.38032E-13", "%+#0G"},
+  {__LINE__, -2.385960728264882e+26,	"-2E+26", "%.0E"},
+  {__LINE__, -2.387345744004747e+00,	"-2.38735", "%G"},
+  {__LINE__, -2.390480023300201e+25,	"-2.39048e+25", "%g"},
+  {__LINE__, -2.395420431930886e+23,	"-2E+23", "%2.E"},
+  {__LINE__, -2.401144663870969e-10,	"-2.e-10", "%#6.g"},
+  {__LINE__, -2.402787441215039e-08,	"-2.40279e-08", "%g"},
+  {__LINE__, -2.402990830425278e+08,	"-2.40299E+08", "%G"},
+  {__LINE__, -2.404213682932215e+08,	"-2.40421e+08", "%2g"},
+  {__LINE__, -2.409385592298822e+21,	"-2409385592298821876511.283335", "%7f"},
+  {__LINE__, -2.410798267658614e+13,	"-2.4108e+13", "%+g"},
+  {__LINE__, -2.413180068271811e-24,	"-0.000000", "%+f"},
+  {__LINE__, -2.413268457113495e+26,	"-2.41327E+26", "%3.6G"},
+  {__LINE__, -2.415341832206007e-13,	"-0.000000", "%+f"},
+  {__LINE__, -2.422519577068670e-08,	"-0.0000000", "%.7f"},
+  {__LINE__, -2.422533651282808e+20,	"-2.42253E+20", "%#G"},
+  {__LINE__, -2.422795006880671e+17,	"-2.4228e+17", "%g"},
+  {__LINE__, -2.423483330202008e+20,	"-2.42348e+20", "%g"},
+  {__LINE__, -2.431756009640369e-04,	"-0.000243176", "%+#3g"},
+  {__LINE__, -2.431878622534173e-05,	"-0.000024", "%f"},
+  {__LINE__, -2.432012113077180e+24,	"-2.43201e+24", "%g"},
+  {__LINE__, -2.433843704470487e+07,	"-24338437", "%4.f"},
+  {__LINE__, -2.435475755031956e+11,	"-2.435476E+11", "%1E"},
+  {__LINE__, -2.438081888695437e-13,	"-0.000000", "%f"},
+  {__LINE__, -2.438334590462860e+10,	"-2.4E+10", "%5.2G"},
+  {__LINE__, -2.440223135334059e+17,	"-2.44022e+17", "%g"},
+  {__LINE__, -2.444107281115317e-21,	"-2.44411e-21", "%+g"},
+  {__LINE__, -2.444582273206171e-02,	"  -0.02", "%7.G"},
+  {__LINE__, -2.445234676352794e+23,	"-2.44523e+23", "%#g"},
+  {__LINE__, -2.449185020984714e+08,	"-2.E+08", "%#2.G"},
+  {__LINE__, -2.450646640466020e+22,	"-2.45065E+22", "%5G"},
+  {__LINE__, -2.456840850262473e+13,	"-24568408502625", "%0.f"},
+  {__LINE__, -2.464466865714499e-10,	"-2e-10", "%6.g"},
+  {__LINE__, -2.466022088999151e+27,	"-2.46602E+27", "%G"},
+  {__LINE__, -2.484398113119779e-04,	"-2.484398E-04", "%E"},
+  {__LINE__, -2.484591850456328e+23,	"-248459185045632846566832.085955", "%+f"},
+  {__LINE__, -2.488166252162446e-11,	"-2.5E-11", "%4.2G"},
+  {__LINE__, -2.493507313049390e+24,	"-2.49E+24", "%4.3G"},
+  {__LINE__, -2.500280281988428e+28,	"-2.5E+28", "%.4G"},
+  {__LINE__, -2.500373956445372e-07,	"-2.50037e-07", "%g"},
+  {__LINE__, -2.505566434769299e-12,	"-2.5E-12", "%+#0.2G"},
+  {__LINE__, -2.508215917020758e+05,	"-2.508216e+05", "%5e"},
+  {__LINE__, -2.519368094680315e-29,	"-2.51937e-29", "%#0g"},
+  {__LINE__, -2.522266530587753e-11,	"-2.52227e-11", "%+g"},
+  {__LINE__, -2.534492886372514e-06,	"-2.53449E-06", "%0G"},
+  {__LINE__, -2.534617610955074e-02,	"-0.03", "%0.2f"},
+  {__LINE__, -2.540551642835634e+26,	"-3E+26", "%4.G"},
+  {__LINE__, -2.548210731830516e-26,	"-0.000", "%2.3f"},
+  {__LINE__, -2.558868082397931e-11,	"-3E-11", "%2.E"},
+  {__LINE__, -2.560062512991052e+11,	"-2.56006E+11", "%+G"},
+  {__LINE__, -2.561274682814428e-05,	"-0.000026", "%f"},
+  {__LINE__, -2.563424949397357e-02,	"    -0", "%6.f"},
+  {__LINE__, -2.577010939931465e+17,	"-2.57701E+17", "%G"},
+  {__LINE__, -2.578224879294822e+10,	"-3E+10", "%+4.1G"},
+  {__LINE__, -2.585655636750244e+13,	"-2.585656e+13", "%+0.7g"},
+  {__LINE__, -2.585657986834408e+14,	"-2.5857e+14", "%3.5g"},
+  {__LINE__, -2.586728929368101e+02,	"-258.673", "%+g"},
+  {__LINE__, -2.591293023229468e+06,	"-2591293.0232295", "%2.7f"},
+  {__LINE__, -2.592454222603538e-06,	"-2.59245E-06", "%G"},
+  {__LINE__, -2.599399905869649e+02,	"-259.939991", "%f"},
+  {__LINE__, -2.605382860307596e+12,	"-2.60538E+12", "%2G"},
+  {__LINE__, -2.607507689402762e-01,	"-0.260751", "%#.6g"},
+  {__LINE__, -2.612933252582967e+15,	"-2.61293e+15", "%g"},
+  {__LINE__, -2.614337505491483e-14,	"-2.61434E-14", "%.6G"},
+  {__LINE__, -2.618302263333671e+14,	"-2.62e+14", "%3.3g"},
+  {__LINE__, -2.622998533972296e+00,	"-3.", "%#0.g"},
+  {__LINE__, -2.623348319869643e-15,	"-2.62335E-15", "%#G"},
+  {__LINE__, -2.626703132693163e+23,	"-3E+23", "%+6.E"},
+  {__LINE__, -2.629610853765779e+25,	"-2.62961E+25", "%+#G"},
+  {__LINE__, -2.632993880472784e+26,	"-2.63299E+26", "%G"},
+  {__LINE__, -2.635651112327873e-20,	"-2.63565E-20", "%1G"},
+  {__LINE__, -2.636003980473492e-23,	"-2.636E-23", "%G"},
+  {__LINE__, -2.639316453244009e+10,	"-26393164532.440094", "%#f"},
+  {__LINE__, -2.640517223417942e-28,	"-2.641e-28", "%.3e"},
+  {__LINE__, -2.640625797147664e-22,	"-2.640626E-22", "%E"},
+  {__LINE__, -2.644401262524378e-12,	" -0.000", "%7.3f"},
+  {__LINE__, -2.651033203243637e-14,	"-2.651033e-14", "%+e"},
+  {__LINE__, -2.652386470126594e-24,	"-2.652386E-24", "%E"},
+  {__LINE__, -2.654281018623631e-12,	"-0.00000", "%6.5f"},
+  {__LINE__, -2.655529742118827e+02,	"-265.552974", "%f"},
+  {__LINE__, -2.658550833241620e+22,	"-26585508332416196708436.473273", "%+f"},
+  {__LINE__, -2.660515890519100e+08,	"-2.660516E+08", "%E"},
+  {__LINE__, -2.665025749266086e-24,	"-2.66503E-24", "%G"},
+  {__LINE__, -2.666117105643095e-20,	"-2.66612e-20", "%g"},
+  {__LINE__, -2.667051347741259e+11,	"-3e+11", "%6.g"},
+  {__LINE__, -2.667207607243375e+04,	"-26672.076072", "%+#f"},
+  {__LINE__, -2.667631877167590e+26,	"-2.667632E+26", "%E"},
+  {__LINE__, -2.673817942962878e+13,	"-2.673818e+13", "%+2.6e"},
+  {__LINE__, -2.674972907853507e+20,	"-2.674973E+20", "%E"},
+  {__LINE__, -2.675830887404867e+14,	"-2.675831E+14", "%E"},
+  {__LINE__, -2.682749918168908e+26,	"-2.682750E+26", "%E"},
+  {__LINE__, -2.689222801942679e-03,	"-0.0027", "%7.2G"},
+  {__LINE__, -2.692245629411156e+25,	"-2.69225e+25", "%g"},
+  {__LINE__, -2.692606702464273e+11,	"-2.69261e+11", "%g"},
+  {__LINE__, -2.693070822061136e-27,	"-2.69307e-27", "%+g"},
+  {__LINE__, -2.694415515655336e-30,	"-3E-30", "%+3.0E"},
+  {__LINE__, -2.694770057384739e+15,	"-2.69477e+15", "%g"},
+  {__LINE__, -2.699998392329361e+01,	"-27", "%+.2g"},
+  {__LINE__, -2.700151952281511e+23,	"-270015195228151050343968.", "%+#5.f"},
+  {__LINE__, -2.707398527302841e-08,	"-2.70740e-08", "%+#3g"},
+  {__LINE__, -2.711404950850030e-21,	"-2.71E-21", "%.2E"},
+  {__LINE__, -2.714057739024281e-10,	"-2.714e-10", "%.4g"},
+  {__LINE__, -2.717657632815414e-10,	"-2.71766e-10", "%g"},
+  {__LINE__, -2.720875786430592e-09,	"-2.7E-09", "%6.2G"},
+  {__LINE__, -2.725886730997891e+19,	"-2.72589e+19", "%g"},
+  {__LINE__, -2.726089169748676e-09,	"-2.72609E-09", "%+G"},
+  {__LINE__, -2.732907572038661e-30,	"-2.73291E-30", "%G"},
+  {__LINE__, -2.737918050958789e+11,	"-3e+11", "%1.g"},
+  {__LINE__, -2.739024251198484e-18,	"-2.73902e-18", "%+g"},
+  {__LINE__, -2.742646144452305e+13,	"-2.74265e+13", "%g"},
+  {__LINE__, -2.742911865386719e+06,	"-3E+06", "%+5.G"},
+  {__LINE__, -2.759159275123811e-30,	"-0.000000", "%+f"},
+  {__LINE__, -2.759794813930001e-21,	"-2.75979e-21", "%+g"},
+  {__LINE__, -2.763243077558348e+20,	"-2.7632E+20", "%+0.4E"},
+  {__LINE__, -2.770348477810209e-14,	"-0.000000", "%2f"},
+  {__LINE__, -2.776074766292453e+05,	"-277607", "%g"},
+  {__LINE__, -2.776610811432007e-07,	"-2.77661E-07", "%6G"},
+  {__LINE__, -2.778673793270678e+23,	"-3E+23", "%+4.E"},
+  {__LINE__, -2.782405168708350e+08,	"-278240516.87084", "%.5f"},
+  {__LINE__, -2.783316149365198e-09,	"-3E-09", "%5.0G"},
+  {__LINE__, -2.785436703085409e-27,	"-2.78544E-27", "%#G"},
+  {__LINE__, -2.787479051660640e+21,	"-2.78748e+21", "%g"},
+  {__LINE__, -2.789445406042450e-03,	"-0.002789", "%+f"},
+  {__LINE__, -2.791104581836077e+05,	"-279110.4581836", "%+7.7f"},
+  {__LINE__, -2.802078617775784e+04,	"-28020.786", "%0.3f"},
+  {__LINE__, -2.804954315579055e+20,	"-2.80495E+20", "%G"},
+  {__LINE__, -2.806575341862696e-05,	"-2.80658E-05", "%G"},
+  {__LINE__, -2.807769556900402e-06,	"-0.000003", "%+#f"},
+  {__LINE__, -2.808882056357941e-12,	"-0.0", "%.1f"},
+  {__LINE__, -2.809386677339924e+10,	"-2.8094E+10", "%6.5G"},
+  {__LINE__, -2.818404311437694e+19,	"-3E+19", "%6.G"},
+  {__LINE__, -2.819463285551660e+01,	"-28.1946", "%+G"},
+  {__LINE__, -2.821428853207724e-16,	"-3e-16", "%6.g"},
+  {__LINE__, -2.824452750788444e+07,	"-3e+07", "%+2.g"},
+  {__LINE__, -2.825430381094971e+28,	"-3e+28", "%+.0e"},
+  {__LINE__, -2.830010928384944e-17,	"-0", "%.0f"},
+  {__LINE__, -2.832505114479680e-09,	"-0.000000", "%f"},
+  {__LINE__, -2.833246604950796e+13,	"-2.83325E+13", "%G"},
+  {__LINE__, -2.833274073265017e+13,	"-28332740732650.174564", "%f"},
+  {__LINE__, -2.835842581787797e+07,	"-2.83584E+07", "%2G"},
+  {__LINE__, -2.839758384681983e-07,	"-2.83976E-07", "%.6G"},
+  {__LINE__, -2.841077022753766e-09,	"-3E-09", "%0.1G"},
+  {__LINE__, -2.845307294930682e+00,	"-2.845307e+00", "%+1e"},
+  {__LINE__, -2.847420163874243e+19,	"-2.8e+19", "%1.2g"},
+  {__LINE__, -2.848133715109881e-25,	"-2.848134E-25", "%E"},
+  {__LINE__, -2.850208101288058e-06,	"-2.8502E-06", "%+5.4E"},
+  {__LINE__, -2.853666525870413e+04,	"-28536.665259", "%f"},
+  {__LINE__, -2.855661543202034e+21,	"-2.85566e+21", "%g"},
+  {__LINE__, -2.859528889324159e-08,	"-2.859529e-08", "%3e"},
+  {__LINE__, -2.860545310690251e+29,	"-3e+29", "%.1g"},
+  {__LINE__, -2.863576633666884e-14,	"-2.863577e-14", "%+5e"},
+  {__LINE__, -2.864115740396321e-14,	"-2.86412e-14", "%g"},
+  {__LINE__, -2.864481979037153e+20,	"-2.86E+20", "%3.3G"},
+  {__LINE__, -2.867582970177984e-18,	"-0.000000", "%f"},
+  {__LINE__, -2.868237707901564e+25,	"-3E+25", "%6.E"},
+  {__LINE__, -2.871741071402520e+13,	"-3e+13", "%.1g"},
+  {__LINE__, -2.873724610073364e+18,	"-2873724610073364438.278531", "%+#f"},
+  {__LINE__, -2.876433859770866e-25,	"-2.87643e-25", "%g"},
+  {__LINE__, -2.877458587075737e-08,	"-2.877E-08", "%+.4G"},
+  {__LINE__, -2.883349842927101e+24,	"-2.883350E+24", "%2E"},
+  {__LINE__, -2.883749925642885e+09,	"-2.883750e+09", "%e"},
+  {__LINE__, -2.883773835633003e-17,	"-0.000000", "%+f"},
+  {__LINE__, -2.890389090491409e+24,	"-2890389090491409262995148.310438", "%#1f"},
+  {__LINE__, -2.900848552225810e-11,	"-0.000000", "%+f"},
+  {__LINE__, -2.911942123176400e+25,	"-29119421231764004431852300", "%0.f"},
+  {__LINE__, -2.912904462180751e-18,	"-2.9129E-18", "%6G"},
+  {__LINE__, -2.917717875075651e+26,	"-3e+26", "%0.e"},
+  {__LINE__, -2.922293201084093e-26,	"-2.922293E-26", "%E"},
+  {__LINE__, -2.925070319932451e-30,	"-0.000000", "%f"},
+  {__LINE__, -2.926558572870874e+15,	"-2.926559E+15", "%E"},
+  {__LINE__, -2.928781435877896e+26,	"-2.928781e+26", "%+e"},
+  {__LINE__, -2.930178318110376e+28,	"-2.930178E+28", "%E"},
+  {__LINE__, -2.930984661925819e+05,	"-293098.5", "%.7G"},
+  {__LINE__, -2.932762424932762e-08,	"-0.000000", "%#f"},
+  {__LINE__, -2.933415597492494e+10,	"-29334155974.924943", "%+#2f"},
+  {__LINE__, -2.933564314850986e+29,	"-2.93356E+29", "%7G"},
+  {__LINE__, -2.943224907893795e+10,	"-2.943225E+10", "%+7E"},
+  {__LINE__, -2.945311540471221e+19,	"-2.94531E+19", "%#G"},
+  {__LINE__, -2.945812356522847e+15,	"-2.94581e+15", "%+g"},
+  {__LINE__, -2.945836999630957e+00,	"-2.945837E+00", "%E"},
+  {__LINE__, -2.947798782726622e-01,	"-0.29478", "%+g"},
+  {__LINE__, -2.948958405827917e+18,	"-2.94896e+18", "%g"},
+  {__LINE__, -2.949790871798059e-11,	"-2.94979E-11", "%G"},
+  {__LINE__, -2.950347806125225e-12,	"-2.95035e-12", "%g"},
+  {__LINE__, -2.952781884599368e-29,	"-2.952782E-29", "%+E"},
+  {__LINE__, -2.956801341442716e+06,	"-2.9568E+06", "%G"},
+  {__LINE__, -2.957469310356540e-07,	"-0.000", "%1.3f"},
+  {__LINE__, -2.960464869534870e-23,	"-2.96046E-23", "%G"},
+  {__LINE__, -2.962339381825446e-07,	"-0", "%1.f"},
+  {__LINE__, -2.971013180028710e+22,	"-2.971e+22", "%3.5g"},
+  {__LINE__, -2.975167862441254e+07,	"-2.97517e+07", "%g"},
+  {__LINE__, -2.976018424339993e+16,	"-2.976018e+16", "%3e"},
+  {__LINE__, -2.979173094835454e+29,	"-2.97917E+29", "%G"},
+  {__LINE__, -2.983135249987541e-03,	"-0.00298314", "%+G"},
+  {__LINE__, -2.985142444917919e-24,	"-2.985142E-24", "%+#7E"},
+  {__LINE__, -2.988680953635159e-14,	"-0.0000000", "%2.7f"},
+  {__LINE__, -2.989629778079379e+04,	"-29896.297781", "%f"},
+  {__LINE__, -2.991274275137276e+19,	"-29912742751372762839.423558", "%+4f"},
+  {__LINE__, -2.991286396006024e-06,	"-2.99129e-06", "%4g"},
+  {__LINE__, -2.993310397844811e+04,	"-2.993310E+04", "%3.6E"},
+  {__LINE__, -2.994669852410861e-29,	"-2.99467E-29", "%G"},
+  {__LINE__, -2.996082093034831e+27,	"-2.996082e+27", "%1e"},
+  {__LINE__, -2.999783904575110e+16,	"-2.999784E+16", "%#E"},
+  {__LINE__, -3.012019221956988e+25,	"-3.012019E+25", "%E"},
+  {__LINE__, -3.014211917706622e-25,	"-0.000000", "%+f"},
+  {__LINE__, -3.015149723683428e-19,	"-3.01515E-19", "%G"},
+  {__LINE__, -3.022158478004638e-19,	"-3.02216e-19", "%6g"},
+  {__LINE__, -3.022825518373900e-12,	"-3.0228E-12", "%+.4E"},
+  {__LINE__, -3.025108924057340e-19,	"-0.000000", "%f"},
+  {__LINE__, -3.026316824631967e+24,	"-3026316824631966717618070.106255", "%1f"},
+  {__LINE__, -3.033074643529623e-13,	"-3.03307e-13", "%g"},
+  {__LINE__, -3.035292960731141e+24,	"-3035292960731141409524980.190326", "%f"},
+  {__LINE__, -3.043291272956732e-13,	"-3.04329e-13", "%#g"},
+  {__LINE__, -3.045216723973715e-23,	"-3.045e-23", "%.4g"},
+  {__LINE__, -3.047140976048835e+09,	"-3.04714E+09", "%3.5E"},
+  {__LINE__, -3.047680278470886e+09,	"-3.047680E+09", "%#E"},
+  {__LINE__, -3.048465807963461e+05,	"-304847", "%g"},
+  {__LINE__, -3.050904753556756e+22,	"-3.0509E+22", "%G"},
+  {__LINE__, -3.052845748999047e-13,	"-3.05285e-13", "%g"},
+  {__LINE__, -3.053395231883620e-06,	"-3E-06", "%2.G"},
+  {__LINE__, -3.054894203375445e-28,	"-3e-28", "%2.g"},
+  {__LINE__, -3.055080347760755e-13,	"-0", "%2.f"},
+  {__LINE__, -3.055513037393624e-29,	"-3e-29", "%3.g"},
+  {__LINE__, -3.056198778208295e-06,	"-3.0562e-06", "%g"},
+  {__LINE__, -3.057813660266980e-21,	"-3E-21", "%1.G"},
+  {__LINE__, -3.059687036330998e-11,	"-3.1E-11", "%#2.2G"},
+  {__LINE__, -3.061450385559094e-10,	"-3.06145E-10", "%G"},
+  {__LINE__, -3.066605713361383e-27,	"-0.000000", "%f"},
+  {__LINE__, -3.071590110813156e+22,	"-3.07159E+22", "%G"},
+  {__LINE__, -3.073253864426931e+26,	"-3.0733E+26", "%.5G"},
+  {__LINE__, -3.078998328596940e+07,	"-3.079e+07", "%5.4g"},
+  {__LINE__, -3.082733887951920e+06,	"-3.082734e+06", "%+6e"},
+  {__LINE__, -3.084365358064710e+24,	"-3.084365E+24", "%#E"},
+  {__LINE__, -3.086948022123716e+25,	"-30869480221237162176350921.072299", "%+f"},
+  {__LINE__, -3.088200214218024e-10,	"-0", "%0.f"},
+  {__LINE__, -3.093442983942874e+08,	"-309344298.394287", "%f"},
+  {__LINE__, -3.103573455403534e-09,	"-3.103573E-09", "%#E"},
+  {__LINE__, -3.109178443120997e+07,	"-31091784.431210", "%f"},
+  {__LINE__, -3.111494549914917e+28,	"-3e+28", "%0.g"},
+  {__LINE__, -3.113384020517480e-17,	"    -0", "%+6.f"},
+  {__LINE__, -3.121622779718055e+14,	"-312162277971805.491", "%+.3f"},
+  {__LINE__, -3.122780443843900e-01,	"-0.312278", "%#g"},
+  {__LINE__, -3.122952438335638e-25,	"-3.122952E-25", "%E"},
+  {__LINE__, -3.128970339463168e-18,	"-3e-18", "%3.g"},
+  {__LINE__, -3.130862507719335e+10,	"-3.130863e+10", "%3e"},
+  {__LINE__, -3.145960838955379e+03,	"-3145.96", "%g"},
+  {__LINE__, -3.149362645138929e+21,	"-3.14936e+21", "%g"},
+  {__LINE__, -3.150697168664913e+26,	"-315069716866491322804222363.629378", "%+f"},
+  {__LINE__, -3.157946785041287e+05,	"-3.1579e+05", "%.4e"},
+  {__LINE__, -3.158347006986809e-02,	"-3.E-02", "%#.0E"},
+  {__LINE__, -3.159542871923388e+07,	"-31595429", "%2.f"},
+  {__LINE__, -3.169997512351985e+15,	"-3.169998E+15", "%6.7G"},
+  {__LINE__, -3.170971776544746e+07,	"-31709717.765447", "%f"},
+  {__LINE__, -3.173246079104466e+19,	"-3.173246E+19", "%1E"},
+  {__LINE__, -3.173581228658553e-02,	"-0.03", "%+0.G"},
+  {__LINE__, -3.187598864929850e-07,	"-3.18760E-07", "%#G"},
+  {__LINE__, -3.190525302270244e+08,	"-3.190525e+08", "%+0.7g"},
+  {__LINE__, -3.191879884186422e+19,	"-3.19E+19", "%.2E"},
+  {__LINE__, -3.197292604744926e+02,	"-3.197293e+02", "%+e"},
+  {__LINE__, -3.203713337688838e-12,	"-3.20371E-12", "%6G"},
+  {__LINE__, -3.204416889544914e-18,	"-0.000000", "%+f"},
+  {__LINE__, -3.204494471917096e+09,	"-3.20449e+09", "%g"},
+  {__LINE__, -3.211933195516720e+11,	"-3.21193E+11", "%G"},
+  {__LINE__, -3.214544021431917e-24,	"-0.000000", "%1f"},
+  {__LINE__, -3.215501229487004e-07,	"-3e-07", "%3.e"},
+  {__LINE__, -3.232157492322707e-13,	"-3.E-13", "%+#5.G"},
+  {__LINE__, -3.239074974455177e-05,	"-3.239e-05", "%2.4g"},
+  {__LINE__, -3.243083730801156e-24,	"-3.243084e-24", "%#e"},
+  {__LINE__, -3.243128583394124e+07,	"-32431285.8339", "%6.4f"},
+  {__LINE__, -3.247997999770571e-08,	"-3e-08", "%5.e"},
+  {__LINE__, -3.258251054563991e-15,	"-3.2583E-15", "%.5G"},
+  {__LINE__, -3.259499053187446e+07,	"-3.2595E+07", "%5.6G"},
+  {__LINE__, -3.261907782031174e+20,	"-3.3e+20", "%.2g"},
+  {__LINE__, -3.263979380855122e+29,	"-3.26398E+29", "%G"},
+  {__LINE__, -3.264166546402073e+06,	"-3.26417E+06", "%5G"},
+  {__LINE__, -3.269357648926951e+01,	"-3.E+01", "%#5.G"},
+  {__LINE__, -3.273523287028019e-30,	"-3.27352e-30", "%g"},
+  {__LINE__, -3.274464331526264e-14,	"-3e-14", "%.0g"},
+  {__LINE__, -3.276647049958546e+05,	"-327664.7", "%+.1f"},
+  {__LINE__, -3.276853612008326e-04,	"-3.276854e-04", "%e"},
+  {__LINE__, -3.288077788905925e+17,	"-3.28808e+17", "%g"},
+  {__LINE__, -3.292054327509010e+21,	"-3.29205e+21", "%+g"},
+  {__LINE__, -3.292086868337041e-16,	"     -0", "%7.f"},
+  {__LINE__, -3.299368070005327e-17,	"-3E-17", "%5.G"},
+  {__LINE__, -3.307165537474566e-30,	"-3e-30", "%+2.g"},
+  {__LINE__, -3.310556325973673e-17,	"-3.31056E-17", "%G"},
+  {__LINE__, -3.315407318453138e-09,	"-3.315407e-09", "%+#.6e"},
+  {__LINE__, -3.318402800998018e-09,	"-3.3184E-09", "%+G"},
+  {__LINE__, -3.324277622889107e-04,	"-0.000332428", "%G"},
+  {__LINE__, -3.326372457131185e+14,	"-3.326372e+14", "%0e"},
+  {__LINE__, -3.333300611287597e+18,	"-3.3E+18", "%4.2G"},
+  {__LINE__, -3.333608976277018e-25,	"-3.33361e-25", "%g"},
+  {__LINE__, -3.333613056182724e-24,	"-3.33361e-24", "%.5e"},
+  {__LINE__, -3.338505874378410e-26,	"-0.00000", "%.5f"},
+  {__LINE__, -3.339838772519661e+24,	"-3.3398E+24", "%0.5G"},
+  {__LINE__, -3.354802735583258e-27,	"-3.3548E-27", "%G"},
+  {__LINE__, -3.356542080644329e+15,	"-3356542080644329.129058", "%#f"},
+  {__LINE__, -3.360027692463026e-29,	"-3.36003e-29", "%+g"},
+  {__LINE__, -3.361845657814323e+06,	"-3361845.657814", "%f"},
+  {__LINE__, -3.363135493765816e-12,	"   -0", "%5.f"},
+  {__LINE__, -3.367383112102258e+19,	"-33673831121022579360.158034", "%f"},
+  {__LINE__, -3.376798505037497e+03,	"-3376.8", "%+3G"},
+  {__LINE__, -3.388170639372559e+09,	"-3.388171e+09", "%+e"},
+  {__LINE__, -3.397304185715499e-12,	"-3.397304e-12", "%+e"},
+  {__LINE__, -3.401559374016378e-13,	"-3.40156e-13", "%g"},
+  {__LINE__, -3.402651870178825e+21,	"-3.40265e+21", "%+g"},
+  {__LINE__, -3.410491213537530e+12,	"-3.41049E+12", "%G"},
+  {__LINE__, -3.411695570460075e-01,	"-3.411696e-01", "%e"},
+  {__LINE__, -3.417311435719220e+29,	"-3.4E+29", "%3.1E"},
+  {__LINE__, -3.417581063208165e-23,	"  -0", "%+4.f"},
+  {__LINE__, -3.424005615113663e-28,	"-0.000000", "%f"},
+  {__LINE__, -3.424793585094130e-12,	"-0.000000", "%f"},
+  {__LINE__, -3.434733077762304e-05,	"-3.43473e-05", "%g"},
+  {__LINE__, -3.436384988494743e+08,	"-3.43638E+08", "%G"},
+  {__LINE__, -3.441082995163884e-21,	"-0.000000", "%f"},
+  {__LINE__, -3.442868661576827e-23,	"-3.442869e-23", "%#.7g"},
+  {__LINE__, -3.444337521046186e+13,	"-3.44434E+13", "%#G"},
+  {__LINE__, -3.448230173418967e-28,	"-3.44823E-28", "%#G"},
+  {__LINE__, -3.448523828225326e-21,	"-3.4485e-21", "%.4e"},
+  {__LINE__, -3.449876796754720e-07,	"-3.44988e-07", "%g"},
+  {__LINE__, -3.450163790411588e+25,	"-34501637904115876054333966.749255", "%2f"},
+  {__LINE__, -3.450224454406567e-26,	"-3.450224E-26", "%#1E"},
+  {__LINE__, -3.459930768422874e-28,	"-3.46E-28", "%2.3G"},
+  {__LINE__, -3.460730505022601e-28,	"-3.46073e-28", "%#g"},
+  {__LINE__, -3.462894265593946e-10,	"-3.46289e-10", "%+#g"},
+  {__LINE__, -3.464808359229496e+05,	"-346481", "%6.6G"},
+  {__LINE__, -3.467272303652620e-03,	"-0.00346727", "%g"},
+  {__LINE__, -3.468252706910251e+10,	"-3.5E+10", "%#7.2G"},
+  {__LINE__, -3.473623965680253e+27,	"-3.47362e+27", "%g"},
+  {__LINE__, -3.474527926009729e+11,	"-3.475E+11", "%.4G"},
+  {__LINE__, -3.476489048299929e+15,	"-3.47649e+15", "%g"},
+  {__LINE__, -3.477809698895344e-09,	"-0.000", "%+.3f"},
+  {__LINE__, -3.493008398637667e-28,	"  -0", "%+4.f"},
+  {__LINE__, -3.497441286691613e+07,	"-3.49744e+07", "%g"},
+  {__LINE__, -3.500904660533358e+00,	"-3.500905E+00", "%+1E"},
+  {__LINE__, -3.504996054364915e+25,	"-3.505e+25", "%+g"},
+  {__LINE__, -3.507738629125434e-24,	"-0.00", "%+4.2f"},
+  {__LINE__, -3.508557770253211e-04,	"-3.508558e-04", "%#6e"},
+  {__LINE__, -3.516056824437550e+20,	"-3.516057e+20", "%#e"},
+  {__LINE__, -3.521102917733367e+02,	"-352.11", "%g"},
+  {__LINE__, -3.523948985825251e+10,	"-3.52395e+10", "%+g"},
+  {__LINE__, -3.525281835697895e-15,	"-3.525282e-15", "%e"},
+  {__LINE__, -3.534088845494570e-26,	"-0.000000", "%2f"},
+  {__LINE__, -3.541002442741569e+01,	"-35.410", "%3.3f"},
+  {__LINE__, -3.541126630345017e-19,	"-3.541127e-19", "%e"},
+  {__LINE__, -3.545277845967514e-17,	"-0.000000", "%f"},
+  {__LINE__, -3.560935430637329e-12,	"-3.56094E-12", "%G"},
+  {__LINE__, -3.564234584447659e-23,	"-3.56423E-23", "%G"},
+  {__LINE__, -3.576040378379921e-11,	"-0.000000", "%+6f"},
+  {__LINE__, -3.578133580350674e-05,	"-3.578134e-05", "%#e"},
+  {__LINE__, -3.584484015191491e-28,	"-0.0", "%+2.1f"},
+  {__LINE__, -3.591961845146752e+27,	"-3.59196E+27", "%G"},
+  {__LINE__, -3.602508380305001e+26,	"-3.60251e+26", "%g"},
+  {__LINE__, -3.603113449808132e+04,	"-36031.134498", "%+3.6f"},
+  {__LINE__, -3.605569849504628e+25,	"-4E+25", "%6.G"},
+  {__LINE__, -3.611297754851416e+05,	"-361129.775485", "%+f"},
+  {__LINE__, -3.613177909959201e-28,	"-0.000000", "%f"},
+  {__LINE__, -3.616261225230595e-01,	"-0.361626", "%3g"},
+  {__LINE__, -3.619203521536307e+09,	"-3.6192E+09", "%G"},
+  {__LINE__, -3.619316709131723e-27,	"-0.0000000", "%.7f"},
+  {__LINE__, -3.623100583082346e+28,	"-3.6231E+28", "%+G"},
+  {__LINE__, -3.626582653589919e+21,	"-3626582653589918603387.332041", "%f"},
+  {__LINE__, -3.626667540343067e-30,	"-4.E-30", "%#.0G"},
+  {__LINE__, -3.633539220625861e-30,	"-3.634E-30", "%+.3E"},
+  {__LINE__, -3.641655782149502e-11,	"-3.64166E-11", "%G"},
+  {__LINE__, -3.644523594046571e+25,	"-3.64452e+25", "%5g"},
+  {__LINE__, -3.645977605394108e+25,	"-3.646e+25", "%+0.3e"},
+  {__LINE__, -3.647864582248812e+13,	"-4E+13", "%4.G"},
+  {__LINE__, -3.655241667633056e-25,	"-3.655242E-25", "%E"},
+  {__LINE__, -3.662603655433297e+23,	"-3.662604e+23", "%e"},
+  {__LINE__, -3.668995445134158e+22,	" -4E+22", "%7.G"},
+  {__LINE__, -3.670006666569412e-11,	"-3.670007e-11", "%e"},
+  {__LINE__, -3.670510381138509e-24,	"-3.670510e-24", "%e"},
+  {__LINE__, -3.671283003268254e-20,	"-3.67128E-20", "%G"},
+  {__LINE__, -3.687760201176777e-13,	"-3.68776E-13", "%G"},
+  {__LINE__, -3.687983982100676e-14,	"-0.00", "%.2f"},
+  {__LINE__, -3.694808382827435e-12,	"-3.694808E-12", "%#E"},
+  {__LINE__, -3.696158520838821e+28,	"-3.69616E+28", "%3G"},
+  {__LINE__, -3.700911860811323e+18,	"-3.70091e+18", "%+g"},
+  {__LINE__, -3.701328314738669e+24,	"-3.70133e+24", "%g"},
+  {__LINE__, -3.707068461822151e-19,	"-3.707068E-19", "%E"},
+  {__LINE__, -3.710679411506914e+25,	"-3.71068e+25", "%g"},
+  {__LINE__, -3.713003840923896e-23,	"-3.713e-23", "%7g"},
+  {__LINE__, -3.717028397747828e-28,	"-3.71703e-28", "%g"},
+  {__LINE__, -3.728159642236442e+14,	"-3.72816E+14", "%G"},
+  {__LINE__, -3.731956233637010e+21,	"-3.73196E+21", "%G"},
+  {__LINE__, -3.742336623322610e+07,	"-3.74234e+07", "%g"},
+  {__LINE__, -3.748328269630045e+04,	"-37483.3", "%G"},
+  {__LINE__, -3.750803081283569e-27,	"-3.7508E-27", "%+7G"},
+  {__LINE__, -3.752021500826652e-04,	"-0.0004", "%.1G"},
+  {__LINE__, -3.755942257004103e-12,	"-3.75594E-12", "%G"},
+  {__LINE__, -3.765921235889045e+03,	" -4e+03", "%+7.g"},
+  {__LINE__, -3.772453135667801e-28,	"-3.77245E-28", "%G"},
+  {__LINE__, -3.776384200230367e+27,	"-3.776e+27", "%1.4g"},
+  {__LINE__, -3.787035870684945e-25,	"-4E-25", "%+3.G"},
+  {__LINE__, -3.798616350818839e-29,	"-3.7986164e-29", "%.7e"},
+  {__LINE__, -3.807178315238428e-15,	"-0.000000", "%+#6f"},
+  {__LINE__, -3.822059837967635e+18,	"-3822059837967634621.236357", "%6.6f"},
+  {__LINE__, -3.823553096022006e+12,	"-3.82355e+12", "%g"},
+  {__LINE__, -3.839198115259428e-23,	"-0.000000", "%f"},
+  {__LINE__, -3.846953640321746e+02,	"-3.846954E+02", "%E"},
+  {__LINE__, -3.852230696542361e+08,	"-3.8522e+08", "%#.5g"},
+  {__LINE__, -3.861139362195314e-25,	"-3.86114E-25", "%2G"},
+  {__LINE__, -3.873388618099769e+09,	"-3873388618", "%0.0f"},
+  {__LINE__, -3.874161550543817e+15,	"-3.874162e+15", "%+e"},
+  {__LINE__, -3.874527935469425e+20,	"-3.87E+20", "%3.3G"},
+  {__LINE__, -3.878069577893697e-30,	"-3.878070E-30", "%#E"},
+  {__LINE__, -3.878852490397702e-20,	"-3.87885e-20", "%g"},
+  {__LINE__, -3.879688342272101e-10,	"-0.00", "%#4.2f"},
+  {__LINE__, -3.879797428399897e+03,	"-3880", "%1.4g"},
+  {__LINE__, -3.881588804766756e+00,	"-3.9", "%+4.2G"},
+  {__LINE__, -3.889377318111182e+01,	"-38.8938", "%+.4f"},
+  {__LINE__, -3.893444523430385e-03,	"-0.004", "%+2.g"},
+  {__LINE__, -3.894912141515856e+03,	"-3894.91", "%+g"},
+  {__LINE__, -3.905279115773667e+04,	"-39052.791158", "%f"},
+  {__LINE__, -3.905333955484919e-20,	"-3.90533E-20", "%G"},
+  {__LINE__, -3.906559442060730e+27,	"-3906559442060730447110472596.250474", "%f"},
+  {__LINE__, -3.909396469655334e-26,	"-3.91E-26", "%.3G"},
+  {__LINE__, -3.920132491092364e+11,	"-3.92013e+11", "%g"},
+  {__LINE__, -3.935651497471973e+27,	"-3935651497471972604103029880", "%5.f"},
+  {__LINE__, -3.939742577853889e-03,	"-0.004", "%5.G"},
+  {__LINE__, -3.943284017088198e+19,	"-39432840170881981123.3", "%.1f"},
+  {__LINE__, -3.947452186327660e+09,	"-3947452186.33", "%0.2f"},
+  {__LINE__, -3.951967237553488e+18,	"-3951967237553488132.562052", "%f"},
+  {__LINE__, -3.953673427359789e-28,	"-3.954E-28", "%3.4G"},
+  {__LINE__, -3.956044867371602e+23,	"-4e+23", "%+6.1g"},
+  {__LINE__, -3.965038994251913e-20,	"-3.96504e-20", "%g"},
+  {__LINE__, -3.970527677577937e+05,	"-4.e+05", "%#0.1g"},
+  {__LINE__, -3.970717822164395e-20,	"-3.970718e-20", "%6e"},
+  {__LINE__, -3.978063834438912e-19,	"-3.97806E-19", "%G"},
+  {__LINE__, -3.982705395472599e+27,	"-3.9827e+27", "%#.5g"},
+  {__LINE__, -3.983486821352571e-28,	"-3.98349e-28", "%g"},
+  {__LINE__, -3.985470630230926e-14,	"-4e-14", "%.2g"},
+  {__LINE__, -3.993095662863953e-16,	"-3.993096e-16", "%e"},
+  {__LINE__, -4.006984141314271e-22,	" -4e-22", "%7.2g"},
+  {__LINE__, -4.006984141314271e-22,	"-4.0e-22", "%#7.2g"},
+  {__LINE__, -4.013226099863981e+06,	"-4.013226E+06", "%+E"},
+  {__LINE__, -4.013702226581167e+00,	"-4.0137022", "%+#3.7f"},
+  {__LINE__, -4.017598274642537e+11,	"-4E+11", "%5.G"},
+  {__LINE__, -4.021385792825529e-09,	" -4e-09", "%7.2g"},
+  {__LINE__, -4.024099064819937e-20,	"-4.0241E-20", "%+G"},
+  {__LINE__, -4.026952473441366e+22,	"-4.026952e+22", "%6.7g"},
+  {__LINE__, -4.027636677087866e+12,	"-4.02764E+12", "%G"},
+  {__LINE__, -4.036506013049443e+17,	"-4.03651e+17", "%0.6g"},
+  {__LINE__, -4.063191953523012e-06,	"  -0.0", "%6.1f"},
+  {__LINE__, -4.070953223475192e-23,	"-4.07095E-23", "%G"},
+  {__LINE__, -4.072425833070524e+09,	"-4.072426E+09", "%E"},
+  {__LINE__, -4.086025576759603e+12,	"-4.086026e+12", "%e"},
+  {__LINE__, -4.086627783296081e-24,	"-4.087E-24", "%.3E"},
+  {__LINE__, -4.086683676772144e+10,	"-40866836767.721439", "%f"},
+  {__LINE__, -4.087336043219081e-10,	"-0.", "%+#0.f"},
+  {__LINE__, -4.125162973336809e-26,	"-4.125163E-26", "%.7G"},
+  {__LINE__, -4.150753797717075e-10,	"-4.2e-10", "%.2g"},
+  {__LINE__, -4.152126152181912e+23,	"-4.15213e+23", "%g"},
+  {__LINE__, -4.164458223079432e-07,	"-4.164458E-07", "%E"},
+  {__LINE__, -4.170624866130099e+03,	"-4170.624866", "%4.6f"},
+  {__LINE__, -4.171137277374942e-01,	" -4E-01", "%+7.E"},
+  {__LINE__, -4.176067421901769e-25,	"-4.17607E-25", "%G"},
+  {__LINE__, -4.179514418604771e+24,	"-4.1795e+24", "%3.5g"},
+  {__LINE__, -4.196285183415621e+23,	"-4.19629E+23", "%5G"},
+  {__LINE__, -4.198600486581023e+23,	"-4E+23", "%+4.G"},
+  {__LINE__, -4.199020494598538e-16,	"-0.000000", "%+f"},
+  {__LINE__, -4.207824153501688e-01,	"-0.420782", "%G"},
+  {__LINE__, -4.219086441294006e-13,	"  -0", "%+4.f"},
+  {__LINE__, -4.223689582765525e+12,	"-4.22369e+12", "%g"},
+  {__LINE__, -4.230213377391093e+04,	"-42302.1", "%+2.6G"},
+  {__LINE__, -4.232495358100605e-02,	"-0.042325", "%+f"},
+  {__LINE__, -4.235459662515940e-29,	"-0.000000", "%f"},
+  {__LINE__, -4.240807508057296e-07,	"-4e-07", "%0.g"},
+  {__LINE__, -4.248376819122346e-13,	"-4.248377e-13", "%7e"},
+  {__LINE__, -4.251361939638334e-23,	"-4.251362E-23", "%E"},
+  {__LINE__, -4.253044333568077e+24,	"-4.253044e+24", "%4e"},
+  {__LINE__, -4.255728039119772e-30,	"-4.25573E-30", "%2G"},
+  {__LINE__, -4.256502531648988e+02,	"-425.65", "%G"},
+  {__LINE__, -4.260731632612400e-04,	"-0", "%2.f"},
+  {__LINE__, -4.262037138254753e-25,	"-4e-25", "%5.g"},
+  {__LINE__, -4.270910126379393e+00,	"-4.2709", "%#7.4f"},
+  {__LINE__, -4.273844276097008e-09,	" -0.", "%#4.f"},
+  {__LINE__, -4.280424136111831e+21,	"-4.280E+21", "%.3E"},
+  {__LINE__, -4.284351940366486e-23,	"-0.000000", "%+f"},
+  {__LINE__, -4.291747881693517e-29,	"-4.3e-29", "%+#.2g"},
+  {__LINE__, -4.298346825232928e+04,	"-42983.5", "%G"},
+  {__LINE__, -4.298879924365432e+28,	"-42988799243654316484253286034.800112", "%f"},
+  {__LINE__, -4.302192665689887e-25,	"-0.000000", "%f"},
+  {__LINE__, -4.303899568112784e+06,	"-4E+06", "%1.G"},
+  {__LINE__, -4.307399960278190e-30,	"-4.31e-30", "%.3g"},
+  {__LINE__, -4.341161949359232e+01,	"-43.411619", "%+f"},
+  {__LINE__, -4.353334435604675e+17,	" -4e+17", "%+7.g"},
+  {__LINE__, -4.354760231068195e+08,	"-4e+08", "%2.e"},
+  {__LINE__, -4.363535913318519e+08,	"-4.363536E+08", "%+7E"},
+  {__LINE__, -4.365389605557404e-29,	"-4.365390e-29", "%e"},
+  {__LINE__, -4.369278570829168e-22,	"-4.369279E-22", "%5E"},
+  {__LINE__, -4.372187639240662e-11,	"-4.37219e-11", "%+g"},
+  {__LINE__, -4.374221079233858e-15,	"-4.37422E-15", "%4.6G"},
+  {__LINE__, -4.374840292001664e-13,	"-0.000000", "%+f"},
+  {__LINE__, -4.376554800103945e+16,	"-43765548001039453.751559", "%f"},
+  {__LINE__, -4.376659235899513e+07,	"-4.4E+07", "%0.2G"},
+  {__LINE__, -4.377316129868239e-06,	"-4.37732E-06", "%+5G"},
+  {__LINE__, -4.380028480226885e+21,	"-4e+21", "%1.0e"},
+  {__LINE__, -4.380434965450223e+16,	"-43804349654502230.393405", "%f"},
+  {__LINE__, -4.392477080355168e-15,	"-4E-15", "%+2.G"},
+  {__LINE__, -4.396120020536161e+17,	"-439612002053616102.159594", "%#f"},
+  {__LINE__, -4.400993154571784e+13,	"-44009931545717.844159", "%f"},
+  {__LINE__, -4.402873692051930e-26,	"-4.4e-26", "%5.3g"},
+  {__LINE__, -4.405330274903779e+24,	"-4405330274903779042006135.568954", "%+5f"},
+  {__LINE__, -4.406272291312090e+06,	"-4.40627e+06", "%+g"},
+  {__LINE__, -4.407065949816988e-13,	"-0.000000", "%f"},
+  {__LINE__, -4.408295597674563e-10,	"-4.4083e-10", "%g"},
+  {__LINE__, -4.417553815178214e-30,	"-4.41755E-30", "%G"},
+  {__LINE__, -4.428894120469459e+16,	"-4.42889e+16", "%g"},
+  {__LINE__, -4.433747825142046e+04,	"-4.433748e+04", "%#e"},
+  {__LINE__, -4.435051082856639e+11,	"-4.43505E+11", "%G"},
+  {__LINE__, -4.445045573007259e-27,	"-4.445e-27", "%.5g"},
+  {__LINE__, -4.447791368960968e-25,	" -4e-25", "%+7.g"},
+  {__LINE__, -4.449691386526521e-11,	"-4.44969e-11", "%g"},
+  {__LINE__, -4.451399093849402e+06,	"-4.e+06", "%#0.e"},
+  {__LINE__, -4.453753130320864e-22,	"-4E-22", "%6.E"},
+  {__LINE__, -4.455910780463539e+00,	"-4", "%2.g"},
+  {__LINE__, -4.464935674747308e+25,	"-4.46494e+25", "%g"},
+  {__LINE__, -4.469759565657550e-29,	"-4.46976e-29", "%g"},
+  {__LINE__, -4.473254139442931e+14,	"-4E+14", "%3.1G"},
+  {__LINE__, -4.480844704930373e-04,	"-0.000448", "%5.6f"},
+  {__LINE__, -4.484177356024563e+19,	"-4.484177E+19", "%E"},
+  {__LINE__, -4.488115678357666e-13,	"-4.48812e-13", "%g"},
+  {__LINE__, -4.491545112281561e+12,	"-4.491545E+12", "%E"},
+  {__LINE__, -4.492547433553077e-23,	"-4.49255e-23", "%g"},
+  {__LINE__, -4.492701755830813e-05,	"-0.000045", "%f"},
+  {__LINE__, -4.497405935096372e-02,	"-4.497406e-02", "%e"},
+  {__LINE__, -4.502764260212887e+21,	"-4.50276E+21", "%G"},
+  {__LINE__, -4.511984199938207e+29,	"-451198419993820731832556703011.505306", "%f"},
+  {__LINE__, -4.514517861504637e-13,	"-4.51452e-13", "%g"},
+  {__LINE__, -4.525577218881990e+24,	"-4.5e+24", "%2.2g"},
+  {__LINE__, -4.549244580903896e-26,	"-5E-26", "%2.G"},
+  {__LINE__, -4.569192488002113e-29,	"-5E-29", "%3.G"},
+  {__LINE__, -4.572011438847734e+17,	"-4.57e+17", "%#.3g"},
+  {__LINE__, -4.573010973514519e-08,	"-4.57301e-08", "%+7g"},
+  {__LINE__, -4.584534976177852e-04,	"-0.000458453", "%7g"},
+  {__LINE__, -4.584729895132228e-21,	"-0.000000", "%4f"},
+  {__LINE__, -4.585259328217483e-30,	"-4.58526E-30", "%+#4.6G"},
+  {__LINE__, -4.589603063610410e-04,	"-4.589603E-04", "%+E"},
+  {__LINE__, -4.592428795671033e+22,	" -5e+22", "%7.g"},
+  {__LINE__, -4.595683678223830e-20,	"   -0", "%5.f"},
+  {__LINE__, -4.602585606100101e+05,	"-4.602586E+05", "%E"},
+  {__LINE__, -4.603375306660027e-08,	"-5E-08", "%+6.G"},
+  {__LINE__, -4.611341343728034e-18,	"-4.611341e-18", "%5e"},
+  {__LINE__, -4.613608487855863e+05,	"-461361", "%6g"},
+  {__LINE__, -4.615997775774194e-24,	"-4.61600e-24", "%#g"},
+  {__LINE__, -4.620310950564759e+23,	"-462031095056475926696749", "%1.0f"},
+  {__LINE__, -4.620645693595563e-10,	"-4.6206457e-10", "%.7e"},
+  {__LINE__, -4.621527706233292e-09,	"-4.621528e-09", "%#e"},
+  {__LINE__, -4.625215210297273e-13,	"-4.62522E-13", "%G"},
+  {__LINE__, -4.636755152220100e-29,	"-0.000000", "%#f"},
+  {__LINE__, -4.641203877508087e+23,	"-4.6412e+23", "%0g"},
+  {__LINE__, -4.648627249239175e+23,	"-4.65E+23", "%+0.3G"},
+  {__LINE__, -4.662546890623409e-10,	"-4.663E-10", "%.3E"},
+  {__LINE__, -4.664488650292317e-27,	"-4.66449e-27", "%#g"},
+  {__LINE__, -4.668715685060282e+08,	"-466871568.50603", "%.5f"},
+  {__LINE__, -4.673332851657081e-18,	"-4.7e-18", "%#5.2g"},
+  {__LINE__, -4.683361436174074e+24,	"-4.68e+24", "%#.2e"},
+  {__LINE__, -4.693748680461066e-01,	"-0.469375", "%G"},
+  {__LINE__, -4.697110010549124e+23,	"-4.69711E+23", "%G"},
+  {__LINE__, -4.710442739966989e+06,	"-4.710443e+06", "%2e"},
+  {__LINE__, -4.713427678642280e-09,	"-4.71343e-09", "%g"},
+  {__LINE__, -4.721999055940316e-04,	"-4.721999e-04", "%#1e"},
+  {__LINE__, -4.724262200578540e+17,	"-472426220057853996.081576", "%+f"},
+  {__LINE__, -4.733267644288093e+01,	"-4.733268e+01", "%7e"},
+  {__LINE__, -4.742854711396110e-11,	"-0.000000", "%f"},
+  {__LINE__, -4.757456106385936e+23,	"-4.75746e+23", "%g"},
+  {__LINE__, -4.770895495642298e+27,	"-4770895495642298200777986494.358629", "%2f"},
+  {__LINE__, -4.775073456318149e+29,	"-4.775073E+29", "%#E"},
+  {__LINE__, -4.779997387204258e+17,	"-4.78e+17", "%g"},
+  {__LINE__, -4.799264315770707e-23,	"-4.799264E-23", "%+.7G"},
+  {__LINE__, -4.814277930599660e+10,	"-5e+10", "%2.1g"},
+  {__LINE__, -4.818413387018612e+05,	"-5e+05", "%.0g"},
+  {__LINE__, -4.818827195107612e-16,	"-4.818827e-16", "%e"},
+  {__LINE__, -4.841524514024803e+21,	"-4.84152E+21", "%G"},
+  {__LINE__, -4.860585077313477e+10,	"-4.86059E+10", "%+G"},
+  {__LINE__, -4.870037451948589e+28,	"-48700374519485887248038125107.996166", "%f"},
+  {__LINE__, -4.888835952705153e-28,	"-4.888836E-28", "%+E"},
+  {__LINE__, -4.893523355754114e-19,	"-4.893523e-19", "%.6e"},
+  {__LINE__, -4.906070260482585e+17,	"-490607026048258454", "%+.0f"},
+  {__LINE__, -4.907734144101900e+25,	"-5E+25", "%+.1G"},
+  {__LINE__, -4.917899547741841e-25,	"-4.917900e-25", "%e"},
+  {__LINE__, -4.923348512538722e+25,	"-49233485125387215219916470.232420", "%+.6f"},
+  {__LINE__, -4.926052630078460e-26,	"-4.926053e-26", "%e"},
+  {__LINE__, -4.926751662051156e+14,	"-4.927E+14", "%+5.3E"},
+  {__LINE__, -4.928017952199046e-12,	"-0.000000", "%f"},
+  {__LINE__, -4.944296782981195e-21,	"-4.9443E-21", "%1.5G"},
+  {__LINE__, -4.947320427183599e-19,	"-4.947320e-19", "%.6e"},
+  {__LINE__, -4.968188938972135e+17,	"-4.96819E+17", "%G"},
+  {__LINE__, -4.968756725758674e+05,	"-496876", "%G"},
+  {__LINE__, -4.968788759793340e-26,	"-4.97E-26", "%.3G"},
+  {__LINE__, -4.983904999913364e-24,	"-5E-24", "%0.G"},
+  {__LINE__, -4.985209496522767e+23,	"-4.985209e+23", "%e"},
+  {__LINE__, -4.987363880732866e+08,	"-4.98736E+08", "%G"},
+  {__LINE__, -4.989754940144973e+05,	"-498975.494014", "%f"},
+  {__LINE__, -4.998203870733718e-25,	"-4.9982e-25", "%g"},
+  {__LINE__, -4.999153445016792e-27,	"-5e-27", "%+1.e"},
+  {__LINE__, -5.002693488258108e+06,	" -5e+06", "%+7.g"},
+  {__LINE__, -5.017958458603783e+05,	"-5.0179585E+05", "%+.7E"},
+  {__LINE__, -5.028902178573363e-12,	"-5.0289e-12", "%0g"},
+  {__LINE__, -5.032337536971444e+07,	"-50323375.369714", "%f"},
+  {__LINE__, -5.036525516370473e-24,	"-5.0365e-24", "%4.5g"},
+  {__LINE__, -5.038642321515756e+18,	"-5038642321515755639.893541", "%f"},
+  {__LINE__, -5.051003516976770e-14,	"-5.051E-14", "%+G"},
+  {__LINE__, -5.051196143816789e+27,	"-5.0512e+27", "%g"},
+  {__LINE__, -5.057372886713786e+28,	"-5.057373e+28", "%#e"},
+  {__LINE__, -5.057475029459727e+12,	"-5.05748e+12", "%+g"},
+  {__LINE__, -5.068286816124670e-17,	"-5.068E-17", "%5.3E"},
+  {__LINE__, -5.070475165759468e-12,	"-0.000000", "%4.6f"},
+  {__LINE__, -5.081352543220476e+20,	"-5.081E+20", "%.3E"},
+  {__LINE__, -5.084398319179363e+11,	"-508439831917.936313", "%#f"},
+  {__LINE__, -5.085781220648484e+05,	"-5.E+05", "%+#7.G"},
+  {__LINE__, -5.094941054632498e-24,	"-5.09494E-24", "%+G"},
+  {__LINE__, -5.100059596310871e-10,	"-5.10006e-10", "%3.6g"},
+  {__LINE__, -5.103072553594136e-01,	"-0.5", "%+1.g"},
+  {__LINE__, -5.106319890388412e+08,	"-5.106320e+08", "%4e"},
+  {__LINE__, -5.107120687977690e+09,	"-5107120687.977690", "%f"},
+  {__LINE__, -5.119910716893161e-13,	"-5.11991E-13", "%6G"},
+  {__LINE__, -5.127594569425709e-29,	"-5.12759e-29", "%#g"},
+  {__LINE__, -5.130365585632797e+29,	"-5.13037e+29", "%#g"},
+  {__LINE__, -5.131415638022112e+08,	"-513141563.802211", "%0f"},
+  {__LINE__, -5.144703216335916e-23,	"-5.1447e-23", "%g"},
+  {__LINE__, -5.152511923201882e-05,	"-5.15251E-05", "%+G"},
+  {__LINE__, -5.165484448280190e-12,	" -0.0", "%5.1f"},
+  {__LINE__, -5.179220760465737e-20,	"-5e-20", "%+5.g"},
+  {__LINE__, -5.183005119662180e-10,	"-5.183005E-10", "%+E"},
+  {__LINE__, -5.199587953258117e+13,	"-5.19959e+13", "%6g"},
+  {__LINE__, -5.202041951844580e-25,	"-0.000000", "%f"},
+  {__LINE__, -5.202836038621740e+00,	"-5.20284", "%G"},
+  {__LINE__, -5.212204099528552e-11,	"-5.2122e-11", "%.6g"},
+  {__LINE__, -5.225617726710534e+17,	"-522561772671053414.995868", "%+f"},
+  {__LINE__, -5.230162003281426e+25,	"-52301620032814257754694153.84578", "%+6.5f"},
+  {__LINE__, -5.251849429321286e-11,	"-5.25185e-11", "%g"},
+  {__LINE__, -5.265174939930368e+23,	"-5.265175E+23", "%1.6E"},
+  {__LINE__, -5.271218134351422e+21,	"-5.27122e+21", "%+1g"},
+  {__LINE__, -5.273823357545750e+17,	"-527382335754575048.980541", "%f"},
+  {__LINE__, -5.279848797214957e+11,	"-527984879721.495659", "%0f"},
+  {__LINE__, -5.281551888625290e+11,	"-5e+11", "%4.g"},
+  {__LINE__, -5.281780377142961e-24,	"-5.28178e-24", "%g"},
+  {__LINE__, -5.292125782379512e+03,	"-5292.125782", "%f"},
+  {__LINE__, -5.292401691410388e+15,	"-5292401691410387.520875", "%f"},
+  {__LINE__, -5.305120752102265e-25,	"-5.30512e-25", "%+#.5e"},
+  {__LINE__, -5.317975791704413e+16,	"-5.31798e+16", "%+g"},
+  {__LINE__, -5.336522843607233e+27,	"-5.33652e+27", "%#6g"},
+  {__LINE__, -5.342016438000917e-05,	" -5e-05", "%+7.e"},
+  {__LINE__, -5.351122291549103e+06,	"-5351122.291549", "%+0f"},
+  {__LINE__, -5.352043956303597e+00,	"-5.35204", "%g"},
+  {__LINE__, -5.353582488767747e+09,	"-5.354E+09", "%7.3E"},
+  {__LINE__, -5.383420177718380e+04,	"-5e+04", "%1.e"},
+  {__LINE__, -5.384320189791882e-10,	"-5.384320e-10", "%e"},
+  {__LINE__, -5.409487543257379e-12,	"-5.40949E-12", "%G"},
+  {__LINE__, -5.418395794776773e+23,	"-5.4184e+23", "%g"},
+  {__LINE__, -5.419918795921525e-09,	"-0.000000", "%+f"},
+  {__LINE__, -5.422374157832442e+11,	"-5.42237e+11", "%3g"},
+  {__LINE__, -5.426916951577001e-27,	"-5.42692E-27", "%+G"},
+  {__LINE__, -5.430058833461779e+28,	"-5.43006E+28", "%G"},
+  {__LINE__, -5.444433348653147e+23,	"-5.444433E+23", "%E"},
+  {__LINE__, -5.446560186537024e+09,	"-5.446560E+09", "%E"},
+  {__LINE__, -5.464243500152188e+27,	"-5.46424E+27", "%G"},
+  {__LINE__, -5.464427517531742e+20,	"-546442751753174249529.365625", "%f"},
+  {__LINE__, -5.465783705970954e+05,	"-5E+05", "%1.E"},
+  {__LINE__, -5.475138077475789e-11,	"-5e-11", "%.0e"},
+  {__LINE__, -5.475302250616576e+10,	"-54753022506.1658", "%.4f"},
+  {__LINE__, -5.488964905442472e+09,	"-5.48896e+09", "%g"},
+  {__LINE__, -5.492508526846316e-08,	"-5.49251e-08", "%.6g"},
+  {__LINE__, -5.520533408804846e-15,	"-5.520533e-15", "%e"},
+  {__LINE__, -5.532744688447266e+28,	"-55327446884472664123677532188.594341", "%2.6f"},
+  {__LINE__, -5.535834653450131e-14,	"-5.5e-14", "%0.1e"},
+  {__LINE__, -5.554344735392882e-02,	"-5.554345E-02", "%+#E"},
+  {__LINE__, -5.555497334515501e-17,	"-5.5555e-17", "%g"},
+  {__LINE__, -5.558304303221977e+14,	"-555830430322197.699411", "%f"},
+  {__LINE__, -5.562210815777694e-05,	"-5.562211E-05", "%#1E"},
+  {__LINE__, -5.564800722538402e-09,	"-5.56480e-09", "%#.6g"},
+  {__LINE__, -5.567143271590439e-01,	"-5.567143e-01", "%#e"},
+  {__LINE__, -5.568606044396186e+01,	"-55.6861", "%4g"},
+  {__LINE__, -5.592027856401721e+12,	"-5.592028e+12", "%.7g"},
+  {__LINE__, -5.592295342565443e+22,	"-6.E+22", "%#3.G"},
+  {__LINE__, -5.600007421926053e+07,	"-56000074.219261", "%1f"},
+  {__LINE__, -5.601444553155006e-12,	"-5.60144E-12", "%G"},
+  {__LINE__, -5.605128912835080e-03,	"-0.005605", "%+f"},
+  {__LINE__, -5.610950285679577e+19,	"-5.61095E+19", "%G"},
+  {__LINE__, -5.622074657679467e+11,	"-562207465767.946690", "%f"},
+  {__LINE__, -5.627358352391656e-01,	"-0.6", "%1.g"},
+  {__LINE__, -5.627974317622488e-02,	"-5.627974e-02", "%+e"},
+  {__LINE__, -5.629497696447229e+27,	"-5.629E+27", "%+.4G"},
+  {__LINE__, -5.631383567258576e-29,	"-5.63138e-29", "%0g"},
+  {__LINE__, -5.635241327177333e-18,	"-5.63524E-18", "%G"},
+  {__LINE__, -5.644819783138381e+06,	"-5.644820E+06", "%#E"},
+  {__LINE__, -5.648538459114833e+26,	"-564853845911483265496144667.849876", "%+f"},
+  {__LINE__, -5.649004865848537e+00,	"-5.649", "%g"},
+  {__LINE__, -5.653403316885170e+23,	"-6E+23", "%2.0E"},
+  {__LINE__, -5.656109962244926e-18,	"-0.000000", "%f"},
+  {__LINE__, -5.674988031695793e+22,	"-5.674988E+22", "%+.7G"},
+  {__LINE__, -5.686380226400881e-22,	"-0.000000", "%f"},
+  {__LINE__, -5.698840855829442e-14,	"-5.69884E-14", "%G"},
+  {__LINE__, -5.707036642649580e+03,	"-5707.036643", "%f"},
+  {__LINE__, -5.710344882278847e+11,	"-5.71034E+11", "%+G"},
+  {__LINE__, -5.714852196401017e+19,	"-5.71485E+19", "%+G"},
+  {__LINE__, -5.720153622156089e-22,	"-5.72015E-22", "%G"},
+  {__LINE__, -5.722366011976922e+26,	"-5.72237e+26", "%+g"},
+  {__LINE__, -5.722909928097404e+12,	"-5.72291E+12", "%2G"},
+  {__LINE__, -5.725325961787777e-25,	"-5.72533e-25", "%g"},
+  {__LINE__, -5.727138241052646e+19,	"-5.72714e+19", "%+#g"},
+  {__LINE__, -5.734025840446336e+14,	"-5.73403e+14", "%+g"},
+  {__LINE__, -5.736469106710259e-05,	"-0.000057", "%.6f"},
+  {__LINE__, -5.755099153733116e-14,	"-5.7551e-14", "%+g"},
+  {__LINE__, -5.758411844890947e-20,	"-6E-20", "%+6.G"},
+  {__LINE__, -5.760350214122813e+03,	"-5760.35", "%+g"},
+  {__LINE__, -5.768009192512392e-30,	"-0", "%1.f"},
+  {__LINE__, -5.772343286693103e+07,	"-5.77234E+07", "%G"},
+  {__LINE__, -5.776693265471852e-27,	"-5.776693E-27", "%E"},
+  {__LINE__, -5.779682861172754e-28,	"-5.779683e-28", "%e"},
+  {__LINE__, -5.789953490749936e+26,	"-578995349074993637117358957.76656", "%5.5f"},
+  {__LINE__, -5.796771264754334e+04,	"-57967.7", "%g"},
+  {__LINE__, -5.804788370597286e-02,	"-5.80479E-02", "%+#1.5E"},
+  {__LINE__, -5.805343475329215e-13,	"-5.80534e-13", "%g"},
+  {__LINE__, -5.809853913830122e+09,	"-5809853914", "%+0.f"},
+  {__LINE__, -5.817313814570609e-30,	"     -0", "%7.0f"},
+  {__LINE__, -5.831708441750138e+00,	"-5.83171", "%#g"},
+  {__LINE__, -5.846914550593652e+29,	"-5.846915e+29", "%e"},
+  {__LINE__, -5.851455214762288e+04,	"-58514.6", "%+G"},
+  {__LINE__, -5.855803663871393e-23,	"-6E-23", "%5.E"},
+  {__LINE__, -5.858065129988470e+10,	"-5.85807e+10", "%+g"},
+  {__LINE__, -5.863147168075411e-14,	"-5.86315e-14", "%+g"},
+  {__LINE__, -5.878936740266680e-04,	"-0.000587894", "%g"},
+  {__LINE__, -5.887654893386630e+25,	"-58876548933866299506689756.526612", "%#f"},
+  {__LINE__, -5.889416409731902e-02,	"-0.06", "%5.g"},
+  {__LINE__, -5.897630195029892e-18,	"-5.897630E-18", "%#0.7G"},
+  {__LINE__, -5.898506808456422e-19,	"-5.89851E-19", "%G"},
+  {__LINE__, -5.901768645393515e+29,	"-5.90177E+29", "%+G"},
+  {__LINE__, -5.907529093570369e+10,	"-59075290935.703695", "%f"},
+  {__LINE__, -5.910069365260240e+13,	"-59100693652602.39849", "%+#5.5f"},
+  {__LINE__, -5.915678929676435e-07,	"-0.000001", "%+f"},
+  {__LINE__, -5.922232380131716e-01,	"-0.592223", "%+3f"},
+  {__LINE__, -5.923716473994306e+19,	"-5.92372E+19", "%+#.6G"},
+  {__LINE__, -5.929950428920404e-15,	"-5.929950e-15", "%+e"},
+  {__LINE__, -5.949552735665802e+26,	"-5.94955e+26", "%#g"},
+  {__LINE__, -5.949977081310732e-02,	"-0.059500", "%f"},
+  {__LINE__, -5.954520303889356e-07,	"-5.954520E-07", "%5E"},
+  {__LINE__, -5.978861337429145e-13,	"-6E-13", "%1.G"},
+  {__LINE__, -5.980539445081087e+15,	"-5.98054E+15", "%.6G"},
+  {__LINE__, -5.981724990853490e-03,	" -0.006", "%#7.g"},
+  {__LINE__, -5.989488907825821e+03,	"-6E+03", "%.2G"},
+  {__LINE__, -5.998272294890842e+06,	"-6.00E+06", "%4.2E"},
+  {__LINE__, -6.023775731455919e-29,	"-6.023776e-29", "%e"},
+  {__LINE__, -6.028153126666870e-05,	"-6.e-05", "%+#6.e"},
+  {__LINE__, -6.036200621484690e+25,	"-6e+25", "%2.2g"},
+  {__LINE__, -6.036400640928137e-14,	"-6.036401e-14", "%e"},
+  {__LINE__, -6.038198451098329e-20,	"-6.038198e-20", "%1.7g"},
+  {__LINE__, -6.045778975641123e-15,	"-6.04578E-15", "%G"},
+  {__LINE__, -6.046038904252073e+00,	"-6.04604", "%g"},
+  {__LINE__, -6.082158462782175e-06,	"-0.000006", "%+#f"},
+  {__LINE__, -6.106162726644904e+10,	"-6.10616e+10", "%g"},
+  {__LINE__, -6.126345215489182e+10,	"-6e+10", "%+1.g"},
+  {__LINE__, -6.131852309620571e+02,	"-6e+02", "%4.e"},
+  {__LINE__, -6.134589313243809e-01,	"-0.613459", "%+#f"},
+  {__LINE__, -6.142358153783462e-10,	"-6.14236E-10", "%4G"},
+  {__LINE__, -6.151524334856263e+27,	"-6151524334856262932191839354.345575", "%+6f"},
+  {__LINE__, -6.156818333724550e+04,	"-6.e+04", "%#.1g"},
+  {__LINE__, -6.166172551433993e+24,	"-6166172551433993120895138.4178", "%5.4f"},
+  {__LINE__, -6.169532428006014e-09,	"-6.16953e-09", "%3g"},
+  {__LINE__, -6.172019382601770e-28,	"-0.000000", "%+f"},
+  {__LINE__, -6.174496985807155e-09,	"-6.1745E-09", "%G"},
+  {__LINE__, -6.186771845105751e+04,	"-61867.7", "%G"},
+  {__LINE__, -6.200817973780066e+22,	"-6.20082E+22", "%3G"},
+  {__LINE__, -6.218004335456301e-22,	"-0.000000", "%+f"},
+  {__LINE__, -6.219009630546262e-18,	"-6.22e-18", "%6.3g"},
+  {__LINE__, -6.242532875230618e-06,	"-0.000006", "%7f"},
+  {__LINE__, -6.243612261280864e+14,	"-6.24361e+14", "%.6g"},
+  {__LINE__, -6.243689597320126e+10,	"-6e+10", "%.0e"},
+  {__LINE__, -6.244620667090527e+04,	"-6e+04", "%6.e"},
+  {__LINE__, -6.250789625572054e-09,	"-0.000000", "%+f"},
+  {__LINE__, -6.253537566219164e+01,	"-63.", "%#1.f"},
+  {__LINE__, -6.284420289484166e+21,	"-6.2844203e+21", "%7.7e"},
+  {__LINE__, -6.285939888202846e+27,	"-6e+27", "%+.0g"},
+  {__LINE__, -6.290025777678105e+13,	"-6E+13", "%2.E"},
+  {__LINE__, -6.291364254323924e+10,	"-6.3E+10", "%3.2G"},
+  {__LINE__, -6.292428812164449e+15,	"-6292428812164448.714839", "%.6f"},
+  {__LINE__, -6.292600606358002e+29,	"-6.29260E+29", "%#G"},
+  {__LINE__, -6.292739629144148e-15,	"-6.292740E-15", "%E"},
+  {__LINE__, -6.296471626465745e+28,	"-6.29647E+28", "%G"},
+  {__LINE__, -6.299575066640315e+27,	"-6.300E+27", "%.3E"},
+  {__LINE__, -6.315234679394876e-24,	"-6E-24", "%2.G"},
+  {__LINE__, -6.320883246383228e-01,	"-0.632088", "%2g"},
+  {__LINE__, -6.324938413548937e-11,	"-6e-11", "%.1g"},
+  {__LINE__, -6.336312983176250e+04,	"-6.336313e+04", "%e"},
+  {__LINE__, -6.341786787214541e+06,	"-6.341787E+06", "%+7.6E"},
+  {__LINE__, -6.360189291106185e-15,	"-0.0000000", "%#.7f"},
+  {__LINE__, -6.364818355457748e-15,	"-0.0000000", "%1.7f"},
+  {__LINE__, -6.366291103431814e+04,	"-63662.9", "%#G"},
+  {__LINE__, -6.366334042923153e-05,	"-6.37e-05", "%5.3g"},
+  {__LINE__, -6.370477455143194e-12,	"-0.000000", "%f"},
+  {__LINE__, -6.372829256546279e+23,	"-6.37283E+23", "%G"},
+  {__LINE__, -6.375208490193110e-23,	"-6.37521e-23", "%4.5e"},
+  {__LINE__, -6.382595100891736e-24,	"-6.3826E-24", "%5G"},
+  {__LINE__, -6.396882421146790e-22,	"-6.39688e-22", "%+g"},
+  {__LINE__, -6.407190354039938e+08,	"-6.40719e+08", "%+g"},
+  {__LINE__, -6.408581541430886e-10,	"-6.E-10", "%#0.0G"},
+  {__LINE__, -6.409206904981703e-03,	"-0.006", "%+.0G"},
+  {__LINE__, -6.416106714707772e+26,	"-641610671470777216285341637.558304", "%f"},
+  {__LINE__, -6.417436981761998e-04,	"-0.000642", "%+#f"},
+  {__LINE__, -6.429997249673124e+11,	"-642999724967.312414", "%#f"},
+  {__LINE__, -6.440827429825250e+16,	"-6.44083E+16", "%G"},
+  {__LINE__, -6.444869858444955e+02,	"-6e+02", "%6.g"},
+  {__LINE__, -6.471701890976228e-25,	" -6e-25", "%7.1g"},
+  {__LINE__, -6.485393161670371e-12,	"-6.485393e-12", "%.6e"},
+  {__LINE__, -6.487710907063584e+23,	"-6.E+23", "%#3.E"},
+  {__LINE__, -6.492942931343439e-08,	"-0.", "%+#2.0f"},
+  {__LINE__, -6.496010652113223e+18,	"-6.49601e+18", "%g"},
+  {__LINE__, -6.502856921840228e+22,	"-6.50286e+22", "%4g"},
+  {__LINE__, -6.523559906055000e-10,	"-6.52356E-10", "%.6G"},
+  {__LINE__, -6.525899074126662e+04,	"-6.5e+04", "%+.1e"},
+  {__LINE__, -6.532216801155521e-09,	"-6.53222E-09", "%G"},
+  {__LINE__, -6.544601787025684e-27,	"-0", "%+.0f"},
+  {__LINE__, -6.558968312132168e-01,	"    -1", "%+6.f"},
+  {__LINE__, -6.559654261655786e+08,	"-6.559654e+08", "%e"},
+  {__LINE__, -6.566562622196495e-21,	"-6.56656E-21", "%.6G"},
+  {__LINE__, -6.573486832071960e+04,	"-65734.9", "%G"},
+  {__LINE__, -6.573806290918275e+13,	"-6.57381E+13", "%G"},
+  {__LINE__, -6.578113771674787e+17,	"-6.57811E+17", "%+#G"},
+  {__LINE__, -6.584106931007506e+15,	"-6.584107E+15", "%E"},
+  {__LINE__, -6.590538844308877e+07,	"-65905388.443089", "%f"},
+  {__LINE__, -6.593708834068371e-07,	"-0.000001", "%f"},
+  {__LINE__, -6.597116446195875e+08,	"-6.5971164e+08", "%#1.7e"},
+  {__LINE__, -6.605813542127091e-04,	"-0.0007", "%+0.g"},
+  {__LINE__, -6.607491403866429e+07,	"-7e+07", "%3.g"},
+  {__LINE__, -6.616499847522278e+09,	"-6.61650E+09", "%+#G"},
+  {__LINE__, -6.618619768691332e+20,	"-7E+20", "%2.G"},
+  {__LINE__, -6.626748168962331e-22,	"-7.E-22", "%+#3.E"},
+  {__LINE__, -6.639335450348280e+12,	"-6.63934e+12", "%g"},
+  {__LINE__, -6.643910144912576e-03,	"-0.006644", "%f"},
+  {__LINE__, -6.650293872031870e-18,	"-6.65029e-18", "%+#g"},
+  {__LINE__, -6.654903858656310e-21,	"-0.000000", "%f"},
+  {__LINE__, -6.665834666726511e-12,	"-6.665835E-12", "%E"},
+  {__LINE__, -6.666428729917570e-19,	"-0.000000", "%+#f"},
+  {__LINE__, -6.668415789681128e+27,	"-6.66842E+27", "%+G"},
+  {__LINE__, -6.675214676269601e-28,	"-6.67521e-28", "%#g"},
+  {__LINE__, -6.679560072732262e+01,	"-66.7956", "%#g"},
+  {__LINE__, -6.692325075457020e-19,	"-0.000000", "%1f"},
+  {__LINE__, -6.697096655164652e+00,	"-6.70", "%#.3g"},
+  {__LINE__, -6.712436135928394e-28,	"-7e-28", "%0.g"},
+  {__LINE__, -6.720769486122685e-16,	"-7e-16", "%0.e"},
+  {__LINE__, -6.727196898490600e+26,	"-672719689849060031860972230.8", "%.1f"},
+  {__LINE__, -6.744132627576416e+02,	"-674.413", "%6G"},
+  {__LINE__, -6.757705576425288e+28,	"-6.7577056e+28", "%.7e"},
+  {__LINE__, -6.760554929237173e-02,	"-0.067606", "%+f"},
+  {__LINE__, -6.763538810629361e+10,	"-6.7635E+10", "%.4E"},
+  {__LINE__, -6.764712008860796e-29,	"-6.76471E-29", "%+G"},
+  {__LINE__, -6.767299719678443e+04,	"-67672.997197", "%f"},
+  {__LINE__, -6.768326491352134e+20,	"-676832649135213415547.70", "%+.2f"},
+  {__LINE__, -6.771116968952891e+03,	"-7E+03", "%3.1G"},
+  {__LINE__, -6.775218099238350e-30,	"-7.e-30", "%+#6.g"},
+  {__LINE__, -6.782142689928918e-18,	"-0.00", "%4.2f"},
+  {__LINE__, -6.795409770512149e+08,	"-7E+08", "%+5.0G"},
+  {__LINE__, -6.820966157097271e+14,	"-6.820966e+14", "%e"},
+  {__LINE__, -6.824972990592273e-22,	"-0.00", "%+#1.2f"},
+  {__LINE__, -6.830452914741750e+29,	"-6.8E+29", "%+7.2G"},
+  {__LINE__, -6.835797187132348e+10,	"-6.8358E+10", "%+5G"},
+  {__LINE__, -6.837040829636343e-03,	"-0.00683704", "%+g"},
+  {__LINE__, -6.852956218658224e+23,	"-6.85296e+23", "%3g"},
+  {__LINE__, -6.854102607287217e-26,	"-7e-26", "%5.e"},
+  {__LINE__, -6.865065870249438e+16,	"-6.86507E+16", "%#G"},
+  {__LINE__, -6.884819522625523e-13,	"-6.88482E-13", "%5G"},
+  {__LINE__, -6.916316600148513e-12,	"-0.000000", "%f"},
+  {__LINE__, -6.925312418761560e-05,	"-6.92531E-05", "%#G"},
+  {__LINE__, -6.929518694178331e+09,	"-6929518694.178", "%#.3f"},
+  {__LINE__, -6.936008056682024e+02,	"-6.936008E+02", "%E"},
+  {__LINE__, -6.944911117352400e+26,	"-6.944911E+26", "%1.6E"},
+  {__LINE__, -6.945829492125162e+05,	"-6.9e+05", "%+2.2g"},
+  {__LINE__, -6.946603162471856e-13,	"-6.94660E-13", "%#G"},
+  {__LINE__, -6.947529440406653e+22,	"-6.9475e+22", "%+6.5g"},
+  {__LINE__, -6.950167604854856e-30,	"-0.000000", "%7f"},
+  {__LINE__, -6.958122319262799e-26,	"-7E-26", "%+1.E"},
+  {__LINE__, -6.958978258390961e+16,	"-6.95898E+16", "%+5.6G"},
+  {__LINE__, -6.963780466334008e-06,	"-6.96378E-06", "%2G"},
+  {__LINE__, -6.965570896221966e+13,	"-6.965571E+13", "%5E"},
+  {__LINE__, -6.967741871945064e-10,	"-6.96774E-10", "%+#G"},
+  {__LINE__, -6.973815739524307e+19,	"-69738157395243067782.076", "%6.3f"},
+  {__LINE__, -6.982714545008106e+13,	"-6.98271e+13", "%g"},
+  {__LINE__, -6.985955885054476e+03,	"-6985.96", "%6G"},
+  {__LINE__, -6.986415266835747e+18,	"-6.98642e+18", "%#g"},
+  {__LINE__, -6.996461529596512e-08,	"-7.0E-08", "%#.1E"},
+  {__LINE__, -7.000144914012241e-05,	"-7.00014e-05", "%#g"},
+  {__LINE__, -7.001017894492730e-03,	"-0.00700102", "%+#.6G"},
+  {__LINE__, -7.003690685875917e+20,	"-7E+20", "%0.G"},
+  {__LINE__, -7.010454163965384e+00,	"-7.010454e+00", "%+e"},
+  {__LINE__, -7.011493550018082e-26,	"     -0", "%7.f"},
+  {__LINE__, -7.018018443394008e+21,	"-7.0E+21", "%+#1.1E"},
+  {__LINE__, -7.027253777387243e-05,	"-7.02725E-05", "%+G"},
+  {__LINE__, -7.043679213677740e-17,	"-0", "%1.f"},
+  {__LINE__, -7.051690489227881e-16,	"-7.052e-16", "%0.4g"},
+  {__LINE__, -7.063422475274161e-16,	"-7.063422E-16", "%E"},
+  {__LINE__, -7.065069592235558e-30,	"-7.06507e-30", "%+#g"},
+  {__LINE__, -7.068265283935834e-29,	"-7e-29", "%+5.e"},
+  {__LINE__, -7.068748224536295e-13,	"-0.000000", "%f"},
+  {__LINE__, -7.069621910708177e-04,	"-0.000707", "%1.3g"},
+  {__LINE__, -7.079725450964823e-12,	"-0.000000", "%f"},
+  {__LINE__, -7.087255464668218e+17,	"-7.1e+17", "%.1e"},
+  {__LINE__, -7.088715102009605e-09,	"-7e-09", "%6.0g"},
+  {__LINE__, -7.090414916270137e-15,	"-0.00000", "%.5f"},
+  {__LINE__, -7.091868311008428e-03,	" -0.0", "%5.1f"},
+  {__LINE__, -7.094242165237718e+21,	"-7.09424e+21", "%+g"},
+  {__LINE__, -7.094324305740325e-05,	"-7E-05", "%+3.G"},
+  {__LINE__, -7.104544752289144e+04,	"-71045.4", "%#g"},
+  {__LINE__, -7.105164644813694e-29,	"-0.000000", "%+f"},
+  {__LINE__, -7.114513164219487e-12,	"-7.11451e-12", "%+g"},
+  {__LINE__, -7.115778236604137e-12,	"-7.11578E-12", "%G"},
+  {__LINE__, -7.126217683410162e-27,	"-7.126218e-27", "%e"},
+  {__LINE__, -7.136214260967733e+28,	"-71362142609677334803564008325.338364", "%f"},
+  {__LINE__, -7.143452595522573e+19,	"-7.14345e+19", "%g"},
+  {__LINE__, -7.156042088843537e+27,	"-7156042088843537207765166385.7977837", "%4.7f"},
+  {__LINE__, -7.173687683710490e+24,	"-7.17369e+24", "%6g"},
+  {__LINE__, -7.190531162598206e+25,	"-71905311625982060164119503", "%4.f"},
+  {__LINE__, -7.201301831373747e-09,	"-7.2013e-09", "%g"},
+  {__LINE__, -7.209601436737306e+10,	"-7.2096e+10", "%g"},
+  {__LINE__, -7.211058997356655e-06,	"-7.211059E-06", "%E"},
+  {__LINE__, -7.226756177676272e-09,	"-7.22676E-09", "%+G"},
+  {__LINE__, -7.230870817566419e+19,	"-72308708175664193618.1040364", "%#.7f"},
+  {__LINE__, -7.231355992133345e-05,	"-7.231356E-05", "%#E"},
+  {__LINE__, -7.245999575278407e-12,	"-7.246e-12", "%g"},
+  {__LINE__, -7.247426403040390e-09,	"-7.2474E-09", "%+4.5G"},
+  {__LINE__, -7.257348680308567e-12,	"-7.3E-12", "%1.2G"},
+  {__LINE__, -7.258184256387366e-26,	"-7.25818E-26", "%+2G"},
+  {__LINE__, -7.262633672900126e+10,	"-7.26263e+10", "%#g"},
+  {__LINE__, -7.268887462426250e+03,	"-7.268887e+03", "%+#e"},
+  {__LINE__, -7.275284494682963e+08,	"-7.27528e+08", "%g"},
+  {__LINE__, -7.276335846256479e-07,	"  -0", "%4.f"},
+  {__LINE__, -7.312556378294452e+15,	"-7.31256e+15", "%+6g"},
+  {__LINE__, -7.334763752442417e-15,	"-0.0000", "%#.4f"},
+  {__LINE__, -7.354627097325888e-18,	"-7E-18", "%0.E"},
+  {__LINE__, -7.360087573342401e-25,	"-7.4E-25", "%6.2G"},
+  {__LINE__, -7.368533563361098e-29,	"-7.4E-29", "%3.1E"},
+  {__LINE__, -7.379267723540596e-06,	"-0.000007", "%f"},
+  {__LINE__, -7.384525781709565e-19,	"-0.000000", "%+#f"},
+  {__LINE__, -7.388940868679677e-09,	"-7.388941E-09", "%E"},
+  {__LINE__, -7.391602149099698e+00,	"-7.391602E+00", "%E"},
+  {__LINE__, -7.393159340196723e+22,	"-7.39316e+22", "%#2.6g"},
+  {__LINE__, -7.399783260198277e-16,	"-7.39978E-16", "%G"},
+  {__LINE__, -7.405609590448331e-06,	"-7.40561e-06", "%g"},
+  {__LINE__, -7.407396977847794e-11,	"-7.40740E-11", "%#G"},
+  {__LINE__, -7.433716848698637e+20,	"-7.43372e+20", "%+g"},
+  {__LINE__, -7.444176062769411e-01,	"-0.744418", "%#g"},
+  {__LINE__, -7.448314697244012e+12,	"-7448314697244.011739", "%f"},
+  {__LINE__, -7.449533988369018e+08,	"-7.449534e+08", "%+#7e"},
+  {__LINE__, -7.465682839758801e-01,	"-7E-01", "%4.E"},
+  {__LINE__, -7.466517843126368e-26,	"-7.5E-26", "%.1E"},
+  {__LINE__, -7.471385785539900e+24,	"-7471385785539899515583783.795591", "%f"},
+  {__LINE__, -7.478345583780341e+00,	"-7.478346e+00", "%e"},
+  {__LINE__, -7.524759284626724e-06,	"-7.52476e-06", "%2g"},
+  {__LINE__, -7.534831049342539e-19,	"-7.53483E-19", "%G"},
+  {__LINE__, -7.540546673179273e+15,	"-8e+15", "%.1g"},
+  {__LINE__, -7.543440436184003e-08,	"-7.54344E-08", "%6G"},
+  {__LINE__, -7.558224240835564e-06,	"-7.55822e-06", "%g"},
+  {__LINE__, -7.564132915154469e+23,	"-756413291515446850610260.298708", "%+f"},
+  {__LINE__, -7.566590720355392e+15,	"-7.566591e+15", "%1.6e"},
+  {__LINE__, -7.568565927479741e-01,	"-7.568566e-01", "%#6e"},
+  {__LINE__, -7.615574141973305e-17,	"-7.6156e-17", "%+.5g"},
+  {__LINE__, -7.641297631509318e-28,	"-8e-28", "%+.1g"},
+  {__LINE__, -7.661227834163450e+09,	"-7661227834.1634497", "%+#.7f"},
+  {__LINE__, -7.665934364070126e+11,	"-766593436407.0", "%.1f"},
+  {__LINE__, -7.682500068463102e-27,	"-0.000000", "%+#f"},
+  {__LINE__, -7.709363160273798e+15,	"-7.70936e+15", "%g"},
+  {__LINE__, -7.712596019255238e+26,	"-7.7e+26", "%.2g"},
+  {__LINE__, -7.730213358437991e+25,	"-7.7e+25", "%6.2g"},
+  {__LINE__, -7.744420019068976e+05,	"-7.74442E+05", "%.5E"},
+  {__LINE__, -7.745813181942296e+11,	"-7.7458132e+11", "%+.7e"},
+  {__LINE__, -7.751004379716307e+16,	"-7.751004e+16", "%e"},
+  {__LINE__, -7.759862226564527e-28,	"-7.75986e-28", "%g"},
+  {__LINE__, -7.767838880221207e-27,	"-7.76784e-27", "%g"},
+  {__LINE__, -7.776301142157532e-19,	"-0", "%2.f"},
+  {__LINE__, -7.783944257077553e-14,	"-8e-14", "%3.g"},
+  {__LINE__, -7.801587579382377e+28,	"-8e+28", "%+0.g"},
+  {__LINE__, -7.806685979552780e+25,	"-7.806686E+25", "%E"},
+  {__LINE__, -7.825968891331719e-05,	"-7.82597E-05", "%G"},
+  {__LINE__, -7.826834158664018e+12,	"-7.826834E+12", "%+#E"},
+  {__LINE__, -7.832536798726886e+24,	"-7.83254E+24", "%#1G"},
+  {__LINE__, -7.840485340202362e-18,	"-0.000000", "%.6f"},
+  {__LINE__, -7.843236212099233e+21,	"-7.84324e+21", "%g"},
+  {__LINE__, -7.906644052019278e-13,	"-7.906644E-13", "%E"},
+  {__LINE__, -7.908090440678874e-20,	"-7.90809E-20", "%#G"},
+  {__LINE__, -7.917588593012283e+08,	"-7.917589E+08", "%+E"},
+  {__LINE__, -7.929100086742454e+29,	"-792910008674245414539427656563.930213", "%f"},
+  {__LINE__, -7.933235286034290e+26,	"-7.933235E+26", "%E"},
+  {__LINE__, -7.943431966567875e-03,	"-0.0079434", "%+.5g"},
+  {__LINE__, -7.950872643572970e-22,	"-7.95087e-22", "%2g"},
+  {__LINE__, -7.971225555313069e-01,	"-0.797123", "%f"},
+  {__LINE__, -7.978310272676090e-12,	"-0.000000", "%#f"},
+  {__LINE__, -8.006805393896414e-29,	"-8.00681E-29", "%G"},
+  {__LINE__, -8.006906303018830e+25,	"-8.00691E+25", "%+G"},
+  {__LINE__, -8.008484654476057e+18,	"-8.008485e+18", "%5.6e"},
+  {__LINE__, -8.008943512904249e+27,	"-8008943512904249217854157905.0943", "%+.4f"},
+  {__LINE__, -8.016539743121665e+27,	"-8.01654E+27", "%G"},
+  {__LINE__, -8.018247227006128e-05,	" -8E-05", "%7.G"},
+  {__LINE__, -8.044391842561705e+21,	"-8.04439e+21", "%g"},
+  {__LINE__, -8.081902305002036e-02,	"-8.081902E-02", "%E"},
+  {__LINE__, -8.084193011936438e-03,	"-0.0080842", "%+5.5g"},
+  {__LINE__, -8.105813534846529e-27,	"-0.000000", "%f"},
+  {__LINE__, -8.128116892989251e+00,	"-8.12812", "%G"},
+  {__LINE__, -8.136119035731877e+05,	"-8e+05", "%+0.g"},
+  {__LINE__, -8.140584224052606e+14,	"-8E+14", "%5.G"},
+  {__LINE__, -8.145928897003907e+13,	"-8.15E+13", "%.3G"},
+  {__LINE__, -8.164495905907508e-02,	"-0.081645", "%G"},
+  {__LINE__, -8.169602113313905e+20,	"-8.16960e+20", "%#g"},
+  {__LINE__, -8.179181640418333e+24,	"-8.E+24", "%#.1G"},
+  {__LINE__, -8.184324492264231e-18,	"-8.18432E-18", "%G"},
+  {__LINE__, -8.186480473850516e-28,	"-0.000000", "%+f"},
+  {__LINE__, -8.196858948158896e+07,	"-8.1969E+07", "%.4E"},
+  {__LINE__, -8.213138534699043e-30,	"-0.000000", "%f"},
+  {__LINE__, -8.221181368676532e-21,	"-8.221181E-21", "%#1E"},
+  {__LINE__, -8.222605734191438e+16,	"-8.22261E+16", "%+G"},
+  {__LINE__, -8.223925661091432e-14,	"-8.223926e-14", "%0e"},
+  {__LINE__, -8.232281541044777e-01,	"-0.823228", "%f"},
+  {__LINE__, -8.245536794508725e+22,	"-8E+22", "%6.G"},
+  {__LINE__, -8.270687365305925e+25,	"-82706873653059247430974210.146815", "%f"},
+  {__LINE__, -8.288978945738204e+11,	"-8.28898e+11", "%5g"},
+  {__LINE__, -8.290628698333139e+02,	"-829.063", "%+G"},
+  {__LINE__, -8.292416206056451e-16,	"-8.29242e-16", "%+g"},
+  {__LINE__, -8.296322623746486e-13,	"-8.29632E-13", "%0.6G"},
+  {__LINE__, -8.298321941376933e-16,	"-0.000000", "%+f"},
+  {__LINE__, -8.302331258878365e+29,	"-8.30233E+29", "%0G"},
+  {__LINE__, -8.309022429255061e+06,	"-8309022.429255", "%+f"},
+  {__LINE__, -8.312786829254646e-23,	"-8.312787e-23", "%e"},
+  {__LINE__, -8.313852965178063e-15,	"-8.313853e-15", "%#7e"},
+  {__LINE__, -8.317529094827869e+16,	"-8.31753E+16", "%2G"},
+  {__LINE__, -8.322847660882248e-17,	"-0.000000", "%f"},
+  {__LINE__, -8.324060602752638e-30,	"-8.32406e-30", "%#g"},
+  {__LINE__, -8.325043500735461e+27,	"-8325043500735461066142306663.095951", "%#f"},
+  {__LINE__, -8.332432016286935e-02,	"-0.0833243", "%g"},
+  {__LINE__, -8.334251670232117e-09,	"-8.33425e-09", "%g"},
+  {__LINE__, -8.338076225141778e+02,	"-833.808", "%g"},
+  {__LINE__, -8.338349587571534e-23,	"-8.33835e-23", "%+2g"},
+  {__LINE__, -8.342420812231939e+23,	"-834242081223193920891390.00745", "%+0.5f"},
+  {__LINE__, -8.347404637940894e+17,	"-8.347405e+17", "%+e"},
+  {__LINE__, -8.367002601133880e-12,	"-0.000000", "%#2.6f"},
+  {__LINE__, -8.368579538210858e-17,	"-8.36858e-17", "%5g"},
+  {__LINE__, -8.392398522472401e-10,	"-0.0000", "%.4f"},
+  {__LINE__, -8.393029677635258e-29,	" -8E-29", "%7.G"},
+  {__LINE__, -8.393843230819225e-11,	"-8.393843E-11", "%E"},
+  {__LINE__, -8.397239871789148e-11,	"-8.39724e-11", "%g"},
+  {__LINE__, -8.402316358199041e-29,	"-0.000", "%3.3f"},
+  {__LINE__, -8.402910159034304e-14,	"-8.4e-14", "%+0.3g"},
+  {__LINE__, -8.414960962391726e+09,	"-8414960962.391726", "%#f"},
+  {__LINE__, -8.417512471384889e-28,	"-8.417512e-28", "%e"},
+  {__LINE__, -8.418719240222911e+21,	"-8418719240222911182058.851409", "%f"},
+  {__LINE__, -8.421210956044195e-09,	"-0.00000", "%.5f"},
+  {__LINE__, -8.422001733529095e+24,	"-8E+24", "%0.G"},
+  {__LINE__, -8.443614453772469e+21,	"-8.44361E+21", "%+G"},
+  {__LINE__, -8.445883044175737e-19,	"-0", "%+1.f"},
+  {__LINE__, -8.460545304711022e-01,	"-0.846055", "%G"},
+  {__LINE__, -8.470462532754567e+12,	"-8.47E+12", "%6.3G"},
+  {__LINE__, -8.478488782426476e-07,	"-8.478489E-07", "%E"},
+  {__LINE__, -8.478657582923923e+09,	"-8.5e+09", "%.2g"},
+  {__LINE__, -8.482732098043366e+12,	"-8482732098043", "%5.f"},
+  {__LINE__, -8.489112373854447e+07,	"-8.489e+07", "%#3.3e"},
+  {__LINE__, -8.494153144629106e+02,	"-849.415", "%+g"},
+  {__LINE__, -8.496331191616493e+28,	"-8E+28", "%+6.G"},
+  {__LINE__, -8.503711894495339e+05,	"-850371", "%g"},
+  {__LINE__, -8.505271893964268e+14,	"-8.505272E+14", "%E"},
+  {__LINE__, -8.509873985358741e+15,	"-9.e+15", "%#7.g"},
+  {__LINE__, -8.518336897898081e-20,	"-8.51834E-20", "%G"},
+  {__LINE__, -8.529588044136128e+21,	"-8.529588E+21", "%E"},
+  {__LINE__, -8.539706586811079e-23,	"-8.53971E-23", "%G"},
+  {__LINE__, -8.545924619642008e+10,	"-8.545925e+10", "%6e"},
+  {__LINE__, -8.572893681637353e+09,	"-8.57289E+09", "%G"},
+  {__LINE__, -8.585483717692345e+29,	"-8.58548E+29", "%+G"},
+  {__LINE__, -8.586092014292309e+27,	"-8.59e+27", "%.2e"},
+  {__LINE__, -8.604716827086833e-26,	"-8.60472e-26", "%g"},
+  {__LINE__, -8.621349224186615e-04,	"-0.000862", "%f"},
+  {__LINE__, -8.626097065201103e-21,	"   -0", "%5.f"},
+  {__LINE__, -8.631700514212522e-16,	"-8.631701E-16", "%+E"},
+  {__LINE__, -8.634703359975640e-09,	"-0.000000", "%+5f"},
+  {__LINE__, -8.639393025443855e-17,	"-8.63939e-17", "%g"},
+  {__LINE__, -8.640641942556812e-11,	"-8.64064e-11", "%#g"},
+  {__LINE__, -8.646260250525495e-09,	"-0.000", "%.3f"},
+  {__LINE__, -8.667322015806242e+09,	"-8667322015.806242", "%+#f"},
+  {__LINE__, -8.690705655554451e+10,	"-8.690706E+10", "%#E"},
+  {__LINE__, -8.714299893763934e-07,	"-8.7143E-07", "%.5G"},
+  {__LINE__, -8.715729756264988e+27,	"-8.71573E+27", "%+.6G"},
+  {__LINE__, -8.716518487180945e+16,	"-9e+16", "%3.e"},
+  {__LINE__, -8.744404488756237e+25,	"-87444044887562366596966967.335902", "%4f"},
+  {__LINE__, -8.754720498369242e+13,	"-8.75472e+13", "%g"},
+  {__LINE__, -8.763198097931010e-19,	"-8.76320e-19", "%#g"},
+  {__LINE__, -8.779007408852458e+28,	"-8.77901E+28", "%G"},
+  {__LINE__, -8.794576202907937e+11,	"-8.79458E+11", "%#2.6G"},
+  {__LINE__, -8.799091520612418e-11,	"-8.799E-11", "%3.4G"},
+  {__LINE__, -8.799246265524921e+11,	"-8.79925E+11", "%G"},
+  {__LINE__, -8.809010508550436e-04,	"-8.8090E-04", "%.4E"},
+  {__LINE__, -8.817389999872653e-10,	"-8.81739e-10", "%g"},
+  {__LINE__, -8.842022428985267e-28,	"-8.842022E-28", "%E"},
+  {__LINE__, -8.851265987586864e-07,	"-0.000001", "%f"},
+  {__LINE__, -8.861985131432196e+03,	"-8861.985", "%+.7G"},
+  {__LINE__, -8.874449013455113e-29,	"-8.874449e-29", "%e"},
+  {__LINE__, -8.878752609483453e+18,	"-8.87875E+18", "%G"},
+  {__LINE__, -8.882501665315313e-04,	"-0.00088825", "%+G"},
+  {__LINE__, -8.892056241505784e-14,	"-8.89206E-14", "%G"},
+  {__LINE__, -8.895327674961603e-30,	"-8.89533E-30", "%G"},
+  {__LINE__, -8.900059462213669e-30,	"-8.900059E-30", "%+#E"},
+  {__LINE__, -8.957100548759815e+18,	"-9e+18", "%3.0e"},
+  {__LINE__, -8.961352369869012e-30,	"-8.961352e-30", "%+#2e"},
+  {__LINE__, -8.962296474587800e+02,	"-896", "%4.f"},
+  {__LINE__, -8.962536469328530e-12,	"-8.96254E-12", "%G"},
+  {__LINE__, -8.963299420391932e+21,	"-8.9633e+21", "%g"},
+  {__LINE__, -8.967736672941522e-11,	"-8.96774e-11", "%g"},
+  {__LINE__, -8.994077362462679e+11,	"-8.9940774e+11", "%+#.7e"},
+  {__LINE__, -9.000452862345622e+15,	"-9e+15", "%2.e"},
+  {__LINE__, -9.007489135361462e+07,	"-9.0075E+07", "%+2.4E"},
+  {__LINE__, -9.036271805879910e+16,	"-9.03627E+16", "%G"},
+  {__LINE__, -9.036319073700248e+22,	"-9.03632e+22", "%1g"},
+  {__LINE__, -9.043207635989237e+11,	"-9.043208e+11", "%#e"},
+  {__LINE__, -9.043856598625815e-26,	"-9e-26", "%+1.g"},
+  {__LINE__, -9.052760561065698e+14,	"-9.052761E+14", "%E"},
+  {__LINE__, -9.066480297957160e-06,	"-9E-06", "%+1.G"},
+  {__LINE__, -9.070971376440752e-01,	"-0.907097", "%g"},
+  {__LINE__, -9.073301831888273e+09,	"-9.07330E+09", "%#G"},
+  {__LINE__, -9.091228662702147e+28,	"-9E+28", "%4.G"},
+  {__LINE__, -9.093652024983832e+04,	"-9.093652E+04", "%7.6E"},
+  {__LINE__, -9.098945831139295e-04,	"-9.098946E-04", "%+1.6E"},
+  {__LINE__, -9.124981449916591e+05,	"-912498", "%G"},
+  {__LINE__, -9.132038703003394e-02,	"-0.0913204", "%#G"},
+  {__LINE__, -9.138271437433964e-04,	"-0.000913827", "%5g"},
+  {__LINE__, -9.158186427463699e-04,	"-0.000915819", "%g"},
+  {__LINE__, -9.160846358172526e+16,	"-9.160846E+16", "%#E"},
+  {__LINE__, -9.160884330810163e+17,	"-9E+17", "%+5.G"},
+  {__LINE__, -9.190271387375542e+21,	"-9.19027e+21", "%+g"},
+  {__LINE__, -9.191651872412619e-04,	"-9.191652E-04", "%E"},
+  {__LINE__, -9.196426161984341e-10,	"-9E-10", "%4.G"},
+  {__LINE__, -9.201074139774962e+09,	"-9E+09", "%4.G"},
+  {__LINE__, -9.223294284802762e+09,	"-9.22329E+09", "%G"},
+  {__LINE__, -9.224740266754996e+02,	"-9E+02", "%6.0G"},
+  {__LINE__, -9.231583780512302e-01,	"  -0.9", "%6.g"},
+  {__LINE__, -9.241998826543689e+07,	"-92419988", "%1.f"},
+  {__LINE__, -9.243603351372128e+27,	"-9.243603e+27", "%#e"},
+  {__LINE__, -9.255922697415071e+11,	"-9.25592e+11", "%g"},
+  {__LINE__, -9.265734968114124e-02,	"-0.092657", "%f"},
+  {__LINE__, -9.273132068521061e+11,	"-9.27313E+11", "%G"},
+  {__LINE__, -9.276017912826685e+27,	"-9.E+27", "%+#5.G"},
+  {__LINE__, -9.279781279788505e+17,	"-9.27978E+17", "%7G"},
+  {__LINE__, -9.305057549822465e-19,	"-9.30506E-19", "%5G"},
+  {__LINE__, -9.313182384508469e+18,	"-9.31318E+18", "%G"},
+  {__LINE__, -9.313350925182641e-12,	"-9.31E-12", "%.3G"},
+  {__LINE__, -9.362202657509130e+08,	"-9e+08", "%.1g"},
+  {__LINE__, -9.367344757598381e+19,	"-9.36734e+19", "%g"},
+  {__LINE__, -9.374222399774300e+26,	"-9.37422e+26", "%4g"},
+  {__LINE__, -9.385734023305105e+02,	"-9.385734e+02", "%+0e"},
+  {__LINE__, -9.392042570618909e+17,	"-9.39204E+17", "%G"},
+  {__LINE__, -9.395742939311926e+20,	"-939574293931192627837.8451", "%.4f"},
+  {__LINE__, -9.409066155962469e+09,	"-9.40907E+09", "%#G"},
+  {__LINE__, -9.412851077799790e+23,	"-9.412851E+23", "%E"},
+  {__LINE__, -9.431808019049818e+08,	"-9.43181e+08", "%g"},
+  {__LINE__, -9.465236900519924e-27,	"-9.46524e-27", "%g"},
+  {__LINE__, -9.478330386415852e+17,	"-9.478330e+17", "%e"},
+  {__LINE__, -9.510393719697428e+15,	"-9.51039E+15", "%+G"},
+  {__LINE__, -9.534229599909890e-09,	"-0.000000", "%f"},
+  {__LINE__, -9.541731189284823e-17,	"-1.E-16", "%+#7.G"},
+  {__LINE__, -9.548861908445902e+24,	"-9548861908445902102471336.547751", "%f"},
+  {__LINE__, -9.578447281451794e+14,	"-957844728145179", "%5.f"},
+  {__LINE__, -9.580512736933464e+11,	"-9.58051E+11", "%G"},
+  {__LINE__, -9.596838169770637e-28,	"-1E-27", "%+6.G"},
+  {__LINE__, -9.597528852877852e-22,	"-1e-21", "%2.1g"},
+  {__LINE__, -9.599943658427051e+02,	"-9.599944E+02", "%E"},
+  {__LINE__, -9.603227991185260e-14,	"-1E-13", "%+0.E"},
+  {__LINE__, -9.606818733892343e+08,	"-960681873.389", "%1.3f"},
+  {__LINE__, -9.617442692720937e+16,	"-9.61744E+16", "%G"},
+  {__LINE__, -9.628685516961109e+29,	"-9.62869e+29", "%3g"},
+  {__LINE__, -9.638354750455226e-11,	"-0.000000", "%f"},
+  {__LINE__, -9.644266379029137e+16,	"-96442663790291369.707575", "%f"},
+  {__LINE__, -9.645563533575482e+06,	"-1E+07", "%1.G"},
+  {__LINE__, -9.645993536742941e-29,	"-9.64599e-29", "%+g"},
+  {__LINE__, -9.647147223548563e+00,	"-9.647147e+00", "%e"},
+  {__LINE__, -9.671225879906396e-11,	"-0", "%0.f"},
+  {__LINE__, -9.675000471729906e-09,	"-9.675000E-09", "%E"},
+  {__LINE__, -9.683992878297159e-26,	"-9.68e-26", "%2.2e"},
+  {__LINE__, -9.695491325144765e+10,	"-9.69549E+10", "%#G"},
+  {__LINE__, -9.695661526907136e-24,	"   -0.", "%#6.f"},
+  {__LINE__, -9.703124881970338e+07,	"-9.703e+07", "%0.4g"},
+  {__LINE__, -9.707701257031864e+26,	"-970770125703186437249314622.022212", "%f"},
+  {__LINE__, -9.709879792694702e+09,	"-9.709880E+09", "%E"},
+  {__LINE__, -9.736052226907940e+26,	"-9.73605e+26", "%+#g"},
+  {__LINE__, -9.745037157520795e+07,	"-9.74504e+07", "%#5.6g"},
+  {__LINE__, -9.757293950670832e-29,	"-9.757E-29", "%0.4G"},
+  {__LINE__, -9.762126832689880e+12,	"-9.76213E+12", "%G"},
+  {__LINE__, -9.801328150341989e-01,	"     -1", "%7.G"},
+  {__LINE__, -9.837332964629669e-20,	"-9.83733E-20", "%0G"},
+  {__LINE__, -9.837790327283010e+23,	"-1E+24", "%.1G"},
+  {__LINE__, -9.839636176463729e+23,	"-9.83964E+23", "%#6.5E"},
+  {__LINE__, -9.841454250618272e+11,	"-9.84E+11", "%+2.3G"},
+  {__LINE__, -9.852920805249280e-12,	"-9.852921e-12", "%.7g"},
+  {__LINE__, -9.854092850182351e+12,	"-9.85409e+12", "%0g"},
+  {__LINE__, -9.866796026839712e+02,	"-9.9E+02", "%#.1E"},
+  {__LINE__, -9.867413260289803e-21,	"-1e-20", "%.1g"},
+  {__LINE__, -9.882136052131983e-08,	"-9.88214e-08", "%g"},
+  {__LINE__, -9.882755697941866e+20,	"-9.882756E+20", "%E"},
+  {__LINE__, -9.897275811087050e+20,	"-9.9E+20", "%0.3G"},
+  {__LINE__, -9.899860651812364e-04,	"-9.899861e-04", "%e"},
+  {__LINE__, -9.906754113555550e-11,	"-9.90675e-11", "%3g"},
+  {__LINE__, -9.926067557389940e+11,	"-9.92607E+11", "%G"},
+  {__LINE__, -9.929638609014063e+17,	"-992963860901406292.214233", "%1f"},
+  {__LINE__, -9.941214552193284e-24,	"-0.000000", "%+#f"},
+  {__LINE__, -9.942875240256573e+14,	"-9.942875e+14", "%+1e"},
+  {__LINE__, -9.944492909695798e-01,	"-9.944E-01", "%.3E"},
+  {__LINE__, -9.954710507359939e-27,	"-1e-26", "%+0.2g"},
+  {__LINE__, -9.955410507742851e+03,	"-9955.41", "%+G"},
+  {__LINE__, -9.974437672251590e+02,	"-997.444", "%#G"},
+  {__LINE__, -9.975683165288929e-26,	"-9.97568E-26", "%6G"},
+  {__LINE__, 1.003827370583415e+06,	"1003827.370583", "%3f"},
+  {__LINE__, 1.004189065268560e-27,	"1.004189E-27", "%.7G"},
+  {__LINE__, 1.005840059175462e-28,	"+1.00584E-28", "%+G"},
+  {__LINE__, 1.006586790090557e-12,	"0.000000", "%#f"},
+  {__LINE__, 1.007598594773359e+18,	"1.0076E+18", "%G"},
+  {__LINE__, 1.007902307001894e+29,	"1.0079e+29", "%g"},
+  {__LINE__, 1.008607405036580e-15,	"1.00861E-15", "%6G"},
+  {__LINE__, 1.008769102466771e+16,	"+1.00877E+16", "%+G"},
+  {__LINE__, 1.009545698372534e-08,	"+1E-08", "%+0.0G"},
+  {__LINE__, 1.010173673945099e-12,	"+1.01017e-12", "%+#0g"},
+  {__LINE__, 1.011375000606627e+09,	"1011375000.606627", "%f"},
+  {__LINE__, 1.011944652221650e+15,	"1011944652221649.98", "%3.2f"},
+  {__LINE__, 1.013057788090379e-21,	"0.000000", "%#f"},
+  {__LINE__, 1.014525729953198e+15,	"1.01453e+15", "%3g"},
+  {__LINE__, 1.016760538234615e-21,	"+1.016761E-21", "%+3E"},
+  {__LINE__, 1.017052611781237e-29,	"0.000000", "%f"},
+  {__LINE__, 1.018471223361229e+14,	"1.01847E+14", "%G"},
+  {__LINE__, 1.021646959220873e+15,	"1021646959220872.6", "%4.1f"},
+  {__LINE__, 1.022304833976590e+27,	"1.0223e+27", "%g"},
+  {__LINE__, 1.022500312067325e-12,	"1.0225e-12", "%6g"},
+  {__LINE__, 1.023019285462627e-20,	"0.000000", "%f"},
+  {__LINE__, 1.024192579400824e+06,	"1.02419e+06", "%g"},
+  {__LINE__, 1.024517953555766e-28,	"1.02452E-28", "%G"},
+  {__LINE__, 1.026673589339585e+21,	"1.02667E+21", "%G"},
+  {__LINE__, 1.027231090958880e-19,	"1.E-19", "%#3.G"},
+  {__LINE__, 1.028249904956487e-27,	"1E-27", "%5.G"},
+  {__LINE__, 1.028570144661448e-28,	"+1.02857E-28", "%+G"},
+  {__LINE__, 1.028934898454705e-13,	"+1.028935E-13", "%+E"},
+  {__LINE__, 1.029071053545906e-26,	"1.029071E-26", "%E"},
+  {__LINE__, 1.032672895881148e-30,	"+1.032673E-30", "%+E"},
+  {__LINE__, 1.033502358979511e+06,	"1.0335E+06", "%.5G"},
+  {__LINE__, 1.036790427717847e+19,	"1e+19", "%4.g"},
+  {__LINE__, 1.037022928821648e+03,	"1037.02", "%5g"},
+  {__LINE__, 1.040551683941284e+14,	"1.04055E+14", "%G"},
+  {__LINE__, 1.044499252101308e-17,	"1.044499E-17", "%E"},
+  {__LINE__, 1.045791899570889e+15,	"+1.04579e+15", "%+g"},
+  {__LINE__, 1.048730383198703e+28,	"1.049e+28", "%.4g"},
+  {__LINE__, 1.050654419882509e-18,	"0.000000", "%f"},
+  {__LINE__, 1.052600569262127e-27,	"+0.000", "%+2.3f"},
+  {__LINE__, 1.053213014784149e+15,	"1E+15", "%4.G"},
+  {__LINE__, 1.057553916225948e-15,	"+0.000000", "%+4f"},
+  {__LINE__, 1.058191244482453e+19,	"1.058e+19", "%.3e"},
+  {__LINE__, 1.058746269793972e-26,	"+1.1E-26", "%+.2G"},
+  {__LINE__, 1.058793271960762e-01,	"+1.058793E-01", "%+4E"},
+  {__LINE__, 1.058869592738370e-19,	"1.05887e-19", "%3g"},
+  {__LINE__, 1.060402312803008e+15,	"1060402312803008.229025", "%f"},
+  {__LINE__, 1.061106284763095e+00,	"1.061106", "%0f"},
+  {__LINE__, 1.061180160987467e+09,	"1e+09", "%2.g"},
+  {__LINE__, 1.061181537176067e-06,	"+1.06118e-06", "%+g"},
+  {__LINE__, 1.065021381771174e+20,	"1.06502e+20", "%g"},
+  {__LINE__, 1.065464040401130e-16,	"1.065464e-16", "%e"},
+  {__LINE__, 1.065573419819459e-05,	"0.00001", "%.5f"},
+  {__LINE__, 1.066107764306644e+13,	"1.066108e+13", "%#e"},
+  {__LINE__, 1.071318759598956e+12,	"1.071319e+12", "%e"},
+  {__LINE__, 1.071564727222321e+10,	"1.072E+10", "%3.4G"},
+  {__LINE__, 1.074652481218139e+14,	"1.0747E+14", "%.4E"},
+  {__LINE__, 1.078453684911309e-02,	"0.0107845", "%g"},
+  {__LINE__, 1.078550811446675e-05,	"1.07855e-05", "%g"},
+  {__LINE__, 1.078780494515273e-04,	"0.000107878", "%4G"},
+  {__LINE__, 1.079467488876157e-16,	"+1.079467E-16", "%+E"},
+  {__LINE__, 1.080529722917934e-20,	"0.000000", "%f"},
+  {__LINE__, 1.082169127709439e+01,	"10.8217", "%#5g"},
+  {__LINE__, 1.087241285590951e+22,	"1E+22", "%4.G"},
+  {__LINE__, 1.091049208406195e-14,	"0.0000", "%.4f"},
+  {__LINE__, 1.095316064213237e+16,	"+1e+16", "%+0.g"},
+  {__LINE__, 1.095349083237975e-04,	"1.095349e-04", "%5e"},
+  {__LINE__, 1.098002465452836e+12,	"1098002465452.836205", "%f"},
+  {__LINE__, 1.098445764138997e+13,	"1.09845E+13", "%G"},
+  {__LINE__, 1.099968047892474e-13,	"1.1e-13", "%2.5g"},
+  {__LINE__, 1.101017598311363e-04,	"0.000110102", "%G"},
+  {__LINE__, 1.102776332077817e+18,	"1.103e+18", "%.3e"},
+  {__LINE__, 1.103734053887830e-01,	"0.110373", "%f"},
+  {__LINE__, 1.105730106869006e-03,	"0.00110573", "%g"},
+  {__LINE__, 1.106366781854058e-10,	"1.10637e-10", "%g"},
+  {__LINE__, 1.107354763213839e+15,	"1.107355e+15", "%6e"},
+  {__LINE__, 1.108151709609825e-10,	"+1.10815E-10", "%+G"},
+  {__LINE__, 1.110054501993647e+21,	"+1.11005E+21", "%+G"},
+  {__LINE__, 1.111574814737873e-17,	"+1.112E-17", "%+1.4G"},
+  {__LINE__, 1.111865512360108e-15,	"1E-15", "%.0G"},
+  {__LINE__, 1.112281568330498e-03,	"1.112282e-03", "%.6e"},
+  {__LINE__, 1.112625415174238e+21,	"+1.11263e+21", "%+g"},
+  {__LINE__, 1.112744974910395e-02,	"0.011127", "%f"},
+  {__LINE__, 1.114726566979885e-10,	"1.11473e-10", "%g"},
+  {__LINE__, 1.115395843055731e-20,	"+0.000000", "%+6f"},
+  {__LINE__, 1.115983414693121e+15,	"1.11598e+15", "%5.6g"},
+  {__LINE__, 1.116118842074266e+27,	"1.116119e+27", "%e"},
+  {__LINE__, 1.118386983012328e+19,	"11183869830123276400.968280", "%1f"},
+  {__LINE__, 1.119344607892718e-22,	"1.119345e-22", "%e"},
+  {__LINE__, 1.120560837110279e-19,	"0.000000", "%f"},
+  {__LINE__, 1.123620157906291e-02,	"0.0112362", "%G"},
+  {__LINE__, 1.126804857639478e+29,	"1.1268E+29", "%#0.5G"},
+  {__LINE__, 1.128962199461581e+11,	"1.12896e+11", "%g"},
+  {__LINE__, 1.129878714246809e-16,	"1E-16", "%0.0G"},
+  {__LINE__, 1.130331982972407e-06,	"+0.", "%+#1.f"},
+  {__LINE__, 1.134167332070028e-16,	"0", "%0.0f"},
+  {__LINE__, 1.134248080053598e-28,	"0.000000", "%f"},
+  {__LINE__, 1.136023160708119e-10,	"+0.000000", "%+1f"},
+  {__LINE__, 1.136167141059036e+23,	"113616714105903593434732.101741", "%f"},
+  {__LINE__, 1.136439499920164e+10,	"+1.13644E+10", "%+G"},
+  {__LINE__, 1.136859734932182e+24,	"1.13686e+24", "%g"},
+  {__LINE__, 1.138985939448731e+09,	"1.13899e+09", "%2g"},
+  {__LINE__, 1.139287324790407e-25,	"1e-25", "%.1g"},
+  {__LINE__, 1.140559912153251e+06,	"1.14056e+06", "%g"},
+  {__LINE__, 1.141318036027086e-26,	"1.14132E-26", "%G"},
+  {__LINE__, 1.142586049368452e-20,	"+1.14259E-20", "%+7.5E"},
+  {__LINE__, 1.143283863993333e-17,	"1.143284E-17", "%3E"},
+  {__LINE__, 1.144637911632432e-28,	"1.144638E-28", "%#3E"},
+  {__LINE__, 1.145791416532065e-10,	"1.14579e-10", "%g"},
+  {__LINE__, 1.146958047315780e-17,	"1.146958e-17", "%e"},
+  {__LINE__, 1.147898346886569e-08,	"1E-08", "%3.0E"},
+  {__LINE__, 1.149724744965608e-14,	"1.14972e-14", "%5g"},
+  {__LINE__, 1.155383721940441e-10,	"1e-10", "%1.g"},
+  {__LINE__, 1.157066617729094e-02,	"0", "%1.f"},
+  {__LINE__, 1.157893614537215e+05,	"1.157894E+05", "%E"},
+  {__LINE__, 1.160476344451928e-19,	"1.2e-19", "%.1e"},
+  {__LINE__, 1.161610499315966e-26,	"1.161610E-26", "%E"},
+  {__LINE__, 1.162345042181490e+29,	"116234504218148981813385489658.685401", "%5.6f"},
+  {__LINE__, 1.162376053722862e+23,	"1.16238e+23", "%g"},
+  {__LINE__, 1.162996084782483e+18,	"+1e+18", "%+0.g"},
+  {__LINE__, 1.163544861478966e+26,	"1.16354E+26", "%G"},
+  {__LINE__, 1.167300137450931e+06,	"1E+06", "%.0G"},
+  {__LINE__, 1.168693829096401e-30,	"+1.16869e-30", "%+g"},
+  {__LINE__, 1.172791369381396e+15,	"1.173E+15", "%.4G"},
+  {__LINE__, 1.174427110782028e-29,	"  1E-29", "%7.G"},
+  {__LINE__, 1.179498322112450e+27,	"1179498322112449759657692993.641831", "%f"},
+  {__LINE__, 1.179555606293547e+27,	"1.17956e+27", "%3g"},
+  {__LINE__, 1.180815814881269e+06,	"1.180816e+06", "%e"},
+  {__LINE__, 1.181494870072805e+20,	"1.181495e+20", "%5e"},
+  {__LINE__, 1.181524119225619e+12,	"+1181524119225.61917", "%+5.5f"},
+  {__LINE__, 1.182111212289243e-20,	"1e-20", "%4.g"},
+  {__LINE__, 1.184503315019769e-27,	"1.1845e-27", "%7g"},
+  {__LINE__, 1.186413646767670e+29,	"1.18641e+29", "%g"},
+  {__LINE__, 1.186852938885004e-13,	"1.18685e-13", "%4g"},
+  {__LINE__, 1.188837612473914e+05,	"1e+05", "%.0g"},
+  {__LINE__, 1.190317482928293e-29,	"1.190317e-29", "%e"},
+  {__LINE__, 1.190527491143987e+02,	"1.190527E+02", "%E"},
+  {__LINE__, 1.191823062060233e-30,	"1.2E-30", "%6.2G"},
+  {__LINE__, 1.191926974812428e-23,	"1.2e-23", "%.2g"},
+  {__LINE__, 1.193549622366544e-25,	"1E-25", "%4.1G"},
+  {__LINE__, 1.195517368629765e-21,	"1.195517e-21", "%1.7g"},
+  {__LINE__, 1.195573061651289e-27,	"1.19557e-27", "%#g"},
+  {__LINE__, 1.195806681188325e-03,	"+0.00120", "%+#.3G"},
+  {__LINE__, 1.196842275192189e-28,	"1.19684e-28", "%g"},
+  {__LINE__, 1.197307550969576e+04,	"1.1973E+04", "%.4E"},
+  {__LINE__, 1.197608525847607e+15,	"1197608525847606.8062805", "%4.7f"},
+  {__LINE__, 1.197801338159407e+04,	"11978", "%5G"},
+  {__LINE__, 1.197813329735025e+27,	"1.19781E+27", "%7G"},
+  {__LINE__, 1.199483904123253e-12,	"1.19948e-12", "%g"},
+  {__LINE__, 1.199535292169766e-09,	"1.199535e-09", "%e"},
+  {__LINE__, 1.201478067515135e+05,	"120147.806752", "%f"},
+  {__LINE__, 1.202054662662158e+17,	"1.20205E+17", "%#G"},
+  {__LINE__, 1.202111922368321e+07,	"+1.202112E+07", "%+#E"},
+  {__LINE__, 1.202536892743791e-01,	"0.120254", "%#g"},
+  {__LINE__, 1.205698674119882e-29,	"1.2057E-29", "%G"},
+  {__LINE__, 1.208091664701942e-13,	" 0.", "%#3.f"},
+  {__LINE__, 1.208942413954872e-17,	"1.20894E-17", "%G"},
+  {__LINE__, 1.209704891496613e+10,	"1.210e+10", "%2.3e"},
+  {__LINE__, 1.211355639334831e+29,	"1E+29", "%.0G"},
+  {__LINE__, 1.211447553804203e+17,	"  1E+17", "%7.E"},
+  {__LINE__, 1.212481583429790e-16,	"1.212482e-16", "%e"},
+  {__LINE__, 1.212849001551862e+26,	"121284900155186181613942153.4899157", "%6.7f"},
+  {__LINE__, 1.213057538677801e+06,	"1213057.538678", "%#.6f"},
+  {__LINE__, 1.214609592911893e+25,	"1.214610e+25", "%#e"},
+  {__LINE__, 1.216086266251665e+01,	"1e+01", "%5.e"},
+  {__LINE__, 1.216468565931026e-22,	"1.216469E-22", "%1E"},
+  {__LINE__, 1.216503126598765e+14,	"+1E+14", "%+0.E"},
+  {__LINE__, 1.216641013695553e-14,	"0.000000", "%f"},
+  {__LINE__, 1.223142246779504e-23,	"0.000000", "%f"},
+  {__LINE__, 1.223884786443274e+08,	"122388479", "%5.f"},
+  {__LINE__, 1.224012562770076e+29,	"1.22401e+29", "%0g"},
+  {__LINE__, 1.225098157528297e+14,	"1.22510e+14", "%#g"},
+  {__LINE__, 1.226306848505242e-22,	"1.22631E-22", "%G"},
+  {__LINE__, 1.227487485547996e-08,	"+1.22749e-08", "%+g"},
+  {__LINE__, 1.237206486909689e+02,	"+123.721", "%+#.6g"},
+  {__LINE__, 1.240281126177077e-02,	"+0.01", "%+3.g"},
+  {__LINE__, 1.241197211306994e-06,	"1.241197E-06", "%E"},
+  {__LINE__, 1.241776311097410e+07,	"1.241776E+07", "%E"},
+  {__LINE__, 1.245995986024999e-03,	"0.001246", "%g"},
+  {__LINE__, 1.246082428199607e+03,	"1246.082428", "%f"},
+  {__LINE__, 1.247021567954220e+05,	"  1e+05", "%7.g"},
+  {__LINE__, 1.248140089618390e-30,	"+1.24814E-30", "%+G"},
+  {__LINE__, 1.248403361652064e-30,	"+0.000000", "%+f"},
+  {__LINE__, 1.251098538918842e-26,	"+1.251099E-26", "%+E"},
+  {__LINE__, 1.251952633022061e+25,	"1.25195e+25", "%g"},
+  {__LINE__, 1.253029705843461e-04,	"+1.E-04", "%+#4.E"},
+  {__LINE__, 1.259562132729488e-09,	"1e-09", "%1.e"},
+  {__LINE__, 1.261702205492260e-27,	"0.000000", "%f"},
+  {__LINE__, 1.265910361926660e-19,	"+1.265910e-19", "%+e"},
+  {__LINE__, 1.267411912651087e+12,	"1.26741E+12", "%1G"},
+  {__LINE__, 1.267830718285980e-10,	"1.26783e-10", "%g"},
+  {__LINE__, 1.268238378987517e-23,	"1E-23", "%5.E"},
+  {__LINE__, 1.275543253354167e+10,	"1.27554E+10", "%G"},
+  {__LINE__, 1.277255234454465e-10,	"1.27726E-10", "%5G"},
+  {__LINE__, 1.280590949834150e-21,	"1.280591E-21", "%E"},
+  {__LINE__, 1.285570453788242e-02,	"1.285570E-02", "%E"},
+  {__LINE__, 1.287712130719031e+09,	"1287712130.719031", "%#f"},
+  {__LINE__, 1.290142876187105e+29,	"+1.290143E+29", "%+E"},
+  {__LINE__, 1.293129213191961e+21,	"1.29313E+21", "%G"},
+  {__LINE__, 1.293317101334714e-23,	"+0.000000", "%+f"},
+  {__LINE__, 1.294506813069071e-13,	"0.0", "%3.1f"},
+  {__LINE__, 1.295576232685739e-22,	"+0.000000", "%+f"},
+  {__LINE__, 1.296010470431800e-19,	"+0.000000", "%+6f"},
+  {__LINE__, 1.298798231947674e+19,	"1.2988E+19", "%2G"},
+  {__LINE__, 1.299521114379381e+09,	"1.29952E+09", "%G"},
+  {__LINE__, 1.299847637892712e+24,	"1.299848e+24", "%e"},
+  {__LINE__, 1.301269777843698e+29,	"130126977784369834978406288428.232074", "%f"},
+  {__LINE__, 1.302911786437618e-15,	"     0", "%6.f"},
+  {__LINE__, 1.303863159906719e+27,	"1303863159906719415559450681", "%0.f"},
+  {__LINE__, 1.304396472326846e-12,	"+1E-12", "%+1.0G"},
+  {__LINE__, 1.306180443528427e-30,	"+1e-30", "%+.1g"},
+  {__LINE__, 1.308469138968514e+22,	"1.30847E+22", "%0G"},
+  {__LINE__, 1.312700156826057e-11,	"1.3127e-11", "%g"},
+  {__LINE__, 1.315364075120764e+21,	"+1.31536E+21", "%+G"},
+  {__LINE__, 1.320376485288444e-09,	"+1.3204E-09", "%+6.5G"},
+  {__LINE__, 1.321434154364635e-08,	"1.32143e-08", "%1g"},
+  {__LINE__, 1.322777272579176e+19,	"+1e+19", "%+3.e"},
+  {__LINE__, 1.322861663428564e+00,	"1.322862E+00", "%#E"},
+  {__LINE__, 1.323566013489230e+14,	"+1.323566E+14", "%+1E"},
+  {__LINE__, 1.327446904132973e-20,	"+1.32745E-20", "%+4.6G"},
+  {__LINE__, 1.328226362528158e+19,	"1e+19", "%2.g"},
+  {__LINE__, 1.329167460803610e+08,	"1e+08", "%3.g"},
+  {__LINE__, 1.335371420823160e+14,	"1.33537E+14", "%7G"},
+  {__LINE__, 1.336116185095935e-21,	"0.000000", "%f"},
+  {__LINE__, 1.338766774704671e-22,	"+1.33877e-22", "%+g"},
+  {__LINE__, 1.339199373014647e-12,	"1E-12", "%1.E"},
+  {__LINE__, 1.344293357481519e+26,	"134429335748151945750805680.290796", "%#2f"},
+  {__LINE__, 1.344328188122843e+29,	"1.34433e+29", "%g"},
+  {__LINE__, 1.344382581316972e-05,	"1E-05", "%5.0E"},
+  {__LINE__, 1.349835616116184e+11,	"134983561611.6", "%2.1f"},
+  {__LINE__, 1.349955669989707e+20,	"134995566998970728533.890906", "%7f"},
+  {__LINE__, 1.350230411093841e+20,	"135023041109384145386.229648", "%f"},
+  {__LINE__, 1.353391369565576e+10,	"  1E+10", "%7.1G"},
+  {__LINE__, 1.356889483699471e+22,	"+1.35689E+22", "%+G"},
+  {__LINE__, 1.358141775798243e+24,	"+1358141775798242578687791.137781", "%+f"},
+  {__LINE__, 1.358547541975523e-15,	"1.35855e-15", "%g"},
+  {__LINE__, 1.363402539800791e+11,	"1.3634E+11", "%G"},
+  {__LINE__, 1.363676837988798e+16,	"+13636768379887982.4053", "%+2.4f"},
+  {__LINE__, 1.364592026494839e-24,	"1.36459e-24", "%g"},
+  {__LINE__, 1.366664212399413e-09,	"+1E-09", "%+6.G"},
+  {__LINE__, 1.367446193117463e-17,	"1.3674e-17", "%2.4e"},
+  {__LINE__, 1.368681648785823e-18,	"1.36868E-18", "%3G"},
+  {__LINE__, 1.370635189583606e+05,	"1.370635E+05", "%E"},
+  {__LINE__, 1.371395540772186e-18,	"+1.371396e-18", "%+e"},
+  {__LINE__, 1.371945318043159e+10,	"1E+10", "%0.E"},
+  {__LINE__, 1.373780604772988e-21,	"1e-21", "%3.g"},
+  {__LINE__, 1.374244970441862e-28,	"0.000000", "%7.6f"},
+  {__LINE__, 1.375874695067149e-25,	"1.37587E-25", "%#3G"},
+  {__LINE__, 1.377165614832621e+20,	"1.37717E+20", "%#G"},
+  {__LINE__, 1.381541864946684e-09,	"1.38154E-09", "%G"},
+  {__LINE__, 1.382901694835415e+00,	"1.382902E+00", "%E"},
+  {__LINE__, 1.384250577530184e-21,	"1.384e-21", "%.4g"},
+  {__LINE__, 1.385322753374640e-03,	" 1E-03", "%6.E"},
+  {__LINE__, 1.387026156054724e+19,	"1.387026E+19", "%E"},
+  {__LINE__, 1.388726735790498e-27,	"+1.388727E-27", "%+E"},
+  {__LINE__, 1.388819105742044e+16,	"1.38882e+16", "%g"},
+  {__LINE__, 1.389941086024951e-19,	"0.000000", "%f"},
+  {__LINE__, 1.390101174785536e+25,	"1.3901E+25", "%G"},
+  {__LINE__, 1.392210785638597e+24,	"+1.39221E+24", "%+G"},
+  {__LINE__, 1.396148856283474e-26,	"1.4e-26", "%7.3g"},
+  {__LINE__, 1.398153728631994e-21,	"1.39815E-21", "%G"},
+  {__LINE__, 1.398332446762342e-14,	"+1.39833E-14", "%+5G"},
+  {__LINE__, 1.400250919607987e+10,	"1.40025E+10", "%G"},
+  {__LINE__, 1.400662469019739e+03,	"1.E+03", "%#0.0E"},
+  {__LINE__, 1.401720273747805e-12,	"0.000000", "%#f"},
+  {__LINE__, 1.402151358748719e+22,	"1.402151e+22", "%e"},
+  {__LINE__, 1.402351913752357e-28,	"1.40235E-28", "%#1.6G"},
+  {__LINE__, 1.403285877973810e+13,	"+14032858779738.097255", "%+4f"},
+  {__LINE__, 1.404540981735861e+04,	"14045.409817", "%4f"},
+  {__LINE__, 1.406420622355064e+19,	"1.40642E+19", "%G"},
+  {__LINE__, 1.412552725962301e-29,	"+1e-29", "%+1.e"},
+  {__LINE__, 1.413266982485044e+10,	"1.41327e+10", "%g"},
+  {__LINE__, 1.413627189411456e+21,	"1.41363E+21", "%0G"},
+  {__LINE__, 1.416647216002592e-25,	"+0.000000", "%+#f"},
+  {__LINE__, 1.417107155080584e-10,	"1e-10", "%1.e"},
+  {__LINE__, 1.418829895346648e+19,	"14188298953466484952.912197", "%f"},
+  {__LINE__, 1.419404559267523e-11,	"1.4194e-11", "%g"},
+  {__LINE__, 1.422421321425472e+15,	"1.422421E+15", "%E"},
+  {__LINE__, 1.424858902008998e+18,	"1.42486E+18", "%2.5E"},
+  {__LINE__, 1.428863051254205e+22,	"1.428863e+22", "%e"},
+  {__LINE__, 1.429533727936725e-02,	"0.0142953", "%g"},
+  {__LINE__, 1.430982219743369e-19,	" 1E-19", "%6.G"},
+  {__LINE__, 1.431974118434703e+17,	"1E+17", "%3.G"},
+  {__LINE__, 1.432418341970152e+16,	"+1.432418e+16", "%+5e"},
+  {__LINE__, 1.433470281650523e+04,	"14334.7", "%g"},
+  {__LINE__, 1.434446243424653e+24,	" +1e+24", "%+7.g"},
+  {__LINE__, 1.435118019241039e+24,	"+1e+24", "%+4.g"},
+  {__LINE__, 1.435691648420278e-01,	"0.1435692", "%#4.7g"},
+  {__LINE__, 1.437569598098744e+27,	"1.437570E+27", "%#E"},
+  {__LINE__, 1.437633484061726e-25,	"+1.43763e-25", "%+7g"},
+  {__LINE__, 1.437866591230707e-13,	"1.43787e-13", "%g"},
+  {__LINE__, 1.440593154445915e-01,	"+0.144059", "%+1G"},
+  {__LINE__, 1.441368205977342e+16,	"1.441368E+16", "%#E"},
+  {__LINE__, 1.441825266684367e+28,	"1.44183e+28", "%g"},
+  {__LINE__, 1.442374183199456e+20,	"1.442374E+20", "%E"},
+  {__LINE__, 1.445101893951061e-24,	"0", "%0.f"},
+  {__LINE__, 1.446037835160094e-20,	"+1.44604E-20", "%+2G"},
+  {__LINE__, 1.449245376093616e+04,	"1.449245e+04", "%e"},
+  {__LINE__, 1.454126845620100e+09,	"1.45413E+09", "%G"},
+  {__LINE__, 1.455764608801107e+09,	"1.5e+09", "%6.1e"},
+  {__LINE__, 1.457176183149955e-12,	"1.45718e-12", "%#g"},
+  {__LINE__, 1.458821535020046e-05,	"1.45882e-05", "%#g"},
+  {__LINE__, 1.460179141161202e-19,	"1.460179E-19", "%#E"},
+  {__LINE__, 1.461701055446198e-20,	"1.461701e-20", "%#2.7g"},
+  {__LINE__, 1.462408181482172e+10,	"1.4624082E+10", "%3.7E"},
+  {__LINE__, 1.463706296748154e+24,	"1e+24", "%2.g"},
+  {__LINE__, 1.464891255780761e-19,	"+1.46489e-19", "%+g"},
+  {__LINE__, 1.467903978945872e+25,	"1.4679E+25", "%G"},
+  {__LINE__, 1.468585992857062e+22,	"14685859928570619281629.205943", "%f"},
+  {__LINE__, 1.469803528668286e+29,	"+1E+29", "%+6.G"},
+  {__LINE__, 1.469883002609266e-23,	"1.E-23", "%#2.E"},
+  {__LINE__, 1.469941481858809e+08,	"+146994148.185881", "%+f"},
+  {__LINE__, 1.470744493304611e+13,	"1.47074e+13", "%g"},
+  {__LINE__, 1.471857261085004e+23,	"1E+23", "%2.G"},
+  {__LINE__, 1.474419778873037e+06,	"1474419.7789", "%#.4f"},
+  {__LINE__, 1.483134762223381e-03,	"0", "%0.0f"},
+  {__LINE__, 1.483575501240724e-13,	"1.48358e-13", "%g"},
+  {__LINE__, 1.486068112294452e+20,	"1.486068e+20", "%e"},
+  {__LINE__, 1.488665528787761e-03,	"  +0", "%+4.f"},
+  {__LINE__, 1.492145267536713e+07,	"14921452.675367", "%f"},
+  {__LINE__, 1.492589762884761e-01,	"0.149259", "%f"},
+  {__LINE__, 1.494784286168215e+01,	"1.494784E+01", "%E"},
+  {__LINE__, 1.495945331501655e+04,	"1.5e+04", "%.2g"},
+  {__LINE__, 1.501383201904700e+14,	"2e+14", "%1.g"},
+  {__LINE__, 1.501387105011959e-02,	"0.0150139", "%g"},
+  {__LINE__, 1.505784488562271e+26,	"1.50578e+26", "%5g"},
+  {__LINE__, 1.506367986495534e+10,	"1.50637e+10", "%2g"},
+  {__LINE__, 1.507421710226296e+19,	"1.507422E+19", "%#E"},
+  {__LINE__, 1.507960881206134e+16,	"2e+16", "%.0g"},
+  {__LINE__, 1.508974301049424e+14,	"+1.508974E+14", "%+E"},
+  {__LINE__, 1.509204025111090e-18,	"1.509204E-18", "%E"},
+  {__LINE__, 1.511351799767759e+21,	"1511351799767759462866.93397", "%.5f"},
+  {__LINE__, 1.511712197184520e-06,	"+1.51171e-06", "%+1g"},
+  {__LINE__, 1.514703727491400e+02,	"151.47", "%.5g"},
+  {__LINE__, 1.514855355408287e+04,	"15148.6", "%g"},
+  {__LINE__, 1.516256896575301e+06,	"1.516257e+06", "%.6e"},
+  {__LINE__, 1.517712083681069e+14,	"1.51771e+14", "%0g"},
+  {__LINE__, 1.522102209167607e-18,	"1.52210e-18", "%#g"},
+  {__LINE__, 1.526264862895663e-12,	"0.000000", "%f"},
+  {__LINE__, 1.527165480858125e+10,	"1.527e+10", "%.4g"},
+  {__LINE__, 1.528363280308369e+00,	"+1.52836", "%+0G"},
+  {__LINE__, 1.529108490733420e-22,	"1.529108E-22", "%E"},
+  {__LINE__, 1.529783364474522e+19,	"15297833644745216119.531506", "%7f"},
+  {__LINE__, 1.530698363199346e-01,	"0.1531", "%#.4f"},
+  {__LINE__, 1.531520796537450e+22,	"1.53152E+22", "%G"},
+  {__LINE__, 1.533314559644813e+06,	"+1533314.559645", "%+f"},
+  {__LINE__, 1.534682791112854e+01,	"+15.3468", "%+0G"},
+  {__LINE__, 1.534714026386730e-11,	"0.000000", "%f"},
+  {__LINE__, 1.537145729498115e+00,	"1.537146E+00", "%E"},
+  {__LINE__, 1.538740040875751e-23,	"1.538740E-23", "%E"},
+  {__LINE__, 1.546248240596482e-03,	"0.001546", "%f"},
+  {__LINE__, 1.546808012239302e-09,	"+1.54681E-09", "%+G"},
+  {__LINE__, 1.546903877359107e+06,	"1.5e+06", "%.2g"},
+  {__LINE__, 1.550153973747718e-18,	"2e-18", "%.0g"},
+  {__LINE__, 1.551703460384378e+00,	"+1.5517", "%+.4f"},
+  {__LINE__, 1.553995673101369e+29,	"1.554E+29", "%G"},
+  {__LINE__, 1.555477017531899e+28,	"1.55548e+28", "%g"},
+  {__LINE__, 1.555548963448462e+12,	"1555548963448.46227", "%6.5f"},
+  {__LINE__, 1.558702451007712e+16,	"2e+16", "%5.1g"},
+  {__LINE__, 1.561641587723724e+29,	"1.561642e+29", "%e"},
+  {__LINE__, 1.561868589559509e-05,	"1.56187E-05", "%G"},
+  {__LINE__, 1.565229056438949e+13,	"1.56523e+13", "%1.6g"},
+  {__LINE__, 1.570074406600442e+14,	"+1.57007E+14", "%+4G"},
+  {__LINE__, 1.570951909913194e+13,	"1.57095E+13", "%.6G"},
+  {__LINE__, 1.572186421520727e-30,	"+1.57219e-30", "%+g"},
+  {__LINE__, 1.574374582066945e+12,	"1.57e+12", "%5.2e"},
+  {__LINE__, 1.577789404823585e+12,	"1.577789E+12", "%E"},
+  {__LINE__, 1.579641278389186e+04,	"15796.413", "%7.3f"},
+  {__LINE__, 1.581602330975388e+17,	"1.5816E+17", "%#.5G"},
+  {__LINE__, 1.587809692297490e-18,	"+1.58781e-18", "%+2g"},
+  {__LINE__, 1.588672954832388e-05,	"1.58867E-05", "%G"},
+  {__LINE__, 1.594548954259978e+25,	"+1.595e+25", "%+.3e"},
+  {__LINE__, 1.596653742160718e+10,	"15966537421.6072", "%.4f"},
+  {__LINE__, 1.597416186584641e+25,	"1.59742e+25", "%g"},
+  {__LINE__, 1.597810706039500e-04,	"0.000159781", "%g"},
+  {__LINE__, 1.601425691153542e+01,	"16.0143", "%G"},
+  {__LINE__, 1.601491150913706e-15,	"+1.60149e-15", "%+g"},
+  {__LINE__, 1.609357026469645e+02,	"160.936", "%0g"},
+  {__LINE__, 1.611064881461188e+06,	"+1.611065E+06", "%+E"},
+  {__LINE__, 1.611324319640770e-03,	"0.00161132", "%G"},
+  {__LINE__, 1.613202907940803e+19,	"1.6E+19", "%#.1E"},
+  {__LINE__, 1.613883500056636e-12,	"0.000000", "%5f"},
+  {__LINE__, 1.618254213010772e+07,	"16182542.130108", "%6f"},
+  {__LINE__, 1.620441271211248e-08,	"1.62044E-08", "%0G"},
+  {__LINE__, 1.622548435024803e-01,	"+0.162255", "%+5G"},
+  {__LINE__, 1.623740394555269e+19,	"16237403945552689066.289531", "%3f"},
+  {__LINE__, 1.625774250389937e+18,	"1.625774e+18", "%1e"},
+  {__LINE__, 1.626300864432426e-02,	"0.016263", "%G"},
+  {__LINE__, 1.626351146877694e-11,	"1.6263511e-11", "%2.7e"},
+  {__LINE__, 1.626568757587995e+25,	"16265687575879949733348439.62220", "%6.5f"},
+  {__LINE__, 1.626717482094360e-28,	"+1.626717e-28", "%+3e"},
+  {__LINE__, 1.630801585998995e-28,	"1.6308e-28", "%0g"},
+  {__LINE__, 1.631827173682962e+03,	"1632", "%1.4g"},
+  {__LINE__, 1.631907571243379e+18,	"1631907571243378818.337533", "%f"},
+  {__LINE__, 1.632058420447239e-14,	" +2E-14", "%+7.G"},
+  {__LINE__, 1.632847882621240e+18,	"+1.63285E+18", "%+2G"},
+  {__LINE__, 1.637329146233172e-09,	"+1.63733e-09", "%+g"},
+  {__LINE__, 1.638315287442427e-16,	"+1.63832E-16", "%+G"},
+  {__LINE__, 1.641284849351445e+15,	"1641284849351445.096488", "%f"},
+  {__LINE__, 1.644871927486929e+10,	"2e+10", "%1.e"},
+  {__LINE__, 1.645917293047431e-19,	"1.64592e-19", "%.6g"},
+  {__LINE__, 1.649201265647819e-07,	"0.000000", "%f"},
+  {__LINE__, 1.650169065733559e+23,	"165016906573355903731226.135278", "%3f"},
+  {__LINE__, 1.651217291298196e-30,	"2E-30", "%4.G"},
+  {__LINE__, 1.652680660160331e+08,	"2.e+08", "%#3.g"},
+  {__LINE__, 1.654171892948767e-15,	"1.65417e-15", "%g"},
+  {__LINE__, 1.655435863725412e+17,	"+1.655436e+17", "%+#e"},
+  {__LINE__, 1.656015606204101e+28,	"+1.7E+28", "%+3.2G"},
+  {__LINE__, 1.656814723110478e-21,	"+0.000000", "%+f"},
+  {__LINE__, 1.658632655199721e-19,	"2.E-19", "%#4.G"},
+  {__LINE__, 1.659915061311444e+27,	"1.66E+27", "%.3G"},
+  {__LINE__, 1.664258574522914e-29,	"+1.664259E-29", "%+E"},
+  {__LINE__, 1.667662840654469e-28,	"+2e-28", "%+0.g"},
+  {__LINE__, 1.673124993246863e-25,	"+0.000000", "%+f"},
+  {__LINE__, 1.677788498058833e-20,	"1.678e-20", "%.4g"},
+  {__LINE__, 1.681211731173386e-07,	"1.68121e-07", "%0.6g"},
+  {__LINE__, 1.686341560076196e+02,	"169", "%.0f"},
+  {__LINE__, 1.686507685287281e+08,	"1.686508E+08", "%E"},
+  {__LINE__, 1.689500448795801e+03,	"+1689.500449", "%+0f"},
+  {__LINE__, 1.690639426041009e-13,	"2e-13", "%5.0g"},
+  {__LINE__, 1.691554939595928e+16,	"+1.6916e+16", "%+.5g"},
+  {__LINE__, 1.698597126229626e-09,	"1.699e-09", "%3.4g"},
+  {__LINE__, 1.700093083173516e+16,	"17000930831735159", "%5.f"},
+  {__LINE__, 1.703653732982710e+13,	"+1.70365e+13", "%+g"},
+  {__LINE__, 1.705353380573352e-16,	"0.000000", "%f"},
+  {__LINE__, 1.705973328700179e-26,	"1.70597e-26", "%5g"},
+  {__LINE__, 1.717797289369145e+22,	"+1.717797E+22", "%+7E"},
+  {__LINE__, 1.722819196705361e-28,	"1.722819E-28", "%1.7G"},
+  {__LINE__, 1.723775772891202e+01,	"17.237758", "%f"},
+  {__LINE__, 1.723787102325353e-23,	"0.000000", "%2f"},
+  {__LINE__, 1.724551301171870e-13,	"0.000000", "%f"},
+  {__LINE__, 1.726098078655758e-20,	"0.0000000", "%7.7f"},
+  {__LINE__, 1.726302822039762e+18,	"+2E+18", "%+1.G"},
+  {__LINE__, 1.726659209108151e+18,	"+1.72666E+18", "%+6G"},
+  {__LINE__, 1.728324925097269e-25,	"1.728325e-25", "%7e"},
+  {__LINE__, 1.728357491215602e+02,	"172.836", "%G"},
+  {__LINE__, 1.729612227517587e+22,	"1.729612e+22", "%e"},
+  {__LINE__, 1.731753104740805e-06,	"1.73175e-06", "%2g"},
+  {__LINE__, 1.736066279733589e+18,	"+1.736066E+18", "%+3E"},
+  {__LINE__, 1.736626769480182e-19,	"2e-19", "%.0g"},
+  {__LINE__, 1.737445267713118e-13,	"  2e-13", "%7.g"},
+  {__LINE__, 1.739264683023077e+05,	"173926.468302", "%f"},
+  {__LINE__, 1.739423702667596e-16,	"+1.73942e-16", "%+g"},
+  {__LINE__, 1.741053616961658e-14,	"1.74105E-14", "%G"},
+  {__LINE__, 1.741085952255057e+29,	"1.7e+29", "%#.1e"},
+  {__LINE__, 1.743673705633426e+03,	"2E+03", "%5.0G"},
+  {__LINE__, 1.750940899205665e+27,	"1.75094e+27", "%g"},
+  {__LINE__, 1.753871003884151e-26,	"0.", "%#.0f"},
+  {__LINE__, 1.755237470854478e-14,	"1.755237e-14", "%4e"},
+  {__LINE__, 1.757491419837315e-03,	"0.002", "%1.G"},
+  {__LINE__, 1.758657797688126e+26,	"+1.75866E+26", "%+#G"},
+  {__LINE__, 1.760491452270889e+08,	"1.76049E+08", "%G"},
+  {__LINE__, 1.760816275862939e-10,	"2e-10", "%.1g"},
+  {__LINE__, 1.760905893493003e-22,	"1.76e-22", "%.2e"},
+  {__LINE__, 1.762101125986743e-12,	"2e-12", "%.0g"},
+  {__LINE__, 1.763855968659571e+27,	"1.763856E+27", "%E"},
+  {__LINE__, 1.764595217341348e-13,	"1.764595E-13", "%E"},
+  {__LINE__, 1.766737296048445e+08,	"+1.77e+08", "%+.3g"},
+  {__LINE__, 1.769916386969961e-05,	"+1.76992e-05", "%+g"},
+  {__LINE__, 1.773873506344176e-01,	"1.773874e-01", "%e"},
+  {__LINE__, 1.775392554371421e+03,	"+1775.39", "%+3.2f"},
+  {__LINE__, 1.776007623006870e+24,	"1776007623006870161930237.372871", "%f"},
+  {__LINE__, 1.777418921678653e-27,	"     0", "%6.f"},
+  {__LINE__, 1.780967607234234e-18,	"1.780968E-18", "%E"},
+  {__LINE__, 1.782510583486435e+24,	"+2e+24", "%+3.g"},
+  {__LINE__, 1.784002921603004e+14,	"1.784E+14", "%G"},
+  {__LINE__, 1.784231151778382e+11,	"1.7842E+11", "%.5G"},
+  {__LINE__, 1.785589091453195e+02,	" 179.", "%#5.f"},
+  {__LINE__, 1.786402639400039e+19,	"2e+19", "%0.g"},
+  {__LINE__, 1.786506485794647e-25,	"2E-25", "%.1G"},
+  {__LINE__, 1.787513971482493e-04,	"+0.000178751", "%+G"},
+  {__LINE__, 1.799765409320039e+23,	"179976540932003885586710", "%6.0f"},
+  {__LINE__, 1.800451864218989e+08,	"+1.80045e+08", "%+g"},
+  {__LINE__, 1.800743538258572e+04,	" +18007", "%+7.f"},
+  {__LINE__, 1.801583764453362e+25,	"1.8016e+25", "%0.5g"},
+  {__LINE__, 1.804502093739547e+14,	"2e+14", "%2.g"},
+  {__LINE__, 1.805600104488678e-17,	"1.805600E-17", "%E"},
+  {__LINE__, 1.811342448081048e+17,	"1.811342e+17", "%.6e"},
+  {__LINE__, 1.812252160066930e+19,	"2e+19", "%0.e"},
+  {__LINE__, 1.816287564395273e+02,	"182", "%2.f"},
+  {__LINE__, 1.817097386762552e-13,	"2E-13", "%3.1G"},
+  {__LINE__, 1.817881381387254e+06,	"1.81788E+06", "%G"},
+  {__LINE__, 1.818416380830953e-30,	"1.81842E-30", "%G"},
+  {__LINE__, 1.824788290177454e-23,	"1.82479e-23", "%g"},
+  {__LINE__, 1.827832506678437e-18,	"1.82783E-18", "%G"},
+  {__LINE__, 1.828048053242609e+01,	"18.2805", "%g"},
+  {__LINE__, 1.828939681844203e-21,	"1.82894E-21", "%.6G"},
+  {__LINE__, 1.829763900251753e+12,	"1829763900251.752773", "%1f"},
+  {__LINE__, 1.833100407114602e-05,	"0.000018", "%#f"},
+  {__LINE__, 1.833672780034284e-07,	"1.833673e-07", "%e"},
+  {__LINE__, 1.834307692387540e+21,	"2E+21", "%5.G"},
+  {__LINE__, 1.835119931666753e+14,	"+1.835120e+14", "%+e"},
+  {__LINE__, 1.835956566920861e-26,	"0.000000", "%#f"},
+  {__LINE__, 1.837784131899354e+22,	"1.83778E+22", "%G"},
+  {__LINE__, 1.842867094224664e-09,	"1.84287e-09", "%g"},
+  {__LINE__, 1.844234823805319e+28,	"2E+28", "%1.G"},
+  {__LINE__, 1.844877682008962e+12,	"1.84488e+12", "%g"},
+  {__LINE__, 1.846530424340488e-22,	"1.846530e-22", "%#.7g"},
+  {__LINE__, 1.849111603036448e-08,	"0.00", "%.2f"},
+  {__LINE__, 1.850158752678734e+04,	"+18502", "%+.5G"},
+  {__LINE__, 1.851431391104701e-06,	" +2e-06", "%+7.e"},
+  {__LINE__, 1.851487430609031e-04,	"0.000185149", "%G"},
+  {__LINE__, 1.853171650128773e+03,	"1853.17", "%G"},
+  {__LINE__, 1.854743263740068e-16,	"1.854743E-16", "%6.6E"},
+  {__LINE__, 1.864399020932753e-11,	"+0.000000", "%+f"},
+  {__LINE__, 1.865028568072397e-22,	"1.86503E-22", "%.6G"},
+  {__LINE__, 1.868128423759223e+14,	"1.86813E+14", "%4G"},
+  {__LINE__, 1.868453558435480e+21,	"1.86845E+21", "%G"},
+  {__LINE__, 1.870663011627498e-06,	"1.87E-06", "%.3G"},
+  {__LINE__, 1.873273487748907e+17,	"+1.873273E+17", "%+E"},
+  {__LINE__, 1.878885220839805e-04,	"0.000187889", "%G"},
+  {__LINE__, 1.879102515623569e+17,	"1.8791e+17", "%g"},
+  {__LINE__, 1.889343972100858e-10,	"2E-10", "%2.E"},
+  {__LINE__, 1.891833282879762e-24,	"+2e-24", "%+.1g"},
+  {__LINE__, 1.895148778941240e-07,	"0.000000", "%0f"},
+  {__LINE__, 1.896950834067578e-28,	"+1.89695e-28", "%+#g"},
+  {__LINE__, 1.898464546986629e-05,	"1.898465e-05", "%.7g"},
+  {__LINE__, 1.900851427578321e-19,	"1.90085e-19", "%6g"},
+  {__LINE__, 1.901171344577750e+27,	"1.901171e+27", "%7.7g"},
+  {__LINE__, 1.903563335316359e+02,	"190.356", "%0g"},
+  {__LINE__, 1.903817306004701e-16,	"+1.90e-16", "%+#6.2e"},
+  {__LINE__, 1.910606410246797e+21,	"1.91061E+21", "%2.5E"},
+  {__LINE__, 1.912537759564710e+29,	"1.91254E+29", "%G"},
+  {__LINE__, 1.913606675894566e+27,	"1.91361E+27", "%7.6G"},
+  {__LINE__, 1.916473734025505e-05,	"  2e-05", "%7.g"},
+  {__LINE__, 1.916507511720523e+23,	"+2E+23", "%+.0E"},
+  {__LINE__, 1.917688262248837e-28,	"1.918e-28", "%.4g"},
+  {__LINE__, 1.921375594217083e-12,	"1.92138E-12", "%G"},
+  {__LINE__, 1.923916000932815e-25,	"1.92392E-25", "%G"},
+  {__LINE__, 1.926303652776462e-01,	"+0.2", "%+0.G"},
+  {__LINE__, 1.929411084211293e+21,	"1.92941E+21", "%6G"},
+  {__LINE__, 1.929996820297491e-26,	"1.93e-26", "%.6g"},
+  {__LINE__, 1.937301472034748e-29,	"1.9373E-29", "%G"},
+  {__LINE__, 1.937301660220894e-11,	"+1.9373E-11", "%+G"},
+  {__LINE__, 1.939038538587083e-02,	"0.0193904", "%g"},
+  {__LINE__, 1.940575489112444e-09,	"1.94058E-09", "%G"},
+  {__LINE__, 1.946550455606677e-26,	"1.946550E-26", "%#1E"},
+  {__LINE__, 1.954250777559491e-14,	"1.95425E-14", "%G"},
+  {__LINE__, 1.955646327688473e-16,	"1.956E-16", "%#.3E"},
+  {__LINE__, 1.956999911995683e+20,	"2E+20", "%2.G"},
+  {__LINE__, 1.959125254298784e-21,	"1.95913E-21", "%#G"},
+  {__LINE__, 1.960330340481290e+26,	"1.96033e+26", "%.6g"},
+  {__LINE__, 1.964156478075422e+01,	"+19.6416", "%+g"},
+  {__LINE__, 1.964702507676036e+19,	"2.0e+19", "%2.1e"},
+  {__LINE__, 1.965762191674409e-30,	"2E-30", "%1.G"},
+  {__LINE__, 1.967492699686803e-29,	"+1.967493E-29", "%+#E"},
+  {__LINE__, 1.970072604062236e-11,	"+1.97007E-11", "%+G"},
+  {__LINE__, 1.975631055550387e+05,	"197563.105555", "%.6f"},
+  {__LINE__, 1.975722425389177e+28,	"+1.975722e+28", "%+5.6e"},
+  {__LINE__, 1.977938328895365e-05,	" 2e-05", "%6.e"},
+  {__LINE__, 1.981950849019640e+13,	"1.981951E+13", "%E"},
+  {__LINE__, 1.982543168856985e-26,	"1.98254e-26", "%4g"},
+  {__LINE__, 1.984873317384181e-20,	"1.98487E-20", "%4G"},
+  {__LINE__, 1.986146420877074e+02,	"+1.986146e+02", "%+0e"},
+  {__LINE__, 1.986465942785167e-28,	"1.98647e-28", "%g"},
+  {__LINE__, 1.988250323235468e-05,	"     +0", "%+7.f"},
+  {__LINE__, 1.989966623080645e-09,	"1.989967e-09", "%e"},
+  {__LINE__, 1.991243122514519e+11,	"199124312251", "%5.f"},
+  {__LINE__, 1.993287894645908e+25,	"+1.993288E+25", "%+E"},
+  {__LINE__, 1.995172329888890e-30,	"+1.99517e-30", "%+3g"},
+  {__LINE__, 1.997075127236432e+05,	"1.997E+05", "%#.4G"},
+  {__LINE__, 2.000651599487290e+04,	"2E+04", "%2.E"},
+  {__LINE__, 2.001429412876339e-28,	"0.000000", "%6f"},
+  {__LINE__, 2.003535646264196e+03,	"  2E+03", "%7.G"},
+  {__LINE__, 2.011751504116246e+06,	"2E+06", "%2.G"},
+  {__LINE__, 2.016361237694652e-30,	"2.01636e-30", "%4g"},
+  {__LINE__, 2.018266414065554e-08,	"0.00", "%2.2f"},
+  {__LINE__, 2.020706780608565e+03,	"2E+03", "%.0G"},
+  {__LINE__, 2.025098418552005e-16,	"+2.025098E-16", "%+2E"},
+  {__LINE__, 2.026100592518976e-11,	"2.026101e-11", "%6e"},
+  {__LINE__, 2.026167291572980e+11,	"2.02617E+11", "%G"},
+  {__LINE__, 2.026782170272331e+07,	"2.026782E+07", "%E"},
+  {__LINE__, 2.029133469449347e-06,	" 2e-06", "%6.g"},
+  {__LINE__, 2.031191570768443e-20,	"2.031192E-20", "%2.7G"},
+  {__LINE__, 2.031884221862863e-16,	"2.031884e-16", "%e"},
+  {__LINE__, 2.032992924118323e+29,	"203299292411832333016263874014.84", "%#0.2f"},
+  {__LINE__, 2.035799610097827e+28,	"+20357996100978272835391180706.2104344", "%+3.7f"},
+  {__LINE__, 2.038008183612069e+25,	"20380081836120691463065668", "%7.0f"},
+  {__LINE__, 2.041632205119365e-22,	"+2.04163e-22", "%+g"},
+  {__LINE__, 2.042769811159352e-10,	"2e-10", "%.1g"},
+  {__LINE__, 2.043034975847005e-08,	"2.043035e-08", "%e"},
+  {__LINE__, 2.045930666285880e+26,	"2.04593e+26", "%g"},
+  {__LINE__, 2.048377276651386e-21,	"0.00000", "%2.5f"},
+  {__LINE__, 2.051785787301292e-23,	"0.000000", "%f"},
+  {__LINE__, 2.055085792048183e-10,	"0.000000", "%f"},
+  {__LINE__, 2.055783028451040e-21,	"+0", "%+1.f"},
+  {__LINE__, 2.057641607509489e-17,	"+2E-17", "%+2.G"},
+  {__LINE__, 2.058348703001600e-15,	"2.05835E-15", "%#G"},
+  {__LINE__, 2.059594758787322e+24,	"2.05959E+24", "%1G"},
+  {__LINE__, 2.062710740295018e+01,	"20.6271", "%G"},
+  {__LINE__, 2.063240676447750e-11,	"0.000000", "%f"},
+  {__LINE__, 2.063799238238917e-09,	"+0.000000", "%+f"},
+  {__LINE__, 2.064564135160425e-17,	"2.06456E-17", "%G"},
+  {__LINE__, 2.066363476927650e-05,	"2.07E-05", "%.3G"},
+  {__LINE__, 2.066871450514214e-02,	"+2.066871e-02", "%+e"},
+  {__LINE__, 2.067258256169148e+07,	"2.06726e+07", "%g"},
+  {__LINE__, 2.068466590729350e-22,	"0.0000", "%.4f"},
+  {__LINE__, 2.068779510112540e-26,	"2.06878e-26", "%g"},
+  {__LINE__, 2.069258770387493e+19,	"20692587703874929516.700831", "%3f"},
+  {__LINE__, 2.069547778447951e+26,	"2.069548e+26", "%6e"},
+  {__LINE__, 2.070479507710941e-23,	"2.07048E-23", "%G"},
+  {__LINE__, 2.071809640061785e+22,	"2.071810E+22", "%E"},
+  {__LINE__, 2.073364463564950e-06,	"2.07336e-06", "%g"},
+  {__LINE__, 2.073478953644888e-10,	"+2.07E-10", "%+.3G"},
+  {__LINE__, 2.076039194312519e+12,	"2.07604E+12", "%G"},
+  {__LINE__, 2.081490398946229e-07,	"+2.08149e-07", "%+g"},
+  {__LINE__, 2.084941170287895e-07,	"2.084941E-07", "%7E"},
+  {__LINE__, 2.087035885023382e-18,	"+0.000000", "%+f"},
+  {__LINE__, 2.091025884363342e-09,	"2.09103E-09", "%G"},
+  {__LINE__, 2.091830555397864e+08,	"209183056", "%0.f"},
+  {__LINE__, 2.091998109232084e-22,	"0.000000", "%#f"},
+  {__LINE__, 2.093406473464940e-17,	"2.09341e-17", "%g"},
+  {__LINE__, 2.094646724039720e-26,	"2.094647e-26", "%0.7g"},
+  {__LINE__, 2.095218667083208e-22,	"2.09522e-22", "%.5e"},
+  {__LINE__, 2.096932364992728e-27,	"2.1E-27", "%.2G"},
+  {__LINE__, 2.097012452732083e+17,	"2.09701E+17", "%G"},
+  {__LINE__, 2.102022216908102e-07,	"0.000000", "%f"},
+  {__LINE__, 2.104648382618938e-04,	"0.00021", "%.3G"},
+  {__LINE__, 2.109159578853690e-19,	"2.10916e-19", "%6g"},
+  {__LINE__, 2.111732624641178e-13,	"+2.111733E-13", "%+7.7G"},
+  {__LINE__, 2.112676138351330e+21,	" 2e+21", "%6.g"},
+  {__LINE__, 2.117332904051741e-09,	"+0.000000", "%+f"},
+  {__LINE__, 2.118001353767757e-14,	"2.118E-14", "%4.3E"},
+  {__LINE__, 2.119413720893955e+12,	"2.119414E+12", "%.7G"},
+  {__LINE__, 2.119610992647014e+07,	"+21196109.9265", "%+.4f"},
+  {__LINE__, 2.120504022069221e+25,	"21205040220692210617414730.223", "%#.3f"},
+  {__LINE__, 2.120634617123718e-16,	"2.120635e-16", "%#e"},
+  {__LINE__, 2.128702437175385e+12,	"2128702437175.385", "%.3f"},
+  {__LINE__, 2.131148830213536e-12,	"2.131149e-12", "%e"},
+  {__LINE__, 2.132682622145255e+04,	"+21326.83", "%+#5.7G"},
+  {__LINE__, 2.133864841676473e-01,	"  +0.2", "%+6.g"},
+  {__LINE__, 2.133939058496273e+16,	"2E+16", "%4.G"},
+  {__LINE__, 2.135087006806302e-24,	"0.000000", "%f"},
+  {__LINE__, 2.138983961194584e-20,	"+2.138984e-20", "%+7e"},
+  {__LINE__, 2.146534189669224e+17,	"+2.147E+17", "%+.4G"},
+  {__LINE__, 2.147375595676503e+09,	"2.147376e+09", "%e"},
+  {__LINE__, 2.152994986418075e+02,	"2E+02", "%0.E"},
+  {__LINE__, 2.154127135896811e+06,	"2.15E+06", "%2.3G"},
+  {__LINE__, 2.154613053892588e-29,	"2.1546E-29", "%.4E"},
+  {__LINE__, 2.160830430730653e-12,	"2.16083E-12", "%#G"},
+  {__LINE__, 2.161740591663027e+28,	"2.161741e+28", "%e"},
+  {__LINE__, 2.167181665934011e-06,	"2e-06", "%1.e"},
+  {__LINE__, 2.167348761729060e-04,	"2.167349e-04", "%#e"},
+  {__LINE__, 2.170270852816708e-10,	"2.17027E-10", "%0G"},
+  {__LINE__, 2.173048229189370e-06,	"2.173e-06", "%.5g"},
+  {__LINE__, 2.175554537855024e+10,	"2.17555E+10", "%G"},
+  {__LINE__, 2.177447372527968e-30,	"+0.000000", "%+.6f"},
+  {__LINE__, 2.178591661569858e+05,	"2.1786e+05", "%1.5g"},
+  {__LINE__, 2.184700207174818e-29,	"0.000000", "%f"},
+  {__LINE__, 2.190817031437247e+03,	"2.E+03", "%#3.0E"},
+  {__LINE__, 2.191396212145558e-01,	"2.191E-01", "%6.3E"},
+  {__LINE__, 2.191786353372880e-23,	"2.19179e-23", "%.5e"},
+  {__LINE__, 2.193471126151079e+19,	"2.1935E+19", "%.4E"},
+  {__LINE__, 2.194750177630526e-15,	"2.194750e-15", "%e"},
+  {__LINE__, 2.196145170358973e+05,	"+219615", "%+g"},
+  {__LINE__, 2.199602360934320e-09,	"2.19960E-09", "%#6.6G"},
+  {__LINE__, 2.202913988776998e+17,	"+2.20291e+17", "%+g"},
+  {__LINE__, 2.207094560707703e-10,	"2.207095e-10", "%e"},
+  {__LINE__, 2.207557214621658e-13,	"   0", "%4.f"},
+  {__LINE__, 2.209428206272229e+13,	"2.20943e+13", "%g"},
+  {__LINE__, 2.212662463615175e-11,	"   0", "%4.0f"},
+  {__LINE__, 2.215732710968468e-30,	"2E-30", "%.1G"},
+  {__LINE__, 2.218490841936778e-10,	"2.21849e-10", "%2g"},
+  {__LINE__, 2.218850610567959e-01,	"+0.221885", "%+G"},
+  {__LINE__, 2.220796939261542e-03,	"0.002221", "%#f"},
+  {__LINE__, 2.221819894808024e+24,	"2.2e+24", "%5.1e"},
+  {__LINE__, 2.223804993235507e+27,	"2.223805e+27", "%1e"},
+  {__LINE__, 2.224715386046563e-17,	"0.00000", "%#.5f"},
+  {__LINE__, 2.224864709983882e-16,	"+2.224865e-16", "%+e"},
+  {__LINE__, 2.225764510969505e+16,	"2.E+16", "%#4.G"},
+  {__LINE__, 2.233229189161284e-07,	"+2.23323e-07", "%+6g"},
+  {__LINE__, 2.236522807209868e+17,	"2.23652e+17", "%g"},
+  {__LINE__, 2.236641620849775e+20,	"2E+20", "%0.G"},
+  {__LINE__, 2.237089952728626e-13,	"2E-13", "%5.E"},
+  {__LINE__, 2.238531255563381e-11,	"  2E-11", "%7.1G"},
+  {__LINE__, 2.242782296436871e+12,	"2242782296436.871103", "%f"},
+  {__LINE__, 2.249177852069393e-02,	"+2.249178E-02", "%+5E"},
+  {__LINE__, 2.250735782732076e+29,	"+2.25074e+29", "%+g"},
+  {__LINE__, 2.257455203557544e-11,	"+2e-11", "%+4.0g"},
+  {__LINE__, 2.258002527939529e+24,	"2.258e+24", "%g"},
+  {__LINE__, 2.266955929448160e+20,	"226695592944815960123.6056915", "%.7f"},
+  {__LINE__, 2.269019719123250e-23,	"0.000000", "%f"},
+  {__LINE__, 2.269022332502809e+02,	"+226.902233", "%+f"},
+  {__LINE__, 2.271165222038591e-03,	"0.002", "%1.1g"},
+  {__LINE__, 2.273965946408021e+14,	"+227396594640802.085507", "%+f"},
+  {__LINE__, 2.277221153386242e+22,	"22772211533862418697538.032575", "%#f"},
+  {__LINE__, 2.280214920187521e-01,	"0.2", "%2.G"},
+  {__LINE__, 2.280762993019740e+06,	"2.28076E+06", "%G"},
+  {__LINE__, 2.283479263040833e-24,	"+0.000000", "%+f"},
+  {__LINE__, 2.283686319235123e-07,	"2.2837E-07", "%5.5G"},
+  {__LINE__, 2.285842617231066e-26,	"0.000000", "%f"},
+  {__LINE__, 2.293145864755873e-02,	"0.02", "%.0g"},
+  {__LINE__, 2.293439381531532e+03,	"+2.293439E+03", "%+#1E"},
+  {__LINE__, 2.297972500660698e-22,	"2.29797e-22", "%g"},
+  {__LINE__, 2.298725366073681e+23,	"2.29873E+23", "%G"},
+  {__LINE__, 2.303151535483950e-29,	"2.30315E-29", "%G"},
+  {__LINE__, 2.308565313657699e-25,	"   0", "%4.f"},
+  {__LINE__, 2.309305373760733e-07,	"2.309305E-07", "%E"},
+  {__LINE__, 2.309693761334710e-19,	"2.30969e-19", "%g"},
+  {__LINE__, 2.312218220995774e-20,	"+2.31222E-20", "%+.6G"},
+  {__LINE__, 2.313115729670525e+24,	"2.31312E+24", "%G"},
+  {__LINE__, 2.315325159866773e-21,	"2.315325E-21", "%E"},
+  {__LINE__, 2.316932917620091e-19,	"0.000000", "%f"},
+  {__LINE__, 2.317548394633895e+13,	"2.31755E+13", "%0G"},
+  {__LINE__, 2.318951465093612e+02,	"+2.32e+02", "%+1.2e"},
+  {__LINE__, 2.319151794905482e-17,	"+0.000000", "%+0f"},
+  {__LINE__, 2.319708617851078e-27,	"0.000000", "%f"},
+  {__LINE__, 2.320019976591725e+20,	"2e+20", "%.1g"},
+  {__LINE__, 2.322859962551666e+06,	"2.32286e+06", "%g"},
+  {__LINE__, 2.326474568074649e-29,	"2.326e-29", "%.4g"},
+  {__LINE__, 2.328400844172053e-07,	"2.3284E-07", "%G"},
+  {__LINE__, 2.333695247698112e+16,	"2.3337e+16", "%g"},
+  {__LINE__, 2.333717120257130e-19,	"+0.000000", "%+f"},
+  {__LINE__, 2.334711793234782e-19,	"2.33471E-19", "%5G"},
+  {__LINE__, 2.335524987281242e+02,	"+233.55", "%+7.5g"},
+  {__LINE__, 2.335556767836369e-30,	"2.34e-30", "%.3g"},
+  {__LINE__, 2.337696964360052e-10,	"2.3377e-10", "%1g"},
+  {__LINE__, 2.337858249184500e-14,	"2.337858E-14", "%5.6E"},
+  {__LINE__, 2.339984354781169e-14,	"2.339984E-14", "%E"},
+  {__LINE__, 2.340849041430089e-04,	"0.00023", "%0.2G"},
+  {__LINE__, 2.342388410373363e-24,	"2.34239E-24", "%G"},
+  {__LINE__, 2.343933106737237e-22,	"2.34393e-22", "%g"},
+  {__LINE__, 2.344870855713960e-08,	"0.000000", "%.6f"},
+  {__LINE__, 2.347368965433808e+24,	"2347368965433808352116785", "%4.f"},
+  {__LINE__, 2.349417462171421e-02,	"+0.0234942", "%+G"},
+  {__LINE__, 2.351071111431207e+11,	"235107111143.12", "%.2f"},
+  {__LINE__, 2.352756222810670e+19,	"+2.e+19", "%+#4.g"},
+  {__LINE__, 2.355862529217003e-22,	"2.355863e-22", "%#4e"},
+  {__LINE__, 2.356804045401445e-30,	"2.3568E-30", "%G"},
+  {__LINE__, 2.362100710185559e-26,	"2.3621e-26", "%g"},
+  {__LINE__, 2.368330779173562e-12,	"   0", "%4.f"},
+  {__LINE__, 2.383329784369796e+22,	"2.38333E+22", "%G"},
+  {__LINE__, 2.386845229536477e+01,	"+23.868452", "%+#f"},
+  {__LINE__, 2.388207830036780e-05,	"0.000024", "%f"},
+  {__LINE__, 2.391809468802907e+21,	"+2.391809e+21", "%+e"},
+  {__LINE__, 2.395172908564692e-09,	"+0.000000", "%+f"},
+  {__LINE__, 2.395447167030886e-29,	"2.39545e-29", "%g"},
+  {__LINE__, 2.397292973389182e+16,	"23972929733891823", "%6.f"},
+  {__LINE__, 2.401749832237687e-30,	"2.401750E-30", "%E"},
+  {__LINE__, 2.403610502544347e-03,	"0.00240361", "%4G"},
+  {__LINE__, 2.404676421776132e+17,	"240467642177613206", "%6.f"},
+  {__LINE__, 2.406327689091479e+25,	"2.406328e+25", "%e"},
+  {__LINE__, 2.407341999590511e-02,	"0.024073", "%f"},
+  {__LINE__, 2.407352797581004e+05,	"240735.", "%#g"},
+  {__LINE__, 2.407903467439017e+13,	"2.4079E+13", "%G"},
+  {__LINE__, 2.407979635013539e+21,	" +2E+21", "%+7.G"},
+  {__LINE__, 2.409513517930790e+29,	"240951351793079027174826478585.600853", "%f"},
+  {__LINE__, 2.412530651221551e+10,	"+2.41253E+10", "%+G"},
+  {__LINE__, 2.419943224673811e+00,	"2.41994", "%#g"},
+  {__LINE__, 2.422474399040258e-15,	"0.000000", "%f"},
+  {__LINE__, 2.426060206689458e+18,	"2.42606E+18", "%1G"},
+  {__LINE__, 2.439982659679872e+14,	"+2.439983E+14", "%+E"},
+  {__LINE__, 2.440528851375447e+13,	"24405288513754.466173", "%f"},
+  {__LINE__, 2.441340473292679e+19,	"2.44134E+19", "%G"},
+  {__LINE__, 2.443521636943916e+19,	" 2.e+19", "%#7.g"},
+  {__LINE__, 2.445925211597624e-27,	"2.445925E-27", "%E"},
+  {__LINE__, 2.446966179060722e+25,	"2.446966e+25", "%5e"},
+  {__LINE__, 2.447714218717278e+11,	"2e+11", "%1.e"},
+  {__LINE__, 2.448339744613286e+06,	"2.4483e+06", "%3.5g"},
+  {__LINE__, 2.448772993496189e+03,	"2448.77", "%G"},
+  {__LINE__, 2.448857654325229e+22,	"+2.44886e+22", "%+g"},
+  {__LINE__, 2.450082452098890e-27,	"2.4501E-27", "%#3.5G"},
+  {__LINE__, 2.451293602221637e+05,	"245129.360222", "%f"},
+  {__LINE__, 2.454531490229426e+02,	"245.453", "%G"},
+  {__LINE__, 2.458958369944980e+14,	"2.5E+14", "%6.1E"},
+  {__LINE__, 2.463666680775038e+14,	"+246366668077503.80", "%+#.2f"},
+  {__LINE__, 2.471582990960795e+05,	"2.471583e+05", "%e"},
+  {__LINE__, 2.474107179274687e+22,	"2.47411e+22", "%g"},
+  {__LINE__, 2.474332114849132e-08,	"+2.47433e-08", "%+g"},
+  {__LINE__, 2.476956762431716e+18,	"+2476956762431715919.348107", "%+#f"},
+  {__LINE__, 2.479091221850607e-22,	"0.000000", "%f"},
+  {__LINE__, 2.479819586598431e-24,	"2.47982e-24", "%g"},
+  {__LINE__, 2.480006174601455e-05,	"2.48001E-05", "%G"},
+  {__LINE__, 2.482672677638334e-26,	"+0.000000", "%+f"},
+  {__LINE__, 2.492816492208918e-14,	"      0", "%7.f"},
+  {__LINE__, 2.492964173197140e-12,	"  2e-12", "%7.g"},
+  {__LINE__, 2.494646635961173e+02,	"249.465", "%g"},
+  {__LINE__, 2.494687818780545e+11,	"249468781878.054546", "%#7f"},
+  {__LINE__, 2.510083560147301e-13,	"+2.510084e-13", "%+#e"},
+  {__LINE__, 2.511186607989480e-30,	"2.51E-30", "%.3G"},
+  {__LINE__, 2.514164516133643e-11,	"2.51416e-11", "%g"},
+  {__LINE__, 2.517242520804735e+11,	"2.517243e+11", "%e"},
+  {__LINE__, 2.518526126400833e-26,	"2.51853e-26", "%g"},
+  {__LINE__, 2.520313416401176e+09,	"2520313416.401176", "%5f"},
+  {__LINE__, 2.521653160738683e-29,	"2.52165e-29", "%#g"},
+  {__LINE__, 2.521941342615338e-16,	"2.52194e-16", "%g"},
+  {__LINE__, 2.523554774354461e-03,	"+3E-03", "%+.0E"},
+  {__LINE__, 2.525434130825058e+06,	"+2.525434E+06", "%+E"},
+  {__LINE__, 2.527616380113364e+02,	"2.527616E+02", "%E"},
+  {__LINE__, 2.531871347913505e+09,	"+2.53187E+09", "%+#G"},
+  {__LINE__, 2.532167428661069e+06,	"2532167.428661", "%f"},
+  {__LINE__, 2.545585718405995e+14,	"+2.54559E+14", "%+G"},
+  {__LINE__, 2.546305097286406e+10,	"2.546305e+10", "%e"},
+  {__LINE__, 2.547467156069069e-30,	"+0.00", "%+3.2f"},
+  {__LINE__, 2.548728793004506e-14,	"2.54873E-14", "%G"},
+  {__LINE__, 2.560375602395090e+11,	"256037560239.509032", "%0f"},
+  {__LINE__, 2.560555687476687e+03,	"2561", "%.4g"},
+  {__LINE__, 2.561709077363443e-24,	"+0.000000", "%+f"},
+  {__LINE__, 2.563763849675242e+10,	"2.5637638E+10", "%.7E"},
+  {__LINE__, 2.567482414574355e+11,	"+2.567482e+11", "%+e"},
+  {__LINE__, 2.571575046303674e-17,	"3E-17", "%2.0E"},
+  {__LINE__, 2.572997971296986e+11,	"257299797129.698593", "%f"},
+  {__LINE__, 2.578625935900331e+22,	"25786259359003311786295.853381", "%f"},
+  {__LINE__, 2.579663282966370e+12,	"2.579663e+12", "%e"},
+  {__LINE__, 2.593141782397610e-08,	"0.000000", "%f"},
+  {__LINE__, 2.594386109584196e+04,	"3.E+04", "%#6.0E"},
+  {__LINE__, 2.598069318007816e-22,	"2.59807e-22", "%g"},
+  {__LINE__, 2.600910462290091e+09,	"2.600910E+09", "%6E"},
+  {__LINE__, 2.602580183614458e-03,	"2.602580e-03", "%e"},
+  {__LINE__, 2.606540360440264e+09,	"+2606540360.4", "%+#0.1f"},
+  {__LINE__, 2.610016419698116e-21,	"+3.e-21", "%+#3.g"},
+  {__LINE__, 2.612279323574882e-20,	"2.61228E-20", "%G"},
+  {__LINE__, 2.614157324336453e-14,	"2.61416e-14", "%g"},
+  {__LINE__, 2.614688721873993e-09,	"2.61e-09", "%6.2e"},
+  {__LINE__, 2.616661104472416e-15,	"    0", "%5.f"},
+  {__LINE__, 2.616742079283195e-09,	" +3E-09", "%+7.E"},
+  {__LINE__, 2.618075304717427e+24,	"2.618075e+24", "%e"},
+  {__LINE__, 2.624118573335769e+26,	"262411857333576925555007619.550452", "%1f"},
+  {__LINE__, 2.625718894274227e+24,	"+2625718894274227110940955.753904", "%+f"},
+  {__LINE__, 2.627081999477812e+03,	"2627.081999", "%f"},
+  {__LINE__, 2.631061062224705e+14,	"263106106222470.481626", "%f"},
+  {__LINE__, 2.631545877128814e+27,	"+2.63155e+27", "%+g"},
+  {__LINE__, 2.632694395848818e-11,	"2.63269e-11", "%g"},
+  {__LINE__, 2.636728891022008e-22,	"+2.63673e-22", "%+#4g"},
+  {__LINE__, 2.638495675008130e-28,	"+2.638496e-28", "%+e"},
+  {__LINE__, 2.639704195859799e-11,	"0.", "%#.0f"},
+  {__LINE__, 2.641645264652665e-20,	"0", "%0.f"},
+  {__LINE__, 2.642012075064497e-20,	"3E-20", "%0.E"},
+  {__LINE__, 2.648725869006487e-29,	" 3E-29", "%6.G"},
+  {__LINE__, 2.649060724417770e+12,	"3E+12", "%3.G"},
+  {__LINE__, 2.651188545120166e-17,	"0.000", "%.3f"},
+  {__LINE__, 2.652302152621621e+14,	"2.7E+14", "%.2G"},
+  {__LINE__, 2.653309718412604e-28,	"0.000000", "%f"},
+  {__LINE__, 2.658344750491858e-21,	" 3e-21", "%6.g"},
+  {__LINE__, 2.664625074612594e+15,	"3e+15", "%1.g"},
+  {__LINE__, 2.666953728270800e-15,	"3e-15", "%0.e"},
+  {__LINE__, 2.674515419678877e-11,	" 3E-11", "%6.E"},
+  {__LINE__, 2.680054917256578e+15,	"2680054917256577.5", "%#2.1f"},
+  {__LINE__, 2.680495609883415e-11,	"2.68E-11", "%#.3G"},
+  {__LINE__, 2.685757893641070e+23,	"268575789364107020418259.70809", "%1.5f"},
+  {__LINE__, 2.695551226058178e+16,	"26955512260581775.407786", "%f"},
+  {__LINE__, 2.696346377519671e+04,	"+26963.5", "%+G"},
+  {__LINE__, 2.714262310601257e+17,	"+2.714262E+17", "%+E"},
+  {__LINE__, 2.719227450016317e-01,	"0.271923", "%G"},
+  {__LINE__, 2.724135433346056e-30,	"+2.72414e-30", "%+g"},
+  {__LINE__, 2.725143224130276e+14,	"272514322413027.576530", "%6f"},
+  {__LINE__, 2.729355189648310e-03,	"+0.00273", "%+.5f"},
+  {__LINE__, 2.732872167724945e+11,	"2.73287E+11", "%G"},
+  {__LINE__, 2.737709476435412e+17,	"273770947643541218.141650", "%f"},
+  {__LINE__, 2.739299356074967e-15,	"2.7E-15", "%.2G"},
+  {__LINE__, 2.740793612304798e-27,	"2.740794E-27", "%.7G"},
+  {__LINE__, 2.742030156175960e+20,	"2.74203e+20", "%2.6g"},
+  {__LINE__, 2.744455324096085e+11,	"2.74446E+11", "%G"},
+  {__LINE__, 2.745179546531160e+07,	"2.7452E+07", "%.5G"},
+  {__LINE__, 2.747470562525333e+04,	"3E+04", "%2.E"},
+  {__LINE__, 2.750243314674629e+21,	"2.75024E+21", "%#G"},
+  {__LINE__, 2.750250224436030e+20,	"+2.750250e+20", "%+0.6e"},
+  {__LINE__, 2.752712858561084e-22,	"2.752713e-22", "%e"},
+  {__LINE__, 2.756982987656667e-03,	"0.002756983", "%#.7G"},
+  {__LINE__, 2.761841188479590e+13,	"3e+13", "%1.g"},
+  {__LINE__, 2.769498440434419e+00,	"+3e+00", "%+0.e"},
+  {__LINE__, 2.769993785786379e+10,	"27699937857.863794", "%f"},
+  {__LINE__, 2.772900256376753e-06,	"+2.7729E-06", "%+7.6G"},
+  {__LINE__, 2.774401482467457e-06,	"2.8e-06", "%3.2g"},
+  {__LINE__, 2.777691370374757e-02,	"+0.027777", "%+f"},
+  {__LINE__, 2.779836227365899e-09,	"3e-09", "%5.0g"},
+  {__LINE__, 2.780481651765741e+01,	"2.780482E+01", "%E"},
+  {__LINE__, 2.782228478714809e-26,	"2.782228E-26", "%4.7G"},
+  {__LINE__, 2.790457781719376e+13,	"+2.8e+13", "%+.2g"},
+  {__LINE__, 2.792026581166417e-30,	" 3.e-30", "%#7.0g"},
+  {__LINE__, 2.792396278299615e-08,	"0.00", "%#.2f"},
+  {__LINE__, 2.793658047689995e-10,	"2.794e-10", "%#0.4g"},
+  {__LINE__, 2.795707358229888e-25,	"0.000000", "%f"},
+  {__LINE__, 2.796253091758523e-06,	"2.796E-06", "%.4G"},
+  {__LINE__, 2.796756564788716e-24,	"2.796757e-24", "%e"},
+  {__LINE__, 2.798730444798773e-14,	"2.79873e-14", "%g"},
+  {__LINE__, 2.799108397670447e-24,	"3E-24", "%.0G"},
+  {__LINE__, 2.799389008872835e+06,	"2799389.", "%#0.f"},
+  {__LINE__, 2.800413998518039e-14,	"0.000000", "%f"},
+  {__LINE__, 2.803237602587100e+15,	"+2803237602587100.418816", "%+5f"},
+  {__LINE__, 2.803474415574551e-04,	"0.0002803", "%.7f"},
+  {__LINE__, 2.804957468647181e+25,	"2.80496e+25", "%g"},
+  {__LINE__, 2.809345112788226e+09,	"2809345112.788226", "%.6f"},
+  {__LINE__, 2.811518239408899e+10,	"3e+10", "%1.g"},
+  {__LINE__, 2.813188439967416e-16,	"0.0000000", "%5.7f"},
+  {__LINE__, 2.813497118051755e+08,	"2.8135e+08", "%.5g"},
+  {__LINE__, 2.815748256510577e-29,	"0.000000", "%2f"},
+  {__LINE__, 2.816076365485207e-01,	"0.281608", "%0G"},
+  {__LINE__, 2.816083345772131e+24,	"2.8161e+24", "%6.4e"},
+  {__LINE__, 2.818686957605178e+12,	"2.8187E+12", "%.5G"},
+  {__LINE__, 2.821903538737691e+20,	"2.8219E+20", "%G"},
+  {__LINE__, 2.823659589845680e+26,	"2.82366e+26", "%2g"},
+  {__LINE__, 2.823685630865012e+22,	"2.82369E+22", "%G"},
+  {__LINE__, 2.828826386007914e+21,	"2.828826E+21", "%7E"},
+  {__LINE__, 2.830997901034349e+04,	"+3e+04", "%+0.e"},
+  {__LINE__, 2.833886731091353e-26,	"+2.833887e-26", "%+4e"},
+  {__LINE__, 2.839965144893913e+28,	"28399651448939131626048038015.1421", "%.4f"},
+  {__LINE__, 2.840651452049947e-09,	"2.841E-09", "%#.3E"},
+  {__LINE__, 2.843388001911757e-01,	"0.284339", "%g"},
+  {__LINE__, 2.846122151080671e+14,	"2.84612E+14", "%.5E"},
+  {__LINE__, 2.851257828837595e+05,	"+285126", "%+5.f"},
+  {__LINE__, 2.853823884459520e+07,	"+2.85382E+07", "%+G"},
+  {__LINE__, 2.853870068368765e-06,	"2.854E-06", "%4.3E"},
+  {__LINE__, 2.856687358149867e+01,	"+28.567", "%+6.5G"},
+  {__LINE__, 2.858946600073752e+06,	"2.8589466e+06", "%3.7e"},
+  {__LINE__, 2.861525727138818e+24,	"2.8615257e+24", "%2.7e"},
+  {__LINE__, 2.865104175886071e-24,	"0.000000", "%f"},
+  {__LINE__, 2.870678920363198e-14,	"2.87068E-14", "%G"},
+  {__LINE__, 2.873298537233691e+09,	"+2.8733e+09", "%+g"},
+  {__LINE__, 2.877939609444375e-02,	"0.028779", "%f"},
+  {__LINE__, 2.878253985341728e+13,	"2.87825E+13", "%G"},
+  {__LINE__, 2.879299244903946e+29,	"287929924490394597569320467301", "%0.f"},
+  {__LINE__, 2.885516225515485e-26,	"0.000000", "%f"},
+  {__LINE__, 2.886013724129579e+20,	"+3e+20", "%+4.g"},
+  {__LINE__, 2.887032786975506e-30,	"0.000000", "%f"},
+  {__LINE__, 2.890415456531026e-29,	"2.89042E-29", "%G"},
+  {__LINE__, 2.893177360548214e-13,	"2.893E-13", "%#6.3E"},
+  {__LINE__, 2.895265536458195e+26,	"2.89527e+26", "%5g"},
+  {__LINE__, 2.903844533810152e+23,	"290384453381015195105874.23", "%.2f"},
+  {__LINE__, 2.909060558287504e+27,	"2.90906e+27", "%g"},
+  {__LINE__, 2.911615480973172e-05,	"2.91162E-05", "%3G"},
+  {__LINE__, 2.912692297221896e+09,	"2912692297.221896", "%#f"},
+  {__LINE__, 2.913595662485813e-24,	"2.9136E-24", "%G"},
+  {__LINE__, 2.915960840341896e-27,	"0.000000", "%f"},
+  {__LINE__, 2.920451095973991e-16,	"2.92e-16", "%2.2e"},
+  {__LINE__, 2.920528295810925e+06,	"2.92053E+06", "%#G"},
+  {__LINE__, 2.921564671017147e+20,	"2.921565E+20", "%#6E"},
+  {__LINE__, 2.921628350942189e+01,	"2.921628E+01", "%E"},
+  {__LINE__, 2.921843377455232e+20,	"2.921843E+20", "%#E"},
+  {__LINE__, 2.930156950319384e+29,	"2.930E+29", "%1.3E"},
+  {__LINE__, 2.931229858895071e-30,	"2.9e-30", "%4.2g"},
+  {__LINE__, 2.931753029689166e+20,	"2.93175e+20", "%g"},
+  {__LINE__, 2.933023693079342e+15,	"3.E+15", "%#.1G"},
+  {__LINE__, 2.933078733225520e+26,	"2.93308E+26", "%G"},
+  {__LINE__, 2.933528170896643e-14,	"+2.93353e-14", "%+g"},
+  {__LINE__, 2.938648437428148e+00,	"2.938648e+00", "%e"},
+  {__LINE__, 2.940752238221344e+26,	"+2.94075E+26", "%+G"},
+  {__LINE__, 2.942836470459675e+20,	"2.9428e+20", "%6.4e"},
+  {__LINE__, 2.943218333254941e+29,	"294321833325494086608387078740.634024", "%f"},
+  {__LINE__, 2.943690574007512e-27,	"0.000000", "%f"},
+  {__LINE__, 2.945452907046501e+09,	"+2.9455E+09", "%+.5G"},
+  {__LINE__, 2.946648725966953e+16,	"29466487259669534.637396", "%4f"},
+  {__LINE__, 2.955119322417825e+29,	"2.95512E+29", "%G"},
+  {__LINE__, 2.966481197538973e+24,	"2.96648e+24", "%#g"},
+  {__LINE__, 2.969362862661362e+08,	"+2.969363e+08", "%+7e"},
+  {__LINE__, 2.970062459990078e+21,	"+2.97006E+21", "%+G"},
+  {__LINE__, 2.971059959019791e+10,	"  3E+10", "%7.G"},
+  {__LINE__, 2.973020205606034e-29,	"0.000000", "%f"},
+  {__LINE__, 2.977223210301426e+04,	"2.977223e+04", "%#e"},
+  {__LINE__, 2.977467832772786e-26,	"0.000000", "%f"},
+  {__LINE__, 2.981433606423384e+18,	"2981433606423384397.032805", "%f"},
+  {__LINE__, 2.981615513287404e-17,	"2.98162e-17", "%g"},
+  {__LINE__, 2.983880743847276e+19,	"  3e+19", "%7.e"},
+  {__LINE__, 2.983927792297305e-28,	"2.983928e-28", "%e"},
+  {__LINE__, 2.984807359492058e-17,	" 0", "%2.f"},
+  {__LINE__, 2.985123412933032e+09,	"+2.98512e+09", "%+g"},
+  {__LINE__, 2.991132955408629e-27,	"+2.99113e-27", "%+4g"},
+  {__LINE__, 2.992345635923643e+19,	"3E+19", "%4.G"},
+  {__LINE__, 2.993024238285395e-05,	"2.99302e-05", "%2g"},
+  {__LINE__, 2.995303406756363e+16,	"+2.995303E+16", "%+E"},
+  {__LINE__, 2.995492577854335e+19,	"+29954925778543346481.797016", "%+f"},
+  {__LINE__, 2.996856271675341e-25,	"+3e-25", "%+0.e"},
+  {__LINE__, 2.997813968112619e+12,	"2.99781e+12", "%#5g"},
+  {__LINE__, 3.002097486457961e-17,	"3.00210e-17", "%5.5e"},
+  {__LINE__, 3.006538123158692e+28,	"+3.00654E+28", "%+#G"},
+  {__LINE__, 3.007293721729544e+04,	"30072.937217", "%f"},
+  {__LINE__, 3.008301791944493e-07,	"3.008e-07", "%.3e"},
+  {__LINE__, 3.011742184603817e-17,	"3.011742E-17", "%#E"},
+  {__LINE__, 3.024641547299177e-30,	"3.02464e-30", "%g"},
+  {__LINE__, 3.026525135110198e-28,	"3e-28", "%.0e"},
+  {__LINE__, 3.026768160756558e+20,	"3.02677E+20", "%G"},
+  {__LINE__, 3.031928829940975e+18,	"3031928829940975234.1", "%0.1f"},
+  {__LINE__, 3.039787705138620e+24,	"+3.E+24", "%+#5.G"},
+  {__LINE__, 3.039803824423916e-02,	"0.030398", "%5f"},
+  {__LINE__, 3.041236293199133e-26,	"3.04124e-26", "%g"},
+  {__LINE__, 3.045634954037886e+04,	"30456.3", "%g"},
+  {__LINE__, 3.047528114241850e+25,	"3e+25", "%0.e"},
+  {__LINE__, 3.047958193737501e-24,	"3.04796E-24", "%#G"},
+  {__LINE__, 3.049537324414302e-16,	"3.04954E-16", "%G"},
+  {__LINE__, 3.050500637681798e-30,	"3.0505E-30", "%G"},
+  {__LINE__, 3.051769626625307e-01,	"0.305177", "%f"},
+  {__LINE__, 3.057280201971847e+11,	"+3.05728E+11", "%+.5E"},
+  {__LINE__, 3.060046173306881e-10,	"+3.060046e-10", "%+e"},
+  {__LINE__, 3.069732667347204e+27,	"+3069732667347204291274920251.453295", "%+f"},
+  {__LINE__, 3.075060836786916e-14,	"0.000000", "%f"},
+  {__LINE__, 3.078175179670964e+13,	"3.07818E+13", "%G"},
+  {__LINE__, 3.080305344303183e-21,	"3.08031e-21", "%6g"},
+  {__LINE__, 3.088881497064043e+27,	"+3.088881E+27", "%+3E"},
+  {__LINE__, 3.089196877931209e-20,	"3.089197e-20", "%e"},
+  {__LINE__, 3.091400888880487e-08,	"3e-08", "%2.e"},
+  {__LINE__, 3.093410684178904e+16,	"3.09341e+16", "%g"},
+  {__LINE__, 3.104225344208216e-21,	"0.000000", "%f"},
+  {__LINE__, 3.105843728248599e+13,	"3.e+13", "%#.0g"},
+  {__LINE__, 3.106463071390893e-07,	"0.0000", "%.4f"},
+  {__LINE__, 3.107784123569379e+02,	"+310.778", "%+G"},
+  {__LINE__, 3.110605148983672e-20,	"3.1106051E-20", "%.7E"},
+  {__LINE__, 3.111702418162670e-04,	"0.00031117", "%.5G"},
+  {__LINE__, 3.117610675303153e-17,	"3.11761e-17", "%g"},
+  {__LINE__, 3.123620125717981e+07,	"3.1236e+07", "%2.5g"},
+  {__LINE__, 3.125648558809832e-24,	"+3.125649E-24", "%+#0.6E"},
+  {__LINE__, 3.129025163659283e+10,	"31290251636.592825", "%#f"},
+  {__LINE__, 3.130689119412709e-29,	"+3.131E-29", "%+#.4G"},
+  {__LINE__, 3.135681222132527e+13,	"3.13568E+13", "%G"},
+  {__LINE__, 3.138290485073330e-10,	"3.13829E-10", "%G"},
+  {__LINE__, 3.141255250155306e-12,	"3.14126E-12", "%G"},
+  {__LINE__, 3.143224520918429e+25,	"3.14322E+25", "%#1G"},
+  {__LINE__, 3.144746921366173e-16,	"      0", "%7.f"},
+  {__LINE__, 3.151336678241994e+19,	"+3.15134E+19", "%+G"},
+  {__LINE__, 3.161752935716549e+24,	"3.2E+24", "%2.1E"},
+  {__LINE__, 3.167106521258172e-10,	"+3.167107e-10", "%+e"},
+  {__LINE__, 3.167266522824146e-04,	"3E-04", "%3.E"},
+  {__LINE__, 3.169995217131489e+27,	"3169995217131488907114089670.358226", "%f"},
+  {__LINE__, 3.172117220467692e-21,	"3.1721E-21", "%.5G"},
+  {__LINE__, 3.173824170351611e+02,	" 3e+02", "%6.e"},
+  {__LINE__, 3.186291452544739e-28,	" 0", "%2.f"},
+  {__LINE__, 3.194750094186063e+03,	"+3.194750E+03", "%+E"},
+  {__LINE__, 3.195001037118137e-20,	"0", "%0.0f"},
+  {__LINE__, 3.199271564719560e+02,	"319.927", "%g"},
+  {__LINE__, 3.212803450638544e+20,	"3.2128e+20", "%.6g"},
+  {__LINE__, 3.214502877263883e+24,	"3214502877263882840708220", "%2.f"},
+  {__LINE__, 3.214658414074286e-01,	"+0.321466", "%+#g"},
+  {__LINE__, 3.217627975823673e+00,	"3.217628", "%f"},
+  {__LINE__, 3.218257328710536e-07,	"3.21826e-07", "%6.5e"},
+  {__LINE__, 3.221949479347008e+02,	"322.194948", "%f"},
+  {__LINE__, 3.222862935507443e-14,	"3.222863E-14", "%E"},
+  {__LINE__, 3.223750247261608e+19,	"3.22375e+19", "%g"},
+  {__LINE__, 3.236030335782375e+05,	"3.236030e+05", "%e"},
+  {__LINE__, 3.241078803072735e+19,	"3.24108e+19", "%g"},
+  {__LINE__, 3.248069569167045e-06,	"0.000003", "%#f"},
+  {__LINE__, 3.248148973717269e-15,	"3.24815E-15", "%G"},
+  {__LINE__, 3.251150704311790e+25,	"+3.25115e+25", "%+5g"},
+  {__LINE__, 3.254498593372140e+15,	"+3.2545e+15", "%+g"},
+  {__LINE__, 3.254949399612861e-13,	"+3.255E-13", "%+7.3E"},
+  {__LINE__, 3.255490928554106e-17,	"3.255491e-17", "%e"},
+  {__LINE__, 3.262333894422112e+17,	"326233389442211185.738074", "%0f"},
+  {__LINE__, 3.263923577545217e-24,	"0.0000000", "%.7f"},
+  {__LINE__, 3.267125289609703e+23,	"3.26713e+23", "%#.5e"},
+  {__LINE__, 3.267906049108331e+27,	"3.267906E+27", "%6E"},
+  {__LINE__, 3.269885039157328e+14,	"326988503915732.797722", "%f"},
+  {__LINE__, 3.296011393609953e-27,	"  3E-27", "%7.E"},
+  {__LINE__, 3.296452164568996e+29,	"3.296452E+29", "%E"},
+  {__LINE__, 3.296544736555325e+10,	"+3.29654E+10", "%+.6G"},
+  {__LINE__, 3.301861835798572e+03,	"3301.862", "%4.7g"},
+  {__LINE__, 3.311292283423002e+21,	" 3E+21", "%6.G"},
+  {__LINE__, 3.314868440076262e-10,	"3.3149E-10", "%.5G"},
+  {__LINE__, 3.318057982247451e-13,	"3.3181e-13", "%0.5g"},
+  {__LINE__, 3.318139218410071e-22,	"0.000000", "%f"},
+  {__LINE__, 3.326769904839351e-11,	"+3.3268e-11", "%+0.4e"},
+  {__LINE__, 3.327483659787219e+27,	"+3.32748e+27", "%+g"},
+  {__LINE__, 3.332666889640198e+17,	"333266688964019763.830038", "%f"},
+  {__LINE__, 3.333807449377253e+10,	"+3.33e+10", "%+.3g"},
+  {__LINE__, 3.334572302792625e-09,	"3.334572E-09", "%E"},
+  {__LINE__, 3.337567126586765e-17,	"0.0000000", "%#3.7f"},
+  {__LINE__, 3.340512607683786e-04,	"+3E-04", "%+1.E"},
+  {__LINE__, 3.344911557516870e+04,	"33449.1", "%G"},
+  {__LINE__, 3.346464302017296e+26,	"+3.E+26", "%+#3.G"},
+  {__LINE__, 3.348503166628953e+00,	"+3.348503e+00", "%+e"},
+  {__LINE__, 3.350025157778138e-19,	"3.35003e-19", "%6g"},
+  {__LINE__, 3.352826233035342e+11,	"335282623303.534200", "%7f"},
+  {__LINE__, 3.357174089765502e+10,	"3.35717E+10", "%G"},
+  {__LINE__, 3.369253166475501e+03,	"+3369.25", "%+G"},
+  {__LINE__, 3.371385975046735e+02,	"337.", "%#.0f"},
+  {__LINE__, 3.372532650462104e-04,	"+0.000", "%+.3f"},
+  {__LINE__, 3.376498162710442e-26,	"3.376498e-26", "%e"},
+  {__LINE__, 3.383510307689135e-12,	"  3e-12", "%7.0e"},
+  {__LINE__, 3.388427914080631e-04,	"0.0003", "%2.4f"},
+  {__LINE__, 3.390757423408097e+29,	"3.3908E+29", "%.4E"},
+  {__LINE__, 3.393963140962879e-11,	"3.39396e-11", "%g"},
+  {__LINE__, 3.399245742994444e+24,	"3.399246E+24", "%E"},
+  {__LINE__, 3.417690405546708e-26,	"0.00000", "%4.5f"},
+  {__LINE__, 3.421159360472045e-30,	"3.42116E-30", "%G"},
+  {__LINE__, 3.421973947898887e-06,	"3.42197E-06", "%4G"},
+  {__LINE__, 3.425949002482817e-10,	"+3.42595E-10", "%+G"},
+  {__LINE__, 3.428355150377972e+08,	"3.42836E+08", "%G"},
+  {__LINE__, 3.445035158951526e+15,	"3445035158951526.454985", "%f"},
+  {__LINE__, 3.447363996077534e+28,	"+3e+28", "%+2.e"},
+  {__LINE__, 3.451571062654907e-03,	"0.00345157", "%G"},
+  {__LINE__, 3.452787236877688e+09,	"3.45279e+09", "%g"},
+  {__LINE__, 3.454114826574939e-22,	"3.e-22", "%#3.e"},
+  {__LINE__, 3.455241965974631e-03,	"0.003455", "%#f"},
+  {__LINE__, 3.456190496554365e-18,	"3.E-18", "%#5.E"},
+  {__LINE__, 3.456804565717233e-19,	"+0.000", "%+2.3f"},
+  {__LINE__, 3.457077651539715e-28,	"3.457078E-28", "%E"},
+  {__LINE__, 3.472025705376229e+22,	"3.472e+22", "%7.4g"},
+  {__LINE__, 3.473308270919079e+03,	"3.473308e+03", "%e"},
+  {__LINE__, 3.474468013243007e-30,	"3.47447e-30", "%g"},
+  {__LINE__, 3.477976957097698e+22,	"3.47798e+22", "%g"},
+  {__LINE__, 3.501174631980057e-06,	"4e-06", "%4.g"},
+  {__LINE__, 3.501808481702140e+20,	"3.50181E+20", "%G"},
+  {__LINE__, 3.511760000705324e+14,	"351176000070532.357000", "%f"},
+  {__LINE__, 3.511870226306087e+29,	"3.51187e+29", "%.5e"},
+  {__LINE__, 3.518846859147841e+02,	"+351.885", "%+G"},
+  {__LINE__, 3.521659149753418e+25,	"35216591497534182053641416", "%5.f"},
+  {__LINE__, 3.521721228178747e+21,	"4e+21", "%2.e"},
+  {__LINE__, 3.526696007281458e+22,	"3.5267e+22", "%g"},
+  {__LINE__, 3.535631031379084e-11,	"4e-11", "%5.0g"},
+  {__LINE__, 3.537219665456759e-01,	"0.353722", "%f"},
+  {__LINE__, 3.537252728287785e-09,	"3.537253E-09", "%E"},
+  {__LINE__, 3.542561277796815e-19,	"3.542561E-19", "%E"},
+  {__LINE__, 3.548942336915745e+13,	"3.54894E+13", "%.5E"},
+  {__LINE__, 3.574385715121768e-24,	"3.57439E-24", "%#G"},
+  {__LINE__, 3.578068067760211e-13,	"3.578068E-13", "%E"},
+  {__LINE__, 3.583296432862266e-13,	"3.5833e-13", "%g"},
+  {__LINE__, 3.591567367115590e+19,	"3.59157e+19", "%1g"},
+  {__LINE__, 3.594902312287635e-24,	"3.5949E-24", "%G"},
+  {__LINE__, 3.602929486764515e+12,	"3602929486764.514522", "%#f"},
+  {__LINE__, 3.606699462631472e-01,	"+0.360670", "%+f"},
+  {__LINE__, 3.608605968319811e+17,	"3.60861e+17", "%g"},
+  {__LINE__, 3.608780761567885e+24,	"4e+24", "%0.e"},
+  {__LINE__, 3.623857274715022e-15,	"3.62386E-15", "%1G"},
+  {__LINE__, 3.627346251764432e-22,	"3.627e-22", "%.4g"},
+  {__LINE__, 3.652610391698086e-16,	"0.000000", "%3f"},
+  {__LINE__, 3.657463146689917e-19,	"   0", "%4.0f"},
+  {__LINE__, 3.658538858712938e-15,	"4E-15", "%5.G"},
+  {__LINE__, 3.660337267266058e+16,	"+36603372672660579.034698", "%+f"},
+  {__LINE__, 3.661588742065142e-01,	"0.366159", "%g"},
+  {__LINE__, 3.662296387211376e-25,	"0.000000", "%f"},
+  {__LINE__, 3.668511100303393e-29,	"0.000000", "%7f"},
+  {__LINE__, 3.669499303661920e+06,	"3.6695e+06", "%1.5g"},
+  {__LINE__, 3.676856420121343e-23,	"3.6769e-23", "%0.4e"},
+  {__LINE__, 3.677197473476901e-19,	"+3.6772e-19", "%+g"},
+  {__LINE__, 3.677281754506453e+12,	"+3677281754506.452671", "%+f"},
+  {__LINE__, 3.678420802401506e-19,	"3.67842E-19", "%G"},
+  {__LINE__, 3.679970245325769e+07,	"3.67997e+07", "%g"},
+  {__LINE__, 3.682528947621349e+05,	"4.e+05", "%#5.e"},
+  {__LINE__, 3.688257471304210e+22,	"36882574713042104441740.320908", "%f"},
+  {__LINE__, 3.689129734472166e-01,	"0.368913", "%0.6G"},
+  {__LINE__, 3.693483801463324e+12,	"4E+12", "%3.E"},
+  {__LINE__, 3.694612396584729e-21,	"+3.69461E-21", "%+G"},
+  {__LINE__, 3.706150073392112e-19,	"0.000000", "%2f"},
+  {__LINE__, 3.706824819530577e+21,	"3706824819530576853310.321894", "%f"},
+  {__LINE__, 3.709583789659276e+19,	"+3.709584E+19", "%+#E"},
+  {__LINE__, 3.711137503697284e+22,	"3.7111E+22", "%.5G"},
+  {__LINE__, 3.717307412969522e-22,	"3.717307E-22", "%#E"},
+  {__LINE__, 3.717434999853808e+24,	" 4E+24", "%6.G"},
+  {__LINE__, 3.720761662524312e+14,	"+372076166252431.2285", "%+1.4f"},
+  {__LINE__, 3.721613815237707e-10,	"3.72161e-10", "%g"},
+  {__LINE__, 3.725086467464346e+14,	"3.72509E+14", "%G"},
+  {__LINE__, 3.727427083626536e-15,	"+4E-15", "%+.0G"},
+  {__LINE__, 3.731138322599465e-13,	"3.73114e-13", "%5g"},
+  {__LINE__, 3.732248129614146e-04,	"  4E-04", "%7.E"},
+  {__LINE__, 3.744422223926118e-24,	"3.744422E-24", "%E"},
+  {__LINE__, 3.745595428897916e+21,	"+3745595428897916079336.027906", "%+f"},
+  {__LINE__, 3.751308304055989e-08,	"+3.751308e-08", "%+e"},
+  {__LINE__, 3.755395417696132e-02,	"0.037554", "%f"},
+  {__LINE__, 3.769103881505159e+09,	"3.7691e+09", "%g"},
+  {__LINE__, 3.769535572757430e+00,	"3.769536", "%6.7G"},
+  {__LINE__, 3.770823872348274e-28,	"+0.000000", "%+f"},
+  {__LINE__, 3.771160653578178e+29,	"3.77116e+29", "%g"},
+  {__LINE__, 3.776563752716444e-12,	"4E-12", "%.0E"},
+  {__LINE__, 3.777953798674786e-28,	"3.77795e-28", "%g"},
+  {__LINE__, 3.785994690686598e+28,	"4E+28", "%5.G"},
+  {__LINE__, 3.787487488835162e+01,	"+37.874875", "%+5f"},
+  {__LINE__, 3.788249311173359e-18,	"3.788249E-18", "%E"},
+  {__LINE__, 3.798728360791314e-08,	"3.798728E-08", "%2E"},
+  {__LINE__, 3.799038238867092e+05,	"3.79904E+05", "%.5E"},
+  {__LINE__, 3.799822564549600e+06,	"3.79982E+06", "%.5E"},
+  {__LINE__, 3.804862840499834e-16,	"0", "%1.f"},
+  {__LINE__, 3.805375156822481e+12,	"3805375156822.4814861", "%.7f"},
+  {__LINE__, 3.821612790153376e-17,	"3.821613e-17", "%e"},
+  {__LINE__, 3.825193659558693e+14,	"3.82519E+14", "%#G"},
+  {__LINE__, 3.834180638680996e+17,	"+383418063868099565.638659", "%+f"},
+  {__LINE__, 3.834759760605814e-12,	"3.83476E-12", "%G"},
+  {__LINE__, 3.839786235582770e+16,	"+3.84e+16", "%+0.3g"},
+  {__LINE__, 3.843164462248778e+28,	"3.84316e+28", "%#g"},
+  {__LINE__, 3.845599697858050e+22,	"3.8456E+22", "%G"},
+  {__LINE__, 3.850147271017228e-21,	"3.85e-21", "%.4g"},
+  {__LINE__, 3.850283557812101e+07,	"3.85028E+07", "%G"},
+  {__LINE__, 3.854235609725703e+03,	"3854.24", "%G"},
+  {__LINE__, 3.864901885489405e-15,	"3.8649E-15", "%G"},
+  {__LINE__, 3.868630187629983e-24,	"3.868630e-24", "%e"},
+  {__LINE__, 3.876764606134972e-03,	"+3.8767646e-03", "%+#0.7e"},
+  {__LINE__, 3.884553592855422e+08,	"+3.8845536e+08", "%+4.7e"},
+  {__LINE__, 3.887417494351062e+03,	"3887.42", "%0g"},
+  {__LINE__, 3.887561018972304e+03,	"3887.56", "%G"},
+  {__LINE__, 3.888554801724658e-24,	"3.888555e-24", "%e"},
+  {__LINE__, 3.892806891909861e-01,	"0.389281", "%f"},
+  {__LINE__, 3.914459791345755e+15,	"+3.914460E+15", "%+E"},
+  {__LINE__, 3.918383209642759e+01,	"39.1838", "%#G"},
+  {__LINE__, 3.923970658741865e-10,	"3.92397E-10", "%G"},
+  {__LINE__, 3.928163650272335e+18,	"3928163650272335161.162118", "%f"},
+  {__LINE__, 3.933053127721002e-20,	"3.933053e-20", "%e"},
+  {__LINE__, 3.939306552155218e-29,	"3.93931E-29", "%G"},
+  {__LINE__, 3.953007066379472e+07,	"3.953007E+07", "%E"},
+  {__LINE__, 3.954924824986267e-01,	"3.954925E-01", "%E"},
+  {__LINE__, 3.956156072067987e+15,	"3.956E+15", "%0.4G"},
+  {__LINE__, 3.957756196797224e+22,	"4.0E+22", "%4.1E"},
+  {__LINE__, 3.960011413261009e+27,	"+3960011413261008783592842519.283295", "%+f"},
+  {__LINE__, 3.961789076323378e+20,	"396178907632337828914.614875", "%f"},
+  {__LINE__, 3.961985468081708e-28,	"3.96199E-28", "%1G"},
+  {__LINE__, 3.975007582283812e-27,	"0.000000", "%0.6f"},
+  {__LINE__, 3.987586813142132e+15,	"+3.98759e+15", "%+g"},
+  {__LINE__, 3.992250836957379e+21,	"3.99225E+21", "%0G"},
+  {__LINE__, 3.992985048620057e+00,	"3.9930", "%.4f"},
+  {__LINE__, 4.000000000000000e+02,	"400.00", "%.2f"},
+  {__LINE__, 4.000145414240556e+14,	"4.00015e+14", "%#6g"},
+  {__LINE__, 4.000774453529974e-25,	"4E-25", "%.0E"},
+  {__LINE__, 4.002041494804383e+17,	"4.002041E+17", "%E"},
+  {__LINE__, 4.005505415013214e+17,	" 4E+17", "%6.2G"},
+  {__LINE__, 4.008960306876491e-28,	"0.000", "%.3f"},
+  {__LINE__, 4.032337828117640e+16,	"4.03234E+16", "%G"},
+  {__LINE__, 4.035414597530057e+26,	"403541459753005682387083652.429283", "%f"},
+  {__LINE__, 4.037065874793069e-01,	"0.403707", "%f"},
+  {__LINE__, 4.047856284449970e-14,	"4.04786E-14", "%#G"},
+  {__LINE__, 4.049037221323070e-04,	"4.049037e-04", "%e"},
+  {__LINE__, 4.053458853142009e-07,	"4E-07", "%2.0E"},
+  {__LINE__, 4.056455443275955e-22,	"4.056455e-22", "%e"},
+  {__LINE__, 4.058158020771355e-22,	"4.05816e-22", "%#2g"},
+  {__LINE__, 4.067283508945137e+02,	"+4.07e+02", "%+5.2e"},
+  {__LINE__, 4.072155715199509e+11,	"4.072e+11", "%.4g"},
+  {__LINE__, 4.074643403755990e-22,	"4e-22", "%0.g"},
+  {__LINE__, 4.077450352325251e+08,	"4.1e+08", "%3.2g"},
+  {__LINE__, 4.081492619284916e-08,	"4.081493E-08", "%E"},
+  {__LINE__, 4.083271801996951e-10,	"4.083272E-10", "%#E"},
+  {__LINE__, 4.090188547940879e-15,	"4.090189E-15", "%#E"},
+  {__LINE__, 4.091167728938537e-11,	"4e-11", "%1.g"},
+  {__LINE__, 4.091916745541154e+15,	"4091916745541153.588306", "%f"},
+  {__LINE__, 4.092366122921161e+23,	"4E+23", "%0.E"},
+  {__LINE__, 4.094638368212577e-11,	"4.09464E-11", "%#G"},
+  {__LINE__, 4.097148443124199e-16,	"0.000000", "%f"},
+  {__LINE__, 4.101057893946401e+06,	"4e+06", "%4.g"},
+  {__LINE__, 4.101209521231476e+28,	"41012095212314756409455185348.633677", "%f"},
+  {__LINE__, 4.105683659045903e+05,	"+4.E+05", "%+#1.G"},
+  {__LINE__, 4.111553717385758e-16,	"4.11155e-16", "%g"},
+  {__LINE__, 4.112186409918593e+14,	"+4.11219e+14", "%+g"},
+  {__LINE__, 4.117782144860865e+25,	"4.117782E+25", "%5E"},
+  {__LINE__, 4.119420921722146e-27,	"4.11942e-27", "%g"},
+  {__LINE__, 4.134953783635018e+14,	"+4.1349538e+14", "%+.7e"},
+  {__LINE__, 4.136990822648468e+11,	"4.136991E+11", "%E"},
+  {__LINE__, 4.140475788523046e+14,	"+4E+14", "%+5.G"},
+  {__LINE__, 4.149589679915584e+24,	"4.14959E+24", "%2G"},
+  {__LINE__, 4.151240342256744e-22,	" 0", "%2.f"},
+  {__LINE__, 4.155533104307272e-04,	"+0.000416", "%+f"},
+  {__LINE__, 4.155890511880097e+25,	"4.155891e+25", "%e"},
+  {__LINE__, 4.159907901074450e-19,	"4.159908E-19", "%7E"},
+  {__LINE__, 4.171899783464252e+18,	"4E+18", "%.0E"},
+  {__LINE__, 4.177920266276382e-17,	"+0.0000", "%+1.4f"},
+  {__LINE__, 4.181728014477237e-20,	"4.18173e-20", "%.6g"},
+  {__LINE__, 4.203600495086497e-30,	" 4E-30", "%6.G"},
+  {__LINE__, 4.211166112605717e-08,	"4E-08", "%5.1G"},
+  {__LINE__, 4.219513437404614e+18,	"+4E+18", "%+.0E"},
+  {__LINE__, 4.221426315236785e+08,	"4.221426E+08", "%#E"},
+  {__LINE__, 4.226224756005934e-13,	" 4.e-13", "%#7.g"},
+  {__LINE__, 4.226979046489921e-01,	"4.226979e-01", "%#.6e"},
+  {__LINE__, 4.236283521629158e-08,	"+4.23628E-08", "%+G"},
+  {__LINE__, 4.239850628514233e-07,	"4.23985E-07", "%.6G"},
+  {__LINE__, 4.241177358638621e+04,	"42411.773586", "%2f"},
+  {__LINE__, 4.245306724398964e-13,	"0.000000", "%#f"},
+  {__LINE__, 4.246194290300334e+16,	"42461942903003340.177293", "%2f"},
+  {__LINE__, 4.251238996137952e-05,	"4.25124E-05", "%3G"},
+  {__LINE__, 4.262432542017438e+13,	"42624325420174.375978", "%1f"},
+  {__LINE__, 4.266383084300715e+16,	"4E+16", "%4.G"},
+  {__LINE__, 4.292963398931474e-11,	"4.292963E-11", "%E"},
+  {__LINE__, 4.296530271399131e-29,	"0.000000", "%6f"},
+  {__LINE__, 4.303753949741171e+19,	"4.30375E+19", "%2G"},
+  {__LINE__, 4.303767633827431e-28,	"4.30377e-28", "%g"},
+  {__LINE__, 4.316181911403991e-30,	"4.3162e-30", "%#7.5g"},
+  {__LINE__, 4.318654697213126e-18,	"4.31865e-18", "%g"},
+  {__LINE__, 4.320618603119499e+05,	"432061.860312", "%3f"},
+  {__LINE__, 4.322443609118441e+21,	"4.32244E+21", "%7.5E"},
+  {__LINE__, 4.322522446810708e-15,	"4.32252e-15", "%.6g"},
+  {__LINE__, 4.334728493589115e-18,	"0.000000", "%f"},
+  {__LINE__, 4.335342531476346e-19,	"4.33534E-19", "%G"},
+  {__LINE__, 4.340579325084176e-30,	"4.34058e-30", "%#0.6g"},
+  {__LINE__, 4.340775659883185e+04,	"43407.756599", "%6f"},
+  {__LINE__, 4.361131891528634e-14,	" 4E-14", "%6.G"},
+  {__LINE__, 4.366662624371249e-02,	"+0.04", "%+4.g"},
+  {__LINE__, 4.369919308458348e+28,	"+4.36992e+28", "%+2g"},
+  {__LINE__, 4.369930393192433e-24,	"4.369930e-24", "%e"},
+  {__LINE__, 4.376283118322521e-01,	"0.437628", "%g"},
+  {__LINE__, 4.386868840825930e+19,	"4.3869E+19", "%.5G"},
+  {__LINE__, 4.389349113395235e+05,	"+4.389349e+05", "%+e"},
+  {__LINE__, 4.392447466753053e-08,	"+4.392E-08", "%+.4G"},
+  {__LINE__, 4.394068619246889e-13,	"4.39407e-13", "%6g"},
+  {__LINE__, 4.404889573700147e-09,	"4.404890E-09", "%E"},
+  {__LINE__, 4.410531039373014e+05,	"+4.41e+05", "%+.2e"},
+  {__LINE__, 4.412466606726400e-08,	"   0.0", "%6.1f"},
+  {__LINE__, 4.414693719279123e+17,	"4.414694e+17", "%e"},
+  {__LINE__, 4.417050329080679e-01,	"+0.441705", "%+g"},
+  {__LINE__, 4.419509841929196e-10,	"4.4195098E-10", "%.7E"},
+  {__LINE__, 4.421012777695611e+07,	"+4.42101E+07", "%+0.6G"},
+  {__LINE__, 4.426387732151208e+11,	"4.42639e+11", "%g"},
+  {__LINE__, 4.439567017550398e+26,	"4.439567E+26", "%E"},
+  {__LINE__, 4.446479816166258e-21,	"4.446480e-21", "%0e"},
+  {__LINE__, 4.453486178424380e+05,	"445348.617842", "%f"},
+  {__LINE__, 4.455733696043438e+06,	"4.45573e+06", "%3g"},
+  {__LINE__, 4.455870606312063e+16,	"4.45587e+16", "%g"},
+  {__LINE__, 4.458776435431700e+22,	"4e+22", "%1.g"},
+  {__LINE__, 4.466448605584151e-30,	"0.000000", "%f"},
+  {__LINE__, 4.471063097005706e+16,	"4.47106E+16", "%G"},
+  {__LINE__, 4.482001890035190e-22,	"+4.482E-22", "%+G"},
+  {__LINE__, 4.493246870093631e+05,	"449325", "%1G"},
+  {__LINE__, 4.496089639281023e+17,	"4.49609e+17", "%g"},
+  {__LINE__, 4.515066070117557e+15,	"4.51507e+15", "%g"},
+  {__LINE__, 4.518296460916194e+24,	"+4.5183E+24", "%+G"},
+  {__LINE__, 4.526548719445596e+02,	"452.655", "%6.3f"},
+  {__LINE__, 4.532756455106440e-26,	"4.53e-26", "%4.2e"},
+  {__LINE__, 4.534466782633055e-14,	"4.53447E-14", "%G"},
+  {__LINE__, 4.541313061854649e-14,	"4.54131E-14", "%G"},
+  {__LINE__, 4.541848265404338e+02,	"  5E+02", "%7.G"},
+  {__LINE__, 4.546603085406363e-26,	"5E-26", "%3.G"},
+  {__LINE__, 4.557349604829375e+28,	"+45573496048293753446500886639.", "%+#1.f"},
+  {__LINE__, 4.560736449944898e-27,	"4.56074e-27", "%g"},
+  {__LINE__, 4.563726230559341e-15,	"+0.0", "%+2.1f"},
+  {__LINE__, 4.572650965532532e-26,	"+5E-26", "%+4.G"},
+  {__LINE__, 4.574369572115099e-10,	"+0.000000", "%+2.6f"},
+  {__LINE__, 4.576480601519729e+28,	"+4.576481e+28", "%+e"},
+  {__LINE__, 4.587487640650499e+02,	"+458.75", "%+3.2f"},
+  {__LINE__, 4.598365231538559e-27,	"4.59837E-27", "%G"},
+  {__LINE__, 4.599348244725009e-28,	"+4.5993482e-28", "%+#3.7e"},
+  {__LINE__, 4.599897524047587e+22,	"45998975240475870052136.997401", "%#f"},
+  {__LINE__, 4.605415604725077e-25,	"0.000000", "%f"},
+  {__LINE__, 4.613055015797716e+28,	"4.613055E+28", "%E"},
+  {__LINE__, 4.618715275814238e-10,	"4.618715E-10", "%E"},
+  {__LINE__, 4.619044579489540e-14,	"0.00", "%.2f"},
+  {__LINE__, 4.633693310095410e-20,	"+0.000000", "%+f"},
+  {__LINE__, 4.648505395281916e-28,	"0.000000", "%f"},
+  {__LINE__, 4.651232770446398e+21,	"4.65e+21", "%.2e"},
+  {__LINE__, 4.659743589975352e+28,	"+4.65974e+28", "%+g"},
+  {__LINE__, 4.660181457075208e-13,	"4.66018e-13", "%g"},
+  {__LINE__, 4.669787018529686e+20,	"4.66979e+20", "%g"},
+  {__LINE__, 4.672649286126732e-21,	"4.6726E-21", "%4.5G"},
+  {__LINE__, 4.675431901120643e-11,	"  0", "%3.f"},
+  {__LINE__, 4.684404068169945e+26,	"468440406816994503458317922.2", "%6.1f"},
+  {__LINE__, 4.685438834234642e+19,	"5.E+19", "%#6.G"},
+  {__LINE__, 4.688915890732712e+00,	"+5e+00", "%+2.e"},
+  {__LINE__, 4.692999432046297e+00,	"4.692999E+00", "%E"},
+  {__LINE__, 4.708690772584701e+11,	"4.70869e+11", "%g"},
+  {__LINE__, 4.711821455782105e-11,	"+4.71182e-11", "%+1g"},
+  {__LINE__, 4.712413965116830e-01,	"4.712414E-01", "%E"},
+  {__LINE__, 4.719504715401049e-08,	"0.000000", "%f"},
+  {__LINE__, 4.719767896031655e+27,	"4.71977e+27", "%#g"},
+  {__LINE__, 4.722493017411588e-05,	"0.000047", "%4f"},
+  {__LINE__, 4.729482386761477e+08,	"4.72948e+08", "%1g"},
+  {__LINE__, 4.730102169800602e-06,	"0.000005", "%f"},
+  {__LINE__, 4.743951614209393e+24,	"4.743952E+24", "%#E"},
+  {__LINE__, 4.746077075605921e-16,	"4.746E-16", "%.3E"},
+  {__LINE__, 4.747802537919248e+24,	"4747802537919247889419694", "%4.f"},
+  {__LINE__, 4.754727690703025e-26,	"0", "%0.f"},
+  {__LINE__, 4.756952432926979e-29,	" 0.", "%#3.f"},
+  {__LINE__, 4.758335147956709e+03,	"4758.335148", "%f"},
+  {__LINE__, 4.760141880810268e-25,	"4.760142e-25", "%e"},
+  {__LINE__, 4.767079423650815e-07,	"5.E-07", "%#0.G"},
+  {__LINE__, 4.785662728343338e-28,	"4.78566e-28", "%g"},
+  {__LINE__, 4.787146245774150e-13,	"+4.78715E-13", "%+G"},
+  {__LINE__, 4.787415449888824e-17,	"4.78742e-17", "%3g"},
+  {__LINE__, 4.794589807429657e-05,	"4.79459E-05", "%6G"},
+  {__LINE__, 4.794948299666205e+08,	"4.79495e+08", "%g"},
+  {__LINE__, 4.802292865915992e-04,	"4.802293e-04", "%e"},
+  {__LINE__, 4.802513688198601e+07,	"+4.8e+07", "%+2.3g"},
+  {__LINE__, 4.810456746192536e+06,	"5E+06", "%0.0G"},
+  {__LINE__, 4.820631660081696e+20,	"+4.82063E+20", "%+G"},
+  {__LINE__, 4.827865857270075e-20,	"4.82787e-20", "%g"},
+  {__LINE__, 4.835054268490970e+21,	"4835054268490970308391.752042", "%#f"},
+  {__LINE__, 4.838136770808465e-18,	"4.83814E-18", "%G"},
+  {__LINE__, 4.839342397882353e-26,	"4.839342E-26", "%E"},
+  {__LINE__, 4.845130210072029e-16,	"0", "%1.f"},
+  {__LINE__, 4.845161043167169e-12,	"+4.845e-12", "%+.4g"},
+  {__LINE__, 4.857425142494964e+01,	"48.574251", "%f"},
+  {__LINE__, 4.858118337285513e-10,	"+4.8581e-10", "%+.5g"},
+  {__LINE__, 4.867478343525339e-15,	"+4.867478E-15", "%+E"},
+  {__LINE__, 4.886137001331278e-11,	"0.000000", "%f"},
+  {__LINE__, 4.886835850687998e-20,	"     0", "%6.0f"},
+  {__LINE__, 4.886880737482383e+26,	"488688073748238327453918827.814050", "%4f"},
+  {__LINE__, 4.888812049144075e-22,	"4.888812E-22", "%E"},
+  {__LINE__, 4.895869618002905e+02,	"+489.587", "%+.7g"},
+  {__LINE__, 4.902046593298549e+09,	"  5e+09", "%7.g"},
+  {__LINE__, 4.907918627564751e-05,	"4.91e-05", "%.3g"},
+  {__LINE__, 4.916048355579009e+19,	"49160483555790088772", "%2.f"},
+  {__LINE__, 4.917197806128638e+14,	"+5e+14", "%+5.g"},
+  {__LINE__, 4.918303274189911e+13,	"4.918303e+13", "%e"},
+  {__LINE__, 4.922687970321108e+26,	"492268797032110771993984599.2485", "%0.4f"},
+  {__LINE__, 4.929263362431195e+14,	"4.92926e+14", "%g"},
+  {__LINE__, 4.933385398543267e-17,	"0.000000", "%#f"},
+  {__LINE__, 4.942367126455025e+00,	"    +5", "%+6.f"},
+  {__LINE__, 4.947687486717652e-04,	"0.000495", "%.6f"},
+  {__LINE__, 4.960855200003128e-08,	"+4.960855e-08", "%+e"},
+  {__LINE__, 4.968485435774085e-21,	"0.0000", "%#2.4f"},
+  {__LINE__, 4.972088381506133e+01,	"49.7", "%.1f"},
+  {__LINE__, 4.977561524480392e-15,	"4.977562E-15", "%7E"},
+  {__LINE__, 4.984592111249502e-13,	"5.0e-13", "%.1e"},
+  {__LINE__, 4.997502335602838e-14,	"4.998e-14", "%6.4g"},
+  {__LINE__, 5.001731554335935e-09,	"5.00173e-09", "%g"},
+  {__LINE__, 5.006231697107042e-17,	"5.0062e-17", "%1.5g"},
+  {__LINE__, 5.008035801093423e+24,	"5.008036E+24", "%#E"},
+  {__LINE__, 5.008756965733827e-28,	"5.009E-28", "%.4G"},
+  {__LINE__, 5.009774027622812e+20,	"+5.00977E+20", "%+G"},
+  {__LINE__, 5.010576312346293e+29,	"5.01058E+29", "%G"},
+  {__LINE__, 5.012335250996786e+29,	"5.012335e+29", "%.7g"},
+  {__LINE__, 5.012404365186907e+20,	"5E+20", "%3.2G"},
+  {__LINE__, 5.024670103250229e-01,	"+5.024670E-01", "%+E"},
+  {__LINE__, 5.025765369164560e+03,	"5025.77", "%g"},
+  {__LINE__, 5.027173841003918e+11,	"+5.02717E+11", "%+G"},
+  {__LINE__, 5.032093817639893e-26,	"5e-26", "%3.e"},
+  {__LINE__, 5.039636818525848e-02,	"0.050396", "%#f"},
+  {__LINE__, 5.040626671307691e+23,	"5.040627E+23", "%E"},
+  {__LINE__, 5.040788233368296e-11,	"+5.04079e-11", "%+g"},
+  {__LINE__, 5.040903321336150e-28,	"5.0409E-28", "%G"},
+  {__LINE__, 5.042078512958994e+12,	"5.04208E+12", "%G"},
+  {__LINE__, 5.045957900223303e+15,	"5045957900223303", "%0.f"},
+  {__LINE__, 5.048298764352134e-14,	"5.048299e-14", "%1e"},
+  {__LINE__, 5.048827326763192e+28,	"50488273267631917917697137454.524636", "%f"},
+  {__LINE__, 5.049714558347361e-23,	"5e-23", "%5.0g"},
+  {__LINE__, 5.051509904923853e+16,	"50515099049238534", "%5.f"},
+  {__LINE__, 5.052789863743305e-10,	"5.05279E-10", "%6G"},
+  {__LINE__, 5.057429728861999e-29,	"0.000", "%#1.3f"},
+  {__LINE__, 5.075313093968501e-13,	"+5.07531e-13", "%+g"},
+  {__LINE__, 5.075874503501582e+29,	"5e+29", "%2.e"},
+  {__LINE__, 5.079468079020803e+01,	"50.795", "%.5G"},
+  {__LINE__, 5.086214826494080e-28,	" 0.0", "%4.1f"},
+  {__LINE__, 5.096054881114421e+13,	"5.096e+13", "%.4g"},
+  {__LINE__, 5.099045274853458e-23,	"5.09905E-23", "%0G"},
+  {__LINE__, 5.100248195124433e+00,	"5.100248", "%f"},
+  {__LINE__, 5.101016114276598e-20,	"5e-20", "%4.1g"},
+  {__LINE__, 5.103213528670269e+07,	"51032135.286703", "%6f"},
+  {__LINE__, 5.108373625126768e+08,	"+510837362.512677", "%+f"},
+  {__LINE__, 5.113097157183416e+07,	"5.1131E+07", "%#.4E"},
+  {__LINE__, 5.114452611789777e+08,	"+5.11445E+08", "%+G"},
+  {__LINE__, 5.117099184715288e-16,	"5.1171E-16", "%G"},
+  {__LINE__, 5.119910534665511e-13,	"+5.11991E-13", "%+G"},
+  {__LINE__, 5.121320931953720e+23,	"+5.121321e+23", "%+#e"},
+  {__LINE__, 5.121900318443998e+06,	"5.121900e+06", "%e"},
+  {__LINE__, 5.135698679084286e+00,	"5.1357", "%2g"},
+  {__LINE__, 5.146355903104154e-10,	"+5.14636E-10", "%+.6G"},
+  {__LINE__, 5.148754210958986e-24,	"+5.148754e-24", "%+e"},
+  {__LINE__, 5.156238368448428e+26,	"5e+26", "%5.g"},
+  {__LINE__, 5.159924520667922e-19,	"+5E-19", "%+0.1G"},
+  {__LINE__, 5.159938266135425e-27,	"0.000000", "%f"},
+  {__LINE__, 5.165915205175676e-01,	"5.165915e-01", "%e"},
+  {__LINE__, 5.190205499401547e-11,	"5e-11", "%2.1g"},
+  {__LINE__, 5.193260005542003e+26,	"5.19326e+26", "%#g"},
+  {__LINE__, 5.194732077318269e+08,	"519473207.731827", "%f"},
+  {__LINE__, 5.196394616633798e-19,	"0", "%.0f"},
+  {__LINE__, 5.206753628035638e+19,	"5.20675e+19", "%6.6g"},
+  {__LINE__, 5.207364136540851e-23,	" 0.000", "%6.3f"},
+  {__LINE__, 5.210672737132108e-09,	"5.21067E-09", "%G"},
+  {__LINE__, 5.211423933057123e-20,	"+5.21142E-20", "%+G"},
+  {__LINE__, 5.219749528363367e-27,	"5.219750e-27", "%e"},
+  {__LINE__, 5.228031587478653e-06,	"+5.2E-06", "%+3.1E"},
+  {__LINE__, 5.229303095005359e-25,	"+0.000000", "%+#f"},
+  {__LINE__, 5.234703511938320e-06,	"      0", "%7.f"},
+  {__LINE__, 5.235655046937822e-20,	"5.235655E-20", "%.6E"},
+  {__LINE__, 5.237924986002288e-01,	"+0.52379", "%+.5f"},
+  {__LINE__, 5.249148093603826e+20,	"5.24915E+20", "%0G"},
+  {__LINE__, 5.262680920244596e+16,	"5.26268E+16", "%G"},
+  {__LINE__, 5.267944704715845e-06,	"5.e-06", "%#3.g"},
+  {__LINE__, 5.268543533730505e-08,	"5.26854E-08", "%G"},
+  {__LINE__, 5.275727269515247e-02,	"0.0527573", "%.6g"},
+  {__LINE__, 5.279215316873723e+24,	"5279215316873722585455652.733799", "%f"},
+  {__LINE__, 5.284326985680811e+16,	"52843269856808108.286828", "%6f"},
+  {__LINE__, 5.286192957344040e-10,	"5.3E-10", "%.1E"},
+  {__LINE__, 5.289451976001091e-23,	"5.28945E-23", "%G"},
+  {__LINE__, 5.289512908209300e+09,	"+5.289513e+09", "%+e"},
+  {__LINE__, 5.295696957972123e+11,	"5.296E+11", "%#.3E"},
+  {__LINE__, 5.303584684011050e+16,	"53035846840110503.208621", "%f"},
+  {__LINE__, 5.310315581980172e+23,	"531031558198017172855998", "%4.f"},
+  {__LINE__, 5.317492728410062e-14,	"5.31749e-14", "%7g"},
+  {__LINE__, 5.324506949499409e+18,	"5.3245E+18", "%.5G"},
+  {__LINE__, 5.329238068668336e-20,	"5e-20", "%4.g"},
+  {__LINE__, 5.336050125161774e+14,	"5.33605e+14", "%g"},
+  {__LINE__, 5.349921315003169e-17,	"5.34992E-17", "%.6G"},
+  {__LINE__, 5.355648481782587e-20,	"5.355648e-20", "%e"},
+  {__LINE__, 5.358945557589489e-26,	"+5e-26", "%+0.g"},
+  {__LINE__, 5.359638846465574e+21,	"5.359639E+21", "%E"},
+  {__LINE__, 5.377048469393900e+14,	"5.377E+14", "%.5G"},
+  {__LINE__, 5.387471194156434e+23,	"5.387471E+23", "%.7G"},
+  {__LINE__, 5.401622578962497e-03,	"+0.0054", "%+5.2g"},
+  {__LINE__, 5.406882732497444e-16,	"5.406883E-16", "%E"},
+  {__LINE__, 5.421474560523198e-11,	"+5.42147e-11", "%+g"},
+  {__LINE__, 5.440249323479418e-26,	"5.44025E-26", "%7G"},
+  {__LINE__, 5.440922682921101e-05,	"5e-05", "%.1g"},
+  {__LINE__, 5.444400103673185e-01,	"0.54444", "%G"},
+  {__LINE__, 5.449339470916152e+09,	"5449339470.9162", "%.4f"},
+  {__LINE__, 5.451583259558706e-15,	"5.e-15", "%#4.e"},
+  {__LINE__, 5.460153018660573e+26,	"+546015301866057267687892817.775719", "%+f"},
+  {__LINE__, 5.477591210511918e+08,	"+5.47759E+08", "%+0.5E"},
+  {__LINE__, 5.481665401407188e-02,	"5.481665e-02", "%e"},
+  {__LINE__, 5.482670784411319e-16,	"5E-16", "%4.G"},
+  {__LINE__, 5.487494580636099e+12,	"5.48749e+12", "%g"},
+  {__LINE__, 5.508630369473937e-10,	"5.508630e-10", "%e"},
+  {__LINE__, 5.528898001438273e+20,	"6e+20", "%4.g"},
+  {__LINE__, 5.530331734443152e-24,	" 6e-24", "%6.g"},
+  {__LINE__, 5.531704398969656e-24,	"0.000000", "%f"},
+  {__LINE__, 5.539906569043238e+05,	"+553990.656904", "%+f"},
+  {__LINE__, 5.554571854756323e-08,	"+0.00000", "%+4.5f"},
+  {__LINE__, 5.555155069925145e-28,	"5.55516e-28", "%g"},
+  {__LINE__, 5.555302705075539e-08,	"+5.5553e-08", "%+g"},
+  {__LINE__, 5.563805076159055e-05,	"5.563805e-05", "%e"},
+  {__LINE__, 5.565063508995002e+07,	"5.565E+07", "%.3E"},
+  {__LINE__, 5.566281664807526e-08,	"5.56628E-08", "%G"},
+  {__LINE__, 5.575245679736338e-08,	"5.575246e-08", "%e"},
+  {__LINE__, 5.578254777281501e-21,	"0.", "%#.0f"},
+  {__LINE__, 5.582389275770848e-01,	"  0.6", "%5.G"},
+  {__LINE__, 5.592215029176133e-04,	"0.00056", "%.2g"},
+  {__LINE__, 5.593536789867047e-25,	"5.59354e-25", "%g"},
+  {__LINE__, 5.605652054074862e-03,	"   0.006", "%8.G"},
+  {__LINE__, 5.606982382643258e+20,	"+5.60698E+20", "%+G"},
+  {__LINE__, 5.614646821116853e-18,	"5.6E-18", "%.2G"},
+  {__LINE__, 5.625586848606565e-11,	"+5.62559E-11", "%+G"},
+  {__LINE__, 5.626300428046732e+26,	"  6e+26", "%7.g"},
+  {__LINE__, 5.638236626881086e-17,	" 6E-17", "%6.G"},
+  {__LINE__, 5.645744817075691e+04,	"5.645745E+04", "%E"},
+  {__LINE__, 5.651410004691736e+06,	"6.E+06", "%#3.E"},
+  {__LINE__, 5.659582345929256e-11,	"+0.000000", "%+f"},
+  {__LINE__, 5.670968861413510e+16,	"+5.67097E+16", "%+G"},
+  {__LINE__, 5.672476851235796e+01,	"+56.724769", "%+0f"},
+  {__LINE__, 5.674563779921248e+28,	" 6E+28", "%6.0G"},
+  {__LINE__, 5.675558529939025e+19,	"5.67556e+19", "%3g"},
+  {__LINE__, 5.676326888314589e-08,	"  6e-08", "%7.g"},
+  {__LINE__, 5.677928507840897e-30,	"5.67793e-30", "%0g"},
+  {__LINE__, 5.686622552402630e-15,	"5.69E-15", "%1.3G"},
+  {__LINE__, 5.710441686922142e-14,	"5.710442E-14", "%E"},
+  {__LINE__, 5.713234603280163e-21,	"0.00000", "%0.5f"},
+  {__LINE__, 5.714968959046963e+12,	"5.71497e+12", "%g"},
+  {__LINE__, 5.722025141555638e-23,	"5.72e-23", "%.2e"},
+  {__LINE__, 5.725398571007033e-09,	"5.7254E-09", "%.6G"},
+  {__LINE__, 5.751604813862738e+18,	"6E+18", "%.1G"},
+  {__LINE__, 5.761025444751985e+20,	"5.76103e+20", "%g"},
+  {__LINE__, 5.762315767948593e+15,	"5.76232e+15", "%4g"},
+  {__LINE__, 5.764528858586032e-15,	"5.764529E-15", "%6.7G"},
+  {__LINE__, 5.766408541535810e-07,	" 6E-07", "%6.1G"},
+  {__LINE__, 5.771831571087174e-01,	"0.577183", "%f"},
+  {__LINE__, 5.790102497364865e-15,	"+5.790102e-15", "%+e"},
+  {__LINE__, 5.790222335547785e-08,	"5.79022e-08", "%0.6g"},
+  {__LINE__, 5.794082127091130e+21,	"5794082127091130018925.468903", "%f"},
+  {__LINE__, 5.804568463644165e+28,	"5.80457e+28", "%g"},
+  {__LINE__, 5.827356651901066e+20,	"582735665190106555400.006982", "%f"},
+  {__LINE__, 5.837553387436408e+18,	"5.837553E+18", "%3E"},
+  {__LINE__, 5.844458110907209e+22,	"5.84446e+22", "%g"},
+  {__LINE__, 5.851672125746866e-19,	"5.85167e-19", "%g"},
+  {__LINE__, 5.868843476784172e-12,	"5.868843e-12", "%1.7g"},
+  {__LINE__, 5.870854146748864e-04,	"0.000587", "%2.3g"},
+  {__LINE__, 5.877787821470433e+01,	"+58.77788", "%+#3.5f"},
+  {__LINE__, 5.881333514866498e+04,	"5.881334E+04", "%E"},
+  {__LINE__, 5.908427816128965e+28,	"+5.908428E+28", "%+E"},
+  {__LINE__, 5.918139800007388e+07,	"59181398.000074", "%f"},
+  {__LINE__, 5.925587467475260e+21,	"5925587467475259551008.548442", "%f"},
+  {__LINE__, 5.930403502679683e-22,	"5.9304E-22", "%.6G"},
+  {__LINE__, 5.961572644847521e+02,	"+596.157", "%+G"},
+  {__LINE__, 5.968917715225198e-21,	"5.96892e-21", "%4g"},
+  {__LINE__, 5.982184454670110e-08,	"0", "%0.f"},
+  {__LINE__, 5.988414319040855e+09,	"6E+09", "%0.G"},
+  {__LINE__, 5.996263783103995e-10,	"5.996264e-10", "%e"},
+  {__LINE__, 6.004634162276014e-18,	"6.00463e-18", "%g"},
+  {__LINE__, 6.018734975519166e-08,	"6.01873E-08", "%G"},
+  {__LINE__, 6.029071822986717e-14,	"0.0000000", "%.7f"},
+  {__LINE__, 6.030392278117406e+23,	"6.030392e+23", "%e"},
+  {__LINE__, 6.034553399237175e-27,	"+6.03455e-27", "%+g"},
+  {__LINE__, 6.034938873443862e+24,	"6034938873443861595546877.651941", "%f"},
+  {__LINE__, 6.038929148003457e-16,	"6.03893e-16", "%g"},
+  {__LINE__, 6.039149626573702e-13,	"6.0391E-13", "%3.5G"},
+  {__LINE__, 6.041247664739301e+29,	"6.041248E+29", "%3E"},
+  {__LINE__, 6.044220746789781e+20,	"+6.04422e+20", "%+g"},
+  {__LINE__, 6.045775647107433e+19,	"6E+19", "%2.G"},
+  {__LINE__, 6.051917010461611e-05,	"6.05192E-05", "%G"},
+  {__LINE__, 6.059773181566425e+17,	"+605977318156642486", "%+5.f"},
+  {__LINE__, 6.082239575475813e+01,	"+6E+01", "%+.1G"},
+  {__LINE__, 6.093984174629151e+18,	"6.093984e+18", "%e"},
+  {__LINE__, 6.102368380479137e+22,	"6.1E+22", "%.2G"},
+  {__LINE__, 6.103097446204007e+25,	"61030974462040070704915706.301108", "%#0f"},
+  {__LINE__, 6.105244994410556e-24,	"0.0000000", "%2.7f"},
+  {__LINE__, 6.110828906801633e-14,	"+6.110829e-14", "%+3e"},
+  {__LINE__, 6.124439072468681e-30,	"6.12444e-30", "%g"},
+  {__LINE__, 6.127714703273447e-15,	"0", "%0.f"},
+  {__LINE__, 6.128539582408870e-15,	"6.12854e-15", "%g"},
+  {__LINE__, 6.145470264744349e+24,	"6145470264744348654062378.045637", "%f"},
+  {__LINE__, 6.159177701667455e+26,	"615917770166745537352426254.074089", "%#f"},
+  {__LINE__, 6.159348213337442e+17,	"6.15935e+17", "%g"},
+  {__LINE__, 6.161953891020492e-21,	"0.000000", "%f"},
+  {__LINE__, 6.169474192777305e+29,	"+6.169E+29", "%+.4G"},
+  {__LINE__, 6.198519761010651e-15,	"+0", "%+1.f"},
+  {__LINE__, 6.201381824304919e-27,	"    0", "%5.f"},
+  {__LINE__, 6.204387065736372e-18,	"6.204387E-18", "%7E"},
+  {__LINE__, 6.209270088144063e-24,	"0.000000", "%f"},
+  {__LINE__, 6.209871738353546e-20,	"6.20987E-20", "%G"},
+  {__LINE__, 6.222733191871026e+14,	"+6.22273e+14", "%+g"},
+  {__LINE__, 6.234670085354310e+04,	"+62346.700854", "%+f"},
+  {__LINE__, 6.258389346602224e-09,	"6E-09", "%.0G"},
+  {__LINE__, 6.263326582587503e+12,	"6263326582588.", "%#5.f"},
+  {__LINE__, 6.272768026763922e+03,	"+6272.77", "%+g"},
+  {__LINE__, 6.287747868625765e+00,	"6E+00", "%.0E"},
+  {__LINE__, 6.297724027388795e-17,	"+6E-17", "%+3.G"},
+  {__LINE__, 6.309940679156400e+27,	"6.30994e+27", "%6.5e"},
+  {__LINE__, 6.312960327030170e+06,	"+6.312960E+06", "%+E"},
+  {__LINE__, 6.317658179632976e+02,	"+631.766", "%+g"},
+  {__LINE__, 6.321255960699571e-27,	"0.000000", "%f"},
+  {__LINE__, 6.323069932833900e+03,	"6323", "%.4G"},
+  {__LINE__, 6.337027835933034e+21,	"6.33703e+21", "%#g"},
+  {__LINE__, 6.343583177899838e-03,	"0.00634358", "%7G"},
+  {__LINE__, 6.347464241733904e-03,	"6.e-03", "%#0.e"},
+  {__LINE__, 6.352038720353924e+07,	"63520387.203539", "%f"},
+  {__LINE__, 6.355292378565109e+23,	"+635529237856510942350496.407016", "%+f"},
+  {__LINE__, 6.377901944439164e-29,	"0.000", "%2.3f"},
+  {__LINE__, 6.378660255554053e-04,	"6.37866E-04", "%.5E"},
+  {__LINE__, 6.382838195255167e-18,	"0.000000", "%f"},
+  {__LINE__, 6.391046303581911e+22,	"6E+22", "%.0G"},
+  {__LINE__, 6.404812348309621e+22,	"6.404812E+22", "%.7G"},
+  {__LINE__, 6.406154091357119e+16,	"6.40615E+16", "%G"},
+  {__LINE__, 6.419414726557980e+21,	"+6.41941e+21", "%+g"},
+  {__LINE__, 6.432166563008504e+10,	" +6e+10", "%+7.g"},
+  {__LINE__, 6.438463704193190e+19,	"6.438464e+19", "%e"},
+  {__LINE__, 6.445270237908565e+15,	"+6.445270E+15", "%+E"},
+  {__LINE__, 6.445536770502964e+09,	"6.446e+09", "%.3e"},
+  {__LINE__, 6.446614224811444e+28,	"64466142248114444157636171439.662576", "%f"},
+  {__LINE__, 6.457046289718297e+18,	"6457046289718297416.015957", "%4f"},
+  {__LINE__, 6.457682856890173e+01,	"6.457683E+01", "%2E"},
+  {__LINE__, 6.471026352792729e-16,	"+6.47103e-16", "%+g"},
+  {__LINE__, 6.474527749567342e+19,	"6E+19", "%.1G"},
+  {__LINE__, 6.481178401781131e-24,	"+6.48E-24", "%+6.3G"},
+  {__LINE__, 6.490736647261461e-15,	"+6.49074e-15", "%+g"},
+  {__LINE__, 6.493196535069719e+23,	"+6.4932E+23", "%+G"},
+  {__LINE__, 6.500296992935538e-20,	"+0.0", "%+.1f"},
+  {__LINE__, 6.502867735895890e-19,	"+0.000000", "%+6f"},
+  {__LINE__, 6.506627529164683e+14,	"650662752916468", "%5.f"},
+  {__LINE__, 6.511909298966434e-15,	"+6.51191E-15", "%+G"},
+  {__LINE__, 6.514463062693312e+01,	"65.1446", "%G"},
+  {__LINE__, 6.520721469484543e+16,	"6.52072E+16", "%G"},
+  {__LINE__, 6.528064508731680e-05,	"6.528065E-05", "%7E"},
+  {__LINE__, 6.529007214194039e-24,	"0.000000", "%f"},
+  {__LINE__, 6.537822760557410e-23,	"0.000000", "%f"},
+  {__LINE__, 6.552222096390805e+29,	"+6.55222E+29", "%+G"},
+  {__LINE__, 6.554569862717104e+12,	"6.55457E+12", "%G"},
+  {__LINE__, 6.563440840359989e-30,	"7E-30", "%4.G"},
+  {__LINE__, 6.586246985535526e+17,	"6.58625E+17", "%#4G"},
+  {__LINE__, 6.593339522442827e+16,	"6.6E+16", "%#4.1E"},
+  {__LINE__, 6.611179030024350e+02,	"7E+02", "%4.E"},
+  {__LINE__, 6.617541638586767e-10,	"6.617542E-10", "%E"},
+  {__LINE__, 6.619147920886991e-28,	"7e-28", "%.1g"},
+  {__LINE__, 6.622304444772819e-21,	"6.62230E-21", "%#4G"},
+  {__LINE__, 6.634766655157910e+12,	"6634766655158", "%2.f"},
+  {__LINE__, 6.635639771921218e+25,	"+6.63564E+25", "%+G"},
+  {__LINE__, 6.644575305929087e+17,	"+6.64458e+17", "%+g"},
+  {__LINE__, 6.648697591328432e+04,	"6.648698E+04", "%3E"},
+  {__LINE__, 6.665426012448100e+09,	"6.66543E+09", "%G"},
+  {__LINE__, 6.675222780441723e-23,	"6.67522e-23", "%1g"},
+  {__LINE__, 6.689765053880623e+00,	"6.6898", "%.5g"},
+  {__LINE__, 6.693874943680238e+25,	"7.e+25", "%#1.g"},
+  {__LINE__, 6.695033453546435e+19,	"6.695033E+19", "%E"},
+  {__LINE__, 6.720131534244976e+03,	"+6720.132", "%+.3f"},
+  {__LINE__, 6.725287004784564e+19,	"+6.72529e+19", "%+g"},
+  {__LINE__, 6.743599626906313e-18,	"0.0000000", "%7.7f"},
+  {__LINE__, 6.755534260704152e+29,	"7.e+29", "%#5.e"},
+  {__LINE__, 6.761855244766418e-18,	"6.8E-18", "%.2G"},
+  {__LINE__, 6.764974143681080e-02,	"6.765E-02", "%2.3E"},
+  {__LINE__, 6.766924477711975e-17,	"0.000000", "%4f"},
+  {__LINE__, 6.772195434106330e-19,	"6.7722E-19", "%G"},
+  {__LINE__, 6.779433073319225e-23,	"0.00", "%.2f"},
+  {__LINE__, 6.790317710068964e+05,	"6.8e+05", "%.1e"},
+  {__LINE__, 6.791378160292960e+02,	"679.137816", "%f"},
+  {__LINE__, 6.798381262104190e-27,	"0.000000", "%f"},
+  {__LINE__, 6.804165939424860e-14,	"7e-14", "%4.g"},
+  {__LINE__, 6.810668670623699e+11,	"681066867062.369852", "%f"},
+  {__LINE__, 6.838942637635821e-17,	"+6.84e-17", "%+.2e"},
+  {__LINE__, 6.868523988329111e-09,	"+6.868524e-09", "%+e"},
+  {__LINE__, 6.873228061403223e-15,	"6.873228E-15", "%3E"},
+  {__LINE__, 6.879370500093334e-12,	"+0.000000", "%+f"},
+  {__LINE__, 6.891525498686674e-10,	"7e-10", "%0.g"},
+  {__LINE__, 6.923027319286220e+21,	"7.e+21", "%#1.g"},
+  {__LINE__, 6.923565533024560e-11,	"+6.92357e-11", "%+g"},
+  {__LINE__, 6.931415640770737e-24,	"+6.93142e-24", "%+g"},
+  {__LINE__, 6.936582619246057e+09,	"6.936583e+09", "%7e"},
+  {__LINE__, 6.938661496670582e+05,	"693866.1496671", "%2.7f"},
+  {__LINE__, 6.946115378286550e-25,	"0.000000", "%f"},
+  {__LINE__, 6.955823211921219e-09,	"6.95582e-09", "%g"},
+  {__LINE__, 6.962365243425770e+29,	"696236524342577034474288666388.019919", "%7f"},
+  {__LINE__, 6.970432274812882e+05,	"+7e+05", "%+1.0e"},
+  {__LINE__, 6.975784942897122e-13,	"6.975785e-13", "%e"},
+  {__LINE__, 6.976786489904214e-07,	"6.97679E-07", "%3G"},
+  {__LINE__, 6.985245976357042e-05,	"0.00", "%.2f"},
+  {__LINE__, 6.993402879410720e-21,	"6.9934e-21", "%g"},
+  {__LINE__, 7.012183985341519e+28,	"+70121839853415188770213717362", "%+2.f"},
+  {__LINE__, 7.028670648856025e-15,	"7.028671e-15", "%.7g"},
+  {__LINE__, 7.034042985683665e-03,	" 0", "%2.f"},
+  {__LINE__, 7.044054273278726e+18,	"7.044e+18", "%7.4g"},
+  {__LINE__, 7.049706744250734e-06,	"7E-06", "%0.E"},
+  {__LINE__, 7.061982657056197e+13,	"+7.061983e+13", "%+e"},
+  {__LINE__, 7.066873668945899e+21,	"7.06687E+21", "%G"},
+  {__LINE__, 7.087941418633258e+26,	"7.08794E+26", "%G"},
+  {__LINE__, 7.108268134631547e+22,	"7.108268E+22", "%E"},
+  {__LINE__, 7.112095848565475e-19,	"7.1121e-19", "%g"},
+  {__LINE__, 7.116326241291862e+16,	"7.116326e+16", "%e"},
+  {__LINE__, 7.118854843597607e-22,	"0.000000", "%f"},
+  {__LINE__, 7.121423043456375e-27,	"0.000000", "%f"},
+  {__LINE__, 7.131415427096460e-03,	"0.007131", "%3f"},
+  {__LINE__, 7.132023279679892e+22,	"7.e+22", "%#3.e"},
+  {__LINE__, 7.146250280189992e-18,	"0.000000", "%f"},
+  {__LINE__, 7.150059058390724e+03,	"7150.06", "%g"},
+  {__LINE__, 7.161081578177381e-02,	"+0.0716108", "%+G"},
+  {__LINE__, 7.164935125149336e-27,	"7.2E-27", "%#6.2G"},
+  {__LINE__, 7.173125717489549e-10,	"7.173126e-10", "%e"},
+  {__LINE__, 7.174199549624193e+00,	"7.1741995", "%.7f"},
+  {__LINE__, 7.192493588077649e+27,	"7.19249e+27", "%g"},
+  {__LINE__, 7.215209568601445e-06,	"7.215210e-06", "%e"},
+  {__LINE__, 7.238322284100497e+03,	"7238.3", "%.1f"},
+  {__LINE__, 7.239203871123613e+06,	"7239204", "%4.f"},
+  {__LINE__, 7.245809072577019e-09,	"+7.245809E-09", "%+E"},
+  {__LINE__, 7.256275686433336e+03,	"7.256276e+03", "%e"},
+  {__LINE__, 7.265774291605193e+27,	"+7.26577E+27", "%+G"},
+  {__LINE__, 7.287968172227119e-21,	"+7.287968e-21", "%+e"},
+  {__LINE__, 7.306020169678527e+12,	"7E+12", "%2.E"},
+  {__LINE__, 7.315587463572568e-04,	"0.", "%#.0f"},
+  {__LINE__, 7.324627764547963e+09,	"7.324628E+09", "%#E"},
+  {__LINE__, 7.331904966719081e-06,	"+7.3319E-06", "%+G"},
+  {__LINE__, 7.334448152798243e-02,	"0.07", "%0.g"},
+  {__LINE__, 7.334487195961240e-01,	"+0.733449", "%+#g"},
+  {__LINE__, 7.381283575515707e+13,	"7.381284E+13", "%E"},
+  {__LINE__, 7.394854567245476e-11,	"0.000000", "%7f"},
+  {__LINE__, 7.401950211415377e-08,	" 7e-08", "%6.e"},
+  {__LINE__, 7.409023867864680e+03,	"7409.023868", "%#3f"},
+  {__LINE__, 7.411912956257733e-20,	"7e-20", "%0.g"},
+  {__LINE__, 7.445275019272160e+11,	"744527501927.2159511", "%.7f"},
+  {__LINE__, 7.450279765616891e-16,	"7.45028e-16", "%.6g"},
+  {__LINE__, 7.467047411334495e+14,	"7.46705E+14", "%G"},
+  {__LINE__, 7.485628870972725e+28,	"7E+28", "%.0G"},
+  {__LINE__, 7.495391782588563e+11,	"749539178258.856253", "%f"},
+  {__LINE__, 7.495824101611911e+06,	"7.49582e+06", "%.6g"},
+  {__LINE__, 7.499759867592402e+20,	"+749975986759240154100.3", "%+.1f"},
+  {__LINE__, 7.508983397140368e+04,	"75089.8", "%g"},
+  {__LINE__, 7.512585199581016e-27,	"7.512585E-27", "%.6E"},
+  {__LINE__, 7.516831372212545e-29,	"+7.516831e-29", "%+e"},
+  {__LINE__, 7.525789465978582e+00,	"7.52579", "%G"},
+  {__LINE__, 7.528655653725963e+06,	"7.5287e+06", "%3.4e"},
+  {__LINE__, 7.533217421035612e+28,	"75332174210356122046050586504.861712", "%f"},
+  {__LINE__, 7.534147071756384e+03,	"7534.15", "%g"},
+  {__LINE__, 7.542648637430919e-25,	"+0.000000", "%+#f"},
+  {__LINE__, 7.554380140947798e-15,	"  8e-15", "%7.g"},
+  {__LINE__, 7.557366996007743e+25,	"  8E+25", "%7.G"},
+  {__LINE__, 7.579228950138068e+08,	"8e+08", "%3.e"},
+  {__LINE__, 7.579773904052487e-13,	"0.000000", "%3f"},
+  {__LINE__, 7.580377544554059e+27,	"7.58038e+27", "%#g"},
+  {__LINE__, 7.589615147875915e-15,	"7.59E-15", "%.3G"},
+  {__LINE__, 7.593317194045158e-12,	"+0.", "%+#1.f"},
+  {__LINE__, 7.605535657484387e-07,	"7.60554E-07", "%G"},
+  {__LINE__, 7.609171121278006e-08,	"    0", "%5.f"},
+  {__LINE__, 7.612033900317304e-14,	"7.61203e-14", "%g"},
+  {__LINE__, 7.628040858080326e+23,	"+7.62804e+23", "%+g"},
+  {__LINE__, 7.632109382948695e-01,	"0.763211", "%#f"},
+  {__LINE__, 7.633415922627254e+28,	"76334159226272539910951309138.908982", "%#f"},
+  {__LINE__, 7.636190400774419e+22,	"+7.636190E+22", "%+E"},
+  {__LINE__, 7.636228368661314e-23,	"0.000000", "%f"},
+  {__LINE__, 7.653292362739654e-17,	"7.65329E-17", "%#G"},
+  {__LINE__, 7.664044705231460e+03,	"7.664045E+03", "%5E"},
+  {__LINE__, 7.664257283149626e-05,	"7.66426E-05", "%0G"},
+  {__LINE__, 7.668996632821614e-19,	" 0.0", "%4.1f"},
+  {__LINE__, 7.674502669497263e-24,	"7.6745e-24", "%g"},
+  {__LINE__, 7.681870119755193e+12,	"+7.68187e+12", "%+#g"},
+  {__LINE__, 7.693453198401315e+02,	"769.3453198", "%5.7f"},
+  {__LINE__, 7.705080073293603e-29,	"7.705080E-29", "%1E"},
+  {__LINE__, 7.707244083934683e-07,	"7.71E-07", "%2.3G"},
+  {__LINE__, 7.749445584970652e-17,	"7.75E-17", "%6.3G"},
+  {__LINE__, 7.755369447889403e+09,	"7.8e+09", "%#4.2g"},
+  {__LINE__, 7.760378169707072e-06,	"7.76038e-06", "%g"},
+  {__LINE__, 7.763518882114968e-10,	"0.000000", "%f"},
+  {__LINE__, 7.764720069569677e-18,	"0.000000", "%0f"},
+  {__LINE__, 7.768821339438552e-03,	"0.00776882", "%g"},
+  {__LINE__, 7.774767835990679e-29,	"7.774768E-29", "%7E"},
+  {__LINE__, 7.805567188246987e-04,	"0.000780557", "%2G"},
+  {__LINE__, 7.825157442935941e-26,	"0.000000", "%f"},
+  {__LINE__, 7.833373563161910e+29,	"+783337356316190991378789476584.643126", "%+f"},
+  {__LINE__, 7.875872661746674e-16,	"7.875873E-16", "%E"},
+  {__LINE__, 7.880664458920439e-28,	"7.881E-28", "%#0.3E"},
+  {__LINE__, 7.893084198630288e+18,	"7893084198630288206", "%1.f"},
+  {__LINE__, 7.912222737877417e+04,	"79122.2", "%G"},
+  {__LINE__, 7.913004582748724e-26,	"0.000000", "%f"},
+  {__LINE__, 7.913749944463836e+17,	"791374994446383617.230367", "%f"},
+  {__LINE__, 7.923881665760883e-24,	"0.000000", "%f"},
+  {__LINE__, 7.926699779993694e-03,	"0.007927", "%5.6f"},
+  {__LINE__, 7.941991860623354e-20,	"7.941992e-20", "%e"},
+  {__LINE__, 7.942700358097138e+17,	"794270035809713803.587329", "%2f"},
+  {__LINE__, 7.945451569935757e-16,	"7.94545E-16", "%#4.6G"},
+  {__LINE__, 7.948277588625241e-04,	"0", "%.0f"},
+  {__LINE__, 7.952265062569124e+21,	"+7.95227e+21", "%+#g"},
+  {__LINE__, 7.959953534668040e+11,	"8e+11", "%2.e"},
+  {__LINE__, 7.962059154424500e-22,	"7.96206E-22", "%G"},
+  {__LINE__, 7.962856142535673e-26,	"7.9629E-26", "%#.5G"},
+  {__LINE__, 7.966528574505771e+12,	"7.96653e+12", "%g"},
+  {__LINE__, 8.006496880305429e-21,	"8.0065E-21", "%G"},
+  {__LINE__, 8.023374861440542e+06,	"+8023375", "%+6.f"},
+  {__LINE__, 8.041139717082990e-20,	"8.04114e-20", "%g"},
+  {__LINE__, 8.044201752824126e+15,	"8.04420E+15", "%.5E"},
+  {__LINE__, 8.044262927409321e-10,	"+8E-10", "%+2.2G"},
+  {__LINE__, 8.058285708061202e+02,	"+8.058286e+02", "%+e"},
+  {__LINE__, 8.104422320765144e+10,	"8.10442e+10", "%#4g"},
+  {__LINE__, 8.104572628022330e-11,	"0.000000", "%f"},
+  {__LINE__, 8.112156369917432e+15,	"+8.11216E+15", "%+G"},
+  {__LINE__, 8.114566569709531e-18,	"8.11457E-18", "%G"},
+  {__LINE__, 8.114795069552519e+13,	"8.114795E+13", "%E"},
+  {__LINE__, 8.121382719830660e+03,	"8121.382720", "%f"},
+  {__LINE__, 8.125179335533733e-12,	"+8.125179e-12", "%+e"},
+  {__LINE__, 8.126383949107055e+19,	"81263839491070548604.056967", "%f"},
+  {__LINE__, 8.129961701307842e-04,	"+0.00081", "%+5.2g"},
+  {__LINE__, 8.143780077390936e+15,	"8.14378E+15", "%G"},
+  {__LINE__, 8.149891507777399e+16,	"+8E+16", "%+1.G"},
+  {__LINE__, 8.167395708830107e+03,	"8167", "%3.f"},
+  {__LINE__, 8.167703619221975e+01,	"81.677", "%G"},
+  {__LINE__, 8.178463030771759e+06,	"+8.17846E+06", "%+G"},
+  {__LINE__, 8.188188531273697e+12,	"8.18819E+12", "%G"},
+  {__LINE__, 8.189094866416537e+11,	"+8E+11", "%+.1G"},
+  {__LINE__, 8.205086844365809e-18,	"+8.205087E-18", "%+#E"},
+  {__LINE__, 8.205762333408320e-26,	"0.000000", "%f"},
+  {__LINE__, 8.212370598174696e-10,	"8.2124E-10", "%.5G"},
+  {__LINE__, 8.228054316085489e-14,	"0.000000", "%3f"},
+  {__LINE__, 8.244313484402404e-16,	"8.24431e-16", "%g"},
+  {__LINE__, 8.244472235472472e+19,	"8.24447E+19", "%G"},
+  {__LINE__, 8.245421473302411e-09,	"+8.2454e-09", "%+1.5g"},
+  {__LINE__, 8.252286626634840e-22,	"8E-22", "%3.G"},
+  {__LINE__, 8.259969177912707e-19,	"0.000000", "%f"},
+  {__LINE__, 8.265769991725211e+18,	"8.26577e+18", "%.5e"},
+  {__LINE__, 8.293986939496488e+25,	"8.3E+25", "%.1E"},
+  {__LINE__, 8.310348813512608e-23,	"+8.31035e-23", "%+g"},
+  {__LINE__, 8.316951996533247e-20,	"0.000000", "%f"},
+  {__LINE__, 8.318818016883803e+05,	" 8e+05", "%6.1g"},
+  {__LINE__, 8.324896920131877e-13,	"+8.324897e-13", "%+e"},
+  {__LINE__, 8.325228630004624e-03,	"0.0083252", "%5.7f"},
+  {__LINE__, 8.332538660129034e+14,	"8.3e+14", "%5.2g"},
+  {__LINE__, 8.343325212751775e+07,	"8.34333e+07", "%#4g"},
+  {__LINE__, 8.363117398136236e+20,	"+8.36e+20", "%+.3g"},
+  {__LINE__, 8.364181324448165e+27,	"8.36418e+27", "%#g"},
+  {__LINE__, 8.372159259848738e+10,	"8.37216e+10", "%4g"},
+  {__LINE__, 8.379252006152759e-26,	"8.37925e-26", "%g"},
+  {__LINE__, 8.392670395720252e+09,	"8392670395.720252", "%f"},
+  {__LINE__, 8.423360059147756e+05,	"+842336.", "%+#G"},
+  {__LINE__, 8.425921213167943e+09,	"8.425921e+09", "%1.7g"},
+  {__LINE__, 8.431664412515776e-16,	"8.43166E-16", "%#G"},
+  {__LINE__, 8.448608859842500e+02,	"844.861", "%1.3f"},
+  {__LINE__, 8.456292247478771e-14,	"8.45629E-14", "%G"},
+  {__LINE__, 8.460077225296853e-04,	"0.000846008", "%G"},
+  {__LINE__, 8.478635925746218e-10,	"0.000000", "%f"},
+  {__LINE__, 8.492455774427448e+06,	"8.49246e+06", "%g"},
+  {__LINE__, 8.494450528380746e-07,	"8.494451e-07", "%e"},
+  {__LINE__, 8.516435842947605e-23,	"+0.000000", "%+1f"},
+  {__LINE__, 8.519057789029134e-18,	"0.000000", "%0f"},
+  {__LINE__, 8.522602111109066e+18,	" 9.e+18", "%#7.g"},
+  {__LINE__, 8.529176788022152e-24,	"8.529E-24", "%0.4G"},
+  {__LINE__, 8.534979605642793e-07,	"0.000001", "%f"},
+  {__LINE__, 8.546859563634342e-07,	"8.546860E-07", "%E"},
+  {__LINE__, 8.552370027054106e+12,	"9e+12", "%.0g"},
+  {__LINE__, 8.561781328234041e+10,	"8.56178e+10", "%4g"},
+  {__LINE__, 8.562688793145107e-20,	"8.562689e-20", "%1.7g"},
+  {__LINE__, 8.573130147270046e-07,	"  9E-07", "%7.G"},
+  {__LINE__, 8.584571984387802e-18,	"8.5846e-18", "%.5g"},
+  {__LINE__, 8.596407996491291e+11,	"8.596408E+11", "%#E"},
+  {__LINE__, 8.604843726850381e+10,	" 9E+10", "%6.G"},
+  {__LINE__, 8.626884271938994e-23,	"8.62688e-23", "%g"},
+  {__LINE__, 8.631140282429168e+24,	"8631140282429168308908629.", "%#.0f"},
+  {__LINE__, 8.635194331917948e-16,	"8.63519E-16", "%G"},
+  {__LINE__, 8.641417311588688e-24,	"+0.000000", "%+f"},
+  {__LINE__, 8.649120264278466e+26,	"8.65E+26", "%1.3G"},
+  {__LINE__, 8.649745523383894e+06,	"8.649746e+06", "%e"},
+  {__LINE__, 8.654720740091021e+16,	"8.65472e+16", "%g"},
+  {__LINE__, 8.655445556834509e-08,	"9e-08", "%4.g"},
+  {__LINE__, 8.658954696751902e+06,	"8.65895E+06", "%G"},
+  {__LINE__, 8.665712368800818e-10,	"+8.66571E-10", "%+G"},
+  {__LINE__, 8.666937057116442e-10,	"8.666937e-10", "%e"},
+  {__LINE__, 8.670981239765155e+05,	"867098", "%G"},
+  {__LINE__, 8.679631934294932e-25,	"+9.E-25", "%+#0.G"},
+  {__LINE__, 8.683595173050962e-21,	"8.68360E-21", "%#G"},
+  {__LINE__, 8.684938704958039e+25,	"8.684939E+25", "%E"},
+  {__LINE__, 8.686745463281227e-12,	"8.686745E-12", "%5.7G"},
+  {__LINE__, 8.700227628706534e-12,	"8.700228e-12", "%#e"},
+  {__LINE__, 8.705101179577200e+04,	"87051.011796", "%#2f"},
+  {__LINE__, 8.707824829984700e-24,	"9e-24", "%.1g"},
+  {__LINE__, 8.717654041009233e+21,	"+9E+21", "%+6.0E"},
+  {__LINE__, 8.741736299906572e-11,	"8.74174E-11", "%#0G"},
+  {__LINE__, 8.742228350419966e+18,	"+8742228350419965821.060941", "%+f"},
+  {__LINE__, 8.743045146087558e-17,	"+8.74305E-17", "%+2G"},
+  {__LINE__, 8.747820269457588e+18,	"8.74782E+18", "%G"},
+  {__LINE__, 8.756274717008537e-28,	"8.756275E-28", "%E"},
+  {__LINE__, 8.769782309254687e-24,	"+8.769782E-24", "%+2.6E"},
+  {__LINE__, 8.788151659193398e-16,	" 9E-16", "%6.E"},
+  {__LINE__, 8.789514812202340e-07,	"9E-07", "%0.G"},
+  {__LINE__, 8.792657843164822e-07,	"8.79266e-07", "%0g"},
+  {__LINE__, 8.810976223440985e+05,	"881097.622344", "%f"},
+  {__LINE__, 8.822553973113614e+10,	"8.82255E+10", "%G"},
+  {__LINE__, 8.839440421530611e-04,	"0.000883944", "%G"},
+  {__LINE__, 8.842539073558434e-12,	"0", "%1.f"},
+  {__LINE__, 8.882818021261782e-13,	"+8.9e-13", "%+4.2g"},
+  {__LINE__, 8.899833909201039e+05,	"8.8998E+05", "%.5G"},
+  {__LINE__, 8.903167498000181e-13,	"9e-13", "%0.g"},
+  {__LINE__, 8.933727737932164e+09,	"+8933727738", "%+4.f"},
+  {__LINE__, 8.946226267100711e+06,	"8.946E+06", "%1.4G"},
+  {__LINE__, 8.953203780849794e-21,	"8.9532E-21", "%G"},
+  {__LINE__, 8.959934262635649e+28,	"+8.959934e+28", "%+e"},
+  {__LINE__, 8.969485341781558e-25,	"0.000000", "%#f"},
+  {__LINE__, 8.970058187654221e+02,	"897.005819", "%f"},
+  {__LINE__, 8.979846508565979e+02,	"8.979847E+02", "%E"},
+  {__LINE__, 8.984561117901212e+01,	"8.984561E+01", "%E"},
+  {__LINE__, 8.992157765875611e-12,	"8.99216e-12", "%g"},
+  {__LINE__, 9.004487016708012e+01,	"9.004487e+01", "%#e"},
+  {__LINE__, 9.007306978283218e-24,	"9.007307e-24", "%e"},
+  {__LINE__, 9.014546375043562e+17,	"901454637504356171.007203", "%#3f"},
+  {__LINE__, 9.028177786002161e-12,	"9.02818E-12", "%G"},
+  {__LINE__, 9.029635986381795e-02,	"0.09", "%.1g"},
+  {__LINE__, 9.032389962233431e-07,	"+0.000001", "%+f"},
+  {__LINE__, 9.038466945070887e+10,	"+9.038467E+10", "%+E"},
+  {__LINE__, 9.040166964322772e-27,	"9.04017e-27", "%g"},
+  {__LINE__, 9.044627673694681e-11,	"9.04463E-11", "%G"},
+  {__LINE__, 9.045906217628948e+17,	"904590621762894819.823941", "%1f"},
+  {__LINE__, 9.051764975661710e+11,	"9.05176e+11", "%#g"},
+  {__LINE__, 9.053142913711405e+29,	"9.053143e+29", "%#e"},
+  {__LINE__, 9.073185209160657e-19,	"+9.07319e-19", "%+g"},
+  {__LINE__, 9.074372574441451e+02,	"907.437", "%g"},
+  {__LINE__, 9.084624602048136e+08,	"9.084625E+08", "%E"},
+  {__LINE__, 9.088839346363631e+18,	"9.09e+18", "%.2e"},
+  {__LINE__, 9.091945159170871e-15,	"9.09195e-15", "%5g"},
+  {__LINE__, 9.115304318083716e+10,	"9.115304e+10", "%e"},
+  {__LINE__, 9.115978352902710e+28,	"9.11598E+28", "%G"},
+  {__LINE__, 9.121415008221017e-17,	"9.E-17", "%#6.G"},
+  {__LINE__, 9.127270978060388e+18,	"9.E+18", "%#5.G"},
+  {__LINE__, 9.143941729069086e+08,	"9.143942E+08", "%#E"},
+  {__LINE__, 9.162740105978580e-19,	" 9.E-19", "%#7.G"},
+  {__LINE__, 9.221509957559626e-18,	"9.22151e-18", "%g"},
+  {__LINE__, 9.227419774250317e-28,	" 0.", "%#3.f"},
+  {__LINE__, 9.230846660807540e-21,	"0.000000", "%f"},
+  {__LINE__, 9.238091727277130e-06,	"+0.00001", "%+.5f"},
+  {__LINE__, 9.244337357684406e+10,	"9E+10", "%5.G"},
+  {__LINE__, 9.259179793993285e-19,	"  9E-19", "%7.0G"},
+  {__LINE__, 9.274068541525759e-17,	"9.274069e-17", "%e"},
+  {__LINE__, 9.283833535882367e+16,	"9.28383e+16", "%#g"},
+  {__LINE__, 9.295693096364605e+11,	"+9.295693E+11", "%+E"},
+  {__LINE__, 9.301820438602407e+05,	"930182", "%G"},
+  {__LINE__, 9.322805251555376e-29,	"9e-29", "%1.e"},
+  {__LINE__, 9.358443042421307e-27,	"9.35844e-27", "%g"},
+  {__LINE__, 9.372658444745124e-23,	"9.372658e-23", "%e"},
+  {__LINE__, 9.380302971355292e+05,	"938030.3", "%.7g"},
+  {__LINE__, 9.381976354968076e-26,	"+9.382E-26", "%+5.4G"},
+  {__LINE__, 9.391072061980585e-15,	"9.391072E-15", "%E"},
+  {__LINE__, 9.403554117166546e-06,	"0.000009", "%f"},
+  {__LINE__, 9.403712900426614e-28,	"9.40371e-28", "%g"},
+  {__LINE__, 9.419046629820578e+03,	"9419.046630", "%f"},
+  {__LINE__, 9.422344695378412e+22,	"94223446953784115720509.362291", "%f"},
+  {__LINE__, 9.433327680467576e+01,	"9.433328e+01", "%e"},
+  {__LINE__, 9.443975205260596e+20,	"9.44398e+20", "%g"},
+  {__LINE__, 9.445134851965593e-04,	"+9.445135E-04", "%+E"},
+  {__LINE__, 9.448403585149890e+24,	"9e+24", "%0.g"},
+  {__LINE__, 9.463149430113036e+18,	"9.46315e+18", "%g"},
+  {__LINE__, 9.465735160722534e+27,	"+9465735160722534402566452627.070248", "%+f"},
+  {__LINE__, 9.495210794344892e-04,	"0.000950", "%f"},
+  {__LINE__, 9.501916506373814e-25,	"9.50192E-25", "%#G"},
+  {__LINE__, 9.514641335897739e+29,	"9.51464E+29", "%G"},
+  {__LINE__, 9.524633436992819e-04,	" 0.001", "%6.G"},
+  {__LINE__, 9.530925101873022e-18,	"9.530925e-18", "%2e"},
+  {__LINE__, 9.557903833216979e-22,	"9.557904E-22", "%E"},
+  {__LINE__, 9.587709102390903e-01,	" 1", "%2.f"},
+  {__LINE__, 9.592723000828453e-02,	"9.592723E-02", "%5E"},
+  {__LINE__, 9.603430008794172e+27,	"9.60343e+27", "%g"},
+  {__LINE__, 9.622648414989433e-18,	"9.622648e-18", "%1e"},
+  {__LINE__, 9.633326171289319e-23,	"9.633326e-23", "%e"},
+  {__LINE__, 9.662064616152408e+19,	"96620646161524081918.5146393", "%1.7f"},
+  {__LINE__, 9.668544846563163e-23,	"9.668545e-23", "%e"},
+  {__LINE__, 9.691014191346685e+28,	"9.69101E+28", "%G"},
+  {__LINE__, 9.693075414840598e+02,	"+969.308", "%+G"},
+  {__LINE__, 9.695013453291907e-30,	"9.695013e-30", "%5e"},
+  {__LINE__, 9.705983477801926e-24,	"9.70598e-24", "%g"},
+  {__LINE__, 9.709022568030226e-17,	"0.000000", "%f"},
+  {__LINE__, 9.715194901854826e+20,	"9.715195e+20", "%e"},
+  {__LINE__, 9.721011821337717e+16,	"1E+17", "%0.G"},
+  {__LINE__, 9.734895542899672e+14,	"9.734896e+14", "%e"},
+  {__LINE__, 9.741486438769710e-29,	" 1e-28", "%6.g"},
+  {__LINE__, 9.766657482315475e-24,	"9.76666E-24", "%7G"},
+  {__LINE__, 9.767283293054552e-02,	"0.09767", "%5.5f"},
+  {__LINE__, 9.769553159146005e-20,	"9.76955E-20", "%G"},
+  {__LINE__, 9.777220880605434e-10,	"0.00", "%4.2f"},
+  {__LINE__, 9.790290569034575e+20,	"979029056903457473027.", "%#6.f"},
+  {__LINE__, 9.793128245822718e-01,	"0.979313", "%G"},
+  {__LINE__, 9.804758536498200e+08,	"980475853.650", "%.3f"},
+  {__LINE__, 9.816883664191066e-02,	"0.1", "%.0g"},
+  {__LINE__, 9.836109821010300e+25,	"9.83611e+25", "%g"},
+  {__LINE__, 9.846197559631225e+03,	"1E+04", "%2.G"},
+  {__LINE__, 9.863289416819924e+12,	"9.86329e+12", "%g"},
+  {__LINE__, 9.865893798657353e+12,	"9.866e+12", "%0.4g"},
+  {__LINE__, 9.868248446640862e-15,	"0.000000", "%#f"},
+  {__LINE__, 9.869973080775134e+04,	"98699.7", "%G"},
+  {__LINE__, 9.899444006312953e+20,	"1E+21", "%.1G"},
+  {__LINE__, 9.904083146074285e-08,	"9.904083e-08", "%6e"},
+  {__LINE__, 9.909790408255471e+15,	"9909790408255471.305665", "%f"},
+  {__LINE__, 9.930297455798394e-13,	"+9.930297E-13", "%+5.6E"},
+  {__LINE__, 9.933314448709083e-15,	"9.93331E-15", "%#.6G"},
+  {__LINE__, 9.938714530509870e+29,	"9.938715e+29", "%e"},
+  {__LINE__, 9.953892603540162e+07,	"9.95389E+07", "%G"},
+  {__LINE__, 9.962084643867200e+14,	"+996208464386720.038419", "%+f"},
+  {__LINE__, 9.977706708809947e-09,	"9.9777E-09", "%#.4E"},
+#endif
+  {__LINE__, 9.978034352999867e+15,	"9.978034e+15", "%2.6e"},
+  {__LINE__, 9.998315286730175e-30,	"9.998315e-30", "%6e"},
+  {__LINE__, 1.25,			"1.2", "%.1f"},
+  {__LINE__, 11.25,			"11.2", "%.1f"},
+  {__LINE__, 1.75,			"1.8", "%.1f"},
+  {__LINE__, 11.75,			"11.8", "%.1f"},
+  {__LINE__, 16,			"0x1.0p+4", "%.1a"},
+  {__LINE__, 16,			"0x1.00000000000000000000p+4", "%.20a"},
+  {__LINE__, 4444.88888888,		"4445", "%2.F"},
+  {__LINE__, 0.956,			"1", "%.0g"},
+  {__LINE__, 1.0956,			"1.", "%#.0g"},
+  {__LINE__, 0.956,			"1.", "%#.0g"},
+  {__LINE__, 0.0956,			"0.1", "%#.0g"},
+  {__LINE__, 0.00956,			"0.01", "%#.0g"},
+  {__LINE__, 0.000956,			"0.001", "%#.0g"},
+  {__LINE__, 0.000098,			"0.0001", "%#.0g"},
+  {__LINE__, 0.0000996,			"0.00010", "%#.2g"},
+  {__LINE__, 9.999999999999999e-05,	"0.0001", "%g"},
+  {__LINE__, 1.0,			"1.000000e+00", "%e"},
+  {__LINE__, .9999999999999999,		"1.000000e+00", "%e"},
+
+  {__LINE__, 912.98,			"913.0", "%#.4g"},
+  {__LINE__, 50.999999,			"51.000", "%#.5g"},
+  {__LINE__, 0.956,			"1", "%.1g"},
+  {__LINE__, 0.956,			"1.", "%#.1g"},
+  {__LINE__, 0.996,			"1", "%.2g"},
+  {__LINE__, 0.996,			"1.0", "%#.2g"},
+  {__LINE__, 999.98,			"1000", "%.4g"},
+  {__LINE__, 999.98,			"1000.", "%#.4g"},
+  {__LINE__, 999.998,			"1000", "%.5g"},
+  {__LINE__, 999.998,			"1000.0", "%#.5g"},
+  {__LINE__, 999.9998,			"1000", "%g"},
+  {__LINE__, 999.9998,			"1000.00", "%#g"},
+  {__LINE__, 912.98,			"913", "%.4g"},
+  {__LINE__, 50.999999,			"51", "%.5g"},
+
+  {0 }
+
+};
+
+/* matches(s1, s2) is true if s1 is "approximately" equal to s2.
+   Any digits after the first required_precision digits do not have to match.
+ */
+
+int required_precision = 13;
+
+static int
+matches (char *result, const char *desired)
+{
+    int digits_seen = 0;
+    for (;; result++, desired++) {
+	if (*result == *desired) {
+	    if (*result == 0)
+		return 1;
+	    else if (*result >= '0' && *result <= '9')
+		digits_seen++;
+	}
+	else if (digits_seen >= required_precision
+		 && *result >= '0' && *result <= '9'
+		 && *desired >= '0' && *desired <= '9')
+	    continue;
+	else
+	    return 0;
+    }
+}
+
+int main(int argc, char *argv[])
+{
+  int errcount = 0;
+  int testcount = 0;
+  double d;
+#define BSIZE 1024
+  char buffer[BSIZE];
+  sprint_double_type *dptr;
+  for (dptr = sprint_doubles; dptr->line; dptr++)
+    {
+      sprintf (buffer, dptr->format_string, dptr->value);
+      if (!matches(buffer, dptr->result))
+	{
+	  errcount++;
+	  printf(
+   "Error in line %d using \"%s\".  Result is \"%s\"; should be: \"%s\".\n",
+		  dptr->line, dptr->format_string, buffer, dptr->result);
+	}
+
+      sprintf (buffer, "%.999g", dptr->value);
+      sscanf (buffer, "%lg", &d);
+      if (dptr->value != d)
+	{
+	  errcount++;
+	  printf ("Error in line %d.  String is \"%s\", value is %g.\n",
+		  dptr->line, buffer, d);
+	}
+      testcount++;
+    }
+
+  /* And one special test.  */
+  {
+    static const char ref[] = "1.7763568394002504646778106689453125e-15";
+    int i;
+    d = 1.0;
+    for (i = 1; i < 50; ++i)
+      d /= 2;
+    sprintf (buffer, "%.100g", d);
+    if (!matches (buffer, ref))
+      {
+	++errcount;
+	printf (
+    "Error in line %d using \"%s\".  Result is \"%s\"; should be: \"%s\".\n",
+		__LINE__, "%.100g", buffer, ref);
+      }
+  }
+
+  if (errcount == 0)
+    {
+      printf("Encountered no errors in %d tests.\n", testcount);
+      return 0;
+    }
+  else
+    {
+      printf("Encountered %d errors in %d tests.\n",
+	      errcount, testcount);
+      return 1;
+    }
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tiformat.c b/ap/libc/glibc/glibc-2.23/stdio-common/tiformat.c
new file mode 100644
index 0000000..4d2eeb3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tiformat.c
@@ -0,0 +1,5070 @@
+#include <stdio.h>
+#include <string.h>
+
+/* Tests taken from Cygnus C library. */
+typedef struct {
+  int line;
+  long value;
+  const char *result;
+  const char *format_string;
+} sprint_int_type;
+
+sprint_int_type sprint_ints[] =
+{
+  {__LINE__, 0x000838d2,	"838d2", "%.4x"},
+  {__LINE__, 0x0063be46,	"63BE46", "%-6X"},
+  {__LINE__, -0x1b236c0,	"-28456640", "%#0.d"},
+  {__LINE__, -0x0000003,	"-3", "% 0d"},
+  {__LINE__, 0x0000ed51,	"ed51", "%2.x"},
+  {__LINE__, -0x00001f2,	"-498", "%1ld"},
+  {__LINE__, 0x0ea3e927,	"EA3E927", "%+X"},
+  {__LINE__, 0xffbef8da,	"FFBEF8DA", "%5X"},
+  {__LINE__, 0x62ff9f56,	"62ff9f56", "%0x"},
+  {__LINE__, 0x00000ad2,	"AD2", "%.0X"},
+  {__LINE__, 0x00000000,	"      ", "% 6.ld"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%1.4X"},
+  {__LINE__, 0x0000208c,	" 208C", "%5X"},
+  {__LINE__, 0x0000003c,	"3c", "%x"},
+  {__LINE__, 0xffff6177,	"0xffff6177", "%+#x"},
+  {__LINE__, 0xffffdc8d,	"ffffdc8d", "%+x"},
+  {__LINE__, 0x00000000,	"0", "%X"},
+  {__LINE__, 0x00002434,	"9268", "%0d"},
+  {__LINE__, 0xd2c72cdb,	"d2c72cdb", "%-x"},
+  {__LINE__, 0xfe38012b,	"0xfe38012b", "%+#7x"},
+  {__LINE__, 0x00000001,	"0001", "%#.4d"},
+  {__LINE__, -0x008525a,	"-0545370", "%06.7ld"},
+  {__LINE__, 0xffffffac,	"ffffffac", "%3.7x"},
+  {__LINE__, 0x007424d2,	"+7611602", "%+ld"},
+  {__LINE__, 0x00001a85,	"1A85", "%.4X"},
+  {__LINE__, -0x0000019,	"-25", "%3.d"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%-x"},
+  {__LINE__, -0x34473b2,	"-54817714", "% d"},
+  {__LINE__, 0x000000ea,	"234", "%1.ld"},
+  {__LINE__, -0x0000004,	"-4     ", "%-7.ld"},
+  {__LINE__, 0x00006c94,	"27796", "%0d"},
+  {__LINE__, 0x00000001,	"1", "%ld"},
+  {__LINE__, 0x00000619,	"619", "%1x"},
+  {__LINE__, 0x0000209c,	"8348", "%ld"},
+  {__LINE__, -0x327f8ff,	"-52951295", "%-0ld"},
+  {__LINE__, 0xffffff0b,	"FFFFFF0B", "%2.X"},
+  {__LINE__, 0xf199d6ae,	"F199D6AE", "%X"},
+  {__LINE__, 0x3ca5602e,	"1017471022", "%-1.ld"},
+  {__LINE__, -0xfb2080b,	"-263325707", "%3.5d"},
+  {__LINE__, 0x00001cb8,	"7352", "%d"},
+  {__LINE__, 0x00000000,	"0000000", "%3.7d"},
+  {__LINE__, 0xffffff40,	"FFFFFF40", "%+X"},
+  {__LINE__, 0x14664450,	"0x14664450", "%#x"},
+  {__LINE__, 0x0000002e,	"2e", "%1x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%x"},
+  {__LINE__, 0xffff606a,	"0XFFFF606A", "%#X"},
+  {__LINE__, 0xffffff33,	"0XFFFFFF33", "%#X"},
+  {__LINE__, 0x00000000,	"0", "%d"},
+  {__LINE__, -0x0000012,	"-00018", "%-2.5d"},
+  {__LINE__, 0x0001fbe6,	"130022", "%1.d"},
+  {__LINE__, 0xfff59dd9,	"fff59dd9", "%+x"},
+  {__LINE__, 0x00000002,	"2", "%0.0d"},
+  {__LINE__, 0x00000fe1,	"fe1    ", "%-7.x"},
+  {__LINE__, 0x001f8f6a,	"1F8F6A", "%1.X"},
+  {__LINE__, 0x0000001b,	"000001B", "%04.7X"},
+  {__LINE__, 0x126a2609,	" 308946441", "% 4d"},
+  {__LINE__, 0xffffffe3,	"0XFFFFFFE3", "%+#.1X"},
+  {__LINE__, 0x1858f1c9,	"1858f1c9", "%.3x"},
+  {__LINE__, 0x003fc672,	"3fc672", "%1x"},
+  {__LINE__, 0x00c0bddc,	"12631516", "%#d"},
+  {__LINE__, 0x000006d6,	"1750", "%#d"},
+  {__LINE__, 0x000006a0,	"6A0", "%X"},
+  {__LINE__, 0x000007be,	"7BE", "%X"},
+  {__LINE__, -0x1c7cd1a,	"-29871386", "%ld"},
+  {__LINE__, 0x000000cc,	"204", "%ld"},
+  {__LINE__, 0x000002db,	"731  ", "%-#5d"},
+  {__LINE__, 0xffff67ad,	"FFFF67AD", "% X"},
+  {__LINE__, 0x00000008,	"8", "%d"},
+  {__LINE__, 0xffe07007,	"FFE07007", "%5X"},
+  {__LINE__, -0x0000001,	"     -1", "% 7d"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%x"},
+  {__LINE__, 0x00027b68,	"+162664", "%+ld"},
+  {__LINE__, 0x0a7c1997,	"+175905175", "%+2ld"},
+  {__LINE__, 0xfe300896,	"fe300896", "%.4x"},
+  {__LINE__, 0x00000537,	"537", "%-0.x"},
+  {__LINE__, 0x3e981779,	"3e981779", "%.6x"},
+  {__LINE__, 0xfffff05e,	"FFFFF05E", "%1.0X"},
+  {__LINE__, -0x07bc0cf,	"-8110287", "%-7d"},
+  {__LINE__, -0x01371bc,	"-1274300", "%.7ld"},
+  {__LINE__, -0x0000013,	"-19", "%.2ld"},
+  {__LINE__, 0x000000d1,	"0xd1", "%#x"},
+  {__LINE__, -0x0000003,	"-3", "%-ld"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%4.1X"},
+  {__LINE__, 0x00000000,	"0", "%ld"},
+  {__LINE__, 0x0001c8af,	"116911", "%d"},
+  {__LINE__, 0x000048c3,	"48C3", "%X"},
+  {__LINE__, 0x00000079,	"0x0000079", "%-#0.7x"},
+  {__LINE__, 0x0000615a,	" 24922", "% d"},
+  {__LINE__, 0xfffffff5,	"fffffff5", "%x"},
+  {__LINE__, 0x00000308,	"0000308", "%+07.7x"},
+  {__LINE__, 0xfcadc983,	"fcadc983", "%x"},
+  {__LINE__, 0x00000097,	"151", "%#d"},
+  {__LINE__, 0x000001c5,	"453", "%0.2ld"},
+  {__LINE__, 0x00000000,	"00", "%-1.2x"},
+  {__LINE__, 0x00000001,	"+1", "%+02.d"},
+  {__LINE__, 0x01eb4354,	"1EB4354", "% X"},
+  {__LINE__, 0xffffa7d1,	"ffffa7d1", "%5.x"},
+  {__LINE__, 0x0003170e,	"0x3170e", "%#x"},
+  {__LINE__, 0x000001ce,	"1CE", "% .2X"},
+  {__LINE__, 0x3a2991fb,	"975802875", "%d"},
+  {__LINE__, -0xcdad8e2,	"-215668962", "%-d"},
+  {__LINE__, 0xfe0261c3,	"fe0261c3", "%x"},
+  {__LINE__, -0x0006ea7,	"-28327", "% ld"},
+  {__LINE__, 0x032854a3,	"0X32854A3", "% #6X"},
+  {__LINE__, 0x0000004b,	"4b", "%x"},
+  {__LINE__, 0xffff6ca3,	"FFFF6CA3", "%4.X"},
+  {__LINE__, 0x00000000,	"0", "%X"},
+  {__LINE__, 0x00611f04,	"611F04", "%.1X"},
+  {__LINE__, 0x00000000,	"     0", "%#6d"},
+  {__LINE__, 0x0002c711,	"2c711", "%-02.x"},
+  {__LINE__, -0x07a2fe4,	"-8007652", "%d"},
+  {__LINE__, -0x0000547,	"-1351", "%ld"},
+  {__LINE__, 0x00013954,	"0x13954", "%#x"},
+  {__LINE__, -0x00523b7,	"-336823", "%ld"},
+  {__LINE__, -0x00f6c6e,	"-1010798", "%6.ld"},
+  {__LINE__, 0xffea6427,	"FFEA6427", "%3X"},
+  {__LINE__, -0x0000005,	"-5", "%d"},
+  {__LINE__, -0x04fe618,	"-5236248", "% .7d"},
+  {__LINE__, 0xffa80a28,	"ffa80a28", "%-0x"},
+  {__LINE__, 0x00000047,	"71", "%ld"},
+  {__LINE__, 0x001dc6bb,	"1951419", "%#4ld"},
+  {__LINE__, 0x00000868,	"  2152", "%#6d"},
+  {__LINE__, 0x000002fb,	"2fb", "%x"},
+  {__LINE__, 0x00607fa0,	"6324128", "%4d"},
+  {__LINE__, 0xfffed161,	"fffed161", "%x"},
+  {__LINE__, 0x0001c6e4,	" 116452", "% 2.5d"},
+  {__LINE__, 0x0003dda8,	"3DDA8", "%4X"},
+  {__LINE__, 0xfffffff8,	"fffffff8", "%x"},
+  {__LINE__, 0xfacf664a,	"facf664a", "%x"},
+  {__LINE__, 0x000000c1,	"C1", "% 1X"},
+  {__LINE__, 0x0000839c,	"  839C", "%6X"},
+  {__LINE__, 0xfffff69a,	"FFFFF69A", "%X"},
+  {__LINE__, 0x000e5c2e,	"+941102", "%+d"},
+  {__LINE__, -0x0000004,	"-4", "%#d"},
+  {__LINE__, 0x00000000,	"00000", "%#.5ld"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%3.1x"},
+  {__LINE__, 0x0010ed68,	"1109352", "%-ld"},
+  {__LINE__, 0xffffffe9,	"ffffffe9", "%.6x"},
+  {__LINE__, 0x00000007,	"   7", "% 4.ld"},
+  {__LINE__, 0x0000caba,	"51898", "%ld"},
+  {__LINE__, -0x0000119,	"-281", "% d"},
+  {__LINE__, 0x0c3012a9,	"204477097", "%03.6ld"},
+  {__LINE__, -0x001c98f,	"-117135", "%ld"},
+  {__LINE__, 0x000017b1,	"+6065", "%+d"},
+  {__LINE__, 0x00000001,	"1", "%ld"},
+  {__LINE__, -0x0000019,	"-25", "% .2d"},
+  {__LINE__, 0x0009ae28,	"9AE28", "%X"},
+  {__LINE__, 0xe861c4fe,	"e861c4fe", "%7.x"},
+  {__LINE__, 0xffac88d3,	"FFAC88D3", "%X"},
+  {__LINE__, -0x00005df,	"-01503", "%-5.5ld"},
+  {__LINE__, 0x0000013e,	"318", "%-0d"},
+  {__LINE__, 0x04b6f58f,	"4b6f58f", "%x"},
+  {__LINE__, 0xfffe3978,	"fffe3978", "%+0.6x"},
+  {__LINE__, 0x57ee5244,	"57ee5244", "%+7.4x"},
+  {__LINE__, 0xfffb5610,	"fffb5610", "% 6x"},
+  {__LINE__, 0x00000006,	"      6", "%#7d"},
+  {__LINE__, 0x0000000c,	"0x0000c", "%#.5x"},
+  {__LINE__, -0xec59362,	"-247829346", "%1.7d"},
+  {__LINE__, -0x0000001,	"-1", "%ld"},
+  {__LINE__, -0x0007e4b,	"-32331", "% d"},
+  {__LINE__, 0x0ececa6f,	"248433263", "%0d"},
+  {__LINE__, 0x00000578,	"   578", "%+6.x"},
+  {__LINE__, -0x0000003,	"-3", "%ld"},
+  {__LINE__, 0x000002bb,	"2bb", "% 0x"},
+  {__LINE__, -0x0000006,	"-6", "%-ld"},
+  {__LINE__, 0x000002f9,	"761", "%d"},
+  {__LINE__, 0xffffd736,	"ffffd736", "%3.4x"},
+  {__LINE__, 0x0010ba79,	"1096313", "%7.4d"},
+  {__LINE__, -0x0001244,	"-4676", "%#.1d"},
+  {__LINE__, 0x00000dbe,	"DBE", "%1X"},
+  {__LINE__, -0x0000015,	"-21", "%-0.d"},
+  {__LINE__, 0xffffffff,	"0xffffffff", "%#x"},
+  {__LINE__, -0x6cdf4a3,	"-114160803", "%ld"},
+  {__LINE__, 0x00008ac9,	"8AC9", "%1X"},
+  {__LINE__, 0x00000000,	"00", "%.2X"},
+  {__LINE__, -0x2263dba,	"-36060602", "%5.5d"},
+  {__LINE__, 0x00007da9,	"32169", "%0d"},
+  {__LINE__, 0xfffffff7,	"FFFFFFF7", "% 4.X"},
+  {__LINE__, 0xfbf36cca,	"FBF36CCA", "%.1X"},
+  {__LINE__, 0x00000040,	"64", "%.0ld"},
+  {__LINE__, 0x0000001c,	" 28", "% d"},
+  {__LINE__, 0xfffffadb,	"0xfffffadb", "%#.5x"},
+  {__LINE__, 0x0eb95847,	"247027783", "%d"},
+  {__LINE__, 0xfffd7030,	"FFFD7030", "%+02X"},
+  {__LINE__, 0x00000005,	"00005", "%.5x"},
+  {__LINE__, 0xfffffffd,	"FFFFFFFD", "%X"},
+  {__LINE__, 0x98975b15,	"98975B15", "%02X"},
+  {__LINE__, -0x0000034,	"   -52", "%6ld"},
+  {__LINE__, 0xffd7d0cc,	"ffd7d0cc", "% 5.6x"},
+  {__LINE__, 0xffffffa6,	"FFFFFFA6", "%X"},
+  {__LINE__, 0xfff27132,	"fff27132", "%x"},
+  {__LINE__, -0x065b74d,	"-6666061", "%+6ld"},
+  {__LINE__, 0xf6ac99d6,	"0XF6AC99D6", "%#X"},
+  {__LINE__, 0xfffff4bd,	"FFFFF4BD", "%X"},
+  {__LINE__, 0xfffffb62,	"FFFFFB62", "%6X"},
+  {__LINE__, 0xf8434543,	"f8434543", "%-0x"},
+  {__LINE__, 0x0002b374,	"0x2b374", "%-#6x"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, 0xffb5751d,	"ffb5751d", "%-3.x"},
+  {__LINE__, 0x34ea7347,	"887780167", "%d"},
+  {__LINE__, -0x008f457,	"-586839", "%0ld"},
+  {__LINE__, 0x00000001,	"   1", "%#4d"},
+  {__LINE__, 0xc32d7ad4,	"c32d7ad4", "%0x"},
+  {__LINE__, 0xfffffb80,	"FFFFFB80", "%-.2X"},
+  {__LINE__, 0x00000756,	"756   ", "%-6x"},
+  {__LINE__, 0xfffb020f,	"FFFB020F", "%+.2X"},
+  {__LINE__, -0xe68619f,	"-241721759", "%#1.6ld"},
+  {__LINE__, 0x180166cd,	"402745037", "%3.7ld"},
+  {__LINE__, -0x0000001,	"-1", "%+00d"},
+  {__LINE__, 0xfdbc3611,	"fdbc3611", "%x"},
+  {__LINE__, -0x000005b,	"-91", "%d"},
+  {__LINE__, 0xffffe77f,	"ffffe77f", "%x"},
+  {__LINE__, -0x0000019,	"-25", "%ld"},
+  {__LINE__, 0x00000016,	"22", "%#d"},
+  {__LINE__, -0x0000025,	"-37", "%ld"},
+  {__LINE__, 0xffffe43f,	"ffffe43f", "%x"},
+  {__LINE__, 0x000050a5,	"00050a5", "%.7x"},
+  {__LINE__, 0x0000000c,	"   12", "% 5.ld"},
+  {__LINE__, -0x001faff,	"-129791", "%4d"},
+  {__LINE__, 0x239d7cf2,	"597523698", "%0.7ld"},
+  {__LINE__, 0x04092183,	"4092183", "% 7X"},
+  {__LINE__, -0x0043498,	"-275608", "%-ld"},
+  {__LINE__, -0x0018dbe,	"-101822", "%d"},
+  {__LINE__, 0xff3e09c3,	"FF3E09C3", "%X"},
+  {__LINE__, 0x00000000,	"0", "%d"},
+  {__LINE__, -0x15d57558,	"-366310744", "%+0.7ld"},
+  {__LINE__, 0x0004fb06,	"326406", "%0.0d"},
+  {__LINE__, 0x00000119,	"0X119", "%#X"},
+  {__LINE__, -0x14c53e19,	"-348470809", "%d"},
+  {__LINE__, 0x00000019,	"0000019", "% .7X"},
+  {__LINE__, -0x0000654,	"-1620", "%0.4ld"},
+  {__LINE__, -0xde5899b,	"-233146779", "%#.1d"},
+  {__LINE__, 0x0013c1f0,	"1294832", "%4.ld"},
+  {__LINE__, 0x0a9fe761,	"A9FE761", "%X"},
+  {__LINE__, -0x00000e5,	"-229", "%1ld"},
+  {__LINE__, 0x00000161,	"000353", "%.6ld"},
+  {__LINE__, 0x6b04e4bd,	"0x6b04e4bd", "%#7.0x"},
+  {__LINE__, -0x0000ef0,	"-3824 ", "%-6.ld"},
+  {__LINE__, -0x026306e,	"-2502766", "%ld"},
+  {__LINE__, 0x00000000,	"0", "%-X"},
+  {__LINE__, 0xfffffe1f,	"fffffe1f", "%-x"},
+  {__LINE__, 0x0003aecf,	" 241359", "% 2.1ld"},
+  {__LINE__, -0x0000014,	"-20", "%d"},
+  {__LINE__, 0x00000002,	"0002", "%-.4ld"},
+  {__LINE__, 0xfffff662,	"0XFFFFF662", "% #.6X"},
+  {__LINE__, 0x00000006,	"6", "%0x"},
+  {__LINE__, 0x0001f4c4,	" 128196", "% 0d"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%5X"},
+  {__LINE__, 0x05605e38,	"90201656", "%ld"},
+  {__LINE__, 0xffffffde,	"0XFFFFFFDE", "% #X"},
+  {__LINE__, 0x000001e0,	"    1e0", "%7.x"},
+  {__LINE__, 0x00000007,	"7", "%X"},
+  {__LINE__, 0x00000001,	"+1", "%+d"},
+  {__LINE__, 0xffffffe0,	"FFFFFFE0", "% X"},
+  {__LINE__, 0xffd7f77a,	"FFD7F77A", "%+00.1X"},
+  {__LINE__, 0xfffffffe,	"0xfffffffe", "%-#x"},
+  {__LINE__, 0x01b0a63b,	"1b0a63b", "%x"},
+  {__LINE__, -0x06554b7,	"-6640823", "%d"},
+  {__LINE__, 0xfffffff8,	"fffffff8", "%x"},
+  {__LINE__, 0x00000b2d,	"b2d", "%x"},
+  {__LINE__, -0x2664ba2,	"-40258466", "%-d"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%X"},
+  {__LINE__, -0x0000552,	" -1362", "%6.2ld"},
+  {__LINE__, 0x00000009,	" 00009", "%6.5x"},
+  {__LINE__, 0x00035c72,	"220274", "%05.ld"},
+  {__LINE__, -0x014d09d,	"-1364125", "%d"},
+  {__LINE__, -0x0000002,	"  -2", "% 4d"},
+  {__LINE__, 0x00000001,	"1", "%+X"},
+  {__LINE__, 0x00000028,	"28", "%X"},
+  {__LINE__, 0xf25c9eb2,	"F25C9EB2", "%7.X"},
+  {__LINE__, -0x7ae4b62,	"-128863074", "%d"},
+  {__LINE__, 0x00630d87,	"630D87", "%2X"},
+  {__LINE__, 0x000000f8,	"F8", "%-X"},
+  {__LINE__, 0xfffffff9,	"FFFFFFF9", "%X"},
+  {__LINE__, -0x0000007,	"-7", "%0d"},
+  {__LINE__, -0x2518fcd,	"-38899661", "% 3ld"},
+  {__LINE__, 0xfffff4b4,	"FFFFF4B4", "%-5X"},
+  {__LINE__, 0x01cc36c8,	"30160584", "%ld"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%-x"},
+  {__LINE__, 0x0000000b,	"    11", "%6.ld"},
+  {__LINE__, 0x00010d55,	" 68949", "% d"},
+  {__LINE__, -0x0c01306,	"-12587782", "% 6.1ld"},
+  {__LINE__, 0x001719d7,	"1513943", "%.1ld"},
+  {__LINE__, -0x0000002,	" -2", "%+3.ld"},
+  {__LINE__, 0x0000018e,	"398", "%d"},
+  {__LINE__, 0x000000a6,	"0xa6", "%-#3x"},
+  {__LINE__, 0x00006f66,	" 28518", "% #d"},
+  {__LINE__, 0x0000032a,	"32A", "%X"},
+  {__LINE__, -0x0000145,	"-325", "%0d"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%2.x"},
+  {__LINE__, 0x00287171,	"2650481", "%ld"},
+  {__LINE__, 0x0000004b,	"+75", "%+02.ld"},
+  {__LINE__, 0xfffffff8,	"fffffff8", "%-0x"},
+  {__LINE__, 0x00000064,	"64", "% X"},
+  {__LINE__, 0xfffffca2,	"fffffca2", "%0x"},
+  {__LINE__, 0x000010b6,	"10b6", "% .0x"},
+  {__LINE__, -0x003806f,	"-229487", "%7d"},
+  {__LINE__, -0x00000b7,	"-183", "%3ld"},
+  {__LINE__, 0xffffe5ba,	"FFFFE5BA", "%0X"},
+  {__LINE__, 0x001f0da8,	"1f0da8", "%+x"},
+  {__LINE__, 0x000ce185,	"844165", "%0ld"},
+  {__LINE__, 0x00000c96,	"3222", "%0d"},
+  {__LINE__, -0x0013099,	"-77977", "%1.ld"},
+  {__LINE__, -0x5f3c47a,	"-99861626", "%.6ld"},
+  {__LINE__, 0x00000cbf,	"  CBF", "%+5.X"},
+  {__LINE__, -0x0000001,	"-1", "%+ld"},
+  {__LINE__, 0x0d793bc3,	"d793bc3", "%6.x"},
+  {__LINE__, 0xfffffffd,	"0xfffffffd", "%+#x"},
+  {__LINE__, -0x0000070,	"  -112", "%6.d"},
+  {__LINE__, 0xfffffb3f,	"FFFFFB3F", "%.7X"},
+  {__LINE__, 0x037dfc78,	"0X37DFC78", "%#X"},
+  {__LINE__, 0x00009ba5,	"39845", "%3ld"},
+  {__LINE__, 0x0000004a,	"4a", "%0x"},
+  {__LINE__, 0xffffff81,	"ffffff81", "%5.5x"},
+  {__LINE__, -0x86ef222,	"-141488674", "%ld"},
+  {__LINE__, -0xac5531e,	"-180704030", "% 4ld"},
+  {__LINE__, 0x00002493,	"2493", "%+X"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%1.3X"},
+  {__LINE__, 0x0005c875,	"378997", "%.0ld"},
+  {__LINE__, 0x0301d345,	"50451269", "%d"},
+  {__LINE__, 0xfff6b589,	"fff6b589", "%2.4x"},
+  {__LINE__, -0x00001db,	"-475   ", "%-7.0d"},
+  {__LINE__, 0x0000d1e7,	"0x000d1e7", "%#2.7x"},
+  {__LINE__, 0xf4c4d2bb,	"f4c4d2bb", "%.6x"},
+  {__LINE__, 0x00c89f54,	"13147988", "%ld"},
+  {__LINE__, -0x6599253c,	"-1704535356", "%+ld"},
+  {__LINE__, 0xab7d61ea,	"ab7d61ea", "% x"},
+  {__LINE__, 0x00000006,	"6", "%1ld"},
+  {__LINE__, 0xffff5ab7,	"ffff5ab7", "%0x"},
+  {__LINE__, -0x1cfeca5b,	"-486459995", "%#ld"},
+  {__LINE__, 0x000000f3,	"    f3", "% 6.x"},
+  {__LINE__, -0x0000021,	"-33", "%d"},
+  {__LINE__, 0xfe7246ac,	"fe7246ac", "%-5.x"},
+  {__LINE__, 0x00000017,	"00017", "%-.5X"},
+  {__LINE__, -0x0cc250a,	"-13378826", "%0.0d"},
+  {__LINE__, -0x00010ae,	"-04270", "%#.5ld"},
+  {__LINE__, -0x7952c8b,	"-127216779", "% ld"},
+  {__LINE__, 0x0002a53e,	"173374", "%4.0d"},
+  {__LINE__, 0x03801bbf,	"3801BBF", "%0X"},
+  {__LINE__, 0x0368645f,	"+57173087", "%+#0.6ld"},
+  {__LINE__, 0x0000002f,	"47", "%d"},
+  {__LINE__, 0x00000003,	"3", "%x"},
+  {__LINE__, 0x000005f7,	"5F7", "%0X"},
+  {__LINE__, -0x06e5e76,	"-7233142", "% 0.1ld"},
+  {__LINE__, 0x053da936,	"53da936", "%1.4x"},
+  {__LINE__, -0x0df0c2f,	"-14617647", "%.5ld"},
+  {__LINE__, 0xfffffffd,	"FFFFFFFD", "%-0X"},
+  {__LINE__, 0x000104bf,	"104BF", "%X"},
+  {__LINE__, 0x000353fc,	"353FC", "%X"},
+  {__LINE__, 0x182a18dc,	"+405412060", "%+ld"},
+  {__LINE__, 0x0000000e,	" 14", "% 2d"},
+  {__LINE__, -0x0000091,	"-145", "%+ld"},
+  {__LINE__, 0x0029a9d6,	"2730454", "%d"},
+  {__LINE__, 0x00009d57,	"009d57", "% .6x"},
+  {__LINE__, 0x4c4d4f79,	"1280135033", "%5.ld"},
+  {__LINE__, -0x000075b,	"-1883", "% 03d"},
+  {__LINE__, -0x001b718,	"-112408", "%+d"},
+  {__LINE__, 0xfffaaf57,	"FFFAAF57", "%+1X"},
+  {__LINE__, 0x00f44e52,	"F44E52", "% 4X"},
+  {__LINE__, 0x00000002,	"0X2", "%#X"},
+  {__LINE__, 0x000a85e9,	"A85E9", "%+0X"},
+  {__LINE__, 0xffff70bb,	"ffff70bb", "%6x"},
+  {__LINE__, 0x00004e15,	"4e15", "%x"},
+  {__LINE__, 0x000eeb60,	" 977760", "% ld"},
+  {__LINE__, 0xfffffff1,	"fffffff1", "%0x"},
+  {__LINE__, -0x294d7e2,	"-43309026", "% 02.d"},
+  {__LINE__, 0x0001aaeb,	"0109291", "%02.7ld"},
+  {__LINE__, 0x000a01fc,	"0xa01fc", "%-#.5x"},
+  {__LINE__, 0x002c3c30,	"+2898992", "%+#d"},
+  {__LINE__, 0x015667ae,	"+22439854", "%+5ld"},
+  {__LINE__, -0x05af42b,	"-5960747", "%+d"},
+  {__LINE__, 0x0000be36,	"be36", "%+2x"},
+  {__LINE__, 0x005e3f67,	"5e3f67", "% x"},
+  {__LINE__, -0x0000020,	"-32", "% ld"},
+  {__LINE__, -0x0003617,	"-13847", "% d"},
+  {__LINE__, 0x00000014,	"14  ", "%-4.X"},
+  {__LINE__, 0x00000001,	"001", "%0.3d"},
+  {__LINE__, 0xfffffea9,	"fffffea9", "%3.x"},
+  {__LINE__, 0xe447099e,	"E447099E", "%0X"},
+  {__LINE__, 0x00049c71,	"302193", "%d"},
+  {__LINE__, 0x76356ed3,	"0x76356ed3", "%#4.1x"},
+  {__LINE__, 0x00000005,	"  0X5", "%#5X"},
+  {__LINE__, 0x00004da2,	"0x004da2", "%#1.6x"},
+  {__LINE__, 0xffdfb36c,	"FFDFB36C", "%4X"},
+  {__LINE__, 0xffffe3c5,	"FFFFE3C5", "%+4.X"},
+  {__LINE__, 0x00000006,	"6", "%0x"},
+  {__LINE__, -0x914ff17,	"-152370967", "% .5ld"},
+  {__LINE__, -0x0000002,	"-2", "%0ld"},
+  {__LINE__, 0xffffff36,	"FFFFFF36", "% 2X"},
+  {__LINE__, -0x0bb1598,	"-12260760", "%-ld"},
+  {__LINE__, 0x00006db5,	"28085", "%0.5ld"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%x"},
+  {__LINE__, -0x0000001,	"-1", "%0ld"},
+  {__LINE__, 0x0fa37e79,	"FA37E79", "%1.X"},
+  {__LINE__, -0x00000ac,	"-172", "%.2d"},
+  {__LINE__, 0xffffffd8,	"ffffffd8", "%.7x"},
+  {__LINE__, -0x000a513,	"-42259", "%ld"},
+  {__LINE__, 0x00001294,	"4756", "%2ld"},
+  {__LINE__, -0x56bae0b4,	"-1455087796", "%.1ld"},
+  {__LINE__, 0x3b26d5fa,	"3b26d5fa", "%x"},
+  {__LINE__, 0xff657013,	"ff657013", "%x"},
+  {__LINE__, -0x00005f5,	"-1525", "%0.0ld"},
+  {__LINE__, -0x0000001,	"     -1", "% 7d"},
+  {__LINE__, -0x02396b2,	"-2332338", "%d"},
+  {__LINE__, -0x0000003,	"-000003", "%+7.6d"},
+  {__LINE__, 0xfd3ec7c1,	"fd3ec7c1", "% 3.4x"},
+  {__LINE__, -0x076e338,	"-7791416", "%0.d"},
+  {__LINE__, -0x000015e,	"-350", "%3ld"},
+  {__LINE__, 0x0a0f0b71,	"a0f0b71", "%x"},
+  {__LINE__, 0xfffe00ba,	"FFFE00BA", "%X"},
+  {__LINE__, 0x00036bd8,	" 36bd8", "% 06.x"},
+  {__LINE__, 0xfffff2df,	"0XFFFFF2DF", "%#2.6X"},
+  {__LINE__, 0x004687fb,	"4622331", "%ld"},
+  {__LINE__, -0x0000331,	"  -817", "%+6.d"},
+  {__LINE__, 0xfcd5b090,	"fcd5b090", "%+0x"},
+  {__LINE__, 0x0334f94c,	"334F94C", "%.6X"},
+  {__LINE__, 0x00000bce,	"3022", "%.3ld"},
+  {__LINE__, 0xf28d9ddd,	"f28d9ddd", "%x"},
+  {__LINE__, 0x00003a79,	" 14969", "% ld"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%.7X"},
+  {__LINE__, 0x0043d7fe,	"43D7FE", "%X"},
+  {__LINE__, -0x0000b82,	"-2946", "%-ld"},
+  {__LINE__, -0x00e29d8,	"-928216", "%d"},
+  {__LINE__, 0xffffffec,	"ffffffec", "%-x"},
+  {__LINE__, 0x0aeaf557,	"0xaeaf557", "%-#x"},
+  {__LINE__, 0x00c07fe6,	"C07FE6", "%X"},
+  {__LINE__, 0x307414d8,	"307414d8", "% 0x"},
+  {__LINE__, -0x045ef67,	"-4583271", "%d"},
+  {__LINE__, 0x0000024a,	" 0000586", "% .7d"},
+  {__LINE__, 0xfffffc42,	"fffffc42", "%x"},
+  {__LINE__, 0xfc38c249,	"fc38c249", "%5.x"},
+  {__LINE__, -0x000d096,	"-53398", "%-d"},
+  {__LINE__, -0x213a345,	"-34841413", "%ld"},
+  {__LINE__, -0x0000130,	"-304", "%ld"},
+  {__LINE__, -0x000efd1,	"-61393", "%ld"},
+  {__LINE__, 0xfffff867,	"FFFFF867", "%2X"},
+  {__LINE__, 0x00113ed0,	"0x113ed0", "%-#7x"},
+  {__LINE__, 0x00000677,	" 1655", "% 3.ld"},
+  {__LINE__, 0x0000002f,	"2f", "%x"},
+  {__LINE__, 0xfffffd38,	"fffffd38", "%-4x"},
+  {__LINE__, -0x000b3cc,	"-46028", "%1.2d"},
+  {__LINE__, 0x45da719b,	"45DA719B", "%+0X"},
+  {__LINE__, -0x000a454,	" -42068", "%7.3ld"},
+  {__LINE__, 0x01cc7c30,	" 30178352", "% d"},
+  {__LINE__, -0x05ae80e,	"-5957646", "%#.4ld"},
+  {__LINE__, 0x000000b9,	"185", "%d"},
+  {__LINE__, 0x003fcaf4,	"4180724", "%1.ld"},
+  {__LINE__, 0x02da1b74,	"2DA1B74", "%X"},
+  {__LINE__, 0xffffffd9,	"FFFFFFD9", "%X"},
+  {__LINE__, 0x00064359,	"64359 ", "%-6X"},
+  {__LINE__, 0x000000f0,	"240", "%ld"},
+  {__LINE__, -0x01715e5,	"-1512933", "%ld"},
+  {__LINE__, 0xc8f6e118,	"0XC8F6E118", "%#X"},
+  {__LINE__, 0xfffffd8f,	"FFFFFD8F", "%X"},
+  {__LINE__, 0x0000176d,	"5997  ", "%-6d"},
+  {__LINE__, 0x00003cab,	"0x3cab", "%#0.3x"},
+  {__LINE__, 0x00000001,	" 1", "% d"},
+  {__LINE__, 0xfffff610,	"0XFFFFF610", "%#X"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%5.7X"},
+  {__LINE__, 0x00000001,	"1", "%0x"},
+  {__LINE__, 0x00000001,	"00001", "%.5ld"},
+  {__LINE__, -0x0000d51,	"-3409", "%d"},
+  {__LINE__, -0x08639ee,	"-8796654", "%ld"},
+  {__LINE__, 0x00003121,	"12577", "%#1.2ld"},
+  {__LINE__, 0x0000004e,	"78", "%d"},
+  {__LINE__, 0xfffff64f,	"fffff64f", "%-x"},
+  {__LINE__, 0x0000002a,	"2a", "%0x"},
+  {__LINE__, 0x00000020,	"20", "%x"},
+  {__LINE__, -0x00000b8,	"-184", "%#ld"},
+  {__LINE__, 0x0000000a,	"10", "%-#d"},
+  {__LINE__, 0x00000364,	"868", "%.1ld"},
+  {__LINE__, 0x00d1f9b6,	"D1F9B6", "%0.X"},
+  {__LINE__, 0x008cfda1,	"8CFDA1", "% 6.X"},
+  {__LINE__, 0xffd58cce,	"FFD58CCE", "%X"},
+  {__LINE__, 0x00000008,	"0000008", "%6.7ld"},
+  {__LINE__, 0x00000318,	" 318", "%4X"},
+  {__LINE__, 0x000172d8,	"94936", "%2ld"},
+  {__LINE__, -0x056ccbf,	"-5688511", "%ld"},
+  {__LINE__, 0x000000c7,	"+000199", "%+0.6d"},
+  {__LINE__, 0x00000002,	"0X2", "%-#X"},
+  {__LINE__, 0xfffff634,	"FFFFF634", "%.1X"},
+  {__LINE__, -0x00001f3,	"-499", "%-ld"},
+  {__LINE__, -0x000081b,	"-2075", "%-d"},
+  {__LINE__, 0x000000b5,	"181", "%0d"},
+  {__LINE__, 0xfe961ee8,	"fe961ee8", "%0x"},
+  {__LINE__, 0x000028a2,	"10402", "%d"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%.4X"},
+  {__LINE__, -0x000058a,	"-1418", "%.3ld"},
+  {__LINE__, 0x00001ceb,	"1CEB", "%X"},
+  {__LINE__, 0x00000021,	"21", "% X"},
+  {__LINE__, 0x00000002,	"2", "%0d"},
+  {__LINE__, -0x2f9bbf5,	"-49921013", "%.4ld"},
+  {__LINE__, 0x00000e91,	"03729", "%#.5ld"},
+  {__LINE__, 0xf1116740,	"f1116740", "%2x"},
+  {__LINE__, 0x00014f72,	"14F72", "%X"},
+  {__LINE__, 0xfffffced,	"FFFFFCED", "%X"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%.5x"},
+  {__LINE__, 0x0017cf0c,	" 1560332", "% 0ld"},
+  {__LINE__, 0x0000000a,	"A", "% X"},
+  {__LINE__, 0xff3a39d4,	"ff3a39d4", "%x"},
+  {__LINE__, 0xfffef05f,	"FFFEF05F", "%X"},
+  {__LINE__, 0xfedfe708,	"fedfe708", "%03.0x"},
+  {__LINE__, 0x000345a0,	"345A0", "% X"},
+  {__LINE__, -0x1ed5b6f7,	"-517322487", "%d"},
+  {__LINE__, 0xd2d56c22,	"D2D56C22", "%0.X"},
+  {__LINE__, 0x00002cbf,	"2CBF", "%.2X"},
+  {__LINE__, 0x00000db4,	"db4", "%3x"},
+  {__LINE__, -0x000b154,	"-45396", "%d"},
+  {__LINE__, 0x002bf4c7,	"2BF4C7", "%X"},
+  {__LINE__, 0x6954abf4,	"+1767156724", "%+d"},
+  {__LINE__, 0xfffffffb,	"fffffffb", "%x"},
+  {__LINE__, -0x29e0050e,	"-702547214", "%-0ld"},
+  {__LINE__, -0x0014989,	"-84361", "%-#0.3ld"},
+  {__LINE__, 0x001a557c,	"+1725820", "%+6.5d"},
+  {__LINE__, -0x56689a81,	"-1449695873", "%.2d"},
+  {__LINE__, 0x00000016,	"   16", "%05.X"},
+  {__LINE__, 0x0001da1e,	" 121374", "% d"},
+  {__LINE__, -0x04deac7,	"-5106375", "%03.4d"},
+  {__LINE__, 0x000012b1,	"4785", "%d"},
+  {__LINE__, 0x0009a116,	"9a116", "%-x"},
+  {__LINE__, -0x0000003,	"-000003", "%4.6ld"},
+  {__LINE__, 0x00000000,	"", "%.0x"},
+  {__LINE__, 0x0000000a,	"  A", "% 3X"},
+  {__LINE__, 0xfffffff0,	"0xfffffff0", "%-#0.1x"},
+  {__LINE__, 0x00000086,	"86", "%0X"},
+  {__LINE__, 0x0000001f,	"31", "%-d"},
+  {__LINE__, 0x0386f706,	"59176710", "%3.6ld"},
+  {__LINE__, 0xffe437ae,	"0XFFE437AE", "%#X"},
+  {__LINE__, 0x0e5405c6,	"e5405c6", "%-x"},
+  {__LINE__, 0xfffdee46,	"FFFDEE46", "%+X"},
+  {__LINE__, 0xff861e9d,	"FF861E9D", "%5.X"},
+  {__LINE__, 0xfffff570,	"FFFFF570", "%-X"},
+  {__LINE__, 0x045c90bd,	"45c90bd", "%0x"},
+  {__LINE__, 0x000000aa,	"AA", "%+X"},
+  {__LINE__, -0x747262e,	"-122103342", "%0ld"},
+  {__LINE__, 0xffffad89,	"FFFFAD89", "%X"},
+  {__LINE__, 0x00000018,	"18", "%0.2X"},
+  {__LINE__, 0x00057a2d,	" 358957", "% #7.d"},
+  {__LINE__, 0x73a0e21d,	"1939923485", "%ld"},
+  {__LINE__, -0x00021e1,	"-8673", "%0d"},
+  {__LINE__, 0x000000e9,	"   233", "% 06.3ld"},
+  {__LINE__, 0xffffcc0d,	"ffffcc0d", "%x"},
+  {__LINE__, 0x00000052,	"52", "%x"},
+  {__LINE__, 0x01c155af,	"1C155AF", "%.5X"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%0.x"},
+  {__LINE__, -0x00400a4,	"-262308", "%-d"},
+  {__LINE__, -0x0000001,	"-0000001", "%#.7ld"},
+  {__LINE__, 0x01fb9c99,	"1fb9c99", "% 03.5x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%6.x"},
+  {__LINE__, 0xff5e5eea,	"FF5E5EEA", "%X"},
+  {__LINE__, 0x0000000f,	"F", "%+0X"},
+  {__LINE__, 0xfffffe3a,	"fffffe3a", "% x"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%-X"},
+  {__LINE__, -0x0000007,	"-7", "%0ld"},
+  {__LINE__, -0x002f635,	"-194101", "%d"},
+  {__LINE__, -0x0000005,	"-5", "%ld"},
+  {__LINE__, -0x0000059,	"-89", "%0ld"},
+  {__LINE__, -0x1ccda96,	"-30202518", "%d"},
+  {__LINE__, -0x0000002,	"-2", "%-d"},
+  {__LINE__, 0xffffffda,	"0XFFFFFFDA", "%#X"},
+  {__LINE__, 0x00036cc5,	"224453", "%#d"},
+  {__LINE__, 0x00000010,	"+16", "%+ld"},
+  {__LINE__, 0x0b6039c7,	"190855623", "%d"},
+  {__LINE__, -0x0000002,	"-002", "%#.3d"},
+  {__LINE__, 0xfff3e746,	"FFF3E746", "%-4X"},
+  {__LINE__, 0x0361b3de,	"361B3DE", "% 04X"},
+  {__LINE__, 0xffffe6a2,	"ffffe6a2", "%-x"},
+  {__LINE__, 0x00032790,	"0x0032790", "%#7.7x"},
+  {__LINE__, 0xffe33b4e,	"ffe33b4e", "%-0x"},
+  {__LINE__, -0x0094663,	"-607843", "%.3ld"},
+  {__LINE__, -0x00a3efa,	"-671482", "%4d"},
+  {__LINE__, 0x000000e6,	"   00E6", "%7.4X"},
+  {__LINE__, 0x000125cb,	"125CB", "%+X"},
+  {__LINE__, 0x0000b97e,	"b97e", "%x"},
+  {__LINE__, -0x0000039,	"-57", "%+ld"},
+  {__LINE__, 0xffffe39a,	"ffffe39a", "%5.4x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%6.1x"},
+  {__LINE__, -0xdee910c,	"-233738508", "%-#2d"},
+  {__LINE__, -0x14044930,	"-335825200", "%6.ld"},
+  {__LINE__, 0x00a81259,	"a81259", "%x"},
+  {__LINE__, 0x020e74c6,	"20E74C6", "%X"},
+  {__LINE__, -0x00000fb,	"-251", "%01.d"},
+  {__LINE__, 0x034ceb45,	"34CEB45", "%5.X"},
+  {__LINE__, 0xfeacb66a,	"feacb66a", "% x"},
+  {__LINE__, 0x00003eb6,	"3EB6", "% X"},
+  {__LINE__, 0x000009ef,	"9ef", "% x"},
+  {__LINE__, 0xf9d9dd07,	"F9D9DD07", "%0X"},
+#ifndef __PCCNECV70__
+
+  {__LINE__, 0x000154d7,	"087255", "%.6ld"},
+  {__LINE__, -0x000036e,	"-878", "%-ld"},
+  {__LINE__, -0x0007dcc,	"-32204", "% d"},
+  {__LINE__, 0x000019dc,	"6620", "%d"},
+  {__LINE__, 0xffffff6e,	"FFFFFF6E", "%2X"},
+  {__LINE__, 0x00000016,	"0x16", "%-#x"},
+  {__LINE__, 0xffdb3e96,	"ffdb3e96", "%+.5x"},
+  {__LINE__, 0xffffffef,	"FFFFFFEF", "% 04.X"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%5X"},
+  {__LINE__, 0x000c08cd,	"C08CD", "%-X"},
+  {__LINE__, 0x18de71ee,	"18de71ee", "%x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "% x"},
+  {__LINE__, -0x00025bd,	"-009661", "%#.6d"},
+  {__LINE__, 0x2f05de14,	" 788913684", "% 6.4ld"},
+  {__LINE__, 0x0c99cf86,	"211406726", "%.5d"},
+  {__LINE__, 0x09e6a21d,	" 166109725", "% 0d"},
+  {__LINE__, -0x013da65,	"-1301093", "%+ld"},
+  {__LINE__, 0x000003d0,	" 976", "% 4.2d"},
+  {__LINE__, -0xef9e3cc,	"-251257804", "%-7.0d"},
+  {__LINE__, 0x0000000c,	"+12", "%+00ld"},
+  {__LINE__, 0xffffffe2,	"ffffffe2", "%x"},
+  {__LINE__, 0x000000fe,	"fe", "%-x"},
+  {__LINE__, 0xfffffc5f,	"fffffc5f", "%x"},
+  {__LINE__, -0x0005c55,	"-23637", "%d"},
+  {__LINE__, -0x0111ff2,	"-1122290", "% 7.d"},
+  {__LINE__, -0x1a1746e5,	"-437733093", "%.4ld"},
+  {__LINE__, 0x00001007,	"004103", "%00.6d"},
+  {__LINE__, 0xffffffe1,	"ffffffe1", "%x"},
+  {__LINE__, 0x0000d80f,	"55311", "%d"},
+  {__LINE__, 0x00000004,	"4", "%+X"},
+  {__LINE__, 0xfffffffd,	"fffffffd", "%6x"},
+  {__LINE__, -0x2afbcc3c,	"-721144892", "%4.6ld"},
+  {__LINE__, 0x00377f96,	"377F96", "%6.X"},
+  {__LINE__, 0xffffffc8,	"FFFFFFC8", "%0X"},
+  {__LINE__, 0x007ed9d1,	"8313297", "%-3d"},
+  {__LINE__, 0x00000000,	"0", "%-X"},
+  {__LINE__, 0x001e122d,	"1970733", "%01.d"},
+  {__LINE__, -0x000029b,	"-667", "%ld"},
+  {__LINE__, -0x002f563,	"-193891", "% 2.5d"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%+3.7x"},
+  {__LINE__, 0xfff7658c,	"fff7658c", "%x"},
+  {__LINE__, -0x0006d08,	"-0027912", "%7.7ld"},
+  {__LINE__, 0x00000080,	"80", "%X"},
+  {__LINE__, 0x0000078f,	"  1935", "% 6ld"},
+  {__LINE__, 0xfffffffb,	"FFFFFFFB", "% X"},
+  {__LINE__, 0x000000ae,	"     AE", "%7.X"},
+  {__LINE__, -0x000d6aa,	"-54954", "%-ld"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%6.X"},
+  {__LINE__, 0x000003bf,	"+959", "%+d"},
+  {__LINE__, -0x7242d04b,	"-1916981323", "% ld"},
+  {__LINE__, 0xf0e6546f,	"F0E6546F", "% .7X"},
+  {__LINE__, 0x047e196a,	"75372906", "%ld"},
+  {__LINE__, 0x0240174e,	"240174E", "%+0X"},
+  {__LINE__, -0x0000006,	"-006", "%.3ld"},
+  {__LINE__, 0x00068aac,	"428716", "%#ld"},
+  {__LINE__, 0xffffffa1,	"ffffffa1", "%0x"},
+  {__LINE__, 0x000adab3,	"adab3", "%x"},
+  {__LINE__, -0x00000ae,	"-0000174", "%7.7ld"},
+  {__LINE__, 0x0f0a8f4b,	"f0a8f4b", "% x"},
+  {__LINE__, 0xfee229bc,	"fee229bc", "%x"},
+  {__LINE__, -0x275b8455,	"-660309077", "%.2ld"},
+  {__LINE__, -0xca4b2a5,	"-212120229", "%d"},
+  {__LINE__, 0x000000b5,	" 181", "%04.d"},
+  {__LINE__, 0xfff213f2,	"FFF213F2", "%X"},
+  {__LINE__, 0x00000003,	"3", "%-X"},
+  {__LINE__, 0x0ebb978b,	"247175051", "%.6ld"},
+  {__LINE__, 0xffffffca,	"FFFFFFCA", "%X"},
+  {__LINE__, -0x0000003,	"-03", "%+0.2d"},
+  {__LINE__, -0x178ff86,	"-24706950", "%+d"},
+  {__LINE__, 0x0000003c,	"     60", "%7.ld"},
+  {__LINE__, -0x001012d,	"-65837", "%.5d"},
+  {__LINE__, 0x03673fd2,	"3673fd2", "%.5x"},
+  {__LINE__, -0x001fe74,	"-130676", "%#0.6ld"},
+  {__LINE__, 0x004f6226,	"4f6226", "%-0x"},
+  {__LINE__, 0xfffffa0f,	"fffffa0f", "%7x"},
+  {__LINE__, 0xfffffff8,	"fffffff8", "%-.6x"},
+  {__LINE__, -0x0000001,	"-1", "%#d"},
+  {__LINE__, 0xffffe43d,	"ffffe43d", "%7x"},
+  {__LINE__, 0x00009d47,	"0040263", "%7.7ld"},
+  {__LINE__, 0xff0fc79f,	"FF0FC79F", "%-4.X"},
+  {__LINE__, 0x2d610907,	"2d610907", "%x"},
+  {__LINE__, -0x00002de,	"-734", "%04d"},
+  {__LINE__, 0x0000036b,	"    36B", "%7.1X"},
+  {__LINE__, 0x00000002,	"2", "%.0x"},
+  {__LINE__, -0x1f577b3e,	"-525826878", "%d"},
+  {__LINE__, 0x0000002d,	"45", "%#ld"},
+  {__LINE__, 0xfffffffb,	"fffffffb", "%x"},
+  {__LINE__, -0x0000004,	"-4", "%-.0d"},
+  {__LINE__, 0x00016ba4,	"16ba4", "%x"},
+  {__LINE__, -0x1ad853d5,	"-450384853", "% 0ld"},
+  {__LINE__, 0x00366899,	"366899", "%2.x"},
+  {__LINE__, 0x1659158b,	"1659158B", "%X"},
+  {__LINE__, 0x000076c7,	"76c7", "%x"},
+  {__LINE__, 0x00000674,	"674", "%0x"},
+  {__LINE__, 0x016c9d8a,	"+23895434", "%+ld"},
+  {__LINE__, 0xfffffc43,	"FFFFFC43", "%0X"},
+  {__LINE__, 0xfff249d2,	"fff249d2", "%-2.x"},
+  {__LINE__, 0xffffffdd,	"ffffffdd", "%5x"},
+  {__LINE__, 0xffffa7ef,	"FFFFA7EF", "%0.3X"},
+  {__LINE__, 0x030d4d06,	"30d4d06", "%x"},
+  {__LINE__, -0x0e4694b,	"-14969163", "%d"},
+  {__LINE__, 0x00000078,	"120", "%.3ld"},
+  {__LINE__, -0x16c1273e,	"-381757246", "%0d"},
+  {__LINE__, 0xffffd183,	"FFFFD183", "% 0X"},
+  {__LINE__, -0x2dfdadd,	"-48224989", "%ld"},
+  {__LINE__, -0x5767fe5c,	"-1466433116", "%ld"},
+  {__LINE__, 0x01bea036,	"29270070", "%#4.3d"},
+  {__LINE__, 0x00000027,	"27", "%-x"},
+  {__LINE__, 0x0004d183,	"4D183", "%X"},
+  {__LINE__, 0xffdaf9c8,	"FFDAF9C8", "%.7X"},
+  {__LINE__, 0xfffffd95,	"fffffd95", "%x"},
+  {__LINE__, -0x0059acb,	"-367307", "%00.d"},
+  {__LINE__, 0x017d8db4,	"17d8db4", "% 05.x"},
+  {__LINE__, 0x0001f084,	"001F084", "%5.7X"},
+  {__LINE__, 0x00000006,	" 6", "% ld"},
+  {__LINE__, 0x011b0802,	"18548738", "%.3ld"},
+  {__LINE__, 0x00000006,	"  6", "%#3.d"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%6x"},
+  {__LINE__, 0x00000001,	"1", "% x"},
+  {__LINE__, 0x00000750,	" 01872", "% .5d"},
+  {__LINE__, 0xfffffff9,	"fffffff9", "%x"},
+  {__LINE__, -0x00f842c,	"-1016876", "%+d"},
+  {__LINE__, -0x001dcf0,	"-122096", "%-0d"},
+  {__LINE__, 0x000000c9,	"0XC9", "% #3X"},
+  {__LINE__, 0x1e368e86,	"1e368e86", "%7x"},
+  {__LINE__, -0x0001157,	"-4439", "% 03.4d"},
+  {__LINE__, 0xfff91e87,	"FFF91E87", "%3.5X"},
+  {__LINE__, 0x00000006,	"6", "%x"},
+  {__LINE__, 0x00000bca,	"3018", "%ld"},
+  {__LINE__, 0x00495ff6,	"495ff6", "%01.0x"},
+  {__LINE__, -0x0267f7a,	"-2523002", "% #5d"},
+  {__LINE__, 0x00000060,	"96", "%-d"},
+  {__LINE__, 0x000850c6,	"544966", "%#.1d"},
+  {__LINE__, 0x00231457,	"231457", "%-6.4X"},
+  {__LINE__, 0x0000000b,	"11", "%-d"},
+  {__LINE__, 0x000003bd,	"957", "%#d"},
+  {__LINE__, 0xfd51d970,	"FD51D970", "%+.7X"},
+  {__LINE__, 0x000007bf,	"1983", "%-ld"},
+  {__LINE__, 0x000034b2,	"34B2", "%0.X"},
+  {__LINE__, 0x0000c18d,	"C18D", "%0.X"},
+  {__LINE__, 0xffffbb83,	"ffffbb83", "% 3x"},
+  {__LINE__, 0x000001d0,	"0x1d0", "%#x"},
+  {__LINE__, -0x003c784,	"-247684", "%#ld"},
+  {__LINE__, 0x0210cffa,	"210CFFA", "%X"},
+  {__LINE__, -0x33093a1,	"-53515169", "% 0d"},
+  {__LINE__, 0x00000001,	" 1", "% #ld"},
+  {__LINE__, 0xffffaa53,	"ffffaa53", "%-4.5x"},
+  {__LINE__, 0x2935c056,	"691388502", "%1.d"},
+  {__LINE__, -0x0000001,	"-1", "%ld"},
+  {__LINE__, 0x000013d1,	"0X013D1", "%+#2.5X"},
+  {__LINE__, -0x000035c,	"-860", "%-.2d"},
+  {__LINE__, 0x00000000,	"    ", "%-4.X"},
+  {__LINE__, -0x0000147,	"-327", "%d"},
+  {__LINE__, 0x0a317eb0,	"171015856", "%.7d"},
+  {__LINE__, 0x00000003,	"3", "%ld"},
+  {__LINE__, 0x000001d6,	"1d6", "%-x"},
+  {__LINE__, 0x18185214,	"404247060", "%-.2ld"},
+  {__LINE__, 0x00574140,	"0574140", "%.7X"},
+  {__LINE__, 0x00002ea5,	"02ea5", "%.5x"},
+  {__LINE__, 0x00000005,	"5", "% x"},
+  {__LINE__, 0xffc47ed6,	"ffc47ed6", "%-x"},
+  {__LINE__, 0x0001f5da,	"0X1F5DA", "%#X"},
+  {__LINE__, 0xfffffcc9,	"fffffcc9", "% x"},
+  {__LINE__, 0x02586c98,	"2586C98", "%X"},
+  {__LINE__, -0x0000036,	"-54", "% ld"},
+  {__LINE__, 0x00064b57,	"412503", "%1.5d"},
+  {__LINE__, -0x0000007,	"-7", "%#0.0ld"},
+  {__LINE__, 0x00023a03,	"145923", "%ld"},
+  {__LINE__, -0x0000065,	"-101", "%+#d"},
+  {__LINE__, 0x00000208,	"208", "%X"},
+  {__LINE__, 0x00e97728,	"15300392", "%-ld"},
+  {__LINE__, 0x0000030a,	"+778", "%+d"},
+  {__LINE__, 0xf4d7deee,	"F4D7DEEE", "%+X"},
+  {__LINE__, -0x000009a,	"-154", "%+.3ld"},
+  {__LINE__, 0x000002c0,	"+704", "%+ld"},
+  {__LINE__, 0x0067ec23,	"67ec23", "%x"},
+  {__LINE__, 0x005ca7fc,	"+6072316", "%+d"},
+  {__LINE__, 0xfffff5f1,	"fffff5f1", "%x"},
+  {__LINE__, 0x00000601,	"  0X601", "%#7.2X"},
+  {__LINE__, -0x0000057,	"-87", "% ld"},
+  {__LINE__, -0x0000078,	"   -120", "%7.d"},
+  {__LINE__, -0x000001f,	"-31   ", "%-6d"},
+  {__LINE__, 0x0160c000,	"23117824", "%ld"},
+  {__LINE__, -0x0000007,	"-7", "%0ld"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%+x"},
+  {__LINE__, 0x5b6ef898,	"5b6ef898", "%+0x"},
+  {__LINE__, 0x0009bfb6,	"638902", "%d"},
+  {__LINE__, -0x0000145,	"  -325", "%#6.0d"},
+  {__LINE__, -0x508c048,	"-84459592", "%-5.ld"},
+  {__LINE__, 0x00000002,	" 0x2", "% #4x"},
+  {__LINE__, 0x0001486e,	"84078", "%#d"},
+  {__LINE__, 0x006ac76a,	"6997866", "%.6d"},
+  {__LINE__, 0xffffff98,	"FFFFFF98", "%X"},
+  {__LINE__, 0xfffffe08,	"fffffe08", "%6.x"},
+  {__LINE__, -0x24ef47e,	"-38728830", "%1.6ld"},
+  {__LINE__, 0x39d1b2db,	"39D1B2DB", "% X"},
+  {__LINE__, 0xfffc9ce2,	"0xfffc9ce2", "%#x"},
+  {__LINE__, 0x59485e14,	"1497914900", "%#4ld"},
+  {__LINE__, 0x000022eb,	"22EB", "%3.X"},
+  {__LINE__, 0xfa410352,	"FA410352", "%-X"},
+  {__LINE__, -0x4a342f0,	"-77808368", "% ld"},
+  {__LINE__, 0xef5825a4,	"EF5825A4", "%.6X"},
+  {__LINE__, 0x01b0185a,	"0x1b0185a", "% #x"},
+  {__LINE__, -0x0004290,	"-17040", "%.3d"},
+  {__LINE__, -0x10f88659,	"-284722777", "%+6.2ld"},
+  {__LINE__, 0x00003216,	"12822", "%-d"},
+  {__LINE__, 0x4a31a219,	"1244766745", "%d"},
+  {__LINE__, 0xffffffb5,	"FFFFFFB5", "%-X"},
+  {__LINE__, 0x0000d586,	"D586", "%-2.X"},
+  {__LINE__, 0x00008496,	"33942", "%1.d"},
+  {__LINE__, -0x0000011,	"-17", "%1ld"},
+  {__LINE__, 0x0000003c,	"3C", "%2.X"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%.3X"},
+  {__LINE__, 0x0000152a,	"152A", "%X"},
+  {__LINE__, 0xfffe876e,	"FFFE876E", "%X"},
+  {__LINE__, -0x0003874,	"-14452", "%-ld"},
+  {__LINE__, -0x004918a,	"-299402", "%#.6d"},
+  {__LINE__, -0x000000c,	"-12", "%-d"},
+  {__LINE__, 0xffffd812,	"FFFFD812", "%+X"},
+  {__LINE__, -0x000000c,	"-12", "%0d"},
+  {__LINE__, -0x0000229,	"-553", "%0d"},
+  {__LINE__, 0x00002ab8,	"2AB8", "%4.X"},
+  {__LINE__, 0x0000004b,	"+75", "%+ld"},
+  {__LINE__, 0x001c3178,	" 1847672", "% ld"},
+  {__LINE__, -0x0000006,	"-6", "%.0ld"},
+  {__LINE__, 0x0003be65,	"245349", "%ld"},
+  {__LINE__, -0x0000001,	"-1", "%#1ld"},
+  {__LINE__, 0x0000007f,	"+127", "%+ld"},
+  {__LINE__, 0x0000020e,	"526  ", "%-5ld"},
+  {__LINE__, 0x00000002,	"2", "%d"},
+  {__LINE__, 0x03bd0873,	"0X3BD0873", "%#X"},
+  {__LINE__, 0x00093a52,	"604754", "%-2d"},
+  {__LINE__, -0x00823fc,	"-0533500", "%+.7ld"},
+  {__LINE__, 0x00000000,	"    ", "%4.X"},
+  {__LINE__, -0x0000001,	"-1", "%ld"},
+  {__LINE__, 0xfff09ede,	"fff09ede", "%-x"},
+  {__LINE__, 0x01e28c24,	"31624228", "%ld"},
+  {__LINE__, 0x00001dcc,	"1DCC", "%X"},
+  {__LINE__, -0x0f0ea0d,	"-15788557", "%-00.ld"},
+  {__LINE__, 0xffff73a1,	"FFFF73A1", "%X"},
+  {__LINE__, -0x0004040,	"-16448", "%+#d"},
+  {__LINE__, 0x0073b158,	"0x73b158", "%#7x"},
+  {__LINE__, 0xfffff8ff,	"FFFFF8FF", "% 5X"},
+  {__LINE__, -0x0000004,	"-4", "%0d"},
+  {__LINE__, 0xffff56a3,	"ffff56a3", "%1.6x"},
+  {__LINE__, -0x0000041,	"-65", "%0d"},
+  {__LINE__, 0x00000009,	"+0000009", "%+2.7d"},
+  {__LINE__, 0xffffe13d,	"0XFFFFE13D", "%+#2.X"},
+  {__LINE__, -0x00002ce,	"-00718", "%.5ld"},
+  {__LINE__, 0xffc53e28,	"ffc53e28", "%03.4x"},
+  {__LINE__, 0x00000005,	"0X5", "%#X"},
+  {__LINE__, 0x00000004,	"4", "%x"},
+  {__LINE__, 0xe21b35eb,	"e21b35eb", "%-x"},
+  {__LINE__, -0x0000098,	"-152", "%-ld"},
+  {__LINE__, 0xffffff81,	"FFFFFF81", "%2X"},
+  {__LINE__, 0x00000003,	"00003", "%.5ld"},
+  {__LINE__, 0xfffffffc,	"fffffffc", "%+x"},
+  {__LINE__, 0x000491f5,	"299509", "%1.ld"},
+  {__LINE__, 0xf06bfd7d,	"F06BFD7D", "%X"},
+  {__LINE__, -0x0000006,	"-6", "%0d"},
+  {__LINE__, -0x0a4af7d,	"-10792829", "%-0d"},
+  {__LINE__, -0x11a74ef,	"-18511087", "%ld"},
+  {__LINE__, 0x2dc95e17,	"768171543", "%-1.d"},
+  {__LINE__, -0x0000001,	"-1", "%#ld"},
+  {__LINE__, 0x00000033,	"51", "%-#d"},
+  {__LINE__, 0x002d0219,	"2949657", "%ld"},
+  {__LINE__, 0xfffffffd,	"FFFFFFFD", "%2.4X"},
+  {__LINE__, 0x00000f20,	"+3872", "%+ld"},
+  {__LINE__, -0x0000047,	"-071", "%4.3ld"},
+  {__LINE__, 0x00000010,	"    16", "%6d"},
+  {__LINE__, 0x00000000,	"0", "%0d"},
+  {__LINE__, 0xffffff57,	"FFFFFF57", "%X"},
+  {__LINE__, -0x0000700,	"-1792", "%-#d"},
+  {__LINE__, -0x0000064,	"-100", "%-ld"},
+  {__LINE__, 0xff26d49a,	"FF26D49A", "%-0X"},
+  {__LINE__, -0x0000006,	"-6", "%.1ld"},
+  {__LINE__, 0x1391edc5,	"1391edc5", "%.1x"},
+  {__LINE__, 0x0000014a,	"330", "%-#ld"},
+  {__LINE__, 0x07ecd1e1,	"7ecd1e1", "%6x"},
+  {__LINE__, -0xa2b8898,	"-170625176", "%3.d"},
+  {__LINE__, 0x00035287,	"0x35287", "%#.0x"},
+  {__LINE__, 0x00000000,	"00000", "%0.5X"},
+  {__LINE__, -0x0000153,	"-339", "%d"},
+  {__LINE__, 0x0000ad6e,	" 44398", "% 0.d"},
+  {__LINE__, 0x00000001,	"1", "%-X"},
+  {__LINE__, -0x000000d,	"-13   ", "%-6.2d"},
+  {__LINE__, -0x01bff8a,	"-1834890", "%d"},
+  {__LINE__, 0x000a0fa8,	"+659368", "%+ld"},
+  {__LINE__, 0xac044dc0,	"ac044dc0", "%.0x"},
+  {__LINE__, 0x0003a729,	"239401", "%ld"},
+  {__LINE__, -0x00004f0,	"-1264", "%+ld"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, 0x00000012,	"12", "% x"},
+  {__LINE__, 0xffff770b,	"ffff770b", "%7.1x"},
+  {__LINE__, 0xd7458572,	"d7458572", "%x"},
+  {__LINE__, 0x01f1b4f9,	"1f1b4f9", "% 0x"},
+  {__LINE__, 0xfffb2198,	"0XFFFB2198", "% #1.X"},
+  {__LINE__, 0x00ef6189,	" 15688073", "% ld"},
+  {__LINE__, -0x3f0ae63,	"-66104931", "% #d"},
+  {__LINE__, -0x0006075,	"-24693", "%ld"},
+  {__LINE__, 0x000000a1,	"161", "%d"},
+  {__LINE__, 0xfffffffc,	"fffffffc", "%3.2x"},
+  {__LINE__, 0xff6b4125,	"FF6B4125", "%+5.X"},
+  {__LINE__, 0x00000001,	"     1", "%6.d"},
+  {__LINE__, -0x0000001,	"-1", "%+0d"},
+  {__LINE__, -0x000096c,	"-2412", "%0.4d"},
+  {__LINE__, 0x00039c6f,	"236655", "%.0d"},
+  {__LINE__, 0x3625286c,	"908404844", "%.1d"},
+  {__LINE__, 0xfffffffa,	"fffffffa", "%x"},
+  {__LINE__, 0x00000000,	"0", "%X"},
+  {__LINE__, 0x00c34353,	"12796755", "%#.4d"},
+  {__LINE__, 0x000002df,	"735", "%ld"},
+  {__LINE__, 0xffff38fa,	"FFFF38FA", "%5.1X"},
+  {__LINE__, -0x000002a,	"-42", "%0.d"},
+  {__LINE__, 0x0000077e,	"1918", "%ld"},
+  {__LINE__, 0x000001f7,	"503", "%ld"},
+  {__LINE__, 0x00000004,	"4", "%ld"},
+  {__LINE__, 0x0021fb02,	"2226946", "%d"},
+  {__LINE__, 0x007c858d,	"8160653", "%-0d"},
+  {__LINE__, -0x0000109,	"-265", "%.0d"},
+  {__LINE__, 0xfffffffa,	"fffffffa", "% x"},
+  {__LINE__, 0x0097932d,	"97932d", "%+x"},
+  {__LINE__, 0xfffbbd03,	"fffbbd03", "%-.5x"},
+  {__LINE__, -0x0000005,	"-5", "%0d"},
+  {__LINE__, 0x03ee3a95,	"65944213", "%ld"},
+  {__LINE__, -0x0000002,	" -00002", "%7.5d"},
+  {__LINE__, 0xea1a4e54,	"EA1A4E54", "%X"},
+  {__LINE__, -0x000a9d6,	"-43478", "%+d"},
+  {__LINE__, -0x0fd8d65,	"-16616805", "%5ld"},
+  {__LINE__, 0x00000001,	"1", "%-d"},
+  {__LINE__, 0x00000072,	"72", "%2.X"},
+  {__LINE__, 0xffffff94,	"FFFFFF94", "%X"},
+  {__LINE__, 0x00000d2a,	"D2A", "%+X"},
+  {__LINE__, 0xffff614f,	"ffff614f", "%x"},
+  {__LINE__, -0x0000018,	"-24", "%ld"},
+  {__LINE__, 0x0000003b,	"059", "%2.3d"},
+  {__LINE__, 0x0000001a,	"1A", "%0X"},
+  {__LINE__, -0x0000109,	"-265", "%02ld"},
+  {__LINE__, 0x00000f9d,	"3997", "%#1d"},
+  {__LINE__, 0x0000001b,	"1b", "%x"},
+  {__LINE__, 0xffffff07,	"ffffff07", "%x"},
+  {__LINE__, 0xfff1a425,	"0xfff1a425", "%#x"},
+  {__LINE__, 0x00000005,	"5", "%-1d"},
+  {__LINE__, -0x53a6efd,	"-87715581", "%ld"},
+  {__LINE__, 0x042f37db,	"42F37DB", "%6.X"},
+  {__LINE__, 0x00053bd5,	"+342997", "%+5ld"},
+  {__LINE__, 0xffffffff,	"ffffffff", "% x"},
+  {__LINE__, 0xffffffef,	"FFFFFFEF", "%6.X"},
+  {__LINE__, -0x10ec29a,	"-17744538", "%+2.d"},
+  {__LINE__, 0x01dcc901,	"1dcc901", "%x"},
+  {__LINE__, 0x0007dc68,	"515176", "%-3.d"},
+  {__LINE__, -0x0000062,	"-0098", "%#2.4d"},
+  {__LINE__, 0x00000000,	"   ", "%3.0X"},
+  {__LINE__, -0x00000de,	"-222", "%ld"},
+  {__LINE__, 0x000c1fb8,	"C1FB8", "%0X"},
+  {__LINE__, 0x0005bf58,	"5BF58", "%X"},
+  {__LINE__, -0x000dd1b,	"-56603", "%-03.1d"},
+  {__LINE__, 0x00000b14,	"B14", "%+3.X"},
+  {__LINE__, 0x00000799,	"799", "%-x"},
+  {__LINE__, 0xfffffffa,	"fffffffa", "%x"},
+  {__LINE__, 0x00000003,	"0x00003", "% #7.5x"},
+  {__LINE__, -0x002b9f1,	"-178673", "%+d"},
+  {__LINE__, -0x001b817,	"-112663", "%0d"},
+  {__LINE__, 0xf6f98533,	"f6f98533", "%.1x"},
+  {__LINE__, 0x00338ffc,	"3379196", "%d"},
+  {__LINE__, 0x0409e9b5,	"0X409E9B5", "%#X"},
+  {__LINE__, 0x00b8e98e,	" 12118414", "% 0d"},
+  {__LINE__, -0x002a8f6,	"-174326", "%ld"},
+  {__LINE__, 0x13bb9722,	"331061026", "%0d"},
+  {__LINE__, 0x00063c71,	"63c71", "%x"},
+  {__LINE__, 0xfffffe37,	"FFFFFE37", "%.1X"},
+  {__LINE__, 0xffff7b3e,	"ffff7b3e", "%+.1x"},
+  {__LINE__, 0x005eeab1,	"5eeab1", "%+x"},
+  {__LINE__, 0xffc69e99,	"ffc69e99", "%x"},
+  {__LINE__, -0x000005c,	"  -92", "%5ld"},
+  {__LINE__, 0x07d8fa8a,	"7d8fa8a", "%x"},
+  {__LINE__, 0x00030e0a,	"200202", "%-4.1d"},
+  {__LINE__, 0x00001dc1,	"1DC1", "%.0X"},
+  {__LINE__, 0x00000008,	"8", "%0ld"},
+  {__LINE__, -0x01b5397,	"-1790871", "%3.d"},
+  {__LINE__, 0x27fbb4b5,	"27fbb4b5", "%x"},
+  {__LINE__, -0xe3fdcfc,	"-239066364", "%4ld"},
+  {__LINE__, 0x0008bcb1,	"8bcb1", "%0x"},
+  {__LINE__, 0xffff039e,	"ffff039e", "%.6x"},
+  {__LINE__, 0x000d0bd4,	"d0bd4", "%-x"},
+  {__LINE__, 0x00000000,	"+0", "%+d"},
+  {__LINE__, -0x2a49ea4,	"-44342948", "%1d"},
+  {__LINE__, -0x0000055,	"-85", "%0d"},
+  {__LINE__, -0x0000a05,	"-2565", "%3.3ld"},
+  {__LINE__, -0x000000b,	"-11 ", "%-4d"},
+  {__LINE__, 0xfff30444,	"FFF30444", "%7.X"},
+  {__LINE__, 0x0000003f,	"63", "%-0d"},
+  {__LINE__, 0x00046779,	"46779", "%X"},
+  {__LINE__, 0x000028d7,	" 0X28D7", "%#7.X"},
+  {__LINE__, 0x00000019,	"   19", "%5x"},
+  {__LINE__, 0x0032291d,	"3287325", "%2.ld"},
+  {__LINE__, 0x00057afa,	"57AFA", "%X"},
+  {__LINE__, 0xfffe8c64,	"fffe8c64", "%3.4x"},
+  {__LINE__, -0x624110d6,	"-1648431318", "%+6d"},
+  {__LINE__, 0x0000001a,	"   26", "% 5.d"},
+  {__LINE__, 0xfffffffd,	"FFFFFFFD", "%6.X"},
+  {__LINE__, 0x00199490,	"1676432", "%-1d"},
+  {__LINE__, -0xfff8265,	"-268403301", "%-0ld"},
+  {__LINE__, 0x0000000e,	"e", "%-x"},
+  {__LINE__, 0x00c38aec,	"c38aec", "%x"},
+  {__LINE__, -0x00658f4,	"-415988", "%#ld"},
+  {__LINE__, 0x0066ac4e,	"6728782", "%0d"},
+  {__LINE__, 0xc4a808d5,	"c4a808d5", "%x"},
+  {__LINE__, 0x00000000,	"     0", "%6.1x"},
+  {__LINE__, 0x00066d24,	"66d24", "%x"},
+  {__LINE__, 0x00002117,	"2117", "%X"},
+  {__LINE__, 0xfe06fdf4,	"FE06FDF4", "%0X"},
+  {__LINE__, 0xfffffff9,	"fffffff9", "%x"},
+  {__LINE__, 0x1c6bb795,	"+476821397", "%+d"},
+  {__LINE__, 0xfffffba4,	"FFFFFBA4", "%X"},
+  {__LINE__, 0xfffd7d44,	"fffd7d44", "%0x"},
+  {__LINE__, 0x0019dd17,	"1694999", "%d"},
+  {__LINE__, 0x6475851e,	"0x6475851e", "% #7.x"},
+  {__LINE__, -0x00330d5,	"-209109", "%0ld"},
+  {__LINE__, 0x009f53f7,	"09F53F7", "%+6.7X"},
+  {__LINE__, -0x00172f9,	" -94969", "%7.5ld"},
+  {__LINE__, 0xffffffdc,	"FFFFFFDC", "%X"},
+  {__LINE__, -0x013bdec,	"-1293804", "%+#2ld"},
+  {__LINE__, 0xfff845c0,	"fff845c0", "%+7.x"},
+  {__LINE__, -0x0fbe712,	"-16508690", "%.7d"},
+  {__LINE__, 0xffffe13f,	"ffffe13f", "%x"},
+  {__LINE__, 0xbbc19951,	"BBC19951", "%-4X"},
+  {__LINE__, -0x28d6d1b,	"-42822939", "%#d"},
+  {__LINE__, -0x93cda6b,	"-154983019", "%-d"},
+  {__LINE__, 0xffc93342,	"FFC93342", "%7.X"},
+  {__LINE__, 0x072ac8b3,	" 120244403", "% ld"},
+  {__LINE__, 0xfff8d17b,	"FFF8D17B", "% X"},
+  {__LINE__, 0x00000da5,	"DA5", "%0.X"},
+  {__LINE__, 0x055ad3ac,	"0x55ad3ac", "%#1x"},
+  {__LINE__, 0x00000e5a,	" 3674", "% .4ld"},
+  {__LINE__, 0xffffff79,	"FFFFFF79", "%+X"},
+  {__LINE__, 0xffffe167,	"ffffe167", "%+5x"},
+  {__LINE__, 0x0000fa50,	"0064080", "%.7ld"},
+  {__LINE__, 0x00000001,	"1", "%-d"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%x"},
+  {__LINE__, 0x000009ac,	" 2476", "% #2.ld"},
+  {__LINE__, 0x00000e78,	"0003704", "%.7ld"},
+  {__LINE__, -0x000dfc3,	"-57283", "%6.d"},
+  {__LINE__, 0x00000ee0,	"EE0", "%0X"},
+  {__LINE__, -0x293703b3,	"-691471283", "%ld"},
+  {__LINE__, 0x000073e8,	"  73e8", "%6x"},
+  {__LINE__, 0xffffdffd,	"ffffdffd", "%5.5x"},
+  {__LINE__, 0x00000004,	"4", "%+00.x"},
+  {__LINE__, 0x00000008,	"0X8", "%#X"},
+  {__LINE__, 0x0003044c,	"3044c", "%0x"},
+  {__LINE__, 0xffc2095e,	"FFC2095E", "%0X"},
+  {__LINE__, 0x00000aac,	"0002732", "%-.7ld"},
+  {__LINE__, 0xffffff79,	"FFFFFF79", "%+1.X"},
+  {__LINE__, 0x53a0f94a,	" 1403058506", "% 2.4ld"},
+  {__LINE__, 0x000e928d,	"e928d", "%x"},
+  {__LINE__, 0x0024127a,	"2364026", "%5.d"},
+  {__LINE__, 0x000f7c1c,	" 1014812", "% 2.d"},
+  {__LINE__, -0x000003d,	"-61 ", "%-#4ld"},
+  {__LINE__, -0x0000122,	"-290", "%+ld"},
+  {__LINE__, 0x00000006,	"+6", "%+0d"},
+  {__LINE__, 0x00000129,	" 000129", "%7.6X"},
+  {__LINE__, 0x15d873e5,	" 366506981", "% 5.7d"},
+  {__LINE__, 0x00000001,	"1", "%d"},
+  {__LINE__, 0x038d6110,	"+59597072", "%+d"},
+  {__LINE__, 0x0f46ccc3,	"256298179", "%-1.4d"},
+  {__LINE__, 0xfe434d21,	"fe434d21", "%x"},
+  {__LINE__, -0x179797d7,	"-395810775", "%d"},
+  {__LINE__, 0xe35807bf,	"e35807bf", "%x"},
+  {__LINE__, 0x00000003,	"     +3", "%+7d"},
+  {__LINE__, 0x017e699e,	"25061790", "%#ld"},
+  {__LINE__, -0x0000029,	"-41", "%d"},
+  {__LINE__, 0xffffff11,	"ffffff11", "%1.x"},
+  {__LINE__, -0x0001bf6,	"-7158", "%+0ld"},
+  {__LINE__, 0xffffff4b,	"FFFFFF4B", "%4X"},
+  {__LINE__, -0x0000040,	"-64", "%ld"},
+  {__LINE__, 0x000034d6,	"+13526", "%+ld"},
+  {__LINE__, 0xffffffa7,	"ffffffa7", "%x"},
+  {__LINE__, 0xfffffe8e,	"fffffe8e", "%+.3x"},
+  {__LINE__, 0x00000000,	"0", "%0.1d"},
+  {__LINE__, -0x007cdf1,	"-511473", "%ld"},
+  {__LINE__, 0xfffffeef,	"FFFFFEEF", "%-X"},
+  {__LINE__, 0x00002d91,	"2d91", "%x"},
+  {__LINE__, -0x000025b,	"-603", "%#ld"},
+  {__LINE__, -0x000001b,	"-27", "%-ld"},
+  {__LINE__, 0x042b6752,	"42B6752", "%+X"},
+  {__LINE__, -0x75afb0a6,	"-1974448294", "% ld"},
+  {__LINE__, -0x0000001,	"-1", "%ld"},
+  {__LINE__, 0x00000542,	"  1346", "%6d"},
+  {__LINE__, -0x0000010,	"-16", "%+0d"},
+  {__LINE__, 0xfffed8f7,	"FFFED8F7", "%5.X"},
+  {__LINE__, 0x0541852e,	"541852e", "% 2.x"},
+  {__LINE__, 0xff22aec3,	"ff22aec3", "% .1x"},
+  {__LINE__, 0x5e34b745,	"1580513093", "%ld"},
+  {__LINE__, 0xfffffff3,	"fffffff3", "%x"},
+  {__LINE__, 0x0eda7b86,	"+249199494", "%+.3d"},
+  {__LINE__, 0xffffe40f,	"ffffe40f", "%+x"},
+  {__LINE__, -0x0003484,	"-13444", "%-1.5ld"},
+  {__LINE__, 0x0000334b,	" 13131", "%6.ld"},
+  {__LINE__, -0x0000149,	"-329", "%ld"},
+  {__LINE__, 0x00000001,	"  001", "% 5.3x"},
+  {__LINE__, 0xffeaa035,	"ffeaa035", "%+3.5x"},
+  {__LINE__, 0x00211dff,	"2170367", "%ld"},
+  {__LINE__, 0x007e91f4,	"7e91f4", "%x"},
+  {__LINE__, 0xfffffffc,	"0xfffffffc", "%+#5x"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%6.X"},
+  {__LINE__, 0x0156a9b5,	"156a9b5", "%x"},
+  {__LINE__, 0xfffffe58,	"fffffe58", "%+x"},
+  {__LINE__, 0xffff8c66,	"FFFF8C66", "%.0X"},
+  {__LINE__, 0x00000000,	"0", "%d"},
+  {__LINE__, 0x00000005,	"      5", "%7.d"},
+  {__LINE__, -0x0000002,	"-2", "%ld"},
+  {__LINE__, 0x000076b9,	" 30393", "% ld"},
+  {__LINE__, 0x00003824,	"3824", "%4X"},
+  {__LINE__, 0x00000cdf,	"    CDF", "% 7X"},
+  {__LINE__, 0x017c9e8f,	"17C9E8F", "%-X"},
+  {__LINE__, -0x20f582d,	"-34560045", "%-.5d"},
+  {__LINE__, 0x0000732e,	"  29486", "% 7.ld"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%+0X"},
+  {__LINE__, 0xf379a4a2,	"F379A4A2", "% .7X"},
+  {__LINE__, -0x0000028,	"-40", "%-d"},
+  {__LINE__, 0xe73cf79e,	"e73cf79e", "%x"},
+  {__LINE__, 0x00000002,	"      2", "%7ld"},
+  {__LINE__, -0x00029b1,	"-10673", "%-#1.ld"},
+  {__LINE__, -0x0002a58,	"-10840", "%3.d"},
+  {__LINE__, 0x00000002,	"2", "%-X"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%X"},
+  {__LINE__, -0x000003a,	"  -58", "%5ld"},
+  {__LINE__, 0x0245ef3b,	"245ef3b", "%.3x"},
+  {__LINE__, 0x00026cca,	"158922", "%-06.3ld"},
+  {__LINE__, 0x01016fd3,	"16871379", "%-d"},
+  {__LINE__, 0x000016fc,	"5884", "%0ld"},
+  {__LINE__, -0x00007fb,	"  -2043", "%7.3d"},
+  {__LINE__, 0xfff73d3c,	"fff73d3c", "%0x"},
+  {__LINE__, -0x0000110,	"-272", "% 04.3d"},
+  {__LINE__, 0x0000000e,	" 014", "% 04ld"},
+  {__LINE__, -0x0000039,	"-57", "%.0ld"},
+  {__LINE__, 0x00000c95,	"c95", "%0x"},
+  {__LINE__, 0xffff3b2e,	"ffff3b2e", "%x"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%X"},
+  {__LINE__, 0x00000015,	"21", "%.1d"},
+  {__LINE__, 0x0000000c,	"+12", "%+ld"},
+  {__LINE__, 0x00000000,	"0", "%+X"},
+  {__LINE__, 0xfffc9a14,	"fffc9a14", "%-.5x"},
+  {__LINE__, 0x0000003c,	"60", "%.2ld"},
+  {__LINE__, -0x0000023,	"   -35", "%6.d"},
+  {__LINE__, 0x00000740,	"1856", "%ld"},
+  {__LINE__, 0x00000160,	"160", "% 3.X"},
+  {__LINE__, 0x00000006,	"    6", "%5.X"},
+  {__LINE__, -0x0000677,	"-1655", "%.3ld"},
+  {__LINE__, 0x12709c7e,	"12709C7E", "%.7X"},
+  {__LINE__, 0x0000090f,	"+2319", "%+#d"},
+  {__LINE__, 0xffffffe0,	"0xffffffe0", "%#4.1x"},
+  {__LINE__, 0x00132ce0,	"1256672", "%ld"},
+  {__LINE__, 0x00000059,	"59", "%+X"},
+  {__LINE__, -0x0000017,	"-23", "%0d"},
+  {__LINE__, -0x01fade6,	"-2076134", "%-4.3ld"},
+  {__LINE__, 0x000df3fa,	"914426", "%.5ld"},
+  {__LINE__, 0xfffffd0f,	"fffffd0f", "%7x"},
+  {__LINE__, -0x000c212,	"-49682", "%0.1ld"},
+  {__LINE__, 0xffff8bcb,	"FFFF8BCB", "%.3X"},
+  {__LINE__, 0x0000000a,	"a", "% x"},
+  {__LINE__, 0x00000021,	"21", "%x"},
+  {__LINE__, -0x0000040,	"-64", "% 1ld"},
+  {__LINE__, 0x00000009,	"     9", "%6.ld"},
+  {__LINE__, -0x0000d67,	"-3431", "% 5.3d"},
+  {__LINE__, 0x03a85f1b,	"61366043", "%ld"},
+  {__LINE__, 0x00000035,	"000053", "%0.6d"},
+  {__LINE__, 0xfffda5cb,	"fffda5cb", "%+x"},
+  {__LINE__, 0xffffff78,	"FFFFFF78", "%-7.0X"},
+  {__LINE__, 0xfffffd6d,	"fffffd6d", "%7.x"},
+  {__LINE__, 0xfffffc08,	"fffffc08", "%7.3x"},
+  {__LINE__, 0x00003335,	" 13109", "% #d"},
+  {__LINE__, -0x0000002,	"   -2", "%5.d"},
+  {__LINE__, -0x13767a48,	"-326531656", "%+ld"},
+  {__LINE__, 0x00000be5,	"3045", "%4.0ld"},
+  {__LINE__, 0xfffdb28c,	"FFFDB28C", "%X"},
+  {__LINE__, 0x00127118,	"1208600", "%ld"},
+  {__LINE__, 0x00000086,	" 134", "% ld"},
+  {__LINE__, 0x0002214c,	"2214c", "%+x"},
+  {__LINE__, 0x0000a0c2,	" a0c2", "%5.0x"},
+  {__LINE__, -0x000007c,	"-124", "%ld"},
+  {__LINE__, 0x0000012a,	"00298", "%3.5d"},
+  {__LINE__, 0xfd4f1257,	"FD4F1257", "%+2.X"},
+  {__LINE__, 0xffffd8aa,	"ffffd8aa", "%5x"},
+  {__LINE__, -0x00000a7,	"-167", "%+ld"},
+  {__LINE__, -0x0009c69,	"-40041", "%0.0ld"},
+  {__LINE__, 0x02230418,	"35849240", "%-0.6ld"},
+  {__LINE__, 0x00000000,	"     0", "%6x"},
+  {__LINE__, 0xfffff184,	"fffff184", "%02.5x"},
+  {__LINE__, -0x0ae967b,	"-11441787", "%d"},
+  {__LINE__, 0x0015de3a,	"1433146", "%-5.3d"},
+  {__LINE__, -0x0071e93,	"-466579", "%1.ld"},
+  {__LINE__, 0xfffff8bd,	"fffff8bd", "%+x"},
+  {__LINE__, -0x00000e4,	"-228", "%+ld"},
+  {__LINE__, 0x000001d8,	" 472", "% .3ld"},
+  {__LINE__, 0x00315faa,	"315faa", "%-0x"},
+  {__LINE__, 0x00000e59,	"e59", "%0x"},
+  {__LINE__, -0x0000005,	"-5", "%ld"},
+  {__LINE__, 0x000018ec,	"6380", "%ld"},
+  {__LINE__, 0xfffffff9,	"fffffff9", "%5.2x"},
+  {__LINE__, -0xe7cfd39,	"-243072313", "%-d"},
+  {__LINE__, 0x0002c30b,	"2C30B", "%1.2X"},
+  {__LINE__, 0x0000007a,	"7A", "%X"},
+  {__LINE__, 0xf604ecb2,	"F604ECB2", "%2X"},
+  {__LINE__, -0x05f602c,	"-6250540", "%d"},
+  {__LINE__, 0xffff9c86,	"ffff9c86", "%2.x"},
+  {__LINE__, -0x00d7f55,	"-884565", "%#d"},
+  {__LINE__, 0xd2a37824,	"D2A37824", "%4X"},
+  {__LINE__, 0x00000000,	"", "%-.0x"},
+  {__LINE__, 0x000d4b51,	"0d4b51", "%3.6x"},
+  {__LINE__, 0x000ecd97,	"ecd97", "% x"},
+  {__LINE__, -0x0000018,	"-024", "%+04ld"},
+  {__LINE__, -0x009f292,	"-651922", "%ld"},
+  {__LINE__, -0x0002da9,	"-11689", "%-0ld"},
+  {__LINE__, -0x000a218,	"-41496", "%4.5d"},
+  {__LINE__, 0xffff85ac,	"FFFF85AC", "% 04.X"},
+  {__LINE__, -0x0d9ffbe,	"-14286782", "%0d"},
+  {__LINE__, 0xfb18cc8e,	"fb18cc8e", "%x"},
+  {__LINE__, 0xffffe5d3,	"FFFFE5D3", "%-X"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, -0x0000006,	"-6", "% d"},
+  {__LINE__, 0x0002fc62,	"2fc62", "% 03.x"},
+  {__LINE__, 0x00000000,	"00", "%.2d"},
+  {__LINE__, -0x00000fd,	"  -253", "%6ld"},
+  {__LINE__, -0x000000b,	"-11", "%d"},
+  {__LINE__, -0x00042a3,	"-17059", "% 6d"},
+  {__LINE__, 0x00000002,	"2", "% X"},
+  {__LINE__, -0x61ead93e,	"-1642780990", "%-0d"},
+  {__LINE__, 0xf2e61f6d,	"f2e61f6d", "%-.4x"},
+  {__LINE__, 0xffd31b93,	"ffd31b93", "%x"},
+  {__LINE__, -0x0000008,	"-8", "%ld"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%00x"},
+  {__LINE__, 0x000000fb,	"+000251", "%+2.6d"},
+  {__LINE__, 0x00000015,	"  15", "%4.X"},
+  {__LINE__, 0x06ec6d96,	"6EC6D96", "%+2.X"},
+  {__LINE__, 0xffff1df7,	"0xffff1df7", "% #1x"},
+  {__LINE__, -0x000004b,	"-75", "%-ld"},
+  {__LINE__, 0x00000008,	"8", "%#.0d"},
+  {__LINE__, 0x00001355,	"4949", "%3.4ld"},
+  {__LINE__, -0x00000f7,	"-247", "%d"},
+  {__LINE__, 0x0000001f,	"31", "%.2ld"},
+  {__LINE__, 0x0000d556,	"D556", "%-X"},
+  {__LINE__, 0xffffd5a5,	"ffffd5a5", "% x"},
+  {__LINE__, -0x0000e34,	"-3636", "%#d"},
+  {__LINE__, -0x0000007,	"-7", "%d"},
+  {__LINE__, 0x01ba10a4,	"1ba10a4", "%x"},
+  {__LINE__, 0xfffff759,	"FFFFF759", "% X"},
+  {__LINE__, -0x80d0adb,	"-135072475", "%d"},
+  {__LINE__, 0x0002bf61,	"2bf61", "%x"},
+  {__LINE__, 0xffff008b,	"FFFF008B", "%-7X"},
+  {__LINE__, 0x00000e72,	"E72", "%X"},
+  {__LINE__, -0x00000ea,	"-234", "%0ld"},
+  {__LINE__, -0x0007b9d,	"-0031645", "%0.7ld"},
+  {__LINE__, 0x0001baaa,	"0X1BAAA", "%#4X"},
+  {__LINE__, 0x0000a57f,	"  a57f", "%6.x"},
+  {__LINE__, -0x21a73726,	"-564606758", "%ld"},
+  {__LINE__, 0x06f45c9f,	"0x6f45c9f", "%#.3x"},
+  {__LINE__, 0x00018e5d,	"101981", "%-d"},
+  {__LINE__, 0x0001e69a,	"124570", "%-d"},
+  {__LINE__, -0x0000d26,	"  -3366", "% 07.d"},
+  {__LINE__, 0x00000000,	"+", "%+0.ld"},
+  {__LINE__, 0x00003916,	"14614", "%ld"},
+  {__LINE__, 0xfffffd8f,	"fffffd8f", "%-3.x"},
+  {__LINE__, 0x00000011,	"11", "%x"},
+  {__LINE__, 0x000000e7,	"E7", "%X"},
+  {__LINE__, 0xfdf9d89b,	"FDF9D89B", "%X"},
+  {__LINE__, 0x00000a7c,	"a7c", "%x"},
+  {__LINE__, 0x0000003f,	"00003F", "%.6X"},
+  {__LINE__, 0xffffe729,	"FFFFE729", "%X"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "% .6x"},
+  {__LINE__, -0x0000a4b,	"-2635", "%+d"},
+  {__LINE__, 0xffffff50,	"ffffff50", "%0.7x"},
+  {__LINE__, 0xfaf57e8b,	"faf57e8b", "% 4.x"},
+  {__LINE__, -0x0000056,	"-86", "%ld"},
+  {__LINE__, 0x08ed2a4d,	"8ed2a4d", "%4x"},
+  {__LINE__, 0xff8d9081,	"FF8D9081", "%+0.X"},
+  {__LINE__, 0x002730a1,	"2568353", "%4d"},
+  {__LINE__, 0xffff9564,	"ffff9564", "%x"},
+  {__LINE__, -0x0000006,	"  -6", "%4ld"},
+  {__LINE__, -0x19890310,	"-428409616", "%0ld"},
+  {__LINE__, 0xd2ce636c,	"d2ce636c", "%+x"},
+  {__LINE__, -0x00001fe,	"-510", "%d"},
+  {__LINE__, 0x00000006,	"0000006", "%+0.7x"},
+  {__LINE__, 0xffffffc2,	"0XFFFFFFC2", "%-#.5X"},
+  {__LINE__, -0x00000fd,	"-253", "%+d"},
+  {__LINE__, 0x000216aa,	"0x216aa", "%#x"},
+  {__LINE__, 0xffe36c66,	"ffe36c66", "%x"},
+  {__LINE__, 0x00000002,	"2", "%x"},
+  {__LINE__, -0x0000025,	"-37", "% d"},
+  {__LINE__, 0x0000007e,	"126", "%d"},
+  {__LINE__, 0x0003c1f9,	"+246265", "%+ld"},
+  {__LINE__, 0x00000001,	"1", "%ld"},
+  {__LINE__, -0x0000001,	"-1", "%ld"},
+  {__LINE__, -0x00539e7,	"-342503", "%06.ld"},
+  {__LINE__, 0x00000d42,	"  3394", "%#6.ld"},
+  {__LINE__, 0xf73b7c4e,	"F73B7C4E", "%X"},
+  {__LINE__, 0x00000022,	"22", "%.1x"},
+  {__LINE__, 0xffffa883,	"FFFFA883", "%X"},
+  {__LINE__, 0x016ec247,	"16ec247", "%x"},
+  {__LINE__, 0x00000019,	"19", "%+X"},
+  {__LINE__, 0x0000665a,	"665A", "% 2.X"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%-5.X"},
+  {__LINE__, 0x008e3fbc,	"8E3FBC", "%X"},
+  {__LINE__, 0xfffffffa,	"FFFFFFFA", "%X"},
+  {__LINE__, 0x1b806597,	"461399447", "%.2d"},
+  {__LINE__, 0x00000366,	"0000870", "%#1.7ld"},
+  {__LINE__, 0x0001d92e,	"1d92e", "%x"},
+  {__LINE__, 0x000104ce,	"104CE", "%-X"},
+  {__LINE__, 0xfffffe4c,	"fffffe4c", "%x"},
+  {__LINE__, 0x000000e9,	"E9", "%X"},
+  {__LINE__, 0x000a855c,	" 689500", "% d"},
+  {__LINE__, 0x00000075,	"75", "% X"},
+  {__LINE__, -0x0000026,	"-38", "%ld"},
+  {__LINE__, 0xfffff169,	"fffff169", "%-04.2x"},
+  {__LINE__, 0xffffff6f,	"ffffff6f", "%x"},
+  {__LINE__, 0x00000003,	"0x3", "%#x"},
+  {__LINE__, 0x00623bab,	"6437803", "%.0d"},
+  {__LINE__, -0x2260224c,	"-576725580", "%ld"},
+  {__LINE__, 0xe7e7a998,	"E7E7A998", "%.1X"},
+  {__LINE__, 0x00000005,	"5", "%X"},
+  {__LINE__, 0x0000b560,	"0xb560", "%#x"},
+  {__LINE__, 0xfe11854d,	"fe11854d", "%-.5x"},
+  {__LINE__, 0x00190014,	"1638420", "%ld"},
+  {__LINE__, 0x0001d22a,	"0X1D22A", "%-#X"},
+  {__LINE__, 0x00000c16,	"c16", "%2x"},
+  {__LINE__, 0x00000d1a,	"3354", "%#d"},
+  {__LINE__, 0x000165f6,	"91638", "%d"},
+  {__LINE__, 0xfffff557,	"0XFFFFF557", "%#X"},
+  {__LINE__, 0x00000588,	"    588", "%07.X"},
+  {__LINE__, 0xf4a72708,	"f4a72708", "%x"},
+  {__LINE__, 0xfff1cba9,	"0xfff1cba9", "% #2.5x"},
+  {__LINE__, 0x000333a4,	"209828", "%d"},
+  {__LINE__, 0x0000179b,	"179B", "% 2.X"},
+  {__LINE__, 0x00000460,	"1120", "%0ld"},
+  {__LINE__, 0xffffff89,	"FFFFFF89", "%X"},
+  {__LINE__, -0x0000012,	"-18", "%ld"},
+  {__LINE__, 0x00004fe0,	"20448", "%0.d"},
+  {__LINE__, 0x00532e77,	"532e77", "%00.x"},
+  {__LINE__, 0xf7b92efe,	"f7b92efe", "%0x"},
+  {__LINE__, -0x0000243,	"-579", "%+1.d"},
+  {__LINE__, 0x34894bb7,	"+881413047", "%+d"},
+  {__LINE__, 0xfffaa189,	"FFFAA189", "% 6X"},
+  {__LINE__, -0x0000579,	"-1401", "%+ld"},
+  {__LINE__, 0x005acb12,	"5acb12", "%5.0x"},
+  {__LINE__, 0xffff890a,	"FFFF890A", "%X"},
+  {__LINE__, 0x010dff2f,	"10DFF2F", "%.7X"},
+  {__LINE__, 0x00005a7f,	"23167", "%#ld"},
+  {__LINE__, 0x000005e3,	"1507", "%#3d"},
+  {__LINE__, -0xa815bcb,	"-176249803", "%d"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%+x"},
+  {__LINE__, 0xfffe0ff7,	"fffe0ff7", "%3x"},
+  {__LINE__, 0xffffffff,	"0XFFFFFFFF", "%#2.1X"},
+  {__LINE__, -0x1cc5ea52,	"-482732626", "%6.d"},
+  {__LINE__, 0x000425ed,	"+0271853", "%+.7d"},
+  {__LINE__, 0x00000001,	"1", "%+x"},
+  {__LINE__, -0x48f2a72,	"-76491378", "%7.0d"},
+  {__LINE__, 0xfffffff7,	"FFFFFFF7", "% 0X"},
+  {__LINE__, 0xfd8ffc0a,	"fd8ffc0a", "%.1x"},
+  {__LINE__, 0x0001f56d,	"  1F56D", "%+7.2X"},
+  {__LINE__, 0x000000db,	"    DB", "%6.X"},
+  {__LINE__, 0xffffffc2,	"ffffffc2", "%x"},
+  {__LINE__, 0x00000001,	"001", "%03ld"},
+  {__LINE__, 0xffd89f58,	"ffd89f58", "% 0.x"},
+  {__LINE__, 0xfe1a72fc,	"fe1a72fc", "%x"},
+  {__LINE__, 0xfffff9b6,	"FFFFF9B6", "%X"},
+  {__LINE__, 0x00243633,	"243633", "%X"},
+  {__LINE__, 0x00821bc7,	"+8526791", "%+#0ld"},
+  {__LINE__, 0xfe63f348,	"0XFE63F348", "%#3X"},
+  {__LINE__, 0xff729f19,	"ff729f19", "%4x"},
+  {__LINE__, 0xffff570f,	"FFFF570F", "%+X"},
+  {__LINE__, 0x00a57a42,	"10844738", "%6.3d"},
+  {__LINE__, 0xfe4a3ed0,	"FE4A3ED0", "%6.X"},
+  {__LINE__, 0x00000000,	"0", "%d"},
+  {__LINE__, 0x000001bb,	"01bb", "% .4x"},
+  {__LINE__, 0x02b4a1e9,	"2b4a1e9", "%-7.x"},
+  {__LINE__, 0x31750683,	"31750683", "%x"},
+  {__LINE__, 0x00001cd7,	"7383", "%#ld"},
+  {__LINE__, 0x0000079d,	"1949", "%d"},
+  {__LINE__, 0xffb8ff3b,	"FFB8FF3B", "%X"},
+  {__LINE__, 0x00a768b6,	"0A768B6", "%-6.7X"},
+  {__LINE__, 0x1c665b48,	"0X1C665B48", "% #X"},
+  {__LINE__, -0x000037d,	"-000893", "%3.6d"},
+  {__LINE__, 0x29890443,	"29890443", "%+0x"},
+  {__LINE__, 0x000000e5,	"e5  ", "%-4x"},
+  {__LINE__, 0xfff2b5fa,	"FFF2B5FA", "%X"},
+  {__LINE__, -0x5d32c2b,	"-97725483", "%05ld"},
+  {__LINE__, -0x00016c5,	" -05829", "%+#7.5ld"},
+  {__LINE__, 0x00000644,	"644", "%X"},
+  {__LINE__, -0x018c027,	"-1622055", "%+.1d"},
+  {__LINE__, 0x0000013c,	"0x13c", "%#x"},
+  {__LINE__, 0x00000009,	"+9", "%+#ld"},
+  {__LINE__, 0x00000000,	"0", "%ld"},
+  {__LINE__, -0x018eb19,	"-1633049", "%4.3ld"},
+  {__LINE__, 0xfffff429,	"FFFFF429", "% X"},
+  {__LINE__, 0x0032de67,	"32DE67", "%X"},
+  {__LINE__, 0x0016bdfa,	" 1490426", "% .2ld"},
+  {__LINE__, 0x00000065,	"65", "%+.0X"},
+  {__LINE__, 0x00000072,	"  72", "%+4.2X"},
+  {__LINE__, 0x00075119,	"75119", "%2x"},
+  {__LINE__, 0x000000b8,	"b8", "%x"},
+  {__LINE__, 0x000000d0,	"d0", "%x"},
+  {__LINE__, 0x000000b9,	"b9", "%x"},
+  {__LINE__, 0x003fda9d,	" 4184733", "% #3.d"},
+  {__LINE__, 0x00029a24,	"170532", "%4.d"},
+  {__LINE__, -0x132a337d,	"-321532797", "% ld"},
+  {__LINE__, 0x0000047a,	"0X47A", "%-#X"},
+  {__LINE__, 0x00000000,	"0", "%-ld"},
+  {__LINE__, -0x0d9750b,	"-14251275", "% ld"},
+  {__LINE__, 0x00029d6c,	"29d6c", "%x"},
+  {__LINE__, 0xfb060cc0,	"fb060cc0", "%x"},
+  {__LINE__, 0xffffd524,	"0XFFFFD524", "%#X"},
+  {__LINE__, 0xffffff30,	"ffffff30", "%-5x"},
+  {__LINE__, 0x00001650,	"0005712", "%#0.7d"},
+  {__LINE__, 0x0000b702,	"0B702", "%03.5X"},
+  {__LINE__, 0x000003c1,	"3c1", "% .1x"},
+  {__LINE__, -0x0290412,	"-2688018", "%d"},
+  {__LINE__, -0x00008bf,	"-2239", "%#d"},
+  {__LINE__, -0x0000001,	"-1", "%d"},
+  {__LINE__, 0x0001d750,	"1D750", "%-X"},
+  {__LINE__, 0x006eee92,	"6EEE92", "%-X"},
+  {__LINE__, 0xff812b02,	"ff812b02", "%0x"},
+  {__LINE__, 0xfffffeac,	"FFFFFEAC", "%+0X"},
+  {__LINE__, 0x000003a5,	"3a5", "%x"},
+  {__LINE__, -0x15270cee,	"-354880750", "%2.ld"},
+  {__LINE__, 0x06b686d2,	"6b686d2", "%0x"},
+  {__LINE__, 0xffe9cdcc,	"ffe9cdcc", "%x"},
+  {__LINE__, 0x0ecb168e,	"ecb168e", "%x"},
+  {__LINE__, 0x00000051,	"51", "%-X"},
+  {__LINE__, -0x0018860,	"-100448", "%-0d"},
+  {__LINE__, 0x8f08b82b,	"0x8f08b82b", "%-#.5x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%x"},
+  {__LINE__, 0x0000000e,	"e", "%+01x"},
+  {__LINE__, 0x04cf15bc,	" 80680380", "% #ld"},
+  {__LINE__, 0x50006e8a,	"50006e8a", "%x"},
+  {__LINE__, 0x0002f669,	"194153", "%0d"},
+  {__LINE__, 0x000000a6,	"  166", "% 5.ld"},
+  {__LINE__, -0x04036bb,	"-4208315", "%7.5d"},
+  {__LINE__, 0x00070dea,	"70DEA", "%+X"},
+  {__LINE__, 0x00000964,	"0x964", "%#x"},
+  {__LINE__, 0x0000004d,	"0x4d", "% #3.x"},
+  {__LINE__, -0x0000001,	"-1", "%-0d"},
+  {__LINE__, 0x0000043e,	"1086", "%ld"},
+  {__LINE__, -0x0000001,	"-1", "%-d"},
+  {__LINE__, 0x00000000,	"+0", "%+d"},
+  {__LINE__, 0xfffe68d9,	"FFFE68D9", "%7.X"},
+  {__LINE__, -0x0169199,	"-1479065", "%#.5ld"},
+  {__LINE__, -0x000003d,	"-61", "%ld"},
+  {__LINE__, 0x00000001,	"+1", "%+.1d"},
+  {__LINE__, 0x0001a65d,	"1a65d", "%.5x"},
+  {__LINE__, 0x00000141,	"+000321", "%+#5.6ld"},
+  {__LINE__, 0x00000000,	"   0", "%4x"},
+  {__LINE__, 0x00000408,	"1032", "%-2.3ld"},
+  {__LINE__, 0xffffffed,	"FFFFFFED", "%-X"},
+  {__LINE__, 0xfe832351,	"FE832351", "% .4X"},
+  {__LINE__, 0x003a421b,	"3A421B", "%-X"},
+  {__LINE__, -0x53ed7f25,	"-1408073509", "%ld"},
+  {__LINE__, -0x0000003,	"-0003", "%-5.4ld"},
+  {__LINE__, 0x00000ad0,	"   2768", "%7d"},
+  {__LINE__, 0xfffaf30b,	"FFFAF30B", "%X"},
+  {__LINE__, 0x006349d3,	" 6506963", "% 6.2ld"},
+  {__LINE__, 0x07f0146a,	"7f0146a", "%+3.4x"},
+  {__LINE__, -0x0000002,	" -2", "% 3.ld"},
+  {__LINE__, -0x26e94f3,	"-40801523", "%-#ld"},
+  {__LINE__, -0x0000004,	"   -004", "%7.3d"},
+  {__LINE__, 0xfffe8cc9,	"FFFE8CC9", "%0X"},
+  {__LINE__, 0x00000018,	"   18", "%5.x"},
+  {__LINE__, -0x4941de83,	"-1229053571", "% 0.5ld"},
+  {__LINE__, 0x00000000,	"     0", "%6ld"},
+  {__LINE__, 0xfffffffe,	"0XFFFFFFFE", "%-#X"},
+  {__LINE__, -0x0142ae1,	"-1321697", "%4.ld"},
+  {__LINE__, -0x0319e7f,	"-3251839", "%0ld"},
+  {__LINE__, 0x000004ff,	"    4FF", "%7.2X"},
+  {__LINE__, -0x0001c3e,	"-7230", "%#.2ld"},
+  {__LINE__, 0xffffe522,	"ffffe522", "%x"},
+  {__LINE__, 0x0001d1cb,	"+119243", "%+.3ld"},
+  {__LINE__, 0xfad19d52,	"FAD19D52", "%+X"},
+  {__LINE__, 0x00002a7c,	" 10876", "% 0.ld"},
+  {__LINE__, 0x00001449,	"1449", "%X"},
+  {__LINE__, 0x000732b8,	"471736", "%d"},
+  {__LINE__, -0x211a496e,	"-555370862", "%ld"},
+  {__LINE__, -0x0000004,	"-4", "%1.d"},
+  {__LINE__, 0x0295c03d,	"43368509", "%5.ld"},
+  {__LINE__, 0x01fa5722,	"33183522", "%0ld"},
+  {__LINE__, 0xfffbff62,	"0xfffbff62", "%#x"},
+  {__LINE__, 0x000000f5,	" 245", "% 2.d"},
+  {__LINE__, 0x000000a0,	"160", "%-d"},
+  {__LINE__, 0x0000000f,	"15", "%.2ld"},
+  {__LINE__, 0x0bf5f077,	"+200667255", "%+ld"},
+  {__LINE__, -0x14d3e5a,	"-21839450", "%#2.3d"},
+  {__LINE__, -0x21cbe656,	"-567010902", "%ld"},
+  {__LINE__, 0x000002b9,	"697", "%ld"},
+  {__LINE__, 0xfffff9b0,	"FFFFF9B0", "%X"},
+  {__LINE__, 0x007fd9c7,	"8378823", "%3.4d"},
+  {__LINE__, 0x00036d06,	"36d06", "%x"},
+  {__LINE__, 0xffde8052,	"FFDE8052", "%4.6X"},
+  {__LINE__, 0x0000000d,	"13", "%#d"},
+  {__LINE__, 0x68157d93,	"68157d93", "%x"},
+  {__LINE__, 0x00000005,	"5", "%1x"},
+  {__LINE__, 0xfffffff4,	"FFFFFFF4", "%X"},
+  {__LINE__, 0xf5bbf7e9,	"f5bbf7e9", "%+.1x"},
+  {__LINE__, 0x0be98f98,	"BE98F98", "%X"},
+  {__LINE__, 0x00000122,	"00122", "%.5X"},
+  {__LINE__, -0x0000936,	"-2358", "%+#3.0ld"},
+  {__LINE__, 0xfd230f09,	"FD230F09", "%-7X"},
+  {__LINE__, 0x00000089,	"137", "%ld"},
+  {__LINE__, 0x00000078,	"    120", "%7d"},
+  {__LINE__, -0x68ef2b6b,	"-1760504683", "%-ld"},
+  {__LINE__, 0xc24480bb,	"C24480BB", "%+4X"},
+  {__LINE__, 0xfefe36a2,	"FEFE36A2", "%0X"},
+  {__LINE__, -0x35344ba,	"-55788730", "%7.d"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%+.6X"},
+  {__LINE__, -0x0000f40,	"-3904", "% ld"},
+  {__LINE__, 0xfffffffb,	"FFFFFFFB", "%X"},
+  {__LINE__, 0x58b37c4b,	"58b37c4b", "%2.2x"},
+  {__LINE__, 0x000000e2,	"226", "%#ld"},
+  {__LINE__, 0xfff5ebde,	"fff5ebde", "%-7.1x"},
+  {__LINE__, 0x0c6ea9be,	"208579006", "%-ld"},
+  {__LINE__, 0xff708c74,	"FF708C74", "% 4.X"},
+  {__LINE__, 0x00000000,	"  0", "% 3X"},
+  {__LINE__, 0x00000004,	"  4", "%03.d"},
+  {__LINE__, 0x0919be7c,	"+152682108", "%+6.d"},
+  {__LINE__, 0x00d4fd1e,	"13958430", "%0d"},
+  {__LINE__, 0xfe77a69e,	"fe77a69e", "%-7.x"},
+  {__LINE__, 0x284ded44,	"676195652", "%-#2ld"},
+  {__LINE__, -0x00006e6,	"-1766", "% ld"},
+  {__LINE__, -0x7dac7ea,	"-131778538", "%.0ld"},
+  {__LINE__, 0x0003c50f,	"247055", "%#d"},
+  {__LINE__, 0xfffffffc,	"fffffffc", "%-x"},
+  {__LINE__, 0xfe0f0d1f,	"fe0f0d1f", "% 5.1x"},
+  {__LINE__, 0x00000009,	"9", "%0ld"},
+  {__LINE__, -0x0175cc1,	"-1531073", "%-04.d"},
+  {__LINE__, 0x000e4da2,	" 937378", "% 4.ld"},
+  {__LINE__, 0x00000762,	"762", "%-0.X"},
+  {__LINE__, 0x005211bf,	"5211bf", "%-x"},
+  {__LINE__, 0xfffffffb,	"fffffffb", "%+2.6x"},
+  {__LINE__, 0x00008862,	"34914", "%ld"},
+  {__LINE__, 0xfffc9754,	"fffc9754", "%+x"},
+  {__LINE__, 0x0000716e,	"716E", "%X"},
+  {__LINE__, 0x000000a8,	"a8", "%x"},
+  {__LINE__, 0xffff84f5,	"ffff84f5", "%0x"},
+  {__LINE__, 0x00005032,	"5032", "%x"},
+  {__LINE__, 0xffe242b4,	"ffe242b4", "%6x"},
+  {__LINE__, 0x002df9bd,	"3013053", "%ld"},
+  {__LINE__, 0xffffe267,	"FFFFE267", "%.5X"},
+  {__LINE__, 0xffffffc7,	"0xffffffc7", "%#x"},
+  {__LINE__, -0x1727c38,	"-24280120", "%d"},
+  {__LINE__, 0x01308072,	"1308072", "%x"},
+  {__LINE__, -0x5883c7c,	"-92814460", "%+ld"},
+  {__LINE__, 0x000030ad,	"30ad", "%x"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%X"},
+  {__LINE__, -0x2090a708,	"-546350856", "% d"},
+  {__LINE__, 0x0024e6b4,	"2418356", "%#ld"},
+  {__LINE__, 0x02db71ac,	"2DB71AC", "% 6.3X"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%2.7X"},
+  {__LINE__, -0x000074e,	"  -1870", "%7.ld"},
+  {__LINE__, -0x0011d84,	"-73092", "%d"},
+  {__LINE__, 0x00160723,	"160723", "%1.3x"},
+  {__LINE__, 0x00412929,	"4270377", "%-d"},
+  {__LINE__, -0x0008fc6,	"-36806", "% d"},
+  {__LINE__, 0x00000002,	"2", "%d"},
+  {__LINE__, 0x0eb67ffa,	"eb67ffa", "%.4x"},
+  {__LINE__, 0x05b86c3c,	"95972412", "%4.4d"},
+  {__LINE__, 0xffffca9c,	"FFFFCA9C", "% 4.X"},
+  {__LINE__, 0x0007d571,	"7d571", "%-0x"},
+  {__LINE__, -0x000239b,	"-09115", "%5.5d"},
+  {__LINE__, -0x0000155,	" -341", "%5.3ld"},
+  {__LINE__, 0x00000034,	"34", "%x"},
+  {__LINE__, -0x0000051,	"-81", "%.1ld"},
+  {__LINE__, 0x309bbbe0,	"309bbbe0", "%x"},
+  {__LINE__, 0x0075be1e,	" 7716382", "% #ld"},
+  {__LINE__, 0x000002d5,	"2d5", "%x"},
+  {__LINE__, 0x006b466d,	"6B466D", "%-0X"},
+  {__LINE__, 0x01d6c30f,	"1D6C30F", "%4.X"},
+  {__LINE__, 0x00000003,	"      3", "%07.x"},
+  {__LINE__, 0xfffcc102,	"FFFCC102", "%6.X"},
+  {__LINE__, 0xffffffff,	"0XFFFFFFFF", "%#X"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%+x"},
+  {__LINE__, 0x00000005,	"5", "%ld"},
+  {__LINE__, 0xff060284,	"ff060284", "%x"},
+  {__LINE__, 0x007a3325,	"7A3325", "%-X"},
+  {__LINE__, 0xf5f595bd,	"F5F595BD", "%0X"},
+  {__LINE__, 0xfffa3a10,	"FFFA3A10", "%0X"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, -0x15078f9,	"-22051065", "%7d"},
+  {__LINE__, -0x0000002,	"-000002", "%.6d"},
+  {__LINE__, 0x00000036,	"54", "%1.1ld"},
+  {__LINE__, -0xbbecf6a,	"-197054314", "%ld"},
+  {__LINE__, 0x0000043d,	"43D", "%X"},
+  {__LINE__, 0xfffffffa,	"0xfffffffa", "% #6.x"},
+  {__LINE__, 0x016759f8,	"23550456", "%0.ld"},
+  {__LINE__, 0x000052d2,	"+21202", "%+6.2d"},
+  {__LINE__, -0x007d232,	"-512562", "%ld"},
+  {__LINE__, 0x00240be0,	"2362336", "%.1d"},
+  {__LINE__, -0x0000001,	"-1", "%0d"},
+  {__LINE__, 0xfffffffa,	"FFFFFFFA", "%X"},
+  {__LINE__, -0x0000e88,	"-3720", "%ld"},
+  {__LINE__, 0xfffffa9b,	"FFFFFA9B", "%.5X"},
+  {__LINE__, 0x09296eeb,	"153710315", "%-1.0d"},
+  {__LINE__, 0x001f46fc,	"0X1F46FC", "%#X"},
+  {__LINE__, 0x00000006,	"6", "%X"},
+  {__LINE__, 0xffffff87,	"0XFFFFFF87", "%+#X"},
+  {__LINE__, 0x00000469,	"0469", "%04X"},
+  {__LINE__, -0x0000001,	"-1", "%ld"},
+  {__LINE__, 0x00000000,	"", "%.0ld"},
+  {__LINE__, -0x52bc137,	"-86753591", "%-#3ld"},
+  {__LINE__, -0x2bddb08,	"-45996808", "%-3.d"},
+  {__LINE__, 0x041367f7,	"41367F7", "%+X"},
+  {__LINE__, -0x0018eb5,	"-102069", "%+ld"},
+  {__LINE__, -0x0000537,	"-1335", "%#ld"},
+  {__LINE__, -0x6f159ff4,	"-1863688180", "%+1.d"},
+  {__LINE__, 0x00112ac8,	"0X112AC8", "%#6.3X"},
+  {__LINE__, 0x00000000,	"   ", "%3.d"},
+  {__LINE__, 0x0008afe8,	"08afe8", "%+3.6x"},
+  {__LINE__, 0x00000015,	"21", "%ld"},
+  {__LINE__, -0x02b7130,	"-2847024", "% #2.4d"},
+  {__LINE__, 0xffffffd0,	"FFFFFFD0", "%X"},
+  {__LINE__, -0x6970fa1,	"-110563233", "%+#.4ld"},
+  {__LINE__, 0x06387dcc,	"0X6387DCC", "%-#X"},
+  {__LINE__, 0xffffd506,	"ffffd506", "%+6x"},
+  {__LINE__, -0x00fe5cd,	"-1041869", "%-#7d"},
+  {__LINE__, -0x0c35bf6,	"-12803062", "%-03d"},
+  {__LINE__, -0x0020d89,	"-134537", "%#d"},
+  {__LINE__, -0x0c7aed3,	"-13086419", "%-ld"},
+  {__LINE__, -0x000362a,	"-13866", "%#.4ld"},
+  {__LINE__, -0x02d05f0,	"-2950640", "%#ld"},
+  {__LINE__, 0x02de1321,	"0x2de1321", "%#7.x"},
+  {__LINE__, 0xffb56428,	"0xffb56428", "%#x"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%X"},
+  {__LINE__, 0xf072292d,	"F072292D", "%.5X"},
+  {__LINE__, -0x0f4b0f2,	"-16036082", "%.5ld"},
+  {__LINE__, 0x01b81885,	"28842117", "%5d"},
+  {__LINE__, -0x009cfa6,	"-642982", "%d"},
+  {__LINE__, 0xfffffffd,	"0XFFFFFFFD", "%-#.5X"},
+  {__LINE__, 0x0dc97a66,	"DC97A66", "%2.X"},
+  {__LINE__, 0x000000be,	"190", "%.0d"},
+  {__LINE__, 0xffffe1c7,	"FFFFE1C7", "% X"},
+  {__LINE__, 0x01883b9a,	"1883b9a", "%3x"},
+  {__LINE__, 0xffffdde1,	"ffffdde1", "%+x"},
+  {__LINE__, 0x2f1b4e32,	"+790318642", "%+ld"},
+  {__LINE__, 0x000129aa,	"129aa", "%x"},
+  {__LINE__, -0x00092c2,	"-37570", "%d"},
+  {__LINE__, 0x00070fbd,	"70fbd", "%x"},
+  {__LINE__, -0x00000ea,	"-234", "%+4ld"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%x"},
+  {__LINE__, 0x0091c7f7,	"91C7F7", "% .3X"},
+  {__LINE__, -0x0c14fe2,	"-12668898", "%d"},
+  {__LINE__, -0x0017c15,	"-97301", "%d"},
+  {__LINE__, -0x00005d0,	"-0001488", "%5.7d"},
+  {__LINE__, 0x0114c36e,	"18137966", "%0d"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%+x"},
+  {__LINE__, 0x0ac76e78,	"180842104", "%d"},
+  {__LINE__, 0x001976cd,	" 1668813", "% 4.ld"},
+  {__LINE__, -0x0642319,	"-6562585", "% d"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%X"},
+  {__LINE__, -0x035019d,	"-3473821", "%.7d"},
+  {__LINE__, -0x0000061,	"-97", "%#3.d"},
+  {__LINE__, 0x0000001f,	"    31", "% 6.1ld"},
+  {__LINE__, -0x0000024,	"-36", "%d"},
+  {__LINE__, 0x000b3785,	"735109", "%ld"},
+  {__LINE__, 0xfffffda9,	"fffffda9", "%-x"},
+  {__LINE__, 0x00254832,	"2443314", "%-ld"},
+  {__LINE__, 0xfffffd40,	"FFFFFD40", "%0X"},
+  {__LINE__, -0x0006105,	"-24837", "%+#d"},
+  {__LINE__, 0x00000006,	"+6", "%+d"},
+  {__LINE__, 0xffd40fd8,	"ffd40fd8", "%3.x"},
+  {__LINE__, -0x000988e,	"-39054", "%03d"},
+  {__LINE__, 0x0005ad8b,	"5AD8B", "%0.0X"},
+  {__LINE__, 0x00000001,	"1", "%d"},
+  {__LINE__, 0xfe1f59b7,	"fe1f59b7", "%4.x"},
+  {__LINE__, -0x0000022,	"-34", "%#d"},
+  {__LINE__, 0x0018e3e9,	"18E3E9", "% X"},
+  {__LINE__, 0xffffff25,	"FFFFFF25", "%2.X"},
+  {__LINE__, -0x00002c6,	"-710", "%1.ld"},
+  {__LINE__, 0x00009765,	"38757", "%5ld"},
+  {__LINE__, 0xfe197646,	"FE197646", "%-X"},
+  {__LINE__, 0x00000001,	"    1", "%+5.x"},
+  {__LINE__, -0x0000002,	"-2", "%#ld"},
+  {__LINE__, 0x0072f6be,	"72F6BE", "%1X"},
+  {__LINE__, -0x000f06d,	"-61549", "%-d"},
+  {__LINE__, 0x00000001,	"    1", "%5X"},
+  {__LINE__, 0x328cba28,	" 848083496", "% 2.ld"},
+  {__LINE__, 0x0000cddc,	"cddc", "%.1x"},
+  {__LINE__, 0xfffffff9,	"fffffff9", "%7x"},
+  {__LINE__, 0x00baf511,	"BAF511", "%-5.6X"},
+  {__LINE__, 0x00000001,	"   1", "%4.ld"},
+  {__LINE__, 0x0001e4b0,	"+124080", "%+ld"},
+  {__LINE__, -0x07548f3,	"-7686387", "% 6.d"},
+  {__LINE__, -0x01b14ea,	"-1774826", "% #0d"},
+  {__LINE__, -0x000005c,	"-92 ", "%-04ld"},
+  {__LINE__, -0x00000ae,	"-174", "%+.3ld"},
+  {__LINE__, 0x0000008c,	"0X8C", "%+#X"},
+  {__LINE__, 0x14c02360,	"14C02360", "%.6X"},
+  {__LINE__, 0xfffffff6,	"FFFFFFF6", "%X"},
+  {__LINE__, 0x009f4ee5,	"9f4ee5", "%x"},
+  {__LINE__, 0x00000035,	"35", "%X"},
+  {__LINE__, -0x00000eb,	"-235", "%ld"},
+  {__LINE__, 0x1552ced8,	"1552CED8", "%04X"},
+  {__LINE__, 0x0000002a,	"   2A", "%5X"},
+  {__LINE__, 0xffffffff,	"ffffffff", "% x"},
+  {__LINE__, -0xdec0db2,	"-233573810", "%d"},
+  {__LINE__, 0x001e2ef0,	"1978096", "%2.d"},
+  {__LINE__, 0xffffef24,	"ffffef24", "%.5x"},
+  {__LINE__, 0xfffe6a6c,	"fffe6a6c", "%+x"},
+  {__LINE__, -0x0000004,	"-4", "% ld"},
+  {__LINE__, 0xfe3c6743,	"fe3c6743", "%.1x"},
+  {__LINE__, 0x0000033d,	"829", "%0ld"},
+  {__LINE__, -0x00006a0,	"  -1696", "% 7.ld"},
+  {__LINE__, 0xffffffdb,	"ffffffdb", "%0.0x"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%3.3X"},
+  {__LINE__, -0x0000004,	"-4", "%#ld"},
+  {__LINE__, 0x00b32b56,	"B32B56", "%X"},
+  {__LINE__, 0xffffffff,	"0xffffffff", "%+#x"},
+  {__LINE__, 0x01cd1a48,	"1cd1a48", "%+7x"},
+  {__LINE__, 0xffffffda,	"ffffffda", "%x"},
+  {__LINE__, 0x1886509e,	"1886509E", "% X"},
+  {__LINE__, 0x000000eb,	"235", "%0d"},
+  {__LINE__, 0xfffffff4,	"fffffff4", "%0x"},
+  {__LINE__, 0x00000547,	"547", "% X"},
+  {__LINE__, 0x000017e6,	"17e6", "%-2.x"},
+  {__LINE__, 0x00001dc4,	"7620", "%d"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%3.0X"},
+  {__LINE__, 0xffff93fa,	"0XFFFF93FA", "%#X"},
+  {__LINE__, 0xfffffe1c,	"FFFFFE1C", "%-X"},
+  {__LINE__, 0x00000000,	"", "% .0x"},
+  {__LINE__, 0x000000a1,	"A1", "%X"},
+  {__LINE__, 0xffffffff,	"0xffffffff", "%#x"},
+  {__LINE__, -0x0001460,	"-05216", "%+#.5d"},
+  {__LINE__, 0x00000001,	"1     ", "%-6.x"},
+  {__LINE__, 0xfffd5324,	"FFFD5324", "%+2.6X"},
+  {__LINE__, 0x00000007,	"    07", "%06.2d"},
+  {__LINE__, 0x00000003,	"3", "%-X"},
+  {__LINE__, 0xfffffdb7,	"0XFFFFFDB7", "%+#X"},
+  {__LINE__, 0xfffff4cc,	"fffff4cc", "%0x"},
+  {__LINE__, 0x00000000,	"0    ", "%-5X"},
+  {__LINE__, 0x00758c96,	"758C96", "%X"},
+  {__LINE__, -0x0000001,	"-1", "%-ld"},
+  {__LINE__, 0x00000001,	"1", "%ld"},
+  {__LINE__, 0x03f03caf,	"66075823", "%.2ld"},
+  {__LINE__, 0x0000a87c,	"a87c", "%1.x"},
+  {__LINE__, 0x00000034,	"34", "%X"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, 0x00010167,	"10167", "%x"},
+  {__LINE__, -0x00007ce,	"-1998 ", "%-6ld"},
+  {__LINE__, 0x00000001,	"1", "%.0d"},
+  {__LINE__, 0x00d94cee,	"14241006", "%ld"},
+  {__LINE__, -0x0000008,	"-8", "% d"},
+  {__LINE__, -0x71520839,	"-1901201465", "%+0d"},
+  {__LINE__, 0x0000035a,	"35a", "%-x"},
+  {__LINE__, 0xfffd2f68,	"FFFD2F68", "%-X"},
+  {__LINE__, 0x0006ea53,	"453203", "%1d"},
+  {__LINE__, 0x000000df,	"DF", "% 1X"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "% 7x"},
+  {__LINE__, 0x00000156,	"156", "% X"},
+  {__LINE__, 0x00037ac9,	" 228041", "% ld"},
+  {__LINE__, 0xffffffde,	"FFFFFFDE", "%0.5X"},
+  {__LINE__, 0x00000025,	"37", "%-0.ld"},
+  {__LINE__, -0x4133686,	"-68368006", "%2ld"},
+  {__LINE__, -0x000003b,	"-59", "%.2ld"},
+  {__LINE__, 0xfffff910,	"fffff910", "% 00.0x"},
+  {__LINE__, 0xff9ec802,	"FF9EC802", "%2.6X"},
+  {__LINE__, 0x00000008,	"0X8", "%#1X"},
+  {__LINE__, 0xfffffff7,	"FFFFFFF7", "%-X"},
+  {__LINE__, 0x0029a4da,	"2729178", "%04.ld"},
+  {__LINE__, 0x007d1588,	"8197512", "%#d"},
+  {__LINE__, 0x0007e86d,	"518253", "%0d"},
+  {__LINE__, 0xfffffff9,	"fffffff9", "%x"},
+  {__LINE__, 0x00000002,	"002", "%.3d"},
+  {__LINE__, 0x00006ec1,	"6EC1", "%2X"},
+  {__LINE__, 0x0000300c,	"12300", "%-d"},
+  {__LINE__, -0x0000002,	"-2", "%+ld"},
+  {__LINE__, -0x0000002,	"-2", "%ld"},
+  {__LINE__, -0x00015d5,	"-005589", "%#.6ld"},
+  {__LINE__, 0x00000041,	"65", "%d"},
+  {__LINE__, 0x00000229,	"0000229", "% 0.7x"},
+  {__LINE__, 0xfffffffb,	"fffffffb", "%03.x"},
+  {__LINE__, 0x00093262,	"0602722", "%.7d"},
+  {__LINE__, -0x00037b4,	"-14260", "%-0ld"},
+  {__LINE__, 0xfffffffc,	"fffffffc", "%-x"},
+  {__LINE__, 0xf24cb3e6,	"f24cb3e6", "%1x"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, 0xfffffffb,	"FFFFFFFB", "%0X"},
+  {__LINE__, 0x00000031,	"0000049", "%00.7ld"},
+  {__LINE__, 0x00000bb3,	"BB3", "%.1X"},
+  {__LINE__, -0x0000001,	"-0001", "%+#4.4ld"},
+  {__LINE__, -0x0000001,	"-1", "% d"},
+  {__LINE__, 0x00022c0c,	"22c0c", "%-x"},
+  {__LINE__, 0xffffffd4,	"ffffffd4", "%x"},
+  {__LINE__, 0x000729c6,	"469446", "%3.d"},
+  {__LINE__, 0xb180feae,	"b180feae", "%3.x"},
+  {__LINE__, 0x124fac15,	"307211285", "%-0ld"},
+  {__LINE__, -0x0000004,	"-4", "%ld"},
+  {__LINE__, 0x0000006a,	"106", "%#d"},
+  {__LINE__, 0x0000297f,	"297F", "%+3X"},
+  {__LINE__, 0x0000000e,	"14", "%0ld"},
+  {__LINE__, 0x00000027,	"27", "%0.1X"},
+  {__LINE__, 0xffeb98eb,	"ffeb98eb", "% 05.2x"},
+  {__LINE__, 0xfffff19b,	"FFFFF19B", "%+X"},
+  {__LINE__, 0x00025992,	"154002", "%6.6d"},
+  {__LINE__, 0x00000040,	"   040", "%6.3X"},
+  {__LINE__, 0x00000a9e,	" 0a9e", "%5.4x"},
+  {__LINE__, 0x00c7f2cc,	"c7f2cc", "%x"},
+  {__LINE__, 0x000325e6,	" 325E6", "%6.X"},
+  {__LINE__, -0x69faad3,	"-111127251", "%d"},
+  {__LINE__, -0x059a307,	"-5874439", "% ld"},
+  {__LINE__, 0xfffffff6,	"0xfffffff6", "%#0.0x"},
+  {__LINE__, 0x0030fdf3,	"30fdf3", "%x"},
+  {__LINE__, 0x00007343,	"+29507", "%+#2d"},
+  {__LINE__, 0x0003cf4b,	"0X3CF4B", "% #.2X"},
+  {__LINE__, 0x00000433,	"+1075", "%+0ld"},
+  {__LINE__, 0xfffffffd,	"fffffffd", "%+.3x"},
+  {__LINE__, 0x0ae30c4e,	"ae30c4e", "%+00x"},
+  {__LINE__, 0x0002540f,	"02540f", "%-.6x"},
+  {__LINE__, -0x0000001,	"  -01", "% #5.2ld"},
+  {__LINE__, 0xffffffe7,	"0xffffffe7", "% #5.x"},
+  {__LINE__, 0x0000005b,	"91", "%d"},
+  {__LINE__, 0x00001f9b,	"8091", "%.4ld"},
+  {__LINE__, 0xfffff315,	"fffff315", "%4.x"},
+  {__LINE__, -0x130eec41,	"-319745089", "% ld"},
+  {__LINE__, 0xfff8fe13,	"FFF8FE13", "%X"},
+  {__LINE__, -0x0000004,	"-00004", "%5.5d"},
+  {__LINE__, 0x00000669,	"669", "%0X"},
+  {__LINE__, -0x0000004,	"-4", "%d"},
+  {__LINE__, 0xf5e81496,	"F5E81496", "% 6X"},
+  {__LINE__, -0x0000001,	"-1", "% 0d"},
+  {__LINE__, 0xfffffff7,	"fffffff7", "%x"},
+  {__LINE__, 0x000001de,	"478", "%d"},
+  {__LINE__, 0x0000623e,	"25150", "%5.0d"},
+  {__LINE__, 0xffffffa8,	"FFFFFFA8", "%+X"},
+  {__LINE__, -0x0000117,	"-279", "% ld"},
+  {__LINE__, -0x0000517,	"-1303", "%d"},
+  {__LINE__, 0xfffff9d5,	"fffff9d5", "% x"},
+  {__LINE__, 0x000001cc,	"1CC", "%-X"},
+  {__LINE__, 0x0000019a,	"0000410", "%.7d"},
+  {__LINE__, 0x00000003,	"3     ", "%-06X"},
+  {__LINE__, 0x00000009,	"0x9", "%#0x"},
+  {__LINE__, 0xfd544610,	"0XFD544610", "% #X"},
+  {__LINE__, 0xfffffffc,	"fffffffc", "%+x"},
+  {__LINE__, 0x00009437,	"37943", "%ld"},
+  {__LINE__, -0x00b5ea6,	"-745126", "%d"},
+  {__LINE__, 0xffffffd8,	"ffffffd8", "%6x"},
+  {__LINE__, 0x00002a2d,	"10797", "%.3ld"},
+  {__LINE__, 0x00275238,	"2576952", "%0ld"},
+  {__LINE__, 0xfff90a34,	"FFF90A34", "%-7X"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "% .7X"},
+  {__LINE__, -0xb3b673e,	"-188442430", "% ld"},
+  {__LINE__, 0xfffff67a,	"0xfffff67a", "%#0.x"},
+  {__LINE__, 0x0000dff6,	"   dff6", "%+7.x"},
+  {__LINE__, 0xffee46e3,	"ffee46e3", "%x"},
+  {__LINE__, 0x00001a66,	" 0006758", "% 7.7d"},
+  {__LINE__, 0x0002b475,	"2B475", "%.4X"},
+  {__LINE__, 0x0002090d,	"002090d", "%.7x"},
+  {__LINE__, -0x0057838,	"-358456", "%#ld"},
+  {__LINE__, 0x00000004,	"0x4", "%#x"},
+  {__LINE__, 0x0574cb62,	"91540322", "%#7d"},
+  {__LINE__, -0x0054388,	"-344968", "% #d"},
+  {__LINE__, 0x000421c2,	"421C2", "% X"},
+  {__LINE__, 0x00000003,	"3", "%0d"},
+  {__LINE__, 0xffffe2e2,	"ffffe2e2", "% 5.x"},
+  {__LINE__, 0x00000021,	"+33", "%+d"},
+  {__LINE__, -0x0020033,	"-131123", "%ld"},
+  {__LINE__, -0x0000001,	"  -1", "%4.ld"},
+  {__LINE__, 0x000000fd,	"000fd", "%3.5x"},
+  {__LINE__, 0x023e4337,	"37634871", "%1d"},
+  {__LINE__, 0x6e823d96,	"6E823D96", "% X"},
+  {__LINE__, 0xfff0e133,	"fff0e133", "%x"},
+  {__LINE__, -0x000decc,	"-57036", "%3d"},
+  {__LINE__, 0x004397b8,	"4429752", "%0d"},
+  {__LINE__, -0x0000023,	"   -35", "%6d"},
+  {__LINE__, 0xffe701ca,	"FFE701CA", "%3X"},
+  {__LINE__, 0x000c0319,	"+787225", "%+.6d"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, 0xfffffe1d,	"FFFFFE1D", "%X"},
+  {__LINE__, 0xfffffb33,	"fffffb33", "%x"},
+  {__LINE__, 0x02b5e30a,	"45474570", "%d"},
+  {__LINE__, 0x000074eb,	"29931", "%03.ld"},
+  {__LINE__, -0x4e42e310,	"-1313006352", "%-0.d"},
+  {__LINE__, -0x000007b,	"-123", "%d"},
+  {__LINE__, 0x00000160,	" 352", "% d"},
+  {__LINE__, -0x16af31ec,	"-380580332", "%#ld"},
+  {__LINE__, -0x000006e,	"-000110", "%07ld"},
+  {__LINE__, 0x232699a0,	"232699a0", "%7.x"},
+  {__LINE__, 0x00f9b8e5,	"+16365797", "%+0d"},
+  {__LINE__, 0x0000000c,	"C", "%X"},
+  {__LINE__, 0xfffffd4f,	"FFFFFD4F", "%X"},
+  {__LINE__, 0xffffe7bb,	"FFFFE7BB", "%.7X"},
+  {__LINE__, -0x0000163,	"-355", "%d"},
+  {__LINE__, 0x00070315,	" 459541", "% #2.d"},
+  {__LINE__, -0x7d5c12a,	"-131449130", "% 6.ld"},
+  {__LINE__, 0xffffffb2,	"FFFFFFB2", "%X"},
+  {__LINE__, -0x0004aad,	"-19117", "%+6.4ld"},
+  {__LINE__, 0x00115586,	"1136006", "%0d"},
+  {__LINE__, -0x0000021,	"-33", "%d"},
+  {__LINE__, 0x093ce01e,	"93ce01e", "% 5x"},
+  {__LINE__, 0x00672135,	"672135", "% x"},
+  {__LINE__, 0x05f4abd5,	"0x5f4abd5", "%+#6.x"},
+  {__LINE__, -0x0448b03,	"-4492035", "%-0.2ld"},
+  {__LINE__, 0x00000000,	"0", "%#x"},
+  {__LINE__, 0x1987217e,	"428286334", "%d"},
+  {__LINE__, 0x000010f6,	"10f6", "%-x"},
+  {__LINE__, 0x0000177a,	"177a", "%1x"},
+  {__LINE__, 0xfffffefd,	"FFFFFEFD", "%7X"},
+  {__LINE__, -0x095cbf8,	"-9817080", "%-5ld"},
+  {__LINE__, 0x0000008a,	"138", "%2.0ld"},
+  {__LINE__, 0xfffe80ad,	"fffe80ad", "%0x"},
+  {__LINE__, -0x1a4c8f7,	"-27576567", "%d"},
+  {__LINE__, 0x00000000,	"0", "%-x"},
+  {__LINE__, 0x0000a82b,	"43051", "%-ld"},
+  {__LINE__, 0x000000eb,	"235", "%2.3ld"},
+  {__LINE__, -0x0002747,	"-10055", "%d"},
+  {__LINE__, 0x00000319,	"0X319", "%#X"},
+  {__LINE__, 0xfffffcfe,	"FFFFFCFE", "% X"},
+  {__LINE__, 0x00050f0e,	"50f0e", "%-1x"},
+  {__LINE__, -0x398e09e,	"-60350622", "%0.7ld"},
+  {__LINE__, 0x00000000,	"  ", "%2.ld"},
+  {__LINE__, 0x00000049,	"00049", "% .5X"},
+  {__LINE__, -0x00000dd,	" -221", "%+#5ld"},
+  {__LINE__, 0xf6db2fac,	"f6db2fac", "%-07x"},
+  {__LINE__, 0x0000004f,	"4F", "% .0X"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, 0xfd07f692,	"fd07f692", "%x"},
+  {__LINE__, 0xdb98bde0,	"db98bde0", "%x"},
+  {__LINE__, 0x00000271,	"0271", "% 3.4x"},
+  {__LINE__, -0x000115a,	"-4442", "%#1.ld"},
+  {__LINE__, 0x0002f5f2,	"194034", "%ld"},
+  {__LINE__, -0x0000152,	"   -338", "%+7ld"},
+  {__LINE__, 0x00059336,	"365366", "%d"},
+  {__LINE__, 0xfffffff6,	"fffffff6", "%-7x"},
+  {__LINE__, 0xfb916c51,	"fb916c51", "%-x"},
+  {__LINE__, 0xffff413d,	"FFFF413D", "%-X"},
+  {__LINE__, 0xf2576910,	"F2576910", "%-4.X"},
+  {__LINE__, 0xfffc7730,	"fffc7730", "%5.x"},
+  {__LINE__, 0x000002e6,	"+742", "%+1d"},
+  {__LINE__, -0x00001bf,	"-447", "%3d"},
+  {__LINE__, 0x000002e1,	"2E1", "%-X"},
+  {__LINE__, 0x00000096,	"150", "%#0ld"},
+  {__LINE__, 0x000002bd,	"701", "%d"},
+  {__LINE__, -0x0053386,	"-340870", "%#d"},
+  {__LINE__, 0xfffdb076,	"FFFDB076", "%X"},
+  {__LINE__, 0x00004dc5,	" +19909", "%+07.ld"},
+  {__LINE__, 0x00000f7a,	" F7A", "%4X"},
+  {__LINE__, 0x02405000,	" 37769216", "% ld"},
+  {__LINE__, 0xfffce68d,	"fffce68d", "%0x"},
+  {__LINE__, -0x35b3af2,	"-56310514", "%-ld"},
+  {__LINE__, -0x0238631,	"-2328113", "%.4d"},
+  {__LINE__, -0x000001e,	"-030", "%.3ld"},
+  {__LINE__, 0xffffffdd,	"FFFFFFDD", "%.4X"},
+  {__LINE__, 0x0013f6ac,	"13f6ac", "%02.x"},
+  {__LINE__, 0xfffffffa,	"fffffffa", "%+07.x"},
+  {__LINE__, -0x000192b,	" -6443", "%6.d"},
+  {__LINE__, 0x0000058b,	"+1419", "%+d"},
+  {__LINE__, 0x00001391,	"5009", "%ld"},
+  {__LINE__, -0x0041a57,	"-268887", "%1ld"},
+  {__LINE__, -0x0041a57,	"-268887", "%1ld"},
+  {__LINE__, 0xfffff266,	"0xfffff266", "%+#6.6x"},
+  {__LINE__, 0x0000018b,	"   395", "%6.ld"},
+  {__LINE__, 0x009ae24d,	"+10150477", "%+ld"},
+  {__LINE__, 0x0000007e,	"7E", "%X"},
+  {__LINE__, 0xfffffd53,	"FFFFFD53", "% 0X"},
+  {__LINE__, 0x000002fa,	"2FA", "%-1.3X"},
+  {__LINE__, 0x000000a4,	"164", "%0d"},
+  {__LINE__, 0x00001833,	"6195", "%ld"},
+  {__LINE__, -0x0000001,	"-1", "%d"},
+  {__LINE__, 0xf2fcbd9b,	"F2FCBD9B", "%+0.2X"},
+  {__LINE__, 0x00004a8a,	"4A8A", "%X"},
+  {__LINE__, -0x10695cda,	"-275340506", "%d"},
+  {__LINE__, 0x00000037,	"37", "%X"},
+  {__LINE__, 0x00082d5c,	"82D5C", "%+0.5X"},
+  {__LINE__, 0xfffffe01,	"fffffe01", "% 5.3x"},
+  {__LINE__, 0x000005ea,	"05EA", "% 1.4X"},
+  {__LINE__, 0x0e0b8826,	"e0b8826", "%2x"},
+  {__LINE__, -0x0000161,	"-353", "%+d"},
+  {__LINE__, 0x19e3014a,	"19E3014A", "%+5X"},
+  {__LINE__, 0x00000140,	"140", "%x"},
+  {__LINE__, 0xffff84b9,	"FFFF84B9", "%X"},
+  {__LINE__, -0x0005776,	"-22390", "%+5ld"},
+  {__LINE__, 0x0162ad61,	"162AD61", "% X"},
+  {__LINE__, 0x00002395,	"2395", "%X"},
+  {__LINE__, 0x003702ec,	"3605228", "%5.2d"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%7X"},
+  {__LINE__, 0x00001778,	"0x1778", "%#5.x"},
+  {__LINE__, 0xc52bef7f,	"C52BEF7F", "%X"},
+  {__LINE__, 0xfffffec4,	"FFFFFEC4", "%X"},
+  {__LINE__, 0x00000006,	"6", "%X"},
+  {__LINE__, 0x00000000,	"000", "%03.3x"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, 0xffff6c46,	"FFFF6C46", "% 2.2X"},
+  {__LINE__, -0x1506098,	"-22044824", "%01.d"},
+  {__LINE__, 0x03415caf,	"3415caf", "%x"},
+  {__LINE__, -0x00007b4,	"-1972", "%#4.4d"},
+  {__LINE__, -0x00158c9,	"-88265", "%03.4d"},
+  {__LINE__, 0x6947c336,	"1766310710", "%.6d"},
+  {__LINE__, 0x0000017c,	"17C", "% 0X"},
+  {__LINE__, -0x00001b7,	"-439", "% 0ld"},
+  {__LINE__, 0x06a7575a,	"6A7575A", "%-.0X"},
+  {__LINE__, 0x000b3459,	"734297", "%ld"},
+  {__LINE__, -0x395d8dd,	"-60152029", "%ld"},
+  {__LINE__, 0x00036bb3,	"224179", "%-6.d"},
+  {__LINE__, 0xffff14ff,	"FFFF14FF", "%X"},
+  {__LINE__, -0x15910e4f,	"-361827919", "%-0d"},
+  {__LINE__, -0x0000004,	"-4", "%#d"},
+  {__LINE__, 0xf7f7adac,	"F7F7ADAC", "% 3.X"},
+  {__LINE__, 0xffffff74,	"FFFFFF74", "%0X"},
+  {__LINE__, 0x00000000,	"0", "%d"},
+  {__LINE__, -0x000007b,	"-123   ", "%-7.d"},
+  {__LINE__, -0x000002c,	"-44", "%d"},
+  {__LINE__, -0x000002b,	"  -43", "%5d"},
+  {__LINE__, 0x0000ae5f,	"44639", "%d"},
+  {__LINE__, 0x003cbc63,	"3CBC63", "%X"},
+  {__LINE__, 0xfffffffc,	"0XFFFFFFFC", "%#5.7X"},
+  {__LINE__, 0x0003e044,	"3E044", "%X"},
+  {__LINE__, -0x0000c46,	"-3142", "%.1d"},
+  {__LINE__, 0xff18f4bb,	"FF18F4BB", "%0X"},
+  {__LINE__, 0xfffffffd,	"FFFFFFFD", "%.1X"},
+  {__LINE__, -0x01c0f27,	"-1838887", "%0d"},
+  {__LINE__, -0x1242901f,	"-306352159", "%.4ld"},
+  {__LINE__, 0x1775c10a,	"393593098", "%6.ld"},
+  {__LINE__, 0x00000001,	"  1", "%03.d"},
+  {__LINE__, 0xfff1fd30,	"0xfff1fd30", "%#x"},
+  {__LINE__, 0x00000191,	"191", "%0.X"},
+  {__LINE__, 0x2e597178,	"777613688", "%2.ld"},
+  {__LINE__, -0x4ef0cf3,	"-82775283", "%+.6ld"},
+  {__LINE__, -0x0000085,	"  -133", "%6.d"},
+  {__LINE__, 0x0000014d,	"333  ", "%-5ld"},
+  {__LINE__, -0xc03bd74,	"-201571700", "%07.6ld"},
+  {__LINE__, -0x000000a,	"-10", "%d"},
+  {__LINE__, 0x01f5e86e,	"32893038", "%#2.ld"},
+  {__LINE__, 0x00000033,	"0X33", "% #X"},
+  {__LINE__, 0x0087c797,	" 8898455", "% 7.d"},
+  {__LINE__, -0x0001205,	"-4613", "%5d"},
+  {__LINE__, 0x00000192,	"    192", "%7.X"},
+  {__LINE__, 0x000e6c00,	"945152", "%6.1ld"},
+  {__LINE__, 0x00018629,	" 99881", "% d"},
+  {__LINE__, -0x04739c6,	"-4667846", "%-01.3ld"},
+  {__LINE__, 0x00001f42,	"8002", "%d"},
+  {__LINE__, 0x00000caf,	"3247", "%d"},
+  {__LINE__, -0x4992e24,	"-77147684", "%#.6d"},
+  {__LINE__, 0x0000001d,	"1d", "%-0x"},
+  {__LINE__, 0x14d79f03,	"349675267", "%0ld"},
+  {__LINE__, 0x00000dd4,	" 03540", "%#6.5ld"},
+  {__LINE__, 0x0005f30e,	"0X5F30E", "%#X"},
+  {__LINE__, 0x00000157,	"157", "%X"},
+  {__LINE__, -0x9281698,	"-153622168", "%d"},
+  {__LINE__, -0x000004a,	"-74", "%d"},
+  {__LINE__, -0x0010c9e,	"-68766", "%-0d"},
+  {__LINE__, 0x00000059,	"00089", "%.5ld"},
+  {__LINE__, -0x06959e3,	"-6904291", "% 4.d"},
+  {__LINE__, 0xfbea12b1,	"0XFBEA12B1", "%+#X"},
+  {__LINE__, 0xffffdfb1,	"FFFFDFB1", "%2.6X"},
+  {__LINE__, 0x0434faac,	"434faac", "%.5x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "% x"},
+  {__LINE__, 0x00000b32,	"B32", "%0X"},
+  {__LINE__, 0x00000047,	"71", "%.1d"},
+  {__LINE__, 0x00070bef,	" 0461807", "% .7d"},
+  {__LINE__, 0x00000038,	"38", "% 0x"},
+  {__LINE__, 0x00000000,	"     0", "%6X"},
+  {__LINE__, 0xfff9c011,	"FFF9C011", "%2X"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%7x"},
+  {__LINE__, 0xfffffff9,	"FFFFFFF9", "%X"},
+  {__LINE__, -0x016a095,	"-1482901", "%4.0ld"},
+  {__LINE__, -0x000001c,	"-28", "% ld"},
+  {__LINE__, 0xfffd6133,	"0xfffd6133", "%#x"},
+  {__LINE__, 0x000004a4,	"0x4a4", "%#x"},
+  {__LINE__, 0x000003c2,	"0962", "%.4d"},
+  {__LINE__, -0x000323b,	"-12859", "%+#d"},
+  {__LINE__, 0x0f620237,	"F620237", "%X"},
+  {__LINE__, 0x00007863,	"007863", "%.6X"},
+  {__LINE__, 0x0000002c,	" 44", "% #ld"},
+  {__LINE__, 0xfffffff0,	"fffffff0", "%03.6x"},
+  {__LINE__, 0xffff6346,	"FFFF6346", "%1.X"},
+  {__LINE__, 0x00063188,	"63188", "% x"},
+  {__LINE__, 0xfffff91c,	"fffff91c", "%-.3x"},
+  {__LINE__, 0x004cd0b4,	"4CD0B4", "%-2.X"},
+  {__LINE__, 0x06b4d739,	"112514873", "%0.1d"},
+  {__LINE__, -0x0009beb,	"-39915", "%.2d"},
+  {__LINE__, 0x0000831b,	"33563", "%d"},
+  {__LINE__, 0x00000001,	"1", "%X"},
+  {__LINE__, -0x942d76b,	"-155375467", "% #0ld"},
+  {__LINE__, 0xffff2a95,	"FFFF2A95", "%2X"},
+  {__LINE__, 0x00548d5e,	"5541214", "%.3ld"},
+  {__LINE__, 0x0b5e1a01,	"B5E1A01", "% .7X"},
+  {__LINE__, 0xfffffc22,	"fffffc22", "%6x"},
+  {__LINE__, -0x0000dd7,	"-3543", "%-.3ld"},
+  {__LINE__, 0xfffff834,	"FFFFF834", "%X"},
+  {__LINE__, 0x0365f762,	"57014114", "%ld"},
+  {__LINE__, -0x0000003,	"-3", "%d"},
+  {__LINE__, 0x3bd998a3,	"1004116131", "%d"},
+  {__LINE__, 0xfffff6c9,	"FFFFF6C9", "%+X"},
+  {__LINE__, 0xffffded9,	"FFFFDED9", "%-.1X"},
+  {__LINE__, -0x00fbb5a,	"-1031002", "% 1.0d"},
+  {__LINE__, 0xffffffb7,	"ffffffb7", "%6.x"},
+  {__LINE__, 0xff1b8ac3,	"FF1B8AC3", "%-X"},
+  {__LINE__, 0xfffffff2,	"FFFFFFF2", "%00.X"},
+  {__LINE__, -0x000013d,	" -317", "%05.d"},
+  {__LINE__, 0x0000f5e2,	"+62946", "%+0.2ld"},
+  {__LINE__, 0x16ac6358,	"16ac6358", "%x"},
+  {__LINE__, 0xffff8728,	"FFFF8728", "%+X"},
+  {__LINE__, -0x0014a6d,	"-084589", "%0.6ld"},
+  {__LINE__, 0xfc904514,	"FC904514", "%+0X"},
+  {__LINE__, 0x00000004,	"4", "%ld"},
+  {__LINE__, 0xffffffe0,	"ffffffe0", "%+x"},
+  {__LINE__, -0x0a0ffdd,	"-10551261", "%+02d"},
+  {__LINE__, -0x0000bbc,	"-3004", "%+d"},
+  {__LINE__, 0x00000006,	"     +6", "%+7ld"},
+  {__LINE__, 0x17afa6e5,	"397387493", "%ld"},
+  {__LINE__, 0xfffff6bf,	"fffff6bf", "%+04.4x"},
+  {__LINE__, 0x000001dc,	"01dc", "% 02.4x"},
+  {__LINE__, 0x0000000e,	" 14", "% d"},
+  {__LINE__, 0xfffffff9,	"0XFFFFFFF9", "%#4.X"},
+  {__LINE__, 0x0000005d,	"93", "%0d"},
+  {__LINE__, -0x004fa05,	"-0326149", "%.7d"},
+  {__LINE__, -0x0000018,	"-24", "%ld"},
+  {__LINE__, 0xfffff7eb,	"FFFFF7EB", "%X"},
+  {__LINE__, 0x0072b044,	" 7516228", "% .7ld"},
+  {__LINE__, 0xffffffed,	"0xffffffed", "%#x"},
+  {__LINE__, 0x0010364d,	"10364D", "%X"},
+  {__LINE__, 0xfff90469,	"0XFFF90469", "%#X"},
+  {__LINE__, 0x000001b4,	" 436", "% 0d"},
+  {__LINE__, 0x00000000,	"0", "% X"},
+  {__LINE__, 0xfffffff3,	"fffffff3", "%x"},
+  {__LINE__, 0x19335d40,	"19335d40", "%6x"},
+  {__LINE__, 0x00039c24,	"236580", "%ld"},
+  {__LINE__, 0x000021f7,	"8695", "%0.4ld"},
+  {__LINE__, -0x057b406,	"-5747718", "%d"},
+  {__LINE__, -0x017b371,	"-1553265", "%#ld"},
+  {__LINE__, 0x0003e405,	"254981", "%2.d"},
+  {__LINE__, 0x00000001,	"1", "%-.1x"},
+  {__LINE__, 0x000000ae,	"AE", "%.1X"},
+  {__LINE__, 0xffd85825,	"ffd85825", "%-7.x"},
+  {__LINE__, 0xfffad763,	"fffad763", "%x"},
+  {__LINE__, 0x002431d4,	"2372052", "%6.ld"},
+  {__LINE__, 0x00000003,	"000003", "%-05.6d"},
+  {__LINE__, 0xffffffeb,	"0xffffffeb", "%#x"},
+  {__LINE__, 0xff8cf3b0,	"ff8cf3b0", "%x"},
+  {__LINE__, 0xfe88d2ff,	"0xfe88d2ff", "%+#.2x"},
+  {__LINE__, 0xffffff6b,	"ffffff6b", "%6.3x"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%-x"},
+  {__LINE__, 0xe998945a,	"e998945a", "%2.x"},
+  {__LINE__, 0x03b9c50f,	"3B9C50F", "%+X"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%3.7X"},
+  {__LINE__, 0x000024ef,	"24ef", "%+x"},
+  {__LINE__, 0xfffffc04,	"FFFFFC04", "%X"},
+  {__LINE__, 0x0d4bef7c,	" 223080316", "% .1ld"},
+  {__LINE__, -0xc33f3bc,	"-204731324", "%.5ld"},
+  {__LINE__, 0xffffffff,	"0XFFFFFFFF", "%#2X"},
+  {__LINE__, 0x0000e493,	"e493", "%x"},
+  {__LINE__, 0x000001b4,	"1b4", "%x"},
+  {__LINE__, 0xffffffd6,	"0xffffffd6", "% #1x"},
+  {__LINE__, 0x00000001,	"1", "%d"},
+  {__LINE__, -0x0000f28,	"-3880", "%ld"},
+  {__LINE__, 0x00000277,	"631", "%-1ld"},
+  {__LINE__, 0x00000001,	" 1", "%2x"},
+  {__LINE__, -0x0ff4d2c,	"-16731436", "%#ld"},
+  {__LINE__, 0x0bb80344,	"196608836", "%00ld"},
+  {__LINE__, 0xffffffdc,	"FFFFFFDC", "%X"},
+  {__LINE__, 0x00000484,	"1156", "%ld"},
+  {__LINE__, 0x00000341,	"341", "%-.2x"},
+  {__LINE__, 0x0000ee62,	"ee62", "%x"},
+  {__LINE__, 0xfffffe20,	"fffffe20", "%+x"},
+  {__LINE__, -0x00076eb,	"-30443", "%.2d"},
+  {__LINE__, 0x2c4a7407,	"2c4a7407", "% x"},
+  {__LINE__, 0x00000000,	"   ", "%3.X"},
+  {__LINE__, 0xffffff60,	"ffffff60", "% 4.x"},
+  {__LINE__, 0x000e4cf2,	"+937202", "%+.5ld"},
+  {__LINE__, 0x00000008,	" 00008", "%06.5X"},
+  {__LINE__, 0x0002f612,	"194066", "%d"},
+  {__LINE__, 0xfffffc96,	"fffffc96", "%-3.3x"},
+  {__LINE__, -0x0000001,	"-1", "% ld"},
+  {__LINE__, 0x00000000,	"      ", "% 6.0X"},
+  {__LINE__, 0xfffffff5,	"fffffff5", "%3.x"},
+  {__LINE__, 0x0bfd63a1,	"201155489", "%d"},
+  {__LINE__, -0x1547c214,	"-357024276", "%ld"},
+  {__LINE__, 0x00000004,	"4", "%#0.d"},
+  {__LINE__, -0x000f2f3,	"-62195", "%.2d"},
+  {__LINE__, 0xfff843dd,	"FFF843DD", "%X"},
+  {__LINE__, 0x00966e36,	"9858614", "%.0ld"},
+  {__LINE__, 0x0000782e,	"0X782E", "% #X"},
+  {__LINE__, 0x00bd36c0,	"12400320", "%ld"},
+  {__LINE__, 0x00000000,	"00", "% .2X"},
+  {__LINE__, 0x00000000,	"0", "%1X"},
+  {__LINE__, 0x0003f416,	"3f416 ", "%-6.x"},
+  {__LINE__, -0x00b74bd,	"-750781", "% ld"},
+  {__LINE__, 0x0000138a,	"138a", "% x"},
+  {__LINE__, 0x024df7f0,	"24DF7F0", "% 0.6X"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%X"},
+  {__LINE__, -0x0003284,	"-12932 ", "%-07.ld"},
+  {__LINE__, 0x000094d3,	"94d3", "%x"},
+  {__LINE__, 0x000000bf,	"bf", "%.2x"},
+  {__LINE__, 0x00000000,	"00000", "%-1.5X"},
+  {__LINE__, -0x04899b8,	"-4757944", "%d"},
+  {__LINE__, 0x2b51bf20,	"+726777632", "%+d"},
+  {__LINE__, -0x000000d,	"-13", "%.2d"},
+  {__LINE__, 0x04f78fbd,	"4F78FBD", "% 7.X"},
+  {__LINE__, 0x00011684,	"71300", "%5.d"},
+  {__LINE__, 0x0000539d,	"21405", "%0d"},
+  {__LINE__, 0x00000008,	"000008", "%-3.6X"},
+  {__LINE__, 0xfc7a2cdc,	"fc7a2cdc", "%2.3x"},
+  {__LINE__, 0xffc21da1,	"ffc21da1", "%x"},
+  {__LINE__, 0x00000273,	"273", "%x"},
+  {__LINE__, 0x00000000,	"0", "%#X"},
+  {__LINE__, -0x31cd6b9,	"-52221625", "% d"},
+  {__LINE__, 0xfffffff8,	"FFFFFFF8", "%.0X"},
+  {__LINE__, 0x00000002,	"2", "%#ld"},
+  {__LINE__, 0x00e8922c,	"15241772", "%d"},
+  {__LINE__, 0xfeb19ea7,	"FEB19EA7", "%0.1X"},
+  {__LINE__, 0x00003931,	"014641", "%06ld"},
+  {__LINE__, 0x00000015,	"0X00015", "%#.5X"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%1.X"},
+  {__LINE__, 0xfff17103,	"0XFFF17103", "% #X"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%+X"},
+  {__LINE__, 0x00000002,	"00002", "%.5x"},
+  {__LINE__, 0x00001617,	"   5655", "% 7.d"},
+  {__LINE__, -0x0000010,	"-000016", "%00.6d"},
+  {__LINE__, 0x000000b0,	"B0", "% X"},
+  {__LINE__, 0xfc9362b2,	"FC9362B2", "%-X"},
+  {__LINE__, 0xfc3d8276,	"fc3d8276", "% 1x"},
+  {__LINE__, 0x00001405,	"5125", "%#d"},
+  {__LINE__, 0x02250183,	" 35979651", "% ld"},
+  {__LINE__, 0xffc9b007,	"ffc9b007", "% 4.x"},
+  {__LINE__, 0x00000311,	"785", "%0d"},
+  {__LINE__, 0x0004d273,	" 316019", "% d"},
+  {__LINE__, 0x00000001,	"1", "%1.x"},
+  {__LINE__, 0xffff240f,	"FFFF240F", "%4.X"},
+  {__LINE__, 0x0049cfda,	"+4837338", "%+ld"},
+  {__LINE__, 0x012f6dd5,	"12F6DD5", "% 6.2X"},
+  {__LINE__, 0x00000002,	"0x2", "%#2.0x"},
+  {__LINE__, 0xfffd834a,	"FFFD834A", "%.6X"},
+  {__LINE__, 0xfe2a40f8,	"0XFE2A40F8", "%#X"},
+  {__LINE__, 0xffffffeb,	"ffffffeb", "%x"},
+  {__LINE__, -0x00ac5cb,	"-705995", "%d"},
+  {__LINE__, -0x3021108c,	"-807473292", "% .4d"},
+  {__LINE__, -0x0000035,	"-53", "%-ld"},
+  {__LINE__, -0x1a36475,	"-27485301", "% d"},
+  {__LINE__, -0x0000011,	"-17", "%d"},
+  {__LINE__, 0x000001a3,	"000419", "%.6ld"},
+  {__LINE__, 0x0030a0a8,	"3186856", "%.5ld"},
+  {__LINE__, 0x00000019,	"25", "%d"},
+  {__LINE__, 0xf32deac1,	"F32DEAC1", "%06.2X"},
+  {__LINE__, -0x0000004,	" -00004", "%7.5ld"},
+  {__LINE__, 0x00000000,	"0", "%ld"},
+  {__LINE__, 0x0006bf19,	"442137", "%#0.d"},
+  {__LINE__, 0x566f6c44,	"1450142788", "%1.6d"},
+  {__LINE__, 0xfffffc10,	"fffffc10", "%.2x"},
+  {__LINE__, -0x000e04d,	"-57421", "%+0d"},
+  {__LINE__, 0x00000000,	"0000000", "%+.7X"},
+  {__LINE__, 0x00b5c74d,	" 11913037", "% ld"},
+  {__LINE__, -0x028dfe2,	"-2678754", "%05.1d"},
+  {__LINE__, 0xfffffee0,	"fffffee0", "%0x"},
+  {__LINE__, -0x030c077,	"-3194999", "%-.6d"},
+  {__LINE__, 0x00055ca1,	"055ca1", "%-.6x"},
+  {__LINE__, 0x00000000,	"       ", "%7.X"},
+  {__LINE__, 0xfffffe3b,	"FFFFFE3B", "%X"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "% 3X"},
+  {__LINE__, 0x00000857,	"2135", "%-#1.d"},
+  {__LINE__, -0x00546a2,	"-345762", "%0.5d"},
+  {__LINE__, 0x0000000b,	"0xb   ", "%-#6x"},
+  {__LINE__, 0x00000d2b,	"d2b ", "%-4.0x"},
+  {__LINE__, 0x0ae02b9e,	"AE02B9E", "%X"},
+  {__LINE__, 0xfffffa7b,	"fffffa7b", "%-2.x"},
+  {__LINE__, 0x00000001,	"1", "%X"},
+  {__LINE__, 0x000006ad,	"01709", "%05.5ld"},
+  {__LINE__, -0x0000102,	"-258", "%-0.ld"},
+  {__LINE__, 0x00000000,	"0", "%.1X"},
+  {__LINE__, -0x01daa95,	"-1944213", "%-1ld"},
+  {__LINE__, 0x02b99040,	"2B99040", "%2.X"},
+  {__LINE__, 0x1b3d5621,	"1B3D5621", "%X"},
+  {__LINE__, 0x0312d16b,	"51564907", "%-1.7ld"},
+  {__LINE__, 0x000aa76c,	" 698220", "% 2d"},
+  {__LINE__, 0x00000000,	"0", "%ld"},
+  {__LINE__, 0xfff8a4ec,	"FFF8A4EC", "%-X"},
+  {__LINE__, 0xffffe06d,	"ffffe06d", "%x"},
+  {__LINE__, 0x00000003,	"3", "% x"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, 0xd3e244dd,	"D3E244DD", "%+5X"},
+  {__LINE__, 0x000028b3,	" 28b3", "% 5.x"},
+  {__LINE__, 0x0001aceb,	"109803", "%6d"},
+  {__LINE__, 0xfffbc5ca,	"0xfffbc5ca", "%-#5x"},
+  {__LINE__, 0x00000097,	"    151", "% 7ld"},
+  {__LINE__, 0x00001fcc,	"+8140", "%+d"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%0x"},
+  {__LINE__, -0x00052a9,	"-21161", "%ld"},
+  {__LINE__, 0xfffffc76,	"FFFFFC76", "%.1X"},
+  {__LINE__, -0x2acb012,	"-44871698", "%0.1ld"},
+  {__LINE__, 0xffffff81,	"ffffff81", "%x"},
+  {__LINE__, -0x0018394,	"-99220", "%-ld"},
+  {__LINE__, 0x0000001b,	"1B", "%X"},
+  {__LINE__, 0x00000033,	"51", "%1d"},
+  {__LINE__, 0xffec37e5,	"FFEC37E5", "%-1X"},
+  {__LINE__, -0x000000a,	"  -10", "%#5.d"},
+  {__LINE__, -0x0000412,	"-1042", "%ld"},
+  {__LINE__, 0x000cd0b1,	"cd0b1  ", "%-7.5x"},
+  {__LINE__, 0x0b445370,	"B445370", "%+2.0X"},
+  {__LINE__, 0xfffffff3,	"0XFFFFFFF3", "%-#X"},
+  {__LINE__, 0xffff9f33,	"FFFF9F33", "%5.X"},
+  {__LINE__, 0x00010a1e,	"10A1E", "%-2X"},
+  {__LINE__, -0xede156f,	"-249435503", "% 7.1ld"},
+  {__LINE__, 0xfc6d63aa,	"fc6d63aa", "% .6x"},
+  {__LINE__, 0x0000311c,	" 12572", "% ld"},
+  {__LINE__, 0x00001f8a,	"8074", "%00.d"},
+  {__LINE__, 0x00000199,	"199", "%-X"},
+  {__LINE__, 0xfffffc60,	"FFFFFC60", "%+3X"},
+  {__LINE__, -0x000022c,	"-556", "%+0ld"},
+  {__LINE__, 0x021d8407,	"35488775", "%-#.7ld"},
+  {__LINE__, 0x0000020f,	"527", "%d"},
+  {__LINE__, -0x000064b,	"-1611", "%#ld"},
+  {__LINE__, -0x0c15aef,	"-12671727", "%d"},
+  {__LINE__, -0x1f1a6881,	"-521824385", "%ld"},
+  {__LINE__, 0xffffc115,	"ffffc115", "% x"},
+  {__LINE__, 0x00000017,	" 23", "% #ld"},
+  {__LINE__, 0x00000dc1,	"DC1 ", "%-4X"},
+  {__LINE__, 0x000002ca,	"2CA", "%X"},
+  {__LINE__, 0x000f052c,	" 984364", "%7.d"},
+  {__LINE__, 0x0000005a,	"0090", "%0.4d"},
+  {__LINE__, -0x001e463,	"-124003", "% 4.ld"},
+  {__LINE__, 0x00000001,	"0000001", "%+.7X"},
+  {__LINE__, 0x00000bfb,	"0000bfb", "%5.7x"},
+  {__LINE__, 0x0002484b,	"149579", "%#1d"},
+  {__LINE__, 0x0043ba18,	"4438552", "%-ld"},
+  {__LINE__, 0x000078f8,	"0X78F8", "%#X"},
+  {__LINE__, 0x00000001,	"   1", "%4d"},
+  {__LINE__, 0x0cedaeed,	"CEDAEED", "%X"},
+  {__LINE__, 0x00000003,	"+3", "%+ld"},
+  {__LINE__, 0xfffffffb,	"FFFFFFFB", "%7.4X"},
+  {__LINE__, 0x00000169,	"361", "%ld"},
+  {__LINE__, 0x00003c7a,	"+15482", "%+ld"},
+  {__LINE__, -0x0159d93,	"-1416595", "% 0.0d"},
+  {__LINE__, 0x0000775c,	"+30556", "%+3.d"},
+  {__LINE__, 0x10284768,	"+271075176", "%+0.0ld"},
+  {__LINE__, -0xf8b610e,	"-260792590", "%0d"},
+  {__LINE__, 0xfdd8d369,	"fdd8d369", "%-.3x"},
+  {__LINE__, 0x000c9495,	"+824469", "%+ld"},
+  {__LINE__, -0x000003f,	"   -063", "%7.3d"},
+  {__LINE__, -0x000073b,	"-1851", "%+03.ld"},
+  {__LINE__, 0xfffe4e23,	"0xfffe4e23", "%#.5x"},
+  {__LINE__, 0x0081788c,	"81788c", "%5x"},
+  {__LINE__, -0x015f888,	"-1439880", "%+1d"},
+  {__LINE__, -0x31d64b4,	"-52257972", "%0.2d"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%6.5X"},
+  {__LINE__, -0x0000072,	"-114", "%+.1d"},
+  {__LINE__, -0x00000e1,	"-225", "%ld"},
+  {__LINE__, 0x000006a8,	"0x6a8", "%+#x"},
+  {__LINE__, 0xfffe673a,	"fffe673a", "%01.x"},
+  {__LINE__, 0xfff2ee0d,	"FFF2EE0D", "%-X"},
+  {__LINE__, 0x0290320a,	"43004426", "%0ld"},
+  {__LINE__, -0xeb7a832,	"-246917170", "% ld"},
+  {__LINE__, 0x02ae9265,	"2ae9265", "%1.x"},
+  {__LINE__, 0xffffffd2,	"ffffffd2", "%+2.x"},
+  {__LINE__, 0x00e6e858,	"0xe6e858", "%#0.x"},
+  {__LINE__, 0x00000c4a,	"+3146", "%+3.1d"},
+  {__LINE__, -0x6943c1a,	"-110378010", "% 0ld"},
+  {__LINE__, 0x0167b119,	"167b119", "%0x"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%+x"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%X"},
+  {__LINE__, 0x000b861e,	"755230", "%ld"},
+  {__LINE__, 0x0000015b,	"347", "%-#ld"},
+  {__LINE__, 0xfffffffa,	"0XFFFFFFFA", "%#X"},
+  {__LINE__, 0x000de9e5,	"911845", "%d"},
+  {__LINE__, 0x00000001,	"01", "%.2d"},
+  {__LINE__, 0x000007a5,	"1957", "%0d"},
+  {__LINE__, 0x0000000f,	"f", "%x"},
+  {__LINE__, 0x00c38cbf,	" 12815551", "% .2d"},
+  {__LINE__, -0x7bd1b6e,	"-129833838", "% d"},
+  {__LINE__, -0x000013c,	"-316", "%0d"},
+  {__LINE__, 0x00001aad,	"1AAD", "%-0X"},
+  {__LINE__, 0x0034f903,	"3471619", "%00d"},
+  {__LINE__, 0xff925717,	"ff925717", "%4x"},
+  {__LINE__, 0x00000002,	"02", "%.2d"},
+  {__LINE__, 0x00000f34,	"F34", "%+X"},
+  {__LINE__, 0xffffeefe,	"FFFFEEFE", "%X"},
+  {__LINE__, 0xfffeecb4,	"FFFEECB4", "% 2.X"},
+  {__LINE__, 0x00034421,	"214049", "%0ld"},
+  {__LINE__, 0x00000000,	"     0", "%+6X"},
+  {__LINE__, -0x0000062,	"-98", "%-#2d"},
+  {__LINE__, -0x0000557,	"-1367", "%-4.4d"},
+  {__LINE__, 0xffffe17c,	"FFFFE17C", "%X"},
+  {__LINE__, 0x00000097,	"00097", "%.5X"},
+  {__LINE__, 0xfffcb278,	"FFFCB278", "%0.7X"},
+  {__LINE__, -0x0000001,	"-0001  ", "%-7.4d"},
+  {__LINE__, -0x0000001,	"-1", "%ld"},
+  {__LINE__, 0x000002c4,	"708", "%d"},
+  {__LINE__, 0x04946f45,	"4946F45", "%-2.X"},
+  {__LINE__, 0x000000ff,	"00ff", "% 2.4x"},
+  {__LINE__, 0x00073307,	"471815", "%3ld"},
+  {__LINE__, 0x0085b7b6,	"+8763318", "%+ld"},
+  {__LINE__, -0x0000002,	"-2", "%1ld"},
+  {__LINE__, -0x0000001,	"-1", "%-2d"},
+  {__LINE__, -0x00000b5,	"   -181", "%7ld"},
+  {__LINE__, -0x0412486,	"-4269190", "%+2.1ld"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%0x"},
+  {__LINE__, 0x0000006d,	"6d", "%x"},
+  {__LINE__, 0x000000da,	"218", "%-.3ld"},
+  {__LINE__, 0xfffffcfe,	"fffffcfe", "%x"},
+  {__LINE__, 0x652e60c7,	"652E60C7", "%7.7X"},
+  {__LINE__, 0x00000035,	" 53", "% #2d"},
+  {__LINE__, 0x000000fc,	"FC", "%-X"},
+  {__LINE__, 0x00000019,	" 25", "% ld"},
+  {__LINE__, 0xfffffcf4,	"fffffcf4", "%6x"},
+  {__LINE__, 0xffffff41,	"ffffff41", "%x"},
+  {__LINE__, 0x00000034,	" 52", "%3.ld"},
+  {__LINE__, 0xffffffb2,	"ffffffb2", "%-x"},
+  {__LINE__, -0x6dc43e7c,	"-1841577596", "% .2ld"},
+  {__LINE__, 0x00000004,	"4", "%d"},
+  {__LINE__, -0x000023b,	"-571", "%ld"},
+  {__LINE__, -0x000004d,	"-77", "%ld"},
+  {__LINE__, 0x0000e3ba,	"58298", "%.0ld"},
+  {__LINE__, 0xfffffff2,	"fffffff2", "%0.0x"},
+  {__LINE__, -0x0000020,	"-32", "%ld"},
+  {__LINE__, 0xffffb33e,	"0XFFFFB33E", "%-#X"},
+  {__LINE__, 0x00000000,	"    ", "% 4.x"},
+  {__LINE__, 0xffd96f92,	"FFD96F92", "%X"},
+  {__LINE__, 0x0000002e,	" 46", "% 0ld"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%x"},
+  {__LINE__, -0x5008ba3,	"-83921827", "%+d"},
+  {__LINE__, 0xfdc1df3d,	"FDC1DF3D", "%0X"},
+  {__LINE__, 0xfc7410e5,	"fc7410e5", "%7x"},
+  {__LINE__, 0xfffffffa,	"FFFFFFFA", "% 6.X"},
+  {__LINE__, 0x00000000,	"0", "%X"},
+  {__LINE__, -0x040fd4e,	"-4259150", "% 05.d"},
+  {__LINE__, 0x0000003b,	" 59", "%3.2d"},
+  {__LINE__, 0xff776dd8,	"ff776dd8", "%x"},
+  {__LINE__, 0x0000055b,	"+1371", "%+#2d"},
+  {__LINE__, 0x00004841,	"4841", "%.1x"},
+  {__LINE__, 0x0229d710,	"36296464", "%-.2ld"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, 0xfffe8376,	"fffe8376", "%0x"},
+  {__LINE__, 0x000a7b83,	"a7b83", "%x"},
+  {__LINE__, 0x0000000d,	"    013", "%#7.3d"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%5.0X"},
+  {__LINE__, 0x00000704,	"  0x704", "%#7.0x"},
+  {__LINE__, 0xfff970b9,	"FFF970B9", "%.1X"},
+  {__LINE__, -0x000b60a,	"-46602", "%+d"},
+  {__LINE__, 0x00000000,	" 00000", "%6.5x"},
+  {__LINE__, 0x00000003,	"3", "%X"},
+  {__LINE__, 0x0000c14b,	"c14b", "%0x"},
+  {__LINE__, 0x066d7860,	"107837536", "%-d"},
+  {__LINE__, 0x00000013,	"  13", "%4.x"},
+  {__LINE__, 0xfff96f18,	"FFF96F18", "%4X"},
+  {__LINE__, 0xffffff30,	"FFFFFF30", "%X"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "% .7X"},
+  {__LINE__, -0x72a9e985,	"-1923737989", "%2.d"},
+  {__LINE__, 0x00000002,	"0x2", "%#x"},
+  {__LINE__, 0x0000050e,	"50e", "%2.3x"},
+  {__LINE__, 0x0000605c,	"24668", "%4.1d"},
+  {__LINE__, 0xffffff3e,	"ffffff3e", "%x"},
+  {__LINE__, -0x0000010,	"-16", "%-2d"},
+  {__LINE__, 0x000061aa,	"61AA", "%X"},
+  {__LINE__, 0x000c2ec3,	"C2EC3", "%0X"},
+  {__LINE__, -0x0000001,	"-1", "%-0d"},
+  {__LINE__, 0x00130e17,	"+1248791", "%+.6ld"},
+  {__LINE__, 0x000000ef,	"EF", "%-X"},
+  {__LINE__, -0x0000001,	"   -1", "%+5ld"},
+  {__LINE__, 0x0000989d,	"39069", "%d"},
+  {__LINE__, 0x00000000,	"0", "%-x"},
+  {__LINE__, 0x00000417,	"417", "%X"},
+  {__LINE__, 0x00005e86,	"5E86", "%+X"},
+  {__LINE__, -0x0007c08,	"-31752", "%ld"},
+  {__LINE__, 0x00da8e0f,	"DA8E0F", "%2.2X"},
+  {__LINE__, -0x3ee095ec,	"-1054905836", "% 0d"},
+  {__LINE__, 0xfffdb5a3,	"fffdb5a3", "%x"},
+  {__LINE__, 0xffffff83,	"FFFFFF83", "%X"},
+  {__LINE__, 0xfff8efd7,	"0xfff8efd7", "%#x"},
+  {__LINE__, 0x00000020,	" 32", "% d"},
+  {__LINE__, 0xfff7c002,	"fff7c002", "%.7x"},
+  {__LINE__, -0x0000001,	"-1", "%ld"},
+  {__LINE__, 0x00000000,	"  000", "%05.3X"},
+  {__LINE__, 0xfff190ee,	"FFF190EE", "%X"},
+  {__LINE__, 0x00000a6c,	"  2668", "%#6.ld"},
+  {__LINE__, 0x00037024,	"37024", "%x"},
+  {__LINE__, 0xfffec37f,	"FFFEC37F", "%X"},
+  {__LINE__, 0x007ee9bb,	"8317371", "%#0.ld"},
+  {__LINE__, 0x00000122,	"290", "%ld"},
+  {__LINE__, -0x0013b5f,	"-80735", "%ld"},
+  {__LINE__, 0xfffffff6,	"FFFFFFF6", "%X"},
+  {__LINE__, -0x0000c16,	"-0003094", "%-00.7d"},
+  {__LINE__, -0x00010ed,	"-4333", "%ld"},
+  {__LINE__, 0x00000007,	" 0X007", "%#6.3X"},
+  {__LINE__, 0x0053781e,	" 5470238", "% 2d"},
+  {__LINE__, 0xffff03e9,	"0XFFFF03E9", "%+#7.3X"},
+  {__LINE__, 0xfffffdc2,	"0xfffffdc2", "% #4.x"},
+  {__LINE__, -0x00018e1,	"-6369", "%d"},
+  {__LINE__, 0xf3a4abc6,	"F3A4ABC6", "%-.2X"},
+  {__LINE__, 0xfff64a27,	"FFF64A27", "%7.7X"},
+  {__LINE__, 0x00195ae5,	"195AE5", "%+03.X"},
+  {__LINE__, 0xfff8849a,	"fff8849a", "%.1x"},
+  {__LINE__, -0x001b045,	"-110661", "%+ld"},
+  {__LINE__, 0x01e8a106,	"32022790", "%7.ld"},
+  {__LINE__, 0x0008ee94,	"8EE94", "%X"},
+  {__LINE__, 0xfffcdabc,	"FFFCDABC", "%X"},
+  {__LINE__, 0xfda75cd2,	"fda75cd2", "%x"},
+  {__LINE__, 0x00fd505a,	"fd505a", "%x"},
+  {__LINE__, 0x00003748,	"3748", "%+x"},
+  {__LINE__, 0xffffffe5,	"ffffffe5", "% 3.6x"},
+  {__LINE__, -0x1d1c4045,	"-488390725", "%d"},
+  {__LINE__, 0xfffffff9,	"0xfffffff9", "%#x"},
+  {__LINE__, -0x0000001,	"-1", "%-#ld"},
+  {__LINE__, 0x00000191,	"191", "%X"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%-X"},
+  {__LINE__, -0x0000006,	"-6", "%ld"},
+  {__LINE__, 0x00000033,	"  33", "% 4x"},
+  {__LINE__, -0x0159a14,	"-1415700", "% ld"},
+  {__LINE__, 0x000001c3,	"00001c3", "%07x"},
+  {__LINE__, 0xffffe9e2,	"ffffe9e2", "%-x"},
+  {__LINE__, 0x5b19abd9,	"0x5b19abd9", "%-#x"},
+  {__LINE__, 0xffff1bae,	"0xffff1bae", "%#x"},
+  {__LINE__, 0x00000001,	"+1", "%+d"},
+  {__LINE__, 0x006a23c7,	"6A23C7", "%2.X"},
+  {__LINE__, 0x000008a4,	" 8a4", "% 4.1x"},
+  {__LINE__, 0xfffffcd9,	"fffffcd9", "%.1x"},
+  {__LINE__, 0x0000121b,	"121B", "%X"},
+  {__LINE__, 0x001231aa,	"1192362", "%7.d"},
+  {__LINE__, -0x008026d,	"-524909", "%4.2d"},
+  {__LINE__, 0x192ea594,	"422487444", "%ld"},
+  {__LINE__, 0x0001a800,	"108544", "%0d"},
+  {__LINE__, 0x000062f1,	"62f1", "%.4x"},
+  {__LINE__, 0xff8b39b0,	"ff8b39b0", "% x"},
+  {__LINE__, 0x00000001,	"0x1", "%+#x"},
+  {__LINE__, 0x0000144a,	"5194", "%ld"},
+  {__LINE__, 0x00002599,	"9625", "%d"},
+  {__LINE__, 0xffa0a2ef,	"ffa0a2ef", "%0x"},
+  {__LINE__, 0xff6712e1,	"FF6712E1", "%0X"},
+  {__LINE__, 0x0007ebb3,	"519091", "%1ld"},
+  {__LINE__, 0x0000000f,	"15  ", "%-4.ld"},
+  {__LINE__, -0x0000096,	"-150", "%2.ld"},
+  {__LINE__, 0x0000004f,	"4F", "%.2X"},
+  {__LINE__, 0xfffffc29,	"fffffc29", "%-4.x"},
+  {__LINE__, 0x00000019,	"19", "%x"},
+  {__LINE__, 0x00000c4e,	"c4e", "%x"},
+  {__LINE__, 0x0000006b,	" 0006B", "%6.5X"},
+  {__LINE__, 0x00c8d2c6,	"c8d2c6", "%.0x"},
+  {__LINE__, -0x256fb8de,	"-628078814", "%ld"},
+  {__LINE__, 0x4f51fcf4,	"4F51FCF4", "%+X"},
+  {__LINE__, 0x000f000e,	"983054", "%1.ld"},
+  {__LINE__, 0xfffff03f,	"fffff03f", "%x"},
+  {__LINE__, 0x0000001d,	"   1D", "%05.X"},
+  {__LINE__, 0x0072ea14,	"72ea14", "%x"},
+  {__LINE__, -0xc6098b9,	"-207657145", "%-7d"},
+  {__LINE__, 0x00000a76,	"2678", "%3ld"},
+  {__LINE__, 0xfff84db3,	"FFF84DB3", "%X"},
+  {__LINE__, 0x0fb52870,	"fb52870", "%+x"},
+  {__LINE__, 0x08bc170a,	"0x8bc170a", "%#x"},
+  {__LINE__, 0xfffeeb00,	"fffeeb00", "%0.5x"},
+  {__LINE__, 0x000ece95,	"970389", "%d"},
+  {__LINE__, 0x00000000,	"0", "%0X"},
+  {__LINE__, 0x07f98e8a,	"7f98e8a", "% x"},
+  {__LINE__, 0x000499eb,	" 499eb", "% 6.x"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%-X"},
+  {__LINE__, 0x0aa45e86,	"178544262", "%#.2d"},
+  {__LINE__, 0xff73387d,	"FF73387D", "%03.X"},
+  {__LINE__, 0xfffffb51,	"FFFFFB51", "%.3X"},
+  {__LINE__, 0xffffffdc,	"ffffffdc", "%6.x"},
+  {__LINE__, 0xffffffed,	"FFFFFFED", "%-X"},
+  {__LINE__, 0x0001c4c2,	"1c4c2", "%0.3x"},
+  {__LINE__, -0x0000001,	"-0000001", "%-#.7d"},
+  {__LINE__, 0x00000007,	"7", "%0.x"},
+  {__LINE__, 0x00000001,	"1", "%ld"},
+  {__LINE__, 0xffffd000,	"ffffd000", "%4.3x"},
+  {__LINE__, 0x00000030,	"48", "%2.d"},
+  {__LINE__, -0x6c121ce,	"-113320398", "%.5ld"},
+  {__LINE__, 0x000001ed,	"1ED", "% 3.X"},
+  {__LINE__, 0xfffff0f3,	"FFFFF0F3", "%+.6X"},
+  {__LINE__, 0xffffffec,	"ffffffec", "%x"},
+  {__LINE__, 0x002d5ab8,	"0x2d5ab8", "%-#x"},
+  {__LINE__, 0x0026acff,	"2534655", "%0ld"},
+  {__LINE__, 0x01d90cd7,	"+31001815", "%+.2ld"},
+  {__LINE__, -0x1f7abc0,	"-33008576", "%7.6d"},
+  {__LINE__, 0xfc5babcc,	"fc5babcc", "%x"},
+  {__LINE__, -0x9b74892,	"-163006610", "% .6d"},
+  {__LINE__, 0x03931d84,	"59972996", "%0.d"},
+  {__LINE__, 0x07d261ce,	"131228110", "%#ld"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, 0x00000002,	"2", "%+X"},
+  {__LINE__, -0x0000604,	"-1540", "%+d"},
+  {__LINE__, 0x00000000,	"       ", "%7.x"},
+  {__LINE__, 0x00000001,	"1", "%.0X"},
+  {__LINE__, -0x0005a8e,	"-23182", "% d"},
+  {__LINE__, 0x03fb2730,	"3fb2730", "%7.x"},
+  {__LINE__, 0xffffff03,	"ffffff03", "%x"},
+  {__LINE__, 0x00000000,	"   ", "%-#3.d"},
+  {__LINE__, 0x04025a4b,	"0X4025A4B", "%+#X"},
+  {__LINE__, -0x0000001,	"  -1", "%4.d"},
+  {__LINE__, 0xfffe00a3,	"FFFE00A3", "%+X"},
+  {__LINE__, -0x1b26e3c8,	"-455533512", "% ld"},
+  {__LINE__, 0x000017e5,	"6117", "%d"},
+  {__LINE__, -0x0e4f3b6,	"-15004598", "%0ld"},
+  {__LINE__, 0x00000034,	"52", "%ld"},
+  {__LINE__, 0x0000024c,	" 24C", "%4X"},
+  {__LINE__, 0xfffedf65,	"FFFEDF65", "%-0X"},
+  {__LINE__, -0x000ff1f,	"-65311", "%+#d"},
+  {__LINE__, 0x00000007,	"      7", "%7.x"},
+  {__LINE__, 0x018656ae,	"18656ae", "%3.7x"},
+  {__LINE__, -0x0000004,	"-4", "%d"},
+  {__LINE__, 0x7081292d,	"1887512877", "%d"},
+  {__LINE__, 0x87d3e48c,	"87d3e48c", "%-x"},
+  {__LINE__, 0xf99c516e,	"0xf99c516e", "% #7.4x"},
+  {__LINE__, 0xfffffffa,	"FFFFFFFA", "%-1X"},
+  {__LINE__, -0x000001d,	"-29", "%#ld"},
+  {__LINE__, -0x0000001,	"-1", "%+ld"},
+  {__LINE__, 0x28ab3350,	" 682308432", "% 1d"},
+  {__LINE__, -0x0000006,	"-6", "%ld"},
+  {__LINE__, 0xfffffffb,	"FFFFFFFB", "%.5X"},
+  {__LINE__, -0x0000007,	"-7", "%#d"},
+  {__LINE__, -0x0000328,	"  -808", "%6.ld"},
+  {__LINE__, -0x29386f00,	"-691564288", "%.3d"},
+  {__LINE__, -0x059f38a,	"-5895050", "%.4ld"},
+  {__LINE__, 0xfffff888,	"FFFFF888", "%3X"},
+  {__LINE__, 0xffffffdf,	"ffffffdf", "%0.0x"},
+  {__LINE__, -0xb4fc354,	"-189776724", "%2d"},
+  {__LINE__, 0x00058c07,	"363527", "%1.d"},
+  {__LINE__, 0x0a256162,	"a256162", "%x"},
+  {__LINE__, -0x05c87b0,	"-6064048", "%0ld"},
+  {__LINE__, 0xfffffda1,	"fffffda1", "%x"},
+  {__LINE__, 0x000034b7,	"13495", "%d"},
+  {__LINE__, -0x6d1a8918,	"-1830455576", "%.1d"},
+  {__LINE__, 0x00022290,	"139920", "%05ld"},
+  {__LINE__, 0x00000000,	"0", "%-x"},
+  {__LINE__, -0x1f8eafce,	"-529444814", "%4.d"},
+  {__LINE__, -0x7bf32808,	"-2079533064", "% ld"},
+  {__LINE__, 0x0000023c,	"23c", "% x"},
+  {__LINE__, 0x00000039,	"39", "%X"},
+  {__LINE__, -0x000556d,	"-21869", "%ld"},
+  {__LINE__, -0x00000ca,	"-202", "%ld"},
+  {__LINE__, 0x00002e28,	"11816", "%-d"},
+  {__LINE__, 0x00000011,	"17", "%-ld"},
+  {__LINE__, 0xfffffffb,	"FFFFFFFB", "%-X"},
+  {__LINE__, 0xfffdd67f,	"0XFFFDD67F", "%#X"},
+  {__LINE__, -0x000003d,	"-61", "%d"},
+  {__LINE__, 0x0000bfce,	"0XBFCE", "%-#5.2X"},
+  {__LINE__, 0xfffffffc,	"fffffffc", "%x"},
+  {__LINE__, -0x00aea17,	"-715287", "%.5d"},
+  {__LINE__, -0x02fce89,	"-3133065", "%0d"},
+  {__LINE__, 0x007f6ed1,	"7F6ED1", "%6X"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%X"},
+  {__LINE__, -0x0002761,	"-10081", "%#6.2d"},
+  {__LINE__, 0x003be8d8,	"3BE8D8", "%-X"},
+  {__LINE__, 0x00000901,	"  2305", "%6.d"},
+  {__LINE__, 0x00049916,	"0301334", "%3.7ld"},
+  {__LINE__, 0x0678ffea,	"0X678FFEA", "%#4X"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%+.0x"},
+  {__LINE__, -0x31d2ec61,	"-835906657", "%.0d"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%0X"},
+  {__LINE__, -0x0015588,	"-87432", "%d"},
+  {__LINE__, 0xffffff3e,	"ffffff3e", "%.4x"},
+  {__LINE__, 0x0000000a,	"10", "%d"},
+  {__LINE__, -0x0000003,	"-3", "%2.1ld"},
+  {__LINE__, -0x000d29a,	"-53914", "%ld"},
+  {__LINE__, -0x04ccbe0,	"-5032928", "%2.2ld"},
+  {__LINE__, 0x0357c2a5,	"357c2a5", "% 7.x"},
+  {__LINE__, 0x00000009,	" 9", "% 1.ld"},
+  {__LINE__, -0x005908d,	"-364685", "%0d"},
+  {__LINE__, -0x0000de6,	"-3558", "%0ld"},
+  {__LINE__, 0x2d395e6b,	"+758734443", "%+6d"},
+  {__LINE__, 0x001aba58,	"1ABA58", "% X"},
+  {__LINE__, 0x0ceba5ab,	"0XCEBA5AB", "%#.1X"},
+  {__LINE__, -0x01a8575,	"-1738101", "% 2ld"},
+  {__LINE__, 0x0000000d,	"13", "%#ld"},
+  {__LINE__, 0x00000000,	"0", "%d"},
+  {__LINE__, 0x4b856407,	"4b856407", "%5x"},
+  {__LINE__, 0x006f333c,	"6F333C", "%-X"},
+  {__LINE__, 0x000000d0,	"d0", "%x"},
+  {__LINE__, 0x2ecf0d4e,	"2ecf0d4e", "%0x"},
+  {__LINE__, -0x0000188,	"-0000392", "%#1.7ld"},
+  {__LINE__, -0x0000037,	"-55", "%d"},
+  {__LINE__, 0xfffffff1,	"FFFFFFF1", "% .1X"},
+  {__LINE__, 0x00000001,	"0x1", "%#3x"},
+  {__LINE__, 0x000005ed,	"5ED", "%3X"},
+  {__LINE__, 0x031183a3,	"31183A3", "%X"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%x"},
+  {__LINE__, -0x0018695,	"-99989", "%-0.5ld"},
+  {__LINE__, -0x0000001,	"-01", "%0.2ld"},
+  {__LINE__, 0x00007822,	"7822", "%+x"},
+  {__LINE__, 0x00000000,	"0", "% x"},
+  {__LINE__, 0xfda2461a,	"FDA2461A", "%X"},
+  {__LINE__, 0x065c50ef,	"106713327", "%2.ld"},
+  {__LINE__, 0x00000a81,	"a81", "% 0x"},
+  {__LINE__, -0x000022e,	"-558", "%.0ld"},
+  {__LINE__, 0x00013d2f,	"81199", "%.2ld"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%+X"},
+  {__LINE__, 0x000015f9,	"5625", "%04.ld"},
+  {__LINE__, 0x0ab575a2,	"179664290", "%0d"},
+  {__LINE__, 0x0024d07f,	"0X24D07F", "%#X"},
+  {__LINE__, 0x07ee35e1,	"7EE35E1", "%+X"},
+  {__LINE__, -0x00c114c,	"-790860", "%#ld"},
+  {__LINE__, 0x00003be3,	"  15331", "%07.d"},
+  {__LINE__, 0xfff87570,	"FFF87570", "%4.0X"},
+  {__LINE__, -0x14eab419,	"-350925849", "%-ld"},
+  {__LINE__, -0x000001b,	"-27", "%ld"},
+  {__LINE__, 0x167ce2ea,	"0x167ce2ea", "%#0.x"},
+  {__LINE__, -0x00009bc,	"-002492", "% 3.6d"},
+  {__LINE__, 0xfffffdb9,	"0XFFFFFDB9", "%#7.X"},
+  {__LINE__, 0x008b2b9d,	"8B2B9D", "% X"},
+  {__LINE__, 0x000cfec3,	"CFEC3", "% 05X"},
+  {__LINE__, 0x05970be6,	"5970be6", "%x"},
+  {__LINE__, 0x00002780,	"010112", "%2.6d"},
+  {__LINE__, 0x00000005,	"+5", "%+d"},
+  {__LINE__, 0xfffffffb,	"0xfffffffb", "%#3.x"},
+  {__LINE__, 0x00000001,	"1    ", "%-#5.ld"},
+  {__LINE__, -0x0000017,	"-23", "%ld"},
+  {__LINE__, -0x023b943,	"-2341187", "%d"},
+  {__LINE__, 0x0000000d,	"13", "%ld"},
+  {__LINE__, 0x00025a03,	"25a03", "% .5x"},
+  {__LINE__, 0x3e1ebe24,	"3e1ebe24", "% x"},
+  {__LINE__, 0x0000013a,	"0x13a", "%#5.0x"},
+  {__LINE__, 0xfff6f5b3,	"FFF6F5B3", "%4.X"},
+  {__LINE__, -0x0000a8a,	"-2698", "%.3d"},
+  {__LINE__, 0x0009dd5f,	"9dd5f", "%x"},
+  {__LINE__, 0x000003c7,	" 3C7", "%04.2X"},
+  {__LINE__, 0x1bcfa2f2,	"1bcfa2f2", "%+1.x"},
+  {__LINE__, 0x0001b4f4,	"1b4f4", "%+1.x"},
+  {__LINE__, 0x1bc19a90,	"465672848", "%#d"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%+06x"},
+  {__LINE__, -0x0000a88,	"-2696", "%3.d"},
+  {__LINE__, 0x00084a19,	"84A19", "%-X"},
+  {__LINE__, 0xffe1fc8f,	"FFE1FC8F", "%0.1X"},
+  {__LINE__, -0x0000a3a,	"-2618", "%5d"},
+  {__LINE__, -0x0000001,	"-1", "%ld"},
+  {__LINE__, -0x5c6183d,	"-96868413", "%+ld"},
+  {__LINE__, -0x0000001,	"-1", "%-d"},
+  {__LINE__, 0x0000faa8,	"64168", "%05.d"},
+  {__LINE__, 0x003913ef,	"3740655", "%ld"},
+  {__LINE__, 0x0dde330a,	"232665866", "%#ld"},
+  {__LINE__, 0xfcfb1a7b,	"FCFB1A7B", "%+X"},
+  {__LINE__, 0x07b1a81f,	" 129083423", "% 0d"},
+  {__LINE__, 0x00000001,	"1", "%d"},
+  {__LINE__, 0x00000070,	"  112", "%5ld"},
+  {__LINE__, 0xffff74d9,	"ffff74d9", "%x"},
+  {__LINE__, -0x001ab93,	"-109459", "%03.d"},
+  {__LINE__, 0x0eb6b497,	"EB6B497", "%+X"},
+  {__LINE__, 0x07adbac2,	"128826050", "%#0.4d"},
+  {__LINE__, 0xff747068,	"FF747068", "%6.X"},
+  {__LINE__, -0x190ce98f,	"-420276623", "%06.6ld"},
+  {__LINE__, -0x0000007,	"-7", "%.0d"},
+  {__LINE__, 0x0001240f,	"1240f", "% 3x"},
+  {__LINE__, 0x267ae4a0,	"645588128", "%-#ld"},
+  {__LINE__, -0x0000001,	"-1", "% ld"},
+  {__LINE__, -0x0000066,	"-00102", "%.5ld"},
+  {__LINE__, 0x868fa035,	"868fa035", "%x"},
+  {__LINE__, 0x00000000,	"    ", "%-4.ld"},
+  {__LINE__, 0xfffffe72,	"FFFFFE72", "%4.4X"},
+  {__LINE__, 0x00a6b4f4,	"10925300", "%#ld"},
+  {__LINE__, -0x0000002,	"-2", "%00.1d"},
+  {__LINE__, -0x00000a3,	"-163", "%ld"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "% 3.x"},
+  {__LINE__, 0xffe25941,	"ffe25941", "% x"},
+  {__LINE__, 0x0000a20f,	"41487", "%ld"},
+  {__LINE__, -0x000009b,	"-155", "%#.3ld"},
+  {__LINE__, 0x000c5dc1,	"810433", "%4.ld"},
+  {__LINE__, 0x00003ec4,	"16068", "%ld"},
+  {__LINE__, 0x000002f3,	"0755", "%04ld"},
+  {__LINE__, 0xffffff28,	"FFFFFF28", "%.5X"},
+  {__LINE__, -0x08450ff,	"-8671487", "%-3.0ld"},
+  {__LINE__, 0x00000092,	"92", "%x"},
+  {__LINE__, -0x0000317,	"-791", "%d"},
+  {__LINE__, 0x0000000d,	"d", "%x"},
+  {__LINE__, 0x00000036,	"36", "%x"},
+  {__LINE__, -0x112693f,	"-17983807", "%ld"},
+  {__LINE__, 0x00004226,	"16934", "%0.d"},
+  {__LINE__, 0x000001ba,	" 442", "% ld"},
+  {__LINE__, 0xfffffffc,	"0XFFFFFFFC", "%#4X"},
+  {__LINE__, 0xffdb3d23,	"0xffdb3d23", "% #x"},
+  {__LINE__, 0x039eb84d,	"39EB84D", "%+.6X"},
+  {__LINE__, 0xffffc7da,	"ffffc7da", "%0x"},
+  {__LINE__, 0xfffffdb6,	"FFFFFDB6", "%6X"},
+  {__LINE__, 0x001b75b0,	"1799600", "%ld"},
+  {__LINE__, 0xfffffca2,	"FFFFFCA2", "%-X"},
+  {__LINE__, 0xffffffba,	"ffffffba", "%7.4x"},
+  {__LINE__, -0x000124e,	"-4686", "%3.ld"},
+  {__LINE__, -0x000bec0,	"-48832", "% 0d"},
+  {__LINE__, 0xfffffca0,	"fffffca0", "%2.x"},
+  {__LINE__, 0x00b2a462,	"11707490", "%ld"},
+  {__LINE__, 0x0745a647,	"745a647", "%+4.x"},
+  {__LINE__, 0xfffffbac,	"0XFFFFFBAC", "%#3.X"},
+  {__LINE__, -0x0000002,	"-2", "%-0.1d"},
+  {__LINE__, 0x0006cfdb,	"446427", "%#5.d"},
+  {__LINE__, -0x0000001,	"-1", "%d"},
+  {__LINE__, 0x043b134e,	"43B134E", "%X"},
+  {__LINE__, -0x0000015,	"-21", "%ld"},
+  {__LINE__, -0x0000114,	"-276", "%0d"},
+  {__LINE__, -0x0004d4a,	"-19786", "%-d"},
+  {__LINE__, -0x000001c,	"-28", "%ld"},
+  {__LINE__, -0x0cb89fc,	"-13339132", "%ld"},
+  {__LINE__, 0xffffffcf,	"ffffffcf", "%x"},
+  {__LINE__, 0xf6d2387a,	"f6d2387a", "%-x"},
+  {__LINE__, -0x00000cd,	"-205", "%#ld"},
+  {__LINE__, 0x00000000,	"0", "%#x"},
+  {__LINE__, 0xfffffc81,	"fffffc81", "%x"},
+  {__LINE__, 0x00000000,	" 0", "% ld"},
+  {__LINE__, 0x00024fb5,	"24fb5", "%x"},
+  {__LINE__, 0x000012fa,	"12FA", "%X"},
+  {__LINE__, 0x0318ce7c,	"51957372", "%0d"},
+  {__LINE__, 0x02280a99,	"2280a99", "%-x"},
+  {__LINE__, 0xffffff5c,	"FFFFFF5C", "%2.X"},
+  {__LINE__, -0x000002e,	"    -46", "%7ld"},
+  {__LINE__, -0x04a73e8,	"-4879336", "%4ld"},
+  {__LINE__, 0x000007f3,	"7f3", "% 1.3x"},
+  {__LINE__, 0x00000114,	"0x114", "%#x"},
+  {__LINE__, 0x0000030c,	"30c", "%-x"},
+  {__LINE__, 0x001dd0dd,	"0x1dd0dd", "%+#5.5x"},
+  {__LINE__, 0xfff23de3,	"fff23de3", "%-x"},
+  {__LINE__, -0x0178f9c,	"-1544092", "%d"},
+  {__LINE__, 0x02ded8da,	"2DED8DA", "%X"},
+  {__LINE__, -0x0991672,	"-10032754", "%3.d"},
+  {__LINE__, 0x6943c150,	"6943c150", "%x"},
+  {__LINE__, 0xffffc25d,	"FFFFC25D", "%4X"},
+  {__LINE__, 0x00000c9c,	" 0003228", "% .7d"},
+  {__LINE__, 0xffffffdf,	"FFFFFFDF", "% 6.X"},
+  {__LINE__, 0x0001a145,	" 1a145", "%6.0x"},
+  {__LINE__, 0xffdc832f,	"0xffdc832f", "%#.1x"},
+  {__LINE__, 0x00699f7b,	"699f7b", "%x"},
+  {__LINE__, 0xf9575268,	"F9575268", "%+0X"},
+  {__LINE__, 0x04eb4783,	"82528131", "%-ld"},
+  {__LINE__, -0x0000023,	"-35", "%0ld"},
+  {__LINE__, -0x012b08a,	"-1224842", "%0d"},
+  {__LINE__, 0xffffb587,	"FFFFB587", "%X"},
+  {__LINE__, 0xffffffe9,	"ffffffe9", "%x"},
+  {__LINE__, 0x006b5596,	" 7034262", "% 0d"},
+  {__LINE__, 0x004d0d2a,	"+5049642", "%+ld"},
+  {__LINE__, -0x002a099,	"-172185", "%d"},
+  {__LINE__, 0x00000224,	"548", "%ld"},
+  {__LINE__, 0x03e0cca8,	"65064104", "%d"},
+  {__LINE__, -0x7bb389d,	"-129710237", "%.3ld"},
+  {__LINE__, 0xffc630f5,	"ffc630f5", "%-07.0x"},
+  {__LINE__, 0xfffffff8,	"FFFFFFF8", "%X"},
+  {__LINE__, 0x0030225b,	"3154523", "%#d"},
+  {__LINE__, 0xff7f4e28,	"ff7f4e28", "%+4.x"},
+  {__LINE__, 0x14ee154d,	"+351147341", "%+ld"},
+  {__LINE__, 0x00000003,	"03", "%.2d"},
+  {__LINE__, 0xfe0359d6,	"fe0359d6", "%x"},
+  {__LINE__, 0x002b71c3,	"2847171", "%d"},
+  {__LINE__, 0x055c4d4a,	"55C4D4A", "%-X"},
+  {__LINE__, 0xfffb17d2,	"fffb17d2", "% .0x"},
+  {__LINE__, 0x00000002,	"2", "%x"},
+  {__LINE__, 0x000018e1,	"18E1", "%1.1X"},
+  {__LINE__, 0x00000331,	"817", "%0d"},
+  {__LINE__, -0x0000982,	"-2434 ", "%-06.ld"},
+  {__LINE__, -0x0000168,	"-0000360", "%.7ld"},
+  {__LINE__, 0xffffffe9,	"FFFFFFE9", "%-0.4X"},
+  {__LINE__, 0xe42084ef,	"E42084EF", "%X"},
+  {__LINE__, 0x000000aa,	"aa", "%x"},
+  {__LINE__, -0xe8b98b5,	"-244029621", "%+d"},
+  {__LINE__, -0x00000d9,	"-217", "%+2.d"},
+  {__LINE__, 0x0000027b,	"27B", "%+.0X"},
+  {__LINE__, 0x002e52db,	"3035867", "%-ld"},
+  {__LINE__, -0x00e2ba8,	"-928680", "%0.2ld"},
+  {__LINE__, 0x003b74d8,	"3B74D8", "%X"},
+  {__LINE__, -0x000006f,	"-111", "%+ld"},
+  {__LINE__, 0xf8507e22,	"0XF8507E22", "%-#X"},
+  {__LINE__, 0x0629f4c0,	"103412928", "%-ld"},
+  {__LINE__, -0x000002d,	"-45", "%0d"},
+  {__LINE__, -0x0001db0,	"-7600", "%d"},
+  {__LINE__, -0x00001bb,	" -443", "%5.ld"},
+  {__LINE__, 0xffffd2b9,	"ffffd2b9", "%+x"},
+  {__LINE__, 0xffffe685,	"0XFFFFE685", "%#0.7X"},
+  {__LINE__, 0x0000a4ce,	"A4CE", "% X"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%X"},
+  {__LINE__, 0x0000000c,	"C", "% X"},
+  {__LINE__, 0xfff59369,	"FFF59369", "%7X"},
+  {__LINE__, 0x00000156,	"  156", "%5.X"},
+  {__LINE__, 0x02833aa9,	"+42154665", "%+2d"},
+  {__LINE__, 0x0004a8f3,	"+305395", "%+d"},
+  {__LINE__, 0x01a09267,	"1A09267", "%0.3X"},
+  {__LINE__, 0x000004f1,	"4f1", "%x"},
+  {__LINE__, 0x00000005,	"5", "%x"},
+  {__LINE__, 0x00000119,	" 0281", "% #2.4ld"},
+  {__LINE__, -0x0001a2a,	"-6698", "%ld"},
+  {__LINE__, 0xa3633a57,	"A3633A57", "%7X"},
+  {__LINE__, -0x10bd2970,	"-280832368", "%-d"},
+  {__LINE__, 0xffff9c38,	"ffff9c38", "%x"},
+  {__LINE__, 0xffdbe81e,	"ffdbe81e", "%+6.7x"},
+  {__LINE__, 0xffffffe7,	"FFFFFFE7", "%-3.0X"},
+  {__LINE__, 0x0002f6d6,	"2f6d6", "%5.x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "% x"},
+  {__LINE__, 0xffc2c07a,	"ffc2c07a", "%0.x"},
+  {__LINE__, 0xfcc0e13a,	"FCC0E13A", "%X"},
+  {__LINE__, 0x0000000d,	"d", "% x"},
+  {__LINE__, 0x0016cac8,	"16CAC8", "%-0.3X"},
+  {__LINE__, 0x00945dc1,	"9723329", "%2d"},
+  {__LINE__, 0xf19a1cd1,	"F19A1CD1", "%-X"},
+  {__LINE__, 0x00000003,	"+3", "%+ld"},
+  {__LINE__, 0x00000773,	"1907", "%ld"},
+  {__LINE__, 0x000263e6,	"263e6", "%-x"},
+  {__LINE__, -0x0238b55,	"-2329429", "%d"},
+  {__LINE__, 0x00006c56,	"6C56", "%X"},
+  {__LINE__, 0x0000f34b,	"62283", "%#.0ld"},
+  {__LINE__, -0x1620e21,	"-23203361", "%0ld"},
+  {__LINE__, 0xf9257d6a,	"f9257d6a", "%2x"},
+  {__LINE__, -0x00ed463,	"-971875", "%03.d"},
+  {__LINE__, 0x02bb94c6,	"45847750", "%d"},
+  {__LINE__, 0xffffd20c,	"0XFFFFD20C", "%#X"},
+  {__LINE__, 0x000087d8,	"34776", "%.0d"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%+7.X"},
+  {__LINE__, -0x0009cd5,	"-40149", "%-ld"},
+  {__LINE__, 0xfffff85e,	"FFFFF85E", "% 0.7X"},
+  {__LINE__, -0x0000006,	"    -6", "%+#6.ld"},
+  {__LINE__, 0x007ff453,	"0x7ff453", "%-#1.x"},
+  {__LINE__, 0xffffffe6,	"FFFFFFE6", "%2X"},
+  {__LINE__, 0x0000001f,	"0X1F", "%#4X"},
+  {__LINE__, -0x001c157,	"-115031", "%.3ld"},
+  {__LINE__, 0x00096e06,	"617990", "%3.1ld"},
+  {__LINE__, 0x0f77271d,	"259467037", "%d"},
+  {__LINE__, -0x0001403,	"-5123", "%d"},
+  {__LINE__, 0xffffff8a,	"ffffff8a", "%x"},
+  {__LINE__, -0x000010f,	"-271", "%1.ld"},
+  {__LINE__, 0xe573cc4a,	"E573CC4A", "%0X"},
+  {__LINE__, -0x0000d88,	"-3464", "%-d"},
+  {__LINE__, 0x0000000e,	"14", "%#ld"},
+  {__LINE__, -0x000345b,	"-13403", "%#d"},
+  {__LINE__, 0x00000602,	"602", "%+x"},
+  {__LINE__, 0x00000011,	"17", "%#d"},
+  {__LINE__, -0x0000002,	"-2", "%+d"},
+  {__LINE__, 0x030fe6e6,	"51373798", "%d"},
+  {__LINE__, 0x00000007,	"007", "%.3X"},
+  {__LINE__, 0x0001abe0,	"0X1ABE0", "%+#.4X"},
+  {__LINE__, 0xfffffdb7,	"fffffdb7", "%-6x"},
+  {__LINE__, 0xffffff8d,	"FFFFFF8D", "% 02.2X"},
+  {__LINE__, 0xfff12126,	"FFF12126", "%X"},
+  {__LINE__, 0x0208e32d,	"34136877", "%.2d"},
+  {__LINE__, 0x11c04b55,	"297814869", "%ld"},
+  {__LINE__, 0xff1e5ca3,	"0xff1e5ca3", "%#x"},
+  {__LINE__, 0xf9643f09,	"f9643f09", "%x"},
+  {__LINE__, -0x003c6da,	"-247514", "%4d"},
+  {__LINE__, 0xff69d0e7,	"FF69D0E7", "%-X"},
+  {__LINE__, 0x00006ae9,	"0x6ae9", "%#x"},
+  {__LINE__, -0x005aefe,	"-372478", "%d"},
+  {__LINE__, 0x0000000d,	"00013", "%3.5ld"},
+  {__LINE__, 0x00cc185c,	"CC185C", "%X"},
+  {__LINE__, 0x3dd14d9f,	"3DD14D9F", "%1.4X"},
+  {__LINE__, -0x4cc2ad3,	"-80489171", "%1.d"},
+  {__LINE__, 0xfffff79e,	"fffff79e", "%x"},
+  {__LINE__, 0xfffeeb03,	"fffeeb03", "%-1x"},
+  {__LINE__, -0x0b1b15c,	"-11645276", "%0ld"},
+  {__LINE__, -0x06b558d,	"-7034253", "%ld"},
+  {__LINE__, 0xfffffe61,	"fffffe61", "%x"},
+  {__LINE__, -0x0000002,	"-2", "%d"},
+  {__LINE__, -0x0000162,	"-000354", "%-5.6d"},
+  {__LINE__, 0x01a23780,	"27408256", "%d"},
+  {__LINE__, 0xffff3a9b,	"ffff3a9b", "% x"},
+  {__LINE__, 0xfffffdc7,	"0xfffffdc7", "%#4.5x"},
+  {__LINE__, 0x00000000,	"00", "%.2X"},
+  {__LINE__, -0x0000006,	"-6", "%0ld"},
+  {__LINE__, -0x16072c6,	"-23098054", "%#5ld"},
+  {__LINE__, -0x07152b8,	"-7426744", "%01ld"},
+  {__LINE__, 0x0000d6c6,	"0x0d6c6", "%#1.5x"},
+  {__LINE__, 0x00000f7c,	"000f7c", "%+04.6x"},
+  {__LINE__, 0x00000bd0,	"3024", "%4ld"},
+  {__LINE__, 0x0000295e,	"0x295e", "%#x"},
+  {__LINE__, 0x00002e38,	"11832", "%.5d"},
+  {__LINE__, -0xa2f5de4,	"-170876388", "%#d"},
+  {__LINE__, -0x001aa36,	"-109110", "%-#d"},
+  {__LINE__, 0x03012091,	"3012091", "%+2.5X"},
+  {__LINE__, -0x00009ed,	"-002541", "%-0.6ld"},
+  {__LINE__, 0x0000001d,	"1d", "%x"},
+  {__LINE__, 0xffffe315,	"FFFFE315", "%+4X"},
+  {__LINE__, 0x0000716b,	"716B", "%X"},
+  {__LINE__, 0xfffb8315,	"0xfffb8315", "%+#x"},
+  {__LINE__, 0x00000132,	"132    ", "%-7.3x"},
+  {__LINE__, 0x00000000,	"+0000000", "%+1.7d"},
+  {__LINE__, 0xe16d27ab,	"E16D27AB", "%X"},
+  {__LINE__, 0xffffffe5,	"ffffffe5", "%+x"},
+  {__LINE__, -0x000ab9d,	"-43933", "%ld"},
+  {__LINE__, 0xffd042d6,	"ffd042d6", "%2x"},
+  {__LINE__, 0xffffff9b,	"ffffff9b", "%x"},
+  {__LINE__, 0x000000fb,	"0xfb", "% #1.x"},
+  {__LINE__, 0x0000000f,	" 15", "%#3ld"},
+  {__LINE__, 0xfffba2d8,	"0XFFFBA2D8", "%-#0.X"},
+  {__LINE__, 0xfffffff8,	"0XFFFFFFF8", "% #X"},
+  {__LINE__, 0x00000000,	"    ", "%4.ld"},
+  {__LINE__, 0x00000002,	"2", "%+x"},
+  {__LINE__, 0xfffff314,	"FFFFF314", "%-X"},
+  {__LINE__, 0x00000000,	" 0", "% ld"},
+  {__LINE__, -0x0000007,	"-07", "%3.2ld"},
+  {__LINE__, 0xffffdd80,	"FFFFDD80", "%.6X"},
+  {__LINE__, -0x000001b,	"-27", "%-ld"},
+  {__LINE__, -0x0000258,	"-600", "%-0d"},
+  {__LINE__, 0x00016377,	"16377", "%3X"},
+  {__LINE__, 0x00000001,	"1", "%X"},
+  {__LINE__, -0xac5d314,	"-180736788", "%d"},
+  {__LINE__, -0x000036e,	"-878", "% ld"},
+  {__LINE__, 0xfe346af4,	"fe346af4", "%.5x"},
+  {__LINE__, 0xffffffe1,	"ffffffe1", "%-7.6x"},
+  {__LINE__, -0x0a1df07,	"-10608391", "%#.5d"},
+  {__LINE__, 0x000000c9,	" 0XC9", "%+#5.X"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%x"},
+  {__LINE__, 0xfffffff8,	"fffffff8", "%+x"},
+  {__LINE__, -0x4517255,	"-72446549", "%.6ld"},
+  {__LINE__, 0xfffa3670,	"FFFA3670", "%-6X"},
+  {__LINE__, 0xffffffe0,	"ffffffe0", "%2.x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%0x"},
+  {__LINE__, 0x0000230d,	"8973", "%#.1d"},
+  {__LINE__, 0x00000238,	"238", "%0X"},
+  {__LINE__, 0xfffce5ab,	"FFFCE5AB", "%-X"},
+  {__LINE__, 0x0000002c,	"2C", "%X"},
+  {__LINE__, 0x00000001,	"   1", "%4.ld"},
+  {__LINE__, 0xffffff8d,	"FFFFFF8D", "%-X"},
+  {__LINE__, 0x00069c69,	"433257", "%06d"},
+  {__LINE__, 0xfffffb8d,	"0xfffffb8d", "%#x"},
+  {__LINE__, 0x000d6a2d,	"879149", "%5.5d"},
+  {__LINE__, -0x0001fcb,	"  -8139", "%7.ld"},
+  {__LINE__, 0xfff86937,	"fff86937", "%-0x"},
+  {__LINE__, 0x00059cf9,	"367865", "%#.0ld"},
+  {__LINE__, 0x02c5d87a,	"46520442", "%3.ld"},
+  {__LINE__, 0x00000571,	"1393", "%ld"},
+  {__LINE__, 0x0003c73f,	"+247615", "%+4ld"},
+  {__LINE__, 0x0000004f,	"4f", "% 0x"},
+  {__LINE__, 0x00000000,	"0", "%-ld"},
+  {__LINE__, -0x0e5850f,	"-15041807", "% ld"},
+  {__LINE__, -0x0000002,	"  -0002", "%7.4d"},
+  {__LINE__, 0xfffffd1b,	"fffffd1b", "%05x"},
+  {__LINE__, 0x0000041c,	" 1052", "% #0.ld"},
+  {__LINE__, -0x0000030,	"-48", "%d"},
+  {__LINE__, -0x0013593,	"-79251", "% #d"},
+  {__LINE__, 0x00000001,	"1", "%+X"},
+  {__LINE__, 0x0000056b,	" 56b", "%4.x"},
+  {__LINE__, -0x0000004,	"-4 ", "%-3d"},
+  {__LINE__, -0x0000003,	"-3", "% ld"},
+  {__LINE__, 0xffff7c14,	"0XFFFF7C14", "%#X"},
+  {__LINE__, 0x02f63dd8,	"49692120", "%.7ld"},
+  {__LINE__, -0x03c51c9,	"-3953097", "%+d"},
+  {__LINE__, 0x00ded685,	"14603909", "%5.ld"},
+  {__LINE__, 0xffffffba,	"ffffffba", "%x"},
+  {__LINE__, 0x000370e8,	"225512", "%#ld"},
+  {__LINE__, 0x00000003,	"3", "%X"},
+  {__LINE__, -0x0024a64,	"-150116", "%7.d"},
+  {__LINE__, 0xff486ca1,	"ff486ca1", "%x"},
+  {__LINE__, 0x000001cf,	"1CF", "% X"},
+  {__LINE__, -0x0002d7e,	"-11646", "%-0d"},
+  {__LINE__, 0x0a594c65,	"a594c65", "%.4x"},
+  {__LINE__, -0x0000002,	"-0002", "%-5.4ld"},
+  {__LINE__, 0x00000000,	"", "%00.ld"},
+  {__LINE__, 0x00058bc4,	"58BC4", "%3X"},
+  {__LINE__, 0x0002cf8e,	" 184206", "% 0ld"},
+  {__LINE__, 0x000009c7,	"+2503", "%+4.ld"},
+  {__LINE__, 0xed0c984d,	"ED0C984D", "%X"},
+  {__LINE__, -0x0000058,	"-088", "%#.3ld"},
+  {__LINE__, 0x0076083d,	"0X76083D", "%#6X"},
+  {__LINE__, -0x0000001,	"-1", "%#d"},
+  {__LINE__, -0x6bf1777,	"-113186679", "%#ld"},
+  {__LINE__, -0x000011f,	"-287", "%ld"},
+  {__LINE__, 0x001b0e7d,	"1B0E7D", "%-4X"},
+  {__LINE__, 0x000007ac,	" 1964", "%5.ld"},
+  {__LINE__, 0x00000005,	"5", "%0.d"},
+  {__LINE__, -0x00003ba,	"-954", "%4.0ld"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%X"},
+  {__LINE__, 0x00000019,	"19", "%x"},
+  {__LINE__, 0xffffffe0,	"ffffffe0", "%-.6x"},
+  {__LINE__, 0x0000012a,	" 298", "% d"},
+  {__LINE__, 0x00002c74,	"2c74", "% 4.3x"},
+  {__LINE__, 0x000002d5,	"725", "%d"},
+  {__LINE__, 0x0001c9a9,	"1c9a9", "%-02x"},
+  {__LINE__, 0xffc928c8,	"ffc928c8", "%x"},
+  {__LINE__, -0x03ae51f,	"-3859743", "% #ld"},
+  {__LINE__, 0x0000526d,	"526d", "%x"},
+  {__LINE__, -0x00028f0,	"-10480", "%5ld"},
+  {__LINE__, -0x49b4262,	"-77283938", "%+02.0d"},
+  {__LINE__, 0x028d37f0,	"0x28d37f0", "%+#x"},
+  {__LINE__, 0xd66e0af9,	"D66E0AF9", "%03.X"},
+  {__LINE__, -0x00c7707,	"-816903", "%0d"},
+  {__LINE__, -0x00000d0,	"-208", "%-.1ld"},
+  {__LINE__, 0x0000c328,	"49960", "%d"},
+  {__LINE__, 0x34cb86f1,	"34CB86F1", "%X"},
+  {__LINE__, 0x000000f6,	"F6", "%+X"},
+  {__LINE__, 0x0a3407ec,	"0xa3407ec", "%-#x"},
+  {__LINE__, 0x00007ebc,	"32444", "%#3.d"},
+  {__LINE__, 0xfffd3d65,	"fffd3d65", "%x"},
+  {__LINE__, 0x0007bc82,	"0507010", "%0.7d"},
+  {__LINE__, 0x0005bb93,	"375699", "%ld"},
+  {__LINE__, 0x0ec11cc8,	"0XEC11CC8", "%+#6.2X"},
+  {__LINE__, 0xfffff9c6,	"fffff9c6", "%.5x"},
+  {__LINE__, 0xff05ab70,	"0XFF05AB70", "%-#.3X"},
+  {__LINE__, 0x2328b716,	"589870870", "%d"},
+  {__LINE__, 0x00001a79,	"6777", "%.1d"},
+  {__LINE__, 0xfffee573,	"fffee573", "%0.1x"},
+  {__LINE__, -0x0000929,	"  -2345", "%7.d"},
+  {__LINE__, 0xffffff9a,	"FFFFFF9A", "%2.X"},
+  {__LINE__, 0xfffffe60,	"fffffe60", "%.5x"},
+  {__LINE__, 0xfffffcd2,	"fffffcd2", "%.7x"},
+  {__LINE__, 0x00000001,	"   001", "%6.3X"},
+  {__LINE__, 0x00011e9c,	"+73372", "%+0ld"},
+  {__LINE__, 0x0000002a,	"2a", "% x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%.7x"},
+  {__LINE__, -0x0008ee8,	"-36584", "%ld"},
+  {__LINE__, 0x0000001c,	"28", "%-d"},
+  {__LINE__, 0x000abeda,	"704218", "%d"},
+  {__LINE__, 0x001347f7,	"1347f7", "%3.0x"},
+  {__LINE__, 0x0000023e,	"574", "%3.3ld"},
+  {__LINE__, 0x00000000,	"0", "%-ld"},
+  {__LINE__, -0x0016de0,	"-93664", "%0ld"},
+  {__LINE__, 0xffffff45,	"FFFFFF45", "% X"},
+  {__LINE__, 0x02dfb08c,	"48214156", "%#ld"},
+  {__LINE__, 0x003d73a2,	"3d73a2", "%6.x"},
+  {__LINE__, 0x00147da7,	"1342887", "%#d"},
+  {__LINE__, -0x5ff0f1e,	"-100601630", "%-01ld"},
+  {__LINE__, -0x000000b,	"-11", "%ld"},
+  {__LINE__, 0x00000168,	"   168", "%+6.x"},
+  {__LINE__, 0xffffc28e,	"ffffc28e", "%0x"},
+  {__LINE__, -0x00003a2,	"-930", "%ld"},
+  {__LINE__, 0x0002e56f,	" 189807", "% 1.ld"},
+  {__LINE__, 0x51abf44f,	"0x51abf44f", "%#.7x"},
+  {__LINE__, 0x00000000,	"0", "%d"},
+  {__LINE__, 0x9581268f,	"9581268F", "%+X"},
+  {__LINE__, 0xffffff3b,	"FFFFFF3B", "%X"},
+  {__LINE__, 0x000083d4,	" 33748", "% #d"},
+  {__LINE__, 0x00000001,	"1", "%x"},
+  {__LINE__, -0x000e51f,	"-58655", "%.0ld"},
+  {__LINE__, 0x0003eacb,	"256715", "%6ld"},
+  {__LINE__, 0x02be09db,	" 46008795", "% 0.ld"},
+  {__LINE__, 0xfffffffb,	"FFFFFFFB", "% X"},
+  {__LINE__, 0x000084f5,	" 34037", "%6ld"},
+  {__LINE__, -0x1127f99,	"-17989529", "%#d"},
+  {__LINE__, 0x5f6512de,	"5f6512de", "%.7x"},
+  {__LINE__, 0x00000001,	"1", "%x"},
+  {__LINE__, 0xfff74ab5,	"fff74ab5", "%x"},
+  {__LINE__, 0x0eebeb94,	"250342292", "%4.ld"},
+  {__LINE__, 0x0001b846,	"0x1b846", "%#1x"},
+  {__LINE__, 0x001e8c32,	"1E8C32", "%2X"},
+  {__LINE__, -0x0dae932,	"-14346546", "%5.1d"},
+  {__LINE__, 0x00000001,	"1", "%ld"},
+  {__LINE__, -0x0000042,	"-66", "%ld"},
+  {__LINE__, 0xffffff51,	"FFFFFF51", "%0.1X"},
+  {__LINE__, 0x00000043,	"43", "%x"},
+  {__LINE__, 0x04c21f39,	" 79830841", "% 0ld"},
+  {__LINE__, 0x0000061e,	"1566", "%03.3d"},
+  {__LINE__, -0x0000003,	"-3", "%+d"},
+  {__LINE__, 0x015b32db,	" 22754011", "% .4d"},
+  {__LINE__, 0xfffff181,	"FFFFF181", "%-X"},
+  {__LINE__, 0x000017ec,	"0X17EC", "%#X"},
+  {__LINE__, 0x000d703e,	"880702", "%#ld"},
+  {__LINE__, -0x6d7533a0,	"-1836397472", "%ld"},
+  {__LINE__, 0x0000008a,	" 138", "% d"},
+  {__LINE__, -0x7368794b,	"-1936226635", "%+#d"},
+  {__LINE__, 0x0000000d,	"0XD", "%#X"},
+  {__LINE__, 0x0000030d,	"30D", "% X"},
+  {__LINE__, 0xfffff9fe,	"FFFFF9FE", "%5X"},
+  {__LINE__, 0x00001bb2,	"7090", "%d"},
+  {__LINE__, 0x041d2a0c,	"41D2A0C", "%0X"},
+  {__LINE__, 0x00012aee,	" 76526", "% d"},
+  {__LINE__, 0x0000055f,	"55f", "%.1x"},
+  {__LINE__, 0xffffffff,	"0XFFFFFFFF", "%#1X"},
+  {__LINE__, 0x07b0a971,	"+129018225", "%+.2ld"},
+  {__LINE__, 0xfffffff8,	"FFFFFFF8", "%4X"},
+  {__LINE__, 0x00000001,	"1", "%d"},
+  {__LINE__, 0x00000038,	"+56", "%+2ld"},
+  {__LINE__, 0xfffffc2f,	"fffffc2f", "%+7.x"},
+  {__LINE__, 0x00004477,	"0x4477", "% #x"},
+  {__LINE__, 0x0000000d,	"0XD", "%+#3X"},
+  {__LINE__, 0xf5bf37b1,	"F5BF37B1", "%1.X"},
+  {__LINE__, 0x1a96f431,	"446100529", "%d"},
+  {__LINE__, 0x0037edf3,	"+3665395", "%+#4.5ld"},
+  {__LINE__, 0x0007f2aa,	"520874", "%0ld"},
+  {__LINE__, -0x00051a3,	"-20899", "%+#1.ld"},
+  {__LINE__, 0x0000037f,	"37F", "%0X"},
+  {__LINE__, 0xffffffb4,	"ffffffb4", "%x"},
+  {__LINE__, -0xd984c00,	"-228084736", "%+06ld"},
+  {__LINE__, 0xffffe1be,	"FFFFE1BE", "%X"},
+  {__LINE__, 0xfff20d48,	"FFF20D48", "%+6.0X"},
+  {__LINE__, 0x000028b7,	"0x028b7", "%-#7.5x"},
+  {__LINE__, -0x0000001,	"-1", "%ld"},
+  {__LINE__, 0x03f37945,	"66287941", "%d"},
+  {__LINE__, 0xffffffed,	"0XFFFFFFED", "%+#6.4X"},
+  {__LINE__, 0x0000f046,	"f046", "%x"},
+  {__LINE__, 0xe9772b51,	"E9772B51", "%-1.X"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "% x"},
+  {__LINE__, 0xfffffffa,	"0xfffffffa", "%#x"},
+  {__LINE__, 0x00000015,	"15", "%-X"},
+  {__LINE__, 0x0000003c,	"60", "%#ld"},
+  {__LINE__, 0x3103952d,	"822318381", "%0.ld"},
+  {__LINE__, 0x17ba68bb,	"398092475", "%2d"},
+  {__LINE__, 0x000006c4,	"+1732", "%+.2d"},
+  {__LINE__, 0x00000043,	"67", "%#d"},
+  {__LINE__, 0x0043fb55,	"4455253", "%.1ld"},
+  {__LINE__, 0x00004b76,	"4b76", "% 0x"},
+  {__LINE__, 0xfff4c56b,	"FFF4C56B", "%7X"},
+  {__LINE__, 0x00766055,	"766055", "%+5x"},
+  {__LINE__, -0x000009f,	"-159", "%+d"},
+  {__LINE__, 0xffff063f,	"ffff063f", "%-2x"},
+  {__LINE__, 0x00808fc8,	"808fc8", "%x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%x"},
+  {__LINE__, 0x000000f1,	"00000f1", "%+02.7x"},
+  {__LINE__, 0x00000002,	"2", "%X"},
+  {__LINE__, 0x00000000,	"000", "%03d"},
+  {__LINE__, 0xe63f73b2,	"E63F73B2", "% 1X"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%5.1X"},
+  {__LINE__, 0x0d3fa38b,	"222274443", "%1d"},
+  {__LINE__, 0x00000000,	"0", "% X"},
+  {__LINE__, 0x00000001,	"   1", "%04.ld"},
+  {__LINE__, 0x00000046,	"46", "%0X"},
+  {__LINE__, 0x0000761f,	" 30239", "% ld"},
+  {__LINE__, -0x0002517,	"-9495", "%+d"},
+  {__LINE__, 0x00000156,	"156", "% 0x"},
+  {__LINE__, 0x1c55eba2,	"1c55eba2", "%.6x"},
+  {__LINE__, 0x005af80d,	"5af80d", "%.6x"},
+  {__LINE__, 0x0000002e,	"46", "%d"},
+  {__LINE__, -0x0007c0f,	"-31759", "%ld"},
+  {__LINE__, 0xffffe924,	"FFFFE924", "%7X"},
+  {__LINE__, 0x00000174,	"372", "%ld"},
+  {__LINE__, 0xffffffc9,	"0xffffffc9", "%-#x"},
+  {__LINE__, 0x00000020,	"+000032", "%+07d"},
+  {__LINE__, 0xffffe5d9,	"FFFFE5D9", "%4.5X"},
+  {__LINE__, 0xffffffa3,	"FFFFFFA3", "%+.3X"},
+  {__LINE__, 0x00000a03,	"+2563", "%+2d"},
+  {__LINE__, 0x001b58ca,	"+1792202", "%+4d"},
+  {__LINE__, 0xffffffc9,	"0xffffffc9", "%+#5x"},
+  {__LINE__, -0x0000003,	"-3", "% d"},
+  {__LINE__, 0xfffffffc,	"fffffffc", "%+0x"},
+  {__LINE__, -0x0000002,	"-02", "%.2d"},
+  {__LINE__, 0x000243fb,	"148475", "%-ld"},
+  {__LINE__, 0x00000001,	"1", "%0d"},
+  {__LINE__, -0x0000672,	"-1650", "%ld"},
+  {__LINE__, -0x0005413,	"-0021523", "% 7.7d"},
+  {__LINE__, 0x00000017,	"0X17", "%#X"},
+  {__LINE__, 0x00000e48,	"3656", "%0d"},
+  {__LINE__, 0xffe79b38,	"ffe79b38", "%-x"},
+  {__LINE__, 0xffffff15,	"FFFFFF15", "%+6.1X"},
+  {__LINE__, 0xfff0272c,	"fff0272c", "%-.5x"},
+  {__LINE__, -0x00b706f,	"-749679", "%1.ld"},
+  {__LINE__, 0x0176aeec,	"176AEEC", "%.1X"},
+  {__LINE__, -0x00005a1,	"-1441", "% 0ld"},
+  {__LINE__, -0x0000002,	"-00002", "%.5d"},
+  {__LINE__, -0xd2e6f5d,	"-221146973", "%1ld"},
+  {__LINE__, -0x0000001,	" -001", "%5.3ld"},
+  {__LINE__, 0x00000001,	"    1", "%05.ld"},
+  {__LINE__, 0x0000749e,	"+29854", "%+#d"},
+  {__LINE__, 0x00000005,	"5", "%d"},
+  {__LINE__, 0xfa7128b0,	"fa7128b0", "%1.x"},
+  {__LINE__, 0xffffbbb4,	"0XFFFFBBB4", "%#.1X"},
+  {__LINE__, 0x0006862f,	"427567", "%d"},
+  {__LINE__, 0x00000002,	"2", "%X"},
+  {__LINE__, 0x000005d4,	"5d4", "% x"},
+  {__LINE__, 0x001387e1,	"1279969", "%-05.0ld"},
+  {__LINE__, -0x0035a56,	"-219734", "%ld"},
+  {__LINE__, -0x4064ecc6,	"-1080356038", "%ld"},
+  {__LINE__, 0x0000360d,	"13837", "%0ld"},
+  {__LINE__, -0xea1a85b,	"-245475419", "%-.2ld"},
+  {__LINE__, 0xffffff2d,	"FFFFFF2D", "%X"},
+  {__LINE__, 0x00000004,	"   0004", "%7.4x"},
+  {__LINE__, 0x00f72ffd,	"F72FFD", "%-X"},
+  {__LINE__, 0x00000fa2,	"fa2  ", "%-5x"},
+  {__LINE__, 0x05ae1f9a,	"95297434", "%#ld"},
+  {__LINE__, 0x0000bf2e,	"48942", "%3.d"},
+  {__LINE__, 0x00000000,	" ", "%1.X"},
+  {__LINE__, 0x01bcb097,	"29143191", "%ld"},
+  {__LINE__, 0x0000009c,	"156 ", "%-4.0d"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "% x"},
+  {__LINE__, 0x00000001,	"1     ", "%-6.d"},
+  {__LINE__, 0xffffffef,	"ffffffef", "%7.x"},
+  {__LINE__, 0xfffffec1,	"fffffec1", "%.5x"},
+  {__LINE__, -0x000000f,	"-15", "%-1d"},
+  {__LINE__, -0x0008426,	"-33830", "%0ld"},
+  {__LINE__, 0x005be0ae,	"5BE0AE", "% X"},
+  {__LINE__, 0x00000009,	"      9", "%+7X"},
+  {__LINE__, -0x0007e18,	"-32280", "%+0.d"},
+  {__LINE__, 0x01697ba1,	" 23690145", "% 5.ld"},
+  {__LINE__, -0x0012042,	"-073794", "%7.6d"},
+  {__LINE__, 0x04e9bd0d,	"4e9bd0d", "%-2x"},
+  {__LINE__, 0xffffffd9,	"FFFFFFD9", "%.2X"},
+  {__LINE__, -0x01b9632,	"-1807922", "%.6ld"},
+  {__LINE__, 0x000000cd,	"205", "%1.ld"},
+  {__LINE__, 0x00000000,	" ", "% .0d"},
+  {__LINE__, 0xff17bbb1,	"ff17bbb1", "%x"},
+  {__LINE__, -0x00146d7,	"-83671", "%+1.ld"},
+  {__LINE__, 0xfffff144,	"fffff144", "%x"},
+  {__LINE__, 0x000f8dbe,	"F8DBE", "%3.X"},
+  {__LINE__, -0x000381c,	"-14364", "%d"},
+  {__LINE__, 0x0000001e,	"  30", "%4.1d"},
+  {__LINE__, 0x00000016,	"22", "%-0d"},
+  {__LINE__, 0x00000002,	"+02", "%+1.2ld"},
+  {__LINE__, 0x0000e803,	"59395", "%d"},
+  {__LINE__, 0xb4c2448d,	"b4c2448d", "%-7x"},
+  {__LINE__, 0x000e697d,	"944509", "%ld"},
+  {__LINE__, 0xfffe6e32,	"0XFFFE6E32", "%#X"},
+  {__LINE__, 0x00000190,	"  190", "%+5.X"},
+  {__LINE__, -0x03a2219,	"-3809817", "%#6.ld"},
+  {__LINE__, -0x000003c,	"-60 ", "%-#4.ld"},
+  {__LINE__, 0x00000000,	"   ", "% 03.ld"},
+  {__LINE__, -0x074f922,	"-7665954", "%ld"},
+  {__LINE__, -0x00000f0,	"-240", "%-ld"},
+  {__LINE__, 0xfffe42d2,	"0XFFFE42D2", "%#X"},
+  {__LINE__, 0x000000dd,	"DD", "%X"},
+  {__LINE__, 0x00359abe,	"359ABE", "%.1X"},
+  {__LINE__, 0xffec7bdf,	"FFEC7BDF", "%0.1X"},
+  {__LINE__, 0x0ecddcba,	"248372410", "%-#3.d"},
+  {__LINE__, 0x00ad0dbc,	"11341244", "%ld"},
+  {__LINE__, -0x0000001,	"-1", "%-d"},
+  {__LINE__, 0x00050841,	"50841", "% .5x"},
+  {__LINE__, 0x01d359e7,	"1d359e7", "%1.x"},
+  {__LINE__, 0xff9efaa3,	"FF9EFAA3", "%X"},
+  {__LINE__, 0x0007ea10,	"+518672", "%+ld"},
+  {__LINE__, -0x000671c,	"-26396", "%1d"},
+  {__LINE__, 0xffffff91,	"0xffffff91", "%#4.4x"},
+  {__LINE__, 0x00000000,	"+", "%+0.0ld"},
+  {__LINE__, -0x002c53e,	"-181566", "%3.d"},
+  {__LINE__, 0xffffff56,	"ffffff56", "%x"},
+  {__LINE__, 0xfffff589,	"FFFFF589", "%+X"},
+  {__LINE__, 0x00024d13,	"24D13", "%-5.2X"},
+  {__LINE__, 0x00000000,	"     0", "%6.1d"},
+  {__LINE__, 0x00a64f33,	"A64F33", "%4.4X"},
+  {__LINE__, 0xffebb57a,	"FFEBB57A", "%5.4X"},
+  {__LINE__, 0xfff3b4a0,	"fff3b4a0", "%2.x"},
+  {__LINE__, 0xffffffd9,	"FFFFFFD9", "%.2X"},
+  {__LINE__, 0x00d37b84,	"13859716", "%d"},
+  {__LINE__, 0x00001e85,	"0001E85", "%0.7X"},
+  {__LINE__, -0x756148f,	"-123081871", "% 7.d"},
+  {__LINE__, -0x0319339,	"-3248953", "%+#.4d"},
+  {__LINE__, -0x00798b8,	"-497848", "%#5ld"},
+  {__LINE__, -0x0000039,	"-57", "%0d"},
+  {__LINE__, -0x000b1d7,	"-45527", "%+0.ld"},
+  {__LINE__, 0xff811fba,	"FF811FBA", "%+X"},
+  {__LINE__, 0x00000042,	" 66", "% ld"},
+  {__LINE__, 0xfffffe31,	"0XFFFFFE31", "%#X"},
+  {__LINE__, 0x00000073,	"115", "%ld"},
+  {__LINE__, 0x45091a39,	"0x45091a39", "%+#3.x"},
+  {__LINE__, 0x001270f5,	"1270f5", "%-5.6x"},
+  {__LINE__, 0xfffd91fd,	"fffd91fd", "%x"},
+  {__LINE__, -0x0817bad,	"-8485805", "%#ld"},
+  {__LINE__, -0x32ad55f,	"-53138783", "%0d"},
+  {__LINE__, 0x00003e57,	"15959", "%0ld"},
+  {__LINE__, -0x0048756,	"-296790", "%2.6d"},
+  {__LINE__, 0xff90f45f,	"FF90F45F", "% X"},
+  {__LINE__, 0x0000e454,	"0e454", "% .5x"},
+  {__LINE__, 0xfffffffc,	"fffffffc", "%x"},
+  {__LINE__, 0xfffffff7,	"FFFFFFF7", "%-2X"},
+  {__LINE__, 0xffdabf0e,	"FFDABF0E", "%+X"},
+  {__LINE__, 0xffffffff,	"0XFFFFFFFF", "%#1X"},
+  {__LINE__, 0x01516650,	"1516650", "% x"},
+  {__LINE__, 0xffffff51,	"FFFFFF51", "%X"},
+  {__LINE__, 0x000000ea,	"234", "%00.d"},
+  {__LINE__, 0x06db60ca,	"115040458", "%5.d"},
+  {__LINE__, 0x00000f01,	" 3841", "% d"},
+  {__LINE__, 0x00000009,	"9", "%x"},
+  {__LINE__, 0x299b3ba0,	"299b3ba0", "%6.7x"},
+  {__LINE__, 0x0067f298,	"67f298", "%-2.6x"},
+  {__LINE__, 0xfffffff5,	"FFFFFFF5", "% 2X"},
+  {__LINE__, 0x00102ff9,	"102FF9", "%-.0X"},
+  {__LINE__, 0xffc22393,	"0xffc22393", "% #6x"},
+  {__LINE__, 0x00007db5,	"32181", "%-2ld"},
+  {__LINE__, 0x0000b0a3,	"0xb0a3", "%#0x"},
+  {__LINE__, 0x001ceebb,	"1CEEBB", "%-3.4X"},
+  {__LINE__, 0x00025101,	"0x25101", "%#x"},
+  {__LINE__, -0x0000001,	"-1", "%0ld"},
+  {__LINE__, 0xffffd846,	"FFFFD846", "%+2.3X"},
+  {__LINE__, 0x00001d79,	" 7545", "% 0.1ld"},
+  {__LINE__, -0x0000002,	"   -2", "%5d"},
+  {__LINE__, 0xf93b9fdc,	"f93b9fdc", "%5x"},
+  {__LINE__, 0xffff0021,	"FFFF0021", "%6X"},
+  {__LINE__, 0x00007cf9,	"7cf9", "%3.1x"},
+  {__LINE__, -0x0000002,	"-2", "%d"},
+  {__LINE__, 0x00001d84,	"1d84", "%0x"},
+  {__LINE__, -0x033201e,	"-3350558", "%-2.0d"},
+  {__LINE__, 0xfff8a6fb,	"FFF8A6FB", "%+.7X"},
+  {__LINE__, 0x00006fff,	" 28671", "% ld"},
+  {__LINE__, -0x02a274a,	"-2762570", "%d"},
+  {__LINE__, -0x0006628,	"-26152", "%00ld"},
+  {__LINE__, 0x00000011,	"11", "%-x"},
+  {__LINE__, -0x0000ed9,	"-3801", "%0.ld"},
+  {__LINE__, 0xfc5b725d,	"FC5B725D", "%X"},
+  {__LINE__, 0x3530bd4e,	"892386638", "%7.d"},
+  {__LINE__, 0x03bb4ff7,	"62607351", "%#4.7ld"},
+  {__LINE__, 0x00009f86,	"9f86", "%x"},
+  {__LINE__, 0x0000e727,	"59175", "%1d"},
+  {__LINE__, 0xfffffdf2,	"0XFFFFFDF2", "%#X"},
+  {__LINE__, 0x00e60dbf,	"0XE60DBF", "% #1.X"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%+X"},
+  {__LINE__, 0x0a16f44e,	"0XA16F44E", "%#.0X"},
+  {__LINE__, 0x0001f97c,	"1f97c", "% x"},
+  {__LINE__, 0x0000000d,	"13", "%#0ld"},
+  {__LINE__, 0x0000002a,	"42", "%0ld"},
+  {__LINE__, 0x00000007,	"   +7", "%+5ld"},
+  {__LINE__, 0xffffff7f,	"FFFFFF7F", "%-X"},
+  {__LINE__, 0x000006a6,	"1702", "%ld"},
+  {__LINE__, 0xfaff2fb1,	"faff2fb1", "% x"},
+  {__LINE__, 0xffff94ab,	"ffff94ab", "%x"},
+  {__LINE__, 0x011d611b,	"0X11D611B", "%#2.3X"},
+  {__LINE__, 0x00000000,	" +000", "%+#5.3ld"},
+  {__LINE__, -0x87fcc37,	"-142593079", "%+d"},
+  {__LINE__, -0x0417424,	"-4289572", "%+d"},
+  {__LINE__, 0x03fabc0c,	"3fabc0c", "%x"},
+  {__LINE__, 0xfffff880,	"fffff880", "%-x"},
+  {__LINE__, 0x000002d7,	"2d7", "%-02.x"},
+  {__LINE__, 0x00003e82,	"16002", "%#d"},
+  {__LINE__, -0x0003713,	"-14099", "% 5d"},
+  {__LINE__, -0x0000027,	"-39", "%ld"},
+  {__LINE__, 0x00013098,	"0077976", "%01.7d"},
+  {__LINE__, -0x000000c,	"-12", "%ld"},
+  {__LINE__, -0x00000c0,	"-192", "% ld"},
+  {__LINE__, 0xffbe9285,	"FFBE9285", "%3.X"},
+  {__LINE__, 0x00000046,	"46", "%x"},
+  {__LINE__, 0x00000000,	"    ", "%+4.x"},
+  {__LINE__, 0x00011e72,	"73330", "%2.3d"},
+  {__LINE__, -0x5276dd7,	"-86470103", "%d"},
+  {__LINE__, 0x00000013,	"19", "%-02.ld"},
+  {__LINE__, 0x384118a7,	"0X384118A7", "%-#X"},
+  {__LINE__, 0x00000000,	"0", "% #X"},
+  {__LINE__, 0x00000009,	"9", "%#ld"},
+  {__LINE__, 0x00021145,	"135493", "%-ld"},
+  {__LINE__, 0xff188a0c,	"FF188A0C", "%1.X"},
+  {__LINE__, 0xffffffd5,	"ffffffd5", "%0x"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "% 0X"},
+  {__LINE__, 0xffff74a3,	"ffff74a3", "%x"},
+  {__LINE__, 0x01d5a2f8,	"1d5a2f8", "%-0.x"},
+  {__LINE__, 0xfffffef6,	"fffffef6", "%+06.x"},
+  {__LINE__, 0x00000001,	"1", "%ld"},
+  {__LINE__, 0x00000000,	"+0", "%+ld"},
+  {__LINE__, 0xfffffffc,	"fffffffc", "%4.x"},
+  {__LINE__, -0x0000344,	"-0836", "% .4d"},
+  {__LINE__, 0xfffffffd,	"FFFFFFFD", "%0X"},
+  {__LINE__, 0x000a3121,	"667937", "%#4.4ld"},
+  {__LINE__, 0x0001e211,	"0X1E211", "%#X"},
+  {__LINE__, 0x00000c8b,	"00C8B", "%05X"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%+0x"},
+  {__LINE__, 0x001a53ce,	"1725390", "%d"},
+  {__LINE__, 0x0000057f,	"57f    ", "%-7.x"},
+  {__LINE__, -0x0073e4d,	"-474701", "%#ld"},
+  {__LINE__, -0x0000002,	" -2", "% 3.d"},
+  {__LINE__, 0x482dc404,	"482DC404", "%X"},
+  {__LINE__, 0x0000011c,	"11c", "%-.1x"},
+  {__LINE__, 0x00000c12,	" 3090", "%5.3ld"},
+  {__LINE__, 0xfffe1068,	"FFFE1068", "%-.4X"},
+  {__LINE__, -0x0055e88,	"-351880", "%ld"},
+  {__LINE__, 0x000c9cef,	"+826607", "%+d"},
+  {__LINE__, 0xffffffe3,	"ffffffe3", "%0x"},
+  {__LINE__, -0x0000ee9,	"-3817", "%#ld"},
+  {__LINE__, 0xff1f6daa,	"FF1F6DAA", "%X"},
+  {__LINE__, 0xfffffc4e,	"FFFFFC4E", "%5.2X"},
+  {__LINE__, -0x000040a,	"-1034", "%d"},
+  {__LINE__, -0x0000085,	"-00133", "% 01.5d"},
+  {__LINE__, -0x126c797c,	"-309098876", "%5.ld"},
+  {__LINE__, 0x00000039,	" 57", "% d"},
+  {__LINE__, 0xfffffff6,	"0xfffffff6", "%#5.x"},
+  {__LINE__, 0xfffffff4,	"fffffff4", "%7.6x"},
+  {__LINE__, 0x00000003,	"3", "%ld"},
+  {__LINE__, 0x0000f8ae,	"f8ae", "%.0x"},
+  {__LINE__, 0x003ca1cf,	"3973583", "%#3.7d"},
+  {__LINE__, 0x14687009,	"0x14687009", "%+#3x"},
+  {__LINE__, 0xfffff1f7,	"0xfffff1f7", "%#4.5x"},
+  {__LINE__, 0xfffff17a,	"fffff17a", "%3.x"},
+  {__LINE__, 0x0011ea18,	"1174040", "%ld"},
+  {__LINE__, -0x0000019,	"-25", "%03.d"},
+  {__LINE__, 0x00015d72,	"0X15D72", "%-#X"},
+  {__LINE__, 0xffde4a41,	"ffde4a41", "%x"},
+  {__LINE__, 0x00006f1f,	"28447", "%d"},
+  {__LINE__, 0xffffffbd,	"0xffffffbd", "%#.1x"},
+  {__LINE__, 0x000013b9,	"13B9", "%0X"},
+  {__LINE__, -0x00001b9,	"-00441", "%1.5d"},
+  {__LINE__, 0x00000001,	"000001", "%-.6d"},
+  {__LINE__, 0x7b602d8f,	"+2069900687", "%+0ld"},
+  {__LINE__, 0x0005e323,	"+385827", "%+ld"},
+  {__LINE__, 0x00002fce,	"2FCE", "%+0X"},
+  {__LINE__, 0x0000000e,	"0014", "%.4d"},
+  {__LINE__, 0xffffffd6,	"0XFFFFFFD6", "%#4.X"},
+  {__LINE__, 0x037bf361,	"58454881", "%5.ld"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%-7.5X"},
+  {__LINE__, -0x016d4dc,	"-1496284", "%6ld"},
+  {__LINE__, 0x0005be9a,	"0x5be9a", "%-#.5x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%1x"},
+  {__LINE__, 0x00000055,	"     85", "% 7.d"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%x"},
+  {__LINE__, -0x0135392,	"-1266578", "% ld"},
+  {__LINE__, 0x00850f26,	"8720166", "%d"},
+  {__LINE__, 0xffffee39,	"ffffee39", "%0x"},
+  {__LINE__, 0x000000dd,	"221", "%ld"},
+  {__LINE__, 0x00000000,	"      ", "%6.d"},
+  {__LINE__, 0x000000d8,	"d8", "%x"},
+  {__LINE__, 0x000007ec,	"002028", "%4.6ld"},
+  {__LINE__, 0x0dab4e67,	"0XDAB4E67", "%#X"},
+  {__LINE__, 0xfffd7c95,	"FFFD7C95", "% 4X"},
+  {__LINE__, 0x0009302d,	"9302D", "%3.1X"},
+  {__LINE__, 0x00000003,	" 3", "% d"},
+  {__LINE__, 0x0000082f,	"82f", "%-x"},
+  {__LINE__, 0x0652517f,	"652517F", "%-.2X"},
+  {__LINE__, -0x1fd8f4e3,	"-534312163", "%d"},
+  {__LINE__, 0x00000176,	"176", "%-x"},
+  {__LINE__, 0x00000001,	"1", "%ld"},
+  {__LINE__, 0x0000001a,	"1A", "%X"},
+  {__LINE__, -0x0005740,	"-22336", "% 0ld"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%6x"},
+  {__LINE__, 0x1b273b80,	"0x1b273b80", "%#x"},
+  {__LINE__, 0x00000065,	"65", "%X"},
+  {__LINE__, 0x6a62138a,	"1784812426", "%2ld"},
+  {__LINE__, 0x000001a2,	"1A2", "%X"},
+  {__LINE__, -0x002aafd,	"-174845", "%02.ld"},
+  {__LINE__, 0x00000014,	"20", "%d"},
+  {__LINE__, -0x00000c7,	"   -199", "%7.0ld"},
+  {__LINE__, 0xff545bfd,	"ff545bfd", "%-x"},
+  {__LINE__, -0x002beb9,	"-179897", "%02.2ld"},
+  {__LINE__, -0x00000df,	"-223", "% 02.d"},
+  {__LINE__, -0x000d569,	"-54633", "%1.ld"},
+  {__LINE__, 0x0000000e,	"14", "%d"},
+  {__LINE__, -0x0077407,	"-488455", "% ld"},
+  {__LINE__, 0x0001be09,	"114185", "%ld"},
+  {__LINE__, -0x0000514,	"-01300", "%+05.5d"},
+  {__LINE__, 0xf1fb397f,	"f1fb397f", "%+x"},
+  {__LINE__, 0xfdb6707c,	"FDB6707C", "%X"},
+  {__LINE__, 0x03cad111,	"3cad111", "%5.x"},
+  {__LINE__, -0x022e72f,	"-2287407", "%d"},
+  {__LINE__, -0xda35f48,	"-228810568", "%d"},
+  {__LINE__, -0x02d1fd4,	"-2957268", "%1.3d"},
+  {__LINE__, 0x0000005f,	"+95", "%+2d"},
+  {__LINE__, 0xfffbf8a1,	"FFFBF8A1", "%4.2X"},
+  {__LINE__, 0x0000071e,	"   71e", "%6.x"},
+  {__LINE__, 0x000cc8a5,	"+837797", "%+03ld"},
+  {__LINE__, 0x000eebe9,	" EEBE9", "%6.X"},
+  {__LINE__, -0x2896b204,	"-680964612", "%d"},
+  {__LINE__, -0x09553f8,	"-9786360", "%d"},
+  {__LINE__, 0x000015d3,	"5587", "%0d"},
+  {__LINE__, 0x0000056d,	" 56d", "%+4.x"},
+  {__LINE__, -0x00624ad,	"-402605", "% ld"},
+  {__LINE__, 0xfea64ba5,	"0xfea64ba5", "%#1x"},
+  {__LINE__, 0x004f35c6,	"5191110", "%-ld"},
+  {__LINE__, -0x1441fe4,	"-21241828", "%d"},
+  {__LINE__, 0xffffff95,	"FFFFFF95", "%X"},
+  {__LINE__, 0xfffecf81,	"FFFECF81", "%-2.X"},
+  {__LINE__, -0x00002bb,	"-699", "%-d"},
+  {__LINE__, -0x0000c29,	"-3113", "% 02ld"},
+  {__LINE__, 0x000026a3,	" 9891", "% .4d"},
+  {__LINE__, 0x00000003,	"3", "%-x"},
+  {__LINE__, 0x000007db,	"+02011", "%+.5ld"},
+  {__LINE__, 0xfff99558,	"FFF99558", "%.1X"},
+  {__LINE__, 0x0000fce6,	"64742", "%4.0d"},
+  {__LINE__, 0x000b7ea2,	"753314", "%ld"},
+  {__LINE__, 0x13e5df30,	"0X13E5DF30", "%#2.X"},
+  {__LINE__, 0x006761c4,	"06761C4", "%6.7X"},
+  {__LINE__, 0xffffff78,	"FFFFFF78", "%0.X"},
+  {__LINE__, 0xfffff1c0,	"0xfffff1c0", "% #x"},
+  {__LINE__, -0x034af1c,	"-3452700", "% 06.1d"},
+  {__LINE__, 0x000000de,	"0000222", "%2.7ld"},
+  {__LINE__, 0x000003d8,	"0x3d8", "%#4.x"},
+  {__LINE__, -0x001a1d1,	"-106961", "%3.1d"},
+  {__LINE__, -0x0000002,	"-2", "% d"},
+  {__LINE__, 0x00001de6,	"+7654", "%+0ld"},
+  {__LINE__, 0x00000001,	"001", "%#.3d"},
+  {__LINE__, -0x53dacf9f,	"-1406848927", "%ld"},
+  {__LINE__, 0xfffffffc,	"fffffffc", "%3.3x"},
+  {__LINE__, -0x00950e8,	"-610536", "%3.6ld"},
+  {__LINE__, 0xff14ade9,	"FF14ADE9", "%6X"},
+  {__LINE__, 0x012f5284,	"0X12F5284", "% #5X"},
+  {__LINE__, 0x00005a21,	" 5a21", "%5x"},
+  {__LINE__, 0x00000638,	"1592", "%2.4ld"},
+  {__LINE__, -0x063017b,	"-6488443", "%ld"},
+  {__LINE__, 0x00000000,	"0", "% X"},
+  {__LINE__, 0xfffe8ef2,	"FFFE8EF2", "%+0X"},
+  {__LINE__, -0x0001c96,	"-7318", "%.3d"},
+  {__LINE__, 0x0000ca7d,	"51837", "%ld"},
+  {__LINE__, 0x00000001,	"1", "%+1x"},
+  {__LINE__, 0xfffff7bc,	"FFFFF7BC", "%X"},
+  {__LINE__, -0x03d15e2,	"-4003298", "%ld"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "% x"},
+  {__LINE__, 0x00066183,	"+418179", "%+7.1ld"},
+  {__LINE__, 0xffffef2e,	"ffffef2e", "%-2.x"},
+  {__LINE__, 0x00000000,	" 000", "%04.3x"},
+  {__LINE__, -0x000000f,	"-15", "% d"},
+  {__LINE__, -0x00001f5,	"-501", "%d"},
+  {__LINE__, 0x0c67f159,	"c67f159", "%6.2x"},
+  {__LINE__, -0x0000006,	"-6", "%.1d"},
+  {__LINE__, 0x00000005,	"0X5", "%+#1X"},
+  {__LINE__, -0x0000002,	"    -2", "%6.ld"},
+  {__LINE__, 0xeb2183ec,	"eb2183ec", "% x"},
+  {__LINE__, -0x5e12a322,	"-1578279714", "%d"},
+  {__LINE__, 0x00000001,	"0x1", "%#x"},
+  {__LINE__, -0x0001ea4,	"-7844", "%0d"},
+  {__LINE__, -0x19955a3,	"-26826147", "%d"},
+  {__LINE__, 0x000002a6,	"2A6", "%2.X"},
+  {__LINE__, 0x00000002,	"2", "%X"},
+  {__LINE__, 0xfffffeec,	"fffffeec", "%0.4x"},
+  {__LINE__, 0xfffffffc,	"fffffffc", "%0x"},
+  {__LINE__, 0xffdfe740,	"FFDFE740", "% X"},
+  {__LINE__, -0x0b0b3e7,	"-11580391", "%.1d"},
+  {__LINE__, 0x8e01077c,	"8E01077C", "%5.7X"},
+  {__LINE__, 0x3b6b6d55,	"996896085", "%1.1d"},
+  {__LINE__, 0x000016af,	"5807", "%ld"},
+  {__LINE__, -0x0004900,	"-18688", "%d"},
+  {__LINE__, 0xfffd77bc,	"FFFD77BC", "%X"},
+  {__LINE__, 0x004cbd74,	"5029236", "%0d"},
+  {__LINE__, 0x00000003,	" 00003", "%6.5d"},
+  {__LINE__, 0x0004720f,	"4720f", "% x"},
+  {__LINE__, 0x0e44535d,	"e44535d", "%4x"},
+  {__LINE__, 0xfffffff9,	"FFFFFFF9", "%3.3X"},
+  {__LINE__, -0x0000005,	"-5", "%-d"},
+  {__LINE__, 0x000001a6,	"00001A6", "%1.7X"},
+  {__LINE__, 0x0000004a,	"4A", "%-2.X"},
+  {__LINE__, 0xfffff249,	"FFFFF249", "%X"},
+  {__LINE__, 0x00004345,	"4345", "%x"},
+  {__LINE__, 0x0197041d,	"197041d", "%+0x"},
+  {__LINE__, 0x0000019a,	"   19a", "% 6.x"},
+  {__LINE__, 0xfff98376,	"FFF98376", "%X"},
+  {__LINE__, 0xfc536c41,	"FC536C41", "%X"},
+  {__LINE__, -0x0008d91,	"-36241", "% d"},
+  {__LINE__, 0xf058d69d,	"f058d69d", "%4.x"},
+  {__LINE__, -0x00013ef,	"-5103", "%d"},
+  {__LINE__, -0x0000003,	"-3", "%00ld"},
+  {__LINE__, -0x09e80f0,	"-10387696", "%+07ld"},
+  {__LINE__, -0x0222c15,	"-2239509", "%#0.4ld"},
+  {__LINE__, 0x00000004,	"4", "%0ld"},
+  {__LINE__, -0x02c6b0d,	"-2910989", "% 0ld"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%-4X"},
+  {__LINE__, 0xffffff3d,	"FFFFFF3D", "%-.0X"},
+  {__LINE__, -0x0000015,	"-21", "%0d"},
+  {__LINE__, 0x131dfc90,	"+320732304", "%+d"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%+x"},
+  {__LINE__, 0x000035c8,	"13768", "%0ld"},
+  {__LINE__, 0x00000033,	"0x0033", "%#.4x"},
+  {__LINE__, 0x0ce7e8c1,	"0xce7e8c1", "%#.7x"},
+  {__LINE__, 0xfc18b5d2,	"FC18B5D2", "%+.3X"},
+  {__LINE__, 0x00000015,	"21", "%d"},
+  {__LINE__, 0x001a5e7c,	"1a5e7c", "%05x"},
+  {__LINE__, -0x000fbf0,	"-64496", "%ld"},
+  {__LINE__, -0x000a4f7,	"-042231", "%+2.6d"},
+  {__LINE__, -0x0000002,	"-002", "%3.3ld"},
+  {__LINE__, 0x00728878,	"728878", "%0X"},
+  {__LINE__, -0x0000002,	"-2", "%#.1ld"},
+  {__LINE__, -0x00002ef,	"-751", "%-0ld"},
+  {__LINE__, 0xfffffff7,	"fffffff7", "%.3x"},
+  {__LINE__, 0x00491867,	"0491867", "%.7X"},
+  {__LINE__, 0x00000d4d,	"3405", "%-ld"},
+  {__LINE__, 0x00234e86,	"234E86", "%0X"},
+  {__LINE__, -0x000001b,	"-27", "%ld"},
+  {__LINE__, 0x00275255,	"2576981", "%.5ld"},
+  {__LINE__, 0xfeacc214,	"0XFEACC214", "%-#3.X"},
+  {__LINE__, -0x0001ce5,	"-7397", "%+#2.2ld"},
+  {__LINE__, 0x089ddb6a,	"144563050", "%d"},
+  {__LINE__, 0x003d5a95,	"3D5A95", "%1X"},
+  {__LINE__, 0x002f0b6d,	"3083117", "%d"},
+  {__LINE__, 0x1e79e228,	"511304232", "%ld"},
+  {__LINE__, 0xfffffe6b,	"FFFFFE6B", "%+0X"},
+  {__LINE__, -0x5104ff3,	"-84955123", "%.4ld"},
+  {__LINE__, 0xfffff1de,	"FFFFF1DE", "%X"},
+  {__LINE__, 0x000000cf,	"+207", "%+.1ld"},
+  {__LINE__, -0x16ad0164,	"-380436836", "%+5.d"},
+  {__LINE__, 0x001fefa6,	"2092966", "%ld"},
+  {__LINE__, 0x00000000,	"00", "%-.2d"},
+  {__LINE__, 0x00195f45,	"195f45", "%+0x"},
+  {__LINE__, 0x00000001,	"  1", "%3.ld"},
+  {__LINE__, -0x00001c9,	"-457", "% ld"},
+  {__LINE__, 0x0002479e,	"149406", "%#ld"},
+  {__LINE__, 0x001ab18b,	"1749387", "%04d"},
+  {__LINE__, 0x00000045,	"69", "%ld"},
+  {__LINE__, 0xfbb13f7d,	"fbb13f7d", "%.2x"},
+  {__LINE__, 0x03ddc208,	"3ddc208", "%x"},
+  {__LINE__, 0x00000007,	"000007", "%#.6d"},
+  {__LINE__, 0x00000000,	"0", "%01X"},
+  {__LINE__, -0x0023110,	"-143632", "%+0.3d"},
+  {__LINE__, 0x00000006,	"06", "%#.2d"},
+  {__LINE__, 0xffff9ec9,	"ffff9ec9", "%7x"},
+  {__LINE__, -0x08afb12,	"-9108242", "% #0.ld"},
+  {__LINE__, 0x00000004,	"4", "%X"},
+  {__LINE__, 0x00059684,	"59684", "%x"},
+  {__LINE__, 0xfff8d8f5,	"FFF8D8F5", "%X"},
+  {__LINE__, 0x00b7027d,	"+11993725", "%+0.7ld"},
+  {__LINE__, 0x0000d814,	"55316", "%0ld"},
+  {__LINE__, 0x03c95a08,	"3c95a08", "%3x"},
+  {__LINE__, -0x0b65f9a,	"-11952026", "%d"},
+  {__LINE__, 0xfd956021,	"fd956021", "%0x"},
+  {__LINE__, 0x000000ed,	"ed", "%0x"},
+  {__LINE__, -0x006a80c,	"-436236", "%.6ld"},
+  {__LINE__, 0xfedb109d,	"fedb109d", "%x"},
+  {__LINE__, 0x00000001,	"1", "%X"},
+  {__LINE__, 0x00b3eb71,	" 11791217", "% d"},
+  {__LINE__, 0x00000016,	"16", "%0X"},
+  {__LINE__, 0x000001db,	" 475", "% ld"},
+  {__LINE__, 0x00465eaf,	"4611759", "%0d"},
+  {__LINE__, 0x0001b423,	"1B423", "%0X"},
+  {__LINE__, 0x05df95ea,	"5df95ea", "%+.5x"},
+  {__LINE__, 0x0000000e,	"     14", "%7ld"},
+  {__LINE__, 0xffffb89e,	"ffffb89e", "%+x"},
+  {__LINE__, 0x01259918,	" 19241240", "% d"},
+  {__LINE__, -0x0000f8d,	"-003981", "%+#.6d"},
+  {__LINE__, 0x00054ae0,	"54AE0", "%X"},
+  {__LINE__, -0x4589ed4,	"-72916692", "% ld"},
+  {__LINE__, 0x01017516,	"1017516", "%6X"},
+  {__LINE__, 0xfffb9f15,	"FFFB9F15", "%.2X"},
+  {__LINE__, 0x005f8394,	"5F8394", "%.2X"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%x"},
+  {__LINE__, -0x0000001,	"     -1", "%7.1ld"},
+  {__LINE__, 0x004367af,	"4417455", "%4.ld"},
+  {__LINE__, 0xffffff86,	"ffffff86", "%4.5x"},
+  {__LINE__, -0x0000d17,	"-3351", "%2.0ld"},
+  {__LINE__, 0xffffff31,	"ffffff31", "%.6x"},
+  {__LINE__, -0x0000001,	"-1", "%ld"},
+  {__LINE__, -0x3d785fab,	"-1031298987", "%d"},
+  {__LINE__, -0x0000002,	"-2", "%-0ld"},
+  {__LINE__, 0x0000019c,	"412", "%d"},
+  {__LINE__, -0x0006f54,	"-28500", "%d"},
+  {__LINE__, 0xfffe3524,	"FFFE3524", "% 6.2X"},
+  {__LINE__, -0x128d3c00,	"-311245824", "%2d"},
+  {__LINE__, -0x3be71293,	"-1004999315", "%d"},
+  {__LINE__, 0x0000659d,	"26013", "%d"},
+  {__LINE__, 0x2d947538,	"+764704056", "%+5d"},
+  {__LINE__, 0xffa2a420,	"FFA2A420", "%0X"},
+  {__LINE__, 0x00000001,	"1", "%d"},
+  {__LINE__, 0x04477c14,	"4477c14", "%.6x"},
+  {__LINE__, -0x06e145b,	"-7214171", "%d"},
+  {__LINE__, 0x00009c01,	"39937", "%-.1d"},
+  {__LINE__, 0xffde174b,	"ffde174b", "% 0x"},
+  {__LINE__, 0x0001fbae,	"1FBAE", "%01.X"},
+  {__LINE__, -0x06b8406,	"-7046150", "%d"},
+  {__LINE__, 0x000005b8,	"005b8", "%05x"},
+  {__LINE__, -0x02d780b,	"-2979851", "%1d"},
+  {__LINE__, 0x00209e26,	"2137638", "%2d"},
+  {__LINE__, 0x0000041a,	"41A", "%0X"},
+  {__LINE__, 0x2a77f42c,	"2A77F42C", "%02X"},
+  {__LINE__, 0x13b6ee14,	"+330755604", "%+0d"},
+  {__LINE__, -0x0000002,	"-2    ", "%-6.d"},
+  {__LINE__, -0x0001eee,	"-7918", "% #2.ld"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "% .5X"},
+  {__LINE__, 0x20d11927,	"20d11927", "% 0.x"},
+  {__LINE__, -0x0018690,	"-99984", "% ld"},
+  {__LINE__, 0x000002a0,	"2A0", "%-0X"},
+  {__LINE__, -0x0000511,	"-1297", "%+d"},
+  {__LINE__, 0x0e782f31,	"242757425", "%-0.ld"},
+  {__LINE__, 0x2ce06da0,	"752905632", "%#0ld"},
+  {__LINE__, 0x00000062,	"62     ", "%-07x"},
+  {__LINE__, -0x015d9d8,	"-1432024", "% 7d"},
+  {__LINE__, 0xc9125ea8,	"c9125ea8", "%x"},
+  {__LINE__, 0x00000006,	"6", "%.0ld"},
+  {__LINE__, 0x0000019c,	"19c", "%x"},
+  {__LINE__, 0x00000000,	"      ", "%6.d"},
+  {__LINE__, 0x00043e89,	"278153", "%0ld"},
+  {__LINE__, 0x3e422abd,	"1044523709", "%ld"},
+  {__LINE__, 0x0220a75d,	"35694429", "%#7.6d"},
+  {__LINE__, 0x0000c21c,	"C21C", "% X"},
+  {__LINE__, 0x000074ab,	"29867", "%d"},
+  {__LINE__, 0x056b22aa,	"56B22AA", "%+0.X"},
+  {__LINE__, 0xfffffff9,	"FFFFFFF9", "%X"},
+  {__LINE__, 0x00000000,	"0", "%X"},
+  {__LINE__, 0xf094a4f4,	"f094a4f4", "%+4.x"},
+  {__LINE__, -0x1dad0244,	"-497877572", "%d"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%.1X"},
+  {__LINE__, 0xfffffe2d,	"fffffe2d", "%7.x"},
+  {__LINE__, 0x0000042b,	"0x42b", "%#x"},
+  {__LINE__, -0x0000001,	"-1", "% d"},
+  {__LINE__, 0x00e77ef5,	" 15171317", "% 7.ld"},
+  {__LINE__, 0x00006210,	" 25104", "% 06d"},
+  {__LINE__, 0x0011187a,	"1120378", "%-ld"},
+  {__LINE__, -0x000000b,	"-11", "% #ld"},
+  {__LINE__, 0x14cfaff0,	"14cfaff0", "%-2.3x"},
+  {__LINE__, 0xffff74ea,	"FFFF74EA", "%3.X"},
+  {__LINE__, 0x000bfb9d,	"bfb9d", "%x"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%X"},
+  {__LINE__, 0x00014500,	"0X14500", "%#4.X"},
+  {__LINE__, -0x0000001,	"-1", "%#1d"},
+  {__LINE__, -0x0000024,	"-36", "%-0d"},
+  {__LINE__, -0x6528828,	"-106072104", "%d"},
+  {__LINE__, 0x00000075,	" 117", "% #d"},
+  {__LINE__, 0xff027d67,	"ff027d67", "%0x"},
+  {__LINE__, 0x0012b8b3,	"12b8b3", "%0.1x"},
+  {__LINE__, 0x1070147b,	"275780731", "%.6ld"},
+  {__LINE__, 0xffffe88e,	"FFFFE88E", "%1.3X"},
+  {__LINE__, 0xfffffc0d,	"fffffc0d", "%00.6x"},
+  {__LINE__, 0xffd889f5,	"ffd889f5", "%x"},
+  {__LINE__, 0x00000470,	"1136", "%0ld"},
+  {__LINE__, 0x000297f8,	"169976", "%ld"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%+1x"},
+  {__LINE__, 0x0000064a,	"64a", "%x"},
+  {__LINE__, -0x3d71e43b,	"-1030874171", "%1.d"},
+  {__LINE__, -0x0000004,	"-4 ", "%-3.d"},
+  {__LINE__, 0xfffff132,	"FFFFF132", "%0.0X"},
+  {__LINE__, 0x37b6356f,	"37b6356f", "%-x"},
+  {__LINE__, 0xffffff7a,	"FFFFFF7A", "%.0X"},
+  {__LINE__, 0x00023553,	"23553", "%x"},
+  {__LINE__, 0x39a4c29f,	"39a4c29f", "%+5.x"},
+  {__LINE__, 0xffffffcc,	"ffffffcc", "%x"},
+  {__LINE__, 0x0003a83b,	"239675", "%#6ld"},
+  {__LINE__, 0x00000002,	"2", "%0x"},
+  {__LINE__, -0x09b4e8c,	"-10178188", "%+03.ld"},
+  {__LINE__, 0x00000002,	"0000002", "%-#.7ld"},
+  {__LINE__, 0x00000b5e,	"2910", "%-04ld"},
+  {__LINE__, -0x0000254,	"-596", "%+0d"},
+  {__LINE__, 0x00000001,	"1", "%+1.x"},
+  {__LINE__, 0xf8290d3e,	"0XF8290D3E", "% #X"},
+  {__LINE__, 0x00000035,	"035", "%3.3X"},
+  {__LINE__, 0x00131d7d,	"131D7D ", "%-7.6X"},
+  {__LINE__, 0xffdbb36a,	"0xffdbb36a", "%#.6x"},
+  {__LINE__, 0xc7275816,	"c7275816", "%04.x"},
+  {__LINE__, 0x00bae994,	"12249492", "%0ld"},
+  {__LINE__, 0x00000002,	"+2", "%+0.0ld"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%0x"},
+  {__LINE__, 0xffffffe0,	"ffffffe0", "%x"},
+  {__LINE__, 0x00000036,	"36", "%.0X"},
+  {__LINE__, 0xfffffffd,	"FFFFFFFD", "%1X"},
+  {__LINE__, 0xffffffc8,	"ffffffc8", "%+x"},
+  {__LINE__, 0xe71c3689,	"e71c3689", "%x"},
+  {__LINE__, 0x00000007,	"7  ", "%-3.ld"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%x"},
+  {__LINE__, 0x00030400,	"030400", "%-4.6x"},
+  {__LINE__, 0xbd8c6fa7,	"BD8C6FA7", "%-6X"},
+  {__LINE__, 0x00000233,	"0000563", "%.7ld"},
+  {__LINE__, 0xfef92e35,	"fef92e35", "%x"},
+  {__LINE__, 0xffff2172,	"ffff2172", "%3x"},
+  {__LINE__, 0x00001233,	"1233", "% X"},
+  {__LINE__, -0x000d2e1,	"-53985", "%-0d"},
+  {__LINE__, -0x3ba8cb5b,	"-1000917851", "%0d"},
+  {__LINE__, -0x4fefb9a,	"-83819418", "%5.ld"},
+  {__LINE__, 0xffffe9eb,	"FFFFE9EB", "%X"},
+  {__LINE__, 0x1e472dc3,	"507981251", "%ld"},
+  {__LINE__, -0x0077046,	"-487494", "%0d"},
+  {__LINE__, 0x0002c4c9,	"+181449", "%+7.d"},
+  {__LINE__, 0xfffffe63,	"fffffe63", "%x"},
+  {__LINE__, 0xfff5a6db,	"FFF5A6DB", "%X"},
+  {__LINE__, 0x00174442,	"174442", "%-5.0X"},
+  {__LINE__, 0x017891d9,	"17891D9", "%+5.X"},
+  {__LINE__, 0x0261966b,	"261966B", "%-X"},
+  {__LINE__, -0x3e58614d,	"-1045979469", "%ld"},
+  {__LINE__, 0x002c4c41,	"+2903105", "%+01ld"},
+  {__LINE__, 0x0000000c,	"012", "%#.3d"},
+  {__LINE__, 0x0380f73a,	"58783546", "%ld"},
+  {__LINE__, 0x000002c7,	"0000711", "%2.7ld"},
+  {__LINE__, 0x00000002,	" 002", "% 04ld"},
+  {__LINE__, 0x00687ca0,	"687CA0", "%X"},
+  {__LINE__, 0x0000058a,	"1418", "%0ld"},
+  {__LINE__, -0x0000642,	"-1602", "% ld"},
+  {__LINE__, 0x0001f4f1,	"1F4F1", "%X"},
+  {__LINE__, 0x0026d6fc,	"+2545404", "%+4.ld"},
+  {__LINE__, 0x05dd423c,	"+98386492", "%+#ld"},
+  {__LINE__, 0x0000782c,	"0782C", "%3.5X"},
+  {__LINE__, 0xf67d91f8,	"f67d91f8", "%-x"},
+  {__LINE__, 0xffffcf2d,	"ffffcf2d", "%+0x"},
+  {__LINE__, -0x00af8a6,	"-719014", "%0ld"},
+  {__LINE__, -0xe606ef9,	"-241200889", "%ld"},
+  {__LINE__, 0xfe9d87f7,	"fe9d87f7", "%+x"},
+  {__LINE__, 0x00000d44,	"d44", "% 1.x"},
+  {__LINE__, 0x008716f5,	"8716f5", "%2x"},
+  {__LINE__, 0x000027d4,	"27D4", "% X"},
+  {__LINE__, 0xfdfd92ea,	"FDFD92EA", "%-.4X"},
+  {__LINE__, 0xfffe764f,	"FFFE764F", "%X"},
+  {__LINE__, 0xff699032,	"ff699032", "%3.x"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%-3X"},
+  {__LINE__, -0x368ba995,	"-915122581", "%+#.6ld"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%0x"},
+  {__LINE__, 0x0000035e,	" 862", "% 1d"},
+  {__LINE__, 0xfe703e67,	"fe703e67", "%07.0x"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%4.x"},
+  {__LINE__, 0x000e20cf,	"e20cf", "%0x"},
+  {__LINE__, 0x000063b5,	"0X63B5", "%-#X"},
+  {__LINE__, 0xfffffffa,	"fffffffa", "%+2.x"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%2.X"},
+  {__LINE__, 0xfdfd69da,	"FDFD69DA", "%.0X"},
+  {__LINE__, 0x00002f61,	"0x2f61", "%#3.x"},
+  {__LINE__, 0x00000009,	"9", "%x"},
+  {__LINE__, 0xffffff86,	"ffffff86", "%6x"},
+  {__LINE__, 0xffffffe4,	"ffffffe4", "%0x"},
+  {__LINE__, 0x0062e73b,	"+6481723", "%+0ld"},
+  {__LINE__, -0x2b059130,	"-721785136", "%+d"},
+  {__LINE__, -0x0000073,	"-115", "%d"},
+  {__LINE__, 0xf596efcf,	"f596efcf", "%x"},
+  {__LINE__, 0x0002f1cb,	"2F1CB", "%0X"},
+  {__LINE__, -0x0000635,	"-01589", "%.5ld"},
+  {__LINE__, 0xfffa011a,	"FFFA011A", "%0X"},
+  {__LINE__, 0x00000047,	"  47", "%4X"},
+  {__LINE__, 0xfffffbc0,	"FFFFFBC0", "%5.2X"},
+  {__LINE__, 0x00000015,	"15", "% X"},
+  {__LINE__, 0x002a87a6,	"2a87a6", "%.1x"},
+  {__LINE__, -0x000069c,	"-1692", "%+ld"},
+  {__LINE__, 0xfffffffd,	"fffffffd", "%+x"},
+  {__LINE__, 0xfeda51f5,	"FEDA51F5", "%0X"},
+  {__LINE__, 0x001781a4,	"1781a4", "%-0x"},
+  {__LINE__, 0xe77358d4,	"e77358d4", "%+0x"},
+  {__LINE__, 0x00000084,	" 84", "%3.x"},
+  {__LINE__, 0xffff0cb2,	"FFFF0CB2", "%+5.X"},
+  {__LINE__, 0x0009fa17,	"653847", "%0.0ld"},
+  {__LINE__, -0x0000c92,	"-3218", "%d"},
+  {__LINE__, 0x0004ebbb,	"4ebbb", "%x"},
+  {__LINE__, 0x2e72568c,	"+779245196", "%+#ld"},
+  {__LINE__, 0xffae86a7,	"ffae86a7", "%.7x"},
+  {__LINE__, 0xffdf3f04,	"ffdf3f04", "%x"},
+  {__LINE__, 0x000000c7,	"199", "%2.d"},
+  {__LINE__, -0x0004a55,	"-19029", "%ld"},
+  {__LINE__, 0x00564ef9,	"5656313", "%.6ld"},
+  {__LINE__, 0xffffc205,	"ffffc205", "%+.0x"},
+  {__LINE__, -0x135085d0,	"-324044240", "%#.5d"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%-7x"},
+  {__LINE__, -0x0000003,	"-3", "%.1ld"},
+  {__LINE__, 0xffda9e0b,	"ffda9e0b", "%+0x"},
+  {__LINE__, 0x00000001,	"1", "%d"},
+  {__LINE__, 0xffffffda,	"ffffffda", "%.6x"},
+  {__LINE__, 0x5efdb3d1,	"+1593684945", "%+0d"},
+  {__LINE__, -0x00000ca,	"-202", "% 4.d"},
+  {__LINE__, -0x0014433,	"-82995", "%.3d"},
+  {__LINE__, -0x0000002,	"-000002", "% .6ld"},
+  {__LINE__, 0x24aac879,	"615172217", "%.7d"},
+  {__LINE__, -0x1db3c1d,	"-31144989", "%+#4ld"},
+  {__LINE__, 0x000945ad,	"0x945ad", "%#1x"},
+  {__LINE__, 0x0000000a,	"10", "%#.1ld"},
+  {__LINE__, -0x002a2e5,	"-172773", "%d"},
+  {__LINE__, 0xfffffff3,	"FFFFFFF3", "%5X"},
+  {__LINE__, 0x0000000e,	"e", "%+x"},
+  {__LINE__, 0x335333dc,	"861090780", "%6.d"},
+  {__LINE__, 0xfffa16f4,	"FFFA16F4", "%6X"},
+  {__LINE__, 0xffffc727,	"ffffc727", "%+2.x"},
+  {__LINE__, 0x00000273,	"273", "%x"},
+  {__LINE__, -0x000000f,	"-15", "%-0d"},
+  {__LINE__, 0x00065fbd,	"417725", "%5.1d"},
+  {__LINE__, 0x00000ed5,	"3797", "%d"},
+  {__LINE__, 0x30a40024,	"30A40024", "%3.7X"},
+  {__LINE__, 0x00000054,	"84", "%ld"},
+  {__LINE__, 0x00000515,	"01301", "%.5ld"},
+  {__LINE__, 0x00000897,	"+02199", "%+.5d"},
+  {__LINE__, -0x0001bcc,	"-7116", "% ld"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%7X"},
+  {__LINE__, 0x00000013,	"0X13", "%#X"},
+  {__LINE__, 0xffffffff,	"0xffffffff", "% #x"},
+  {__LINE__, 0x00000006,	"6", "%ld"},
+  {__LINE__, -0x00000c3,	"-195", "%1.ld"},
+  {__LINE__, -0x005291e,	"-338206", "%+d"},
+  {__LINE__, 0xffb437a7,	"FFB437A7", "%-0X"},
+  {__LINE__, 0xff8335cb,	"ff8335cb", "%x"},
+  {__LINE__, 0x0000006a,	"6A", "%2X"},
+  {__LINE__, -0x004f629,	"-325161", "% .4d"},
+  {__LINE__, 0x003698ef,	"3578095", "%0ld"},
+  {__LINE__, 0x6b5cdf3a,	"6b5cdf3a", "%-x"},
+  {__LINE__, 0xe9bc5c21,	"e9bc5c21", "%+x"},
+  {__LINE__, -0x0000001,	"    -1", "%+6.ld"},
+  {__LINE__, 0xfffeffc8,	"FFFEFFC8", "%6.X"},
+  {__LINE__, 0xff070a73,	"ff070a73", "%+.7x"},
+  {__LINE__, 0x0023f8ae,	"2357422", "%07.4ld"},
+  {__LINE__, 0x00000000,	"0", "%X"},
+  {__LINE__, 0x00000016,	"16", "%0X"},
+  {__LINE__, -0x000005a,	" -90", "%4d"},
+  {__LINE__, 0x00000116,	"116", "% .3x"},
+  {__LINE__, 0xfffed024,	"fffed024", "%-x"},
+  {__LINE__, 0xfb907950,	"fb907950", "%.0x"},
+  {__LINE__, 0x0101a1e5,	"101a1e5", "%x"},
+  {__LINE__, -0x09e7684,	"-10385028", "%-#ld"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%1x"},
+  {__LINE__, 0xfffffff6,	"fffffff6", "%x"},
+  {__LINE__, 0x00000078,	"78", "%x"},
+  {__LINE__, 0xe6bca9c9,	"0XE6BCA9C9", "%#.5X"},
+  {__LINE__, -0x0000010,	"-16", "%d"},
+  {__LINE__, -0x1348f685,	"-323548805", "%d"},
+  {__LINE__, 0x4dd85797,	"1306023831", "%ld"},
+  {__LINE__, -0x0000080,	"-128", "%.2d"},
+  {__LINE__, -0xaed13a7,	"-183309223", "%+ld"},
+  {__LINE__, -0x000002f,	"-47", "% d"},
+  {__LINE__, -0x679911f,	"-108630303", "%ld"},
+  {__LINE__, 0xfffff221,	"FFFFF221", "% .7X"},
+  {__LINE__, 0x0007476c,	"7476c", "%x"},
+  {__LINE__, 0xffffe02a,	"0xffffe02a", "%#7x"},
+  {__LINE__, 0x00000ebb,	"0XEBB", "%#X"},
+  {__LINE__, 0xffffffff,	"0XFFFFFFFF", "%-#X"},
+  {__LINE__, 0x00281896,	"281896", "%+1.x"},
+  {__LINE__, 0x0000085d,	" 0X85D", "%#6.3X"},
+  {__LINE__, 0x000112bf,	"112BF", "%X"},
+  {__LINE__, 0xf5518fbf,	"F5518FBF", "% X"},
+  {__LINE__, -0x00c945b,	"-824411", "%ld"},
+  {__LINE__, 0x00001b43,	"0x1b43", "%-#x"},
+  {__LINE__, -0x5872a246,	"-1483907654", "%#7.7ld"},
+  {__LINE__, 0x00001f96,	"8086", "%#d"},
+  {__LINE__, 0xfffffff9,	"FFFFFFF9", "%X"},
+  {__LINE__, -0x006e244,	"-451140", "% .3d"},
+  {__LINE__, -0x0382188,	"-3678600", "%0.2ld"},
+  {__LINE__, 0x00000006,	"6", "%-x"},
+  {__LINE__, 0x00000036,	"54   ", "%-5.d"},
+  {__LINE__, -0x0000439,	" -1081", "%#6.3ld"},
+  {__LINE__, 0xfff911c6,	"FFF911C6", "%X"},
+  {__LINE__, -0x03454dc,	"-3429596", "%d"},
+  {__LINE__, -0x0363e8d,	"-3554957", "%-.2ld"},
+  {__LINE__, 0x00000000,	"000", "%.3X"},
+  {__LINE__, -0x59bb030f,	"-1505428239", "%0ld"},
+  {__LINE__, 0x073c94d8,	"121410776", "%-d"},
+  {__LINE__, -0x001ef94,	"-126868", "%5.1ld"},
+  {__LINE__, 0xfff65fc5,	"FFF65FC5", "%0X"},
+  {__LINE__, 0xfffffff4,	"fffffff4", "%-x"},
+  {__LINE__, 0x00001d83,	"07555", "%5.5d"},
+  {__LINE__, 0x0012b40a,	"1225738", "%ld"},
+  {__LINE__, -0x0000006,	"-6", "%0ld"},
+  {__LINE__, 0xfffffffc,	"fffffffc", "%06.0x"},
+  {__LINE__, -0x0000002,	"-00002", "%#.5ld"},
+  {__LINE__, 0xf9932c1d,	"f9932c1d", "%-x"},
+  {__LINE__, -0x46a31d9,	"-74068441", "%.3ld"},
+  {__LINE__, 0x000987e9,	"987E9", "%1X"},
+  {__LINE__, 0x0000000f,	"15", "%-ld"},
+  {__LINE__, -0x0001c4d,	"-7245", "%ld"},
+  {__LINE__, -0x007deee,	"-515822", "%2.6d"},
+  {__LINE__, 0xffffffa2,	"FFFFFFA2", "%.6X"},
+  {__LINE__, 0x00000001,	"1", "%-ld"},
+  {__LINE__, 0xfc106bde,	"fc106bde", "%.4x"},
+  {__LINE__, 0x0002f1f8,	"0x2f1f8", "%#7.x"},
+  {__LINE__, -0x06a290b,	"-6957323", "%-ld"},
+  {__LINE__, -0x0000037,	" -55", "%4ld"},
+  {__LINE__, 0x0000152e,	"5422", "%2.d"},
+  {__LINE__, 0xfffffcb2,	"0XFFFFFCB2", "%#3.X"},
+  {__LINE__, 0x1b7ca086,	"1b7ca086", "%+x"},
+  {__LINE__, 0x00000001,	"1", "%ld"},
+  {__LINE__, 0x006775fc,	"6775fc", "%3.2x"},
+  {__LINE__, 0x0000000e,	"0XE", "%#3.X"},
+  {__LINE__, 0xffffffff,	"0xffffffff", "%+#4.x"},
+  {__LINE__, 0x00001246,	"1246", "%X"},
+  {__LINE__, 0xffffaed6,	"ffffaed6", "%2x"},
+  {__LINE__, -0x3a2dec78,	"-976088184", "% 0ld"},
+  {__LINE__, 0x0001423b,	"1423b", "%01x"},
+  {__LINE__, 0x00000007,	" 0X7", "%#4.X"},
+  {__LINE__, 0x01a7ff5a,	"27787098", "%.4ld"},
+  {__LINE__, -0x0020d05,	"-134405", "%-d"},
+  {__LINE__, 0xffffff9a,	"ffffff9a", "%-.1x"},
+  {__LINE__, 0xffff3557,	"ffff3557", "%x"},
+  {__LINE__, 0x08828e35,	"8828e35", "%+.1x"},
+  {__LINE__, 0x000006b2,	"001714", "%04.6ld"},
+  {__LINE__, 0x00000013,	"19", "%.0ld"},
+  {__LINE__, -0x00341a5,	"-213413", "%#d"},
+  {__LINE__, -0x0000043,	"-67", "%d"},
+  {__LINE__, -0x074dce3,	"-7658723", "%.1d"},
+  {__LINE__, -0x16de2df3,	"-383659507", "% ld"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, 0x00000ce7,	"ce7", "% 2.1x"},
+  {__LINE__, 0xffecd377,	"ffecd377", "% 0x"},
+  {__LINE__, 0xa4e8465c,	"a4e8465c", "% x"},
+  {__LINE__, 0x000005e8,	"1512", "%d"},
+  {__LINE__, 0x00000513,	"1299", "%d"},
+  {__LINE__, 0xffffffb8,	"FFFFFFB8", "%X"},
+  {__LINE__, 0x00000003,	"00003", "%3.5x"},
+  {__LINE__, -0x0000003,	"-3 ", "%-3.ld"},
+  {__LINE__, 0xad53f01d,	"ad53f01d", "%0x"},
+  {__LINE__, 0x0f1c1dae,	"253500846", "%-#.0d"},
+  {__LINE__, 0xff1753c0,	"0xff1753c0", "%#3.x"},
+  {__LINE__, -0x00389c5,	"-231877", "%d"},
+  {__LINE__, 0x0000016e,	"00016E", "%.6X"},
+  {__LINE__, -0x54d3310f,	"-1423126799", "%-d"},
+  {__LINE__, 0x00000005,	"0X5", "%#.1X"},
+  {__LINE__, 0xfffffffd,	"0XFFFFFFFD", "%#5.3X"},
+  {__LINE__, 0xfffffe0e,	"fffffe0e", "%-x"},
+  {__LINE__, 0xa3c02157,	"a3c02157", "%.5x"},
+  {__LINE__, 0x00005765,	"22373", "%d"},
+  {__LINE__, -0x12668cd,	"-19294413", "%+ld"},
+  {__LINE__, -0x66544da,	"-107300058", "%2d"},
+  {__LINE__, 0x8646c605,	"0X8646C605", "% #X"},
+  {__LINE__, 0x000001f5,	"1F5", "%X"},
+  {__LINE__, 0x01b33ae4,	"28523236", "%5ld"},
+  {__LINE__, 0x000007ce,	"7ce", "%3.x"},
+  {__LINE__, 0x00000355,	"355", "%X"},
+  {__LINE__, 0x000001ce,	"1CE", "% X"},
+  {__LINE__, 0xfffffccd,	"fffffccd", "%7.0x"},
+  {__LINE__, -0x0000001,	"-1", "%0ld"},
+  {__LINE__, 0x000640b6,	"640b6", "%5.x"},
+  {__LINE__, 0x0038c4ec,	"3720428", "%5.4d"},
+  {__LINE__, -0x0f10b5e,	"-15797086", "%2ld"},
+  {__LINE__, 0x256c815f,	"256c815f", "%4.x"},
+  {__LINE__, 0x00000682,	"  1666", "%6ld"},
+  {__LINE__, -0x00000ab,	"-171", "%2ld"},
+  {__LINE__, 0x00000003,	"3", "%0d"},
+  {__LINE__, 0x063f5075,	"63F5075", "%X"},
+  {__LINE__, 0xff83b5d0,	"FF83B5D0", "%7.X"},
+  {__LINE__, 0xffffffec,	"ffffffec", "%x"},
+  {__LINE__, 0xffb551c4,	"0XFFB551C4", "% #4.X"},
+  {__LINE__, -0x071f057,	"-7467095", "%3.7d"},
+  {__LINE__, 0x00634879,	"6506617", "%#ld"},
+  {__LINE__, 0x000001d7,	"471", "%d"},
+  {__LINE__, 0x00a7da92,	"A7DA92", "% .4X"},
+  {__LINE__, 0x00000003,	"3 ", "%-2.ld"},
+  {__LINE__, -0x0000004,	"-0004", "%.4d"},
+  {__LINE__, -0x01dea32,	"-1960498", "% #7.d"},
+  {__LINE__, 0x53c4159f,	"53C4159F", "%1.7X"},
+  {__LINE__, -0x1ad7904,	"-28145924", "%#d"},
+  {__LINE__, -0x0000a85,	"-2693", "%ld"},
+  {__LINE__, -0x0000c7d,	"-3197", "%d"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%+0X"},
+  {__LINE__, 0x00000004,	"00004", "%1.5d"},
+  {__LINE__, 0x0000b761,	"46945", "%5ld"},
+  {__LINE__, -0x0ee3b2c,	"-15612716", "%.6d"},
+  {__LINE__, 0x0677a73d,	"677a73d", "% x"},
+  {__LINE__, -0x5f96020,	"-100229152", "% d"},
+  {__LINE__, 0x00000000,	"      0", "%#7X"},
+  {__LINE__, -0x5d1cb5b,	"-97635163", "% ld"},
+  {__LINE__, -0x00a8d8b,	"-691595", "%-0ld"},
+  {__LINE__, 0xffffffa2,	"FFFFFFA2", "%X"},
+  {__LINE__, 0xffffffc9,	"FFFFFFC9", "%X"},
+  {__LINE__, 0x0b180d35,	"B180D35", "%X"},
+  {__LINE__, 0xfc0b94ce,	"fc0b94ce", "%.1x"},
+  {__LINE__, 0x0012cd7b,	"12CD7B", "% X"},
+  {__LINE__, -0x02f1da8,	"-3087784", "%ld"},
+  {__LINE__, -0x000a6f9,	"-42745", "%-ld"},
+  {__LINE__, -0x000006d,	"-109  ", "%-6d"},
+  {__LINE__, 0x00000001,	"+1", "%+0d"},
+  {__LINE__, 0x00000001,	"1", "%1d"},
+  {__LINE__, 0xfffffff8,	"fffffff8", "%5.x"},
+  {__LINE__, -0x00fc4d7,	"-1033431", "%+0.5ld"},
+  {__LINE__, 0xffff41b4,	"0xffff41b4", "%#x"},
+  {__LINE__, -0x0000d37,	"-3383", "%ld"},
+  {__LINE__, 0xffc4e405,	"ffc4e405", "%7x"},
+  {__LINE__, 0xffffffb0,	"FFFFFFB0", "%04X"},
+  {__LINE__, -0x0054477,	"-345207", "%01.ld"},
+  {__LINE__, 0x00512778,	"0x512778", "%#3.0x"},
+  {__LINE__, 0x00000007,	"      7", "%7.d"},
+  {__LINE__, 0x00000008,	" 00008", "% .5ld"},
+  {__LINE__, 0x000053fd,	"21501", "%.4ld"},
+  {__LINE__, 0x0000370c,	"370c", "%2x"},
+  {__LINE__, -0x44670a7,	"-71725223", "%3d"},
+  {__LINE__, 0x00000064,	"   64", "%+5x"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%X"},
+  {__LINE__, 0xf7bbf094,	"f7bbf094", "%3x"},
+  {__LINE__, 0xfffeb268,	"FFFEB268", "%X"},
+  {__LINE__, 0x00001ef0,	"1ef0", "%4.x"},
+  {__LINE__, 0x05ad9aa4,	" 95263396", "% 0.ld"},
+  {__LINE__, 0xf294dca7,	"F294DCA7", "% 4.X"},
+  {__LINE__, -0x0000003,	"-000003", "%.6d"},
+  {__LINE__, 0xfff57471,	"fff57471", "% x"},
+  {__LINE__, 0x0a848cfd,	"176459005", "%d"},
+  {__LINE__, -0x000002e,	"-46", "%.0d"},
+  {__LINE__, 0x00000051,	"  +81", "%+5d"},
+  {__LINE__, -0x000072b,	"-0001835", "%06.7d"},
+  {__LINE__, -0x0000002,	"    -2", "%+#6ld"},
+  {__LINE__, 0x00000003,	"3", "%x"},
+  {__LINE__, 0xfffd1799,	"FFFD1799", "%6.X"},
+  {__LINE__, 0x00000005,	"5", "%ld"},
+  {__LINE__, 0x0052138b,	"5378955", "%#7.7ld"},
+  {__LINE__, 0x000000c0,	"    192", "% 7ld"},
+  {__LINE__, 0x005b26cd,	"5B26CD", "%X"},
+  {__LINE__, -0x008df17,	"-581399", "%.4ld"},
+  {__LINE__, 0xfffffad8,	"fffffad8", "%-x"},
+  {__LINE__, 0x000006a9,	"6a9", "%.0x"},
+  {__LINE__, -0x003b7f9,	"-243705", "%+0ld"},
+  {__LINE__, 0x005d7ea4,	"6127268", "%ld"},
+  {__LINE__, -0x003ccea,	"-249066", "%+.0ld"},
+  {__LINE__, 0x0000846f,	"846F", "%X"},
+  {__LINE__, 0x00004f79,	"4F79", "%4.X"},
+  {__LINE__, 0xe3e1409c,	"E3E1409C", "%-X"},
+  {__LINE__, 0x07cce2f4,	"7CCE2F4", "%2.X"},
+  {__LINE__, 0x004bcc8b,	"4967563", "%-.5ld"},
+  {__LINE__, 0x7d49665e,	"2101962334", "%ld"},
+  {__LINE__, 0xfffffffc,	"FFFFFFFC", "%.5X"},
+  {__LINE__, 0x0000019e,	"+000414", "%+.6d"},
+  {__LINE__, 0x000027ef,	"10223", "%d"},
+  {__LINE__, -0x0000261,	"-609", "%3ld"},
+  {__LINE__, -0x000000e,	"-14", "% 2.ld"},
+  {__LINE__, 0xff3ba3c7,	"ff3ba3c7", "%+5.7x"},
+  {__LINE__, 0xffffffc4,	"FFFFFFC4", "%-1.X"},
+  {__LINE__, 0xfffc5a70,	"0xfffc5a70", "%#4.4x"},
+  {__LINE__, 0x0000d156,	" 53590", "% d"},
+  {__LINE__, -0x0486258,	"-4743768", "%0ld"},
+  {__LINE__, 0x00000000,	"  ", "% 2.d"},
+  {__LINE__, 0x04a0ef9f,	"77655967", "%0.6ld"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%X"},
+  {__LINE__, 0x00000019,	"0000019", "%.7x"},
+  {__LINE__, -0x0058d3a,	"-363834", "%ld"},
+  {__LINE__, 0xfffff6b3,	"fffff6b3", "%x"},
+  {__LINE__, 0xfffffff5,	"FFFFFFF5", "%.0X"},
+  {__LINE__, 0x005e1fcb,	"5E1FCB", "%+6X"},
+  {__LINE__, 0xffc3c866,	"0xffc3c866", "%-#.4x"},
+  {__LINE__, 0x00000003,	"3", "%X"},
+  {__LINE__, 0xffa2e961,	"FFA2E961", "%7.4X"},
+  {__LINE__, 0x00000029,	"41", "%d"},
+  {__LINE__, -0x0000035,	"-53", "%d"},
+  {__LINE__, 0x0001b033,	"110643", "%ld"},
+  {__LINE__, 0x004dd51b,	"5100827", "%-2ld"},
+  {__LINE__, -0x000252d,	"-9517", "% d"},
+  {__LINE__, 0xffffdeb2,	"ffffdeb2", "%4.x"},
+  {__LINE__, 0xffe94eab,	"0xffe94eab", "%#x"},
+  {__LINE__, 0xf921edf6,	"f921edf6", "%4.2x"},
+  {__LINE__, 0x0007df97,	"515991", "%4.ld"},
+  {__LINE__, 0x00709bc5,	"709BC5", "%0X"},
+  {__LINE__, -0x0000001,	"-1", "%d"},
+  {__LINE__, 0xfffffffb,	"FFFFFFFB", "%7.3X"},
+  {__LINE__, -0x0063f74,	"-409460", "%+05.0d"},
+  {__LINE__, 0xfffffe9a,	"FFFFFE9A", "%.2X"},
+  {__LINE__, -0x0001ce2,	"-7394", "%.4d"},
+  {__LINE__, 0x000038c5,	"14533", "%ld"},
+  {__LINE__, 0x000000ad,	"000ad", "% 5.5x"},
+  {__LINE__, 0xffffbcc4,	"ffffbcc4", "%-5x"},
+  {__LINE__, 0x00000000,	"0", "% X"},
+  {__LINE__, 0x00372877,	"372877", "%.6X"},
+  {__LINE__, 0xffffffd7,	"FFFFFFD7", "%1.X"},
+  {__LINE__, 0xfa58b14b,	"fa58b14b", "%x"},
+  {__LINE__, 0xfffffd9f,	"FFFFFD9F", "%0.7X"},
+  {__LINE__, 0x00000710,	"+1808", "%+#.2ld"},
+  {__LINE__, 0x00000006,	"    6", "%5.0ld"},
+  {__LINE__, 0x0fba9706,	"263886598", "%-6.3d"},
+  {__LINE__, 0xffff420a,	"ffff420a", "%-2x"},
+  {__LINE__, 0x14b9a825,	"14b9a825", "%x"},
+  {__LINE__, 0x0077ffe4,	"77FFE4", "%+.2X"},
+  {__LINE__, 0x00067108,	"422152 ", "%-7.ld"},
+  {__LINE__, 0x00000001,	" 00001", "%6.5X"},
+  {__LINE__, 0x00000000,	"0", "%ld"},
+  {__LINE__, -0x0000001,	"     -1", "% 7ld"},
+  {__LINE__, 0x01ddc7a3,	"31311779", "%d"},
+  {__LINE__, -0x2a92f9b,	"-44642203", "% 3ld"},
+  {__LINE__, 0xfffffff9,	"fffffff9", "%4.6x"},
+  {__LINE__, 0x0279a274,	"279a274", "%x"},
+  {__LINE__, 0x2e37ed8e,	"775417230", "%d"},
+  {__LINE__, 0x5ba59f58,	"1537580888", "%-ld"},
+  {__LINE__, 0xffffffe0,	"ffffffe0", "%x"},
+  {__LINE__, 0x3110ae47,	"0X3110AE47", "%+#X"},
+  {__LINE__, 0x000e00b9,	"917689", "%d"},
+  {__LINE__, 0x0000002e,	"   0046", "% 7.4d"},
+  {__LINE__, 0x00000363,	"    867", "%7.d"},
+  {__LINE__, -0x000000b,	"-0011", "% 0.4d"},
+  {__LINE__, 0x000349c8,	"  349C8", "% 7.X"},
+  {__LINE__, -0x01358f1,	"-1267953", "%d"},
+  {__LINE__, -0x0039d3c,	"-236860", "%-.3d"},
+  {__LINE__, 0xffd6de19,	"ffd6de19", "%04.0x"},
+  {__LINE__, -0x0003c54,	"-0015444", "%1.7d"},
+  {__LINE__, -0x0000e17,	"-3607", "%d"},
+  {__LINE__, 0xff0fa3a9,	"ff0fa3a9", "%+3x"},
+  {__LINE__, 0x00000009,	"0000009", "%1.7x"},
+  {__LINE__, 0xfffffc81,	"FFFFFC81", "% X"},
+  {__LINE__, -0x4ef2df5,	"-82783733", "%ld"},
+  {__LINE__, 0x00000013,	"19", "%-ld"},
+  {__LINE__, 0x00000000,	"      0", "%#7x"},
+  {__LINE__, -0x3b9485fd,	"-999589373", "%1.d"},
+  {__LINE__, -0x0000006,	"-00006", "%6.5d"},
+  {__LINE__, 0x0000003f,	"+63", "%+ld"},
+  {__LINE__, 0x000004c5,	"1221", "%1.d"},
+  {__LINE__, 0x003f8a8c,	"4164236", "%d"},
+  {__LINE__, -0x000001e,	"-30", "%-#3d"},
+  {__LINE__, 0xfff9d230,	"FFF9D230", "%+07.3X"},
+  {__LINE__, 0x0147cf17,	"147cf17", "% x"},
+  {__LINE__, 0xffffffeb,	"ffffffeb", "%x"},
+  {__LINE__, 0x0000007d,	"00125", "%.5ld"},
+  {__LINE__, 0x000fff56,	"1048406", "%#3d"},
+  {__LINE__, 0x064307a0,	" 105056160", "% 0.3ld"},
+  {__LINE__, 0x007d2860,	"8202336", "%-.2d"},
+  {__LINE__, 0x00a05711,	"a05711", "%x"},
+  {__LINE__, 0x179a7f9e,	"0x179a7f9e", "%+#.3x"},
+  {__LINE__, 0x00000003,	"3", "%X"},
+  {__LINE__, -0x0001d7d,	"-7549", "%#5d"},
+  {__LINE__, 0x0025d3f2,	"+2479090", "%+2.d"},
+  {__LINE__, -0x0000001,	"-1", "%#ld"},
+  {__LINE__, 0xfffffdd5,	"fffffdd5", "%.7x"},
+  {__LINE__, 0x003462b9,	"3433145", "%d"},
+  {__LINE__, 0x00005a81,	"23169", "%d"},
+  {__LINE__, 0xfffffcdb,	"fffffcdb", "%-x"},
+  {__LINE__, 0x00000000,	"0", "%d"},
+  {__LINE__, 0xfff22085,	"fff22085", "%x"},
+  {__LINE__, 0x00016d72,	" 93554", "% d"},
+  {__LINE__, -0x0000002,	"-2", "%0ld"},
+  {__LINE__, 0xfffffd21,	"fffffd21", "% 0x"},
+  {__LINE__, 0x00000931,	"2353", "%ld"},
+  {__LINE__, 0x00010021,	"10021", "%5.1X"},
+  {__LINE__, -0x000007e,	"-126", "%1.0ld"},
+  {__LINE__, 0xfffffff8,	"fffffff8", "%01.x"},
+  {__LINE__, -0x001d148,	"-119112", "%d"},
+  {__LINE__, -0x0000008,	"-8", "%ld"},
+  {__LINE__, -0x000038e,	"-910", "% ld"},
+  {__LINE__, 0x0039e3e5,	"3793893", "%0.1d"},
+  {__LINE__, 0x0038fb8e,	"38FB8E", "%.2X"},
+  {__LINE__, -0x002dafa,	"-187130", "%ld"},
+  {__LINE__, -0xbec275b,	"-200025947", "%ld"},
+  {__LINE__, 0x1a32f999,	"1A32F999", "%05.4X"},
+  {__LINE__, 0x0000002f,	"2f", "%x"},
+  {__LINE__, -0x0001a5b,	"-6747", "%+3.ld"},
+  {__LINE__, 0x00000762,	"   1890", "%7.ld"},
+  {__LINE__, 0x000000c2,	"000194", "%0.6ld"},
+  {__LINE__, 0xffff002b,	"FFFF002B", "%.4X"},
+  {__LINE__, -0x0019dae,	"-105902", "% .2d"},
+  {__LINE__, 0x0000125f,	"125f", "%+1x"},
+  {__LINE__, -0x000b688,	" -46728", "%#7.d"},
+  {__LINE__, 0x000401ca,	"401ca", "%0x"},
+  {__LINE__, 0x00000192,	"402", "%#ld"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%x"},
+  {__LINE__, 0x1e505a0c,	"0X1E505A0C", "%#1.3X"},
+  {__LINE__, 0x000f8f6c,	"1019756", "%d"},
+  {__LINE__, 0x0004a296,	"4a296", "%5.2x"},
+  {__LINE__, 0x00000003,	"3", "% x"},
+  {__LINE__, -0x000d44c,	"-54348", "%#ld"},
+  {__LINE__, 0x00009ae2,	"39650", "%-d"},
+  {__LINE__, 0xffffff3a,	"FFFFFF3A", "% .7X"},
+  {__LINE__, 0x0042350b,	"4338955", "%d"},
+  {__LINE__, 0x000071af,	"71af", "%+.4x"},
+  {__LINE__, 0x00000001,	"0x1", "%#0x"},
+  {__LINE__, 0x00000033,	"00051", "%3.5d"},
+  {__LINE__, 0x00000001,	"1", "%X"},
+  {__LINE__, -0xebfb0e7,	"-247443687", "%+3ld"},
+  {__LINE__, 0x00000027,	"27     ", "%-07.X"},
+  {__LINE__, -0x0004837,	"-18487", "%01d"},
+  {__LINE__, 0x1a8c53da,	"1A8C53DA", "%X"},
+  {__LINE__, -0x0bdb8a9,	"-12433577", "%d"},
+  {__LINE__, -0x0000098,	"-152", "%#ld"},
+  {__LINE__, -0x003b554,	"-243028", "%d"},
+  {__LINE__, 0x000000cb,	"00000CB", "%+.7X"},
+  {__LINE__, 0xfffffeda,	"FFFFFEDA", "%X"},
+  {__LINE__, -0x0000010,	"-16", "%-#d"},
+  {__LINE__, 0x00000006,	"+6", "%+d"},
+  {__LINE__, 0x003c294a,	"+3942730", "%+4.ld"},
+  {__LINE__, 0x00000009,	"9", "%ld"},
+  {__LINE__, 0xfbbdd2bc,	"FBBDD2BC", "% X"},
+  {__LINE__, 0x71c86678,	"+1908958840", "%+0.6ld"},
+  {__LINE__, -0x0b49bff,	"-11836415", "% 6.ld"},
+  {__LINE__, 0xfff416be,	"fff416be", "%3.x"},
+  {__LINE__, 0x00000077,	"+119", "%+d"},
+  {__LINE__, 0xfff1cfaa,	"FFF1CFAA", "% 0.2X"},
+  {__LINE__, 0xfffffffb,	"fffffffb", "% x"},
+  {__LINE__, 0x0000127e,	"4734", "%d"},
+  {__LINE__, 0x00107ad2,	"107ad2", "%+2.6x"},
+  {__LINE__, 0x0006b8e9,	"440553", "%-#d"},
+  {__LINE__, 0x0000eb6f,	"eb6f", "% x"},
+  {__LINE__, 0x00001f18,	"7960", "%0d"},
+  {__LINE__, 0xfffff225,	"fffff225", "%1.5x"},
+  {__LINE__, 0xfffffff9,	"fffffff9", "%+6.x"},
+  {__LINE__, 0x000005b9,	"01465", "%.5ld"},
+  {__LINE__, 0xfffc26b8,	"FFFC26B8", "% X"},
+  {__LINE__, 0x540d580d,	"0X540D580D", "%+#X"},
+  {__LINE__, 0x05ad7094,	"5AD7094", "% 4.7X"},
+  {__LINE__, -0x000019b,	"-411", "% d"},
+  {__LINE__, 0x00000006,	"000006", "%6.6ld"},
+  {__LINE__, 0x0000026a,	"+618", "%+ld"},
+  {__LINE__, 0x0000000b,	"11", "%ld"},
+  {__LINE__, -0x26985d5,	"-40469973", "%#.0ld"},
+  {__LINE__, 0x0000007d,	"7D", "%+02.0X"},
+  {__LINE__, -0x0079ddf,	"-0499167", "%+.7ld"},
+  {__LINE__, 0x0000375f,	"14175", "%0d"},
+  {__LINE__, -0x18de7f99,	"-417234841", "%ld"},
+  {__LINE__, -0x00507cc,	"-329676", "%.0d"},
+  {__LINE__, 0x000029d5,	"29D5", "%-2.1X"},
+  {__LINE__, 0x0000328c,	"328C", "%-3.X"},
+  {__LINE__, 0x016f6234,	"24076852", "%3.ld"},
+  {__LINE__, 0xfffffffc,	"0XFFFFFFFC", "%#.5X"},
+  {__LINE__, 0xfe6163ca,	"FE6163CA", "%5.X"},
+  {__LINE__, 0xffffffc2,	"FFFFFFC2", "%X"},
+  {__LINE__, 0x00000087,	"+135", "%+ld"},
+  {__LINE__, 0x00310166,	"310166", "% x"},
+  {__LINE__, 0x00e8c871,	"15255665", "%d"},
+  {__LINE__, 0x000005ee,	"1518", "%ld"},
+  {__LINE__, 0xfcb24306,	"FCB24306", "%X"},
+  {__LINE__, 0x0000000b,	"   11", "%5ld"},
+  {__LINE__, 0x006d11d0,	"0x6d11d0", "%#.0x"},
+  {__LINE__, 0x0010d416,	"1102870", "%#6.5d"},
+  {__LINE__, -0x0047cb3,	"-294067", "%.3d"},
+  {__LINE__, 0x000000c0,	"c0", "%x"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%+X"},
+  {__LINE__, -0x000000a,	"-10", "%d"},
+  {__LINE__, -0x0000007,	"-7", "% ld"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "%-X"},
+  {__LINE__, 0x00000014,	"0x14", "%-#3.1x"},
+  {__LINE__, 0x00003319,	"3319", "% x"},
+  {__LINE__, 0x00000000,	"00", "%+#.2X"},
+  {__LINE__, -0x0000009,	"-9", "% ld"},
+  {__LINE__, -0x0000001,	"-1 ", "%-3ld"},
+  {__LINE__, 0x00262909,	"2500873", "%.5ld"},
+  {__LINE__, 0x33e76560,	"33e76560", "%7.0x"},
+  {__LINE__, -0x0000002,	"-2", "%ld"},
+  {__LINE__, 0x00035ee9,	"35EE9", "%-3.X"},
+  {__LINE__, -0x0000235,	"-565", "%+4.ld"},
+  {__LINE__, -0x3ea63c5,	"-65692613", "%d"},
+  {__LINE__, 0x00000003,	"3", "%ld"},
+  {__LINE__, -0x003362f,	"-210479", "% d"},
+  {__LINE__, -0x1a819f8a,	"-444702602", "%.7d"},
+  {__LINE__, 0x027a4668,	"41567848", "%d"},
+  {__LINE__, 0x0002b025,	"2b025", "%x"},
+  {__LINE__, -0x0000001,	"-001", "%.3ld"},
+  {__LINE__, 0xfffffff0,	"fffffff0", "%-0x"},
+  {__LINE__, -0x0000d4f,	"-3407", "%-ld"},
+  {__LINE__, 0x00000146,	" 326", "% 1.d"},
+  {__LINE__, -0x0000006,	"-6", "%d"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%06.4X"},
+  {__LINE__, 0x376fddae,	"+930078126", "%+#0ld"},
+  {__LINE__, 0x006d9da3,	"6d9da3", "%1.x"},
+  {__LINE__, -0x0000f28,	"-3880", "%3.2ld"},
+  {__LINE__, 0x0006962c,	" 431660", "% 5d"},
+  {__LINE__, 0x000011db,	"  4571", "%6.ld"},
+  {__LINE__, 0xffffffa8,	"ffffffa8", "%+x"},
+  {__LINE__, 0x0d886db3,	"D886DB3", "%.7X"},
+  {__LINE__, 0x00000000,	"000000", "%2.6ld"},
+  {__LINE__, 0xfffff6b6,	"FFFFF6B6", "% X"},
+  {__LINE__, -0x0739068,	"-7573608", "%+6.ld"},
+  {__LINE__, 0xfba62553,	"0XFBA62553", "%#X"},
+  {__LINE__, -0x4474bc5,	"-71781317", "%-2ld"},
+  {__LINE__, 0xffffff95,	"FFFFFF95", "% 2.X"},
+  {__LINE__, -0x1d0e1ca,	"-30466506", "%+.0d"},
+  {__LINE__, -0x000f3aa,	"-62378", "%ld"},
+  {__LINE__, 0x00000026,	"26", "%1x"},
+  {__LINE__, 0x001c5400,	"1856512", "%-#d"},
+  {__LINE__, 0x03808442,	"3808442", "%X"},
+  {__LINE__, -0x0000081,	"-129", "%+#ld"},
+  {__LINE__, 0x000004ae,	" 1198", "% 3.4d"},
+  {__LINE__, -0x7f4ed54,	"-133492052", "%d"},
+  {__LINE__, 0x00000000,	"+0", "%+ld"},
+  {__LINE__, 0x00000000,	"0", "%+x"},
+  {__LINE__, 0x004c7e46,	"5013062", "%.0d"},
+  {__LINE__, -0x647d7a65,	"-1685944933", "%0.2d"},
+  {__LINE__, 0x00003b59,	"15193", "%-#1d"},
+  {__LINE__, 0xfff3e64d,	"FFF3E64D", "%-X"},
+  {__LINE__, 0x00007022,	"28706", "%-d"},
+  {__LINE__, 0xc28d0ad8,	"c28d0ad8", "%+x"},
+  {__LINE__, -0x005c208,	"-377352", "% ld"},
+  {__LINE__, 0x00cfbadc,	"13613788", "%d"},
+  {__LINE__, 0x000016ea,	"5866", "%0d"},
+  {__LINE__, 0x00000029,	"29", "%X"},
+  {__LINE__, 0xffe16813,	"0XFFE16813", "%+#X"},
+  {__LINE__, 0x00000004,	"4", "%0X"},
+  {__LINE__, -0x0000096,	" -150", "%5d"},
+  {__LINE__, 0x00027ac7,	"162503", "%ld"},
+  {__LINE__, -0x0075de0,	"-482784", "%d"},
+  {__LINE__, 0x005fcff6,	"6279158", "%d"},
+  {__LINE__, 0xffffffef,	"FFFFFFEF", "%3X"},
+  {__LINE__, 0x267b05ec,	"645596652", "%4ld"},
+  {__LINE__, 0xa487b724,	"a487b724", "%x"},
+  {__LINE__, 0x01da2a11,	"31074833", "%-.0ld"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%X"},
+  {__LINE__, 0x0000037a,	"37a", "%x"},
+  {__LINE__, 0x003d0314,	"+3998484", "%+#1d"},
+  {__LINE__, 0x0000011b,	"  283", "%5.2d"},
+  {__LINE__, 0x094f6066,	"94f6066", "%x"},
+  {__LINE__, 0x00000004,	"4", "%X"},
+  {__LINE__, -0x102e14bd,	"-271455421", "% 7.ld"},
+  {__LINE__, 0x000048da,	"0018650", "%07ld"},
+  {__LINE__, -0x24ae0390,	"-615383952", "%0.6d"},
+  {__LINE__, 0xffff5159,	"0XFFFF5159", "%#0X"},
+  {__LINE__, 0xfffd38c3,	"fffd38c3", "%x"},
+  {__LINE__, 0xfffff9ea,	"FFFFF9EA", "%-X"},
+  {__LINE__, -0x000fd28,	"-64808", "% ld"},
+  {__LINE__, 0x002c1bf4,	"2890740", "%-.1d"},
+  {__LINE__, 0x00d00ee7,	"D00EE7", "%0.4X"},
+  {__LINE__, 0x00000cf9,	"3321", "%0d"},
+  {__LINE__, -0x0000001,	"-1", "%-#ld"},
+  {__LINE__, 0xfffffd75,	"FFFFFD75", "%.2X"},
+  {__LINE__, 0x00000012,	"18", "%-d"},
+  {__LINE__, 0xfd44b4b2,	"fd44b4b2", "%+5.x"},
+  {__LINE__, -0x001c53f,	"-116031", "%-#6.d"},
+  {__LINE__, 0x000ff6fd,	"ff6fd", "%2x"},
+  {__LINE__, 0x00000001,	"1", "%0d"},
+  {__LINE__, 0x0120b478,	"120B478", "%.7X"},
+  {__LINE__, 0x0145591e,	"145591E", "%1.4X"},
+  {__LINE__, 0x001f99b9,	"1F99B9", "%.1X"},
+  {__LINE__, 0xffffd078,	"ffffd078", "%-1.5x"},
+  {__LINE__, 0xffffff1a,	"FFFFFF1A", "%-4.6X"},
+  {__LINE__, 0xfffffffa,	"fffffffa", "%x"},
+  {__LINE__, -0x00000b9,	"-185", "%3ld"},
+  {__LINE__, 0x00001cf0,	"7408", "%-ld"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "%X"},
+  {__LINE__, 0x00151f30,	"151F30", "%X"},
+  {__LINE__, -0x0000103,	"-259", "%d"},
+  {__LINE__, -0x000303f,	"-12351", "%d"},
+  {__LINE__, 0x000002ca,	"714", "%ld"},
+  {__LINE__, -0x0000c55,	"-3157", "%1d"},
+  {__LINE__, 0x00000691,	"01681", "%#.5ld"},
+  {__LINE__, 0x00230537,	"2295095", "%#d"},
+  {__LINE__, 0x032a1faa,	"53092266", "%.4d"},
+  {__LINE__, 0x000050d7,	"20695", "%d"},
+  {__LINE__, -0x0c7ad4c,	"-13086028", "%#.4ld"},
+  {__LINE__, -0x00009d9,	"-2521", "%+d"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%0x"},
+  {__LINE__, 0xffdec2d9,	"FFDEC2D9", "%5.1X"},
+  {__LINE__, -0x000563c,	"-22076", "%-.2ld"},
+  {__LINE__, 0x0073b36a,	"0x73b36a", "%-#x"},
+  {__LINE__, 0xfffffffd,	"fffffffd", "%x"},
+  {__LINE__, 0x0193ba5a,	"193ba5a", "%1.x"},
+  {__LINE__, 0x00d147b5,	"13715381", "%2.d"},
+  {__LINE__, 0xffffff10,	"ffffff10", "%4x"},
+  {__LINE__, 0x000648d5,	"648d5", "%1.3x"},
+  {__LINE__, 0x00000011,	"11", "%X"},
+  {__LINE__, 0xff259f5b,	"0xff259f5b", "% #.1x"},
+  {__LINE__, 0x00000175,	"175", "%x"},
+  {__LINE__, 0x00000000,	"0", "%ld"},
+  {__LINE__, 0x00000015,	"21", "%#ld"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%-x"},
+  {__LINE__, 0x00000013,	" 19", "% 0ld"},
+  {__LINE__, -0x0000001,	"-0000001", "% 5.7ld"},
+  {__LINE__, 0x0000139d,	"139D", "%X"},
+  {__LINE__, 0x0041ad18,	"41ad18", "%-.6x"},
+  {__LINE__, -0x00000f9,	"-249", "% 3.d"},
+  {__LINE__, 0x00000076,	"118", "%ld"},
+  {__LINE__, 0x000006f8,	"1784", "%d"},
+  {__LINE__, -0x0000005,	"-5", "%ld"},
+  {__LINE__, -0x00008e7,	"-2279", "%+ld"},
+  {__LINE__, 0x00003f77,	"3F77", "%+0X"},
+  {__LINE__, 0x000ca3f8,	"0XCA3F8", "%+#X"},
+  {__LINE__, -0x00004bf,	"-001215", "%#5.6ld"},
+  {__LINE__, 0x319129ab,	"0x319129ab", "%+#x"},
+  {__LINE__, -0x0000002,	"-2", "%ld"},
+  {__LINE__, -0x0f6686e,	"-16148590", "%.6ld"},
+  {__LINE__, 0x0329576b,	"53041003", "%2.d"},
+  {__LINE__, -0x000179e,	"-6046", "%d"},
+  {__LINE__, 0x000002cc,	"+716", "%+1.3ld"},
+  {__LINE__, 0xfffffff7,	"0xfffffff7", "% #x"},
+  {__LINE__, 0x0016eb40,	"1502016", "%ld"},
+  {__LINE__, 0x00000003,	"3", "%-0ld"},
+  {__LINE__, 0x0023e0d6,	"23E0D6", "%-05.X"},
+  {__LINE__, 0xffffa6a4,	"0XFFFFA6A4", "%#X"},
+  {__LINE__, 0x00087664,	"87664", "% .2x"},
+  {__LINE__, -0x0000002,	" -2", "%3.ld"},
+  {__LINE__, 0x003ad85d,	"3AD85D", "%X"},
+  {__LINE__, 0x00002f20,	"12064", "%ld"},
+  {__LINE__, 0x02030bfc,	"2030BFC", "%02.3X"},
+  {__LINE__, 0xfffff36a,	"FFFFF36A", "%X"},
+  {__LINE__, 0xfe0729ff,	"0xfe0729ff", "% #.0x"},
+  {__LINE__, 0xfec15164,	"FEC15164", "%0.2X"},
+  {__LINE__, -0x00169ec,	"-92652", "%+d"},
+  {__LINE__, 0x006d7990,	"0x6d7990", "%#x"},
+  {__LINE__, 0xffcc89e6,	"ffcc89e6", "%x"},
+  {__LINE__, 0x002d7cca,	"2981066", "%7.7ld"},
+  {__LINE__, -0x1649692b,	"-373909803", "%#ld"},
+  {__LINE__, 0x00664f47,	"664f47", "%+6.x"},
+  {__LINE__, 0x00000000,	"0", "% X"},
+  {__LINE__, 0x00000047,	"000047", "%.6X"},
+  {__LINE__, 0x00000007,	"0000007", "%.7ld"},
+  {__LINE__, 0x00000030,	"30", "%-x"},
+  {__LINE__, -0x25bcbabb,	"-633125563", "% ld"},
+  {__LINE__, 0xfe11c031,	"FE11C031", "%4.6X"},
+  {__LINE__, -0x0000001,	"-0000001", "%.7d"},
+  {__LINE__, 0x00b56d84,	"11890052", "%ld"},
+  {__LINE__, -0x0000b01,	"-0002817", "%+07.7ld"},
+  {__LINE__, 0xffffe4ad,	"ffffe4ad", "% 0.0x"},
+  {__LINE__, 0x007760fc,	"7760fc", "%+x"},
+  {__LINE__, 0xffef44d8,	"FFEF44D8", "%X"},
+  {__LINE__, 0xfcb6862e,	"fcb6862e", "%+x"},
+  {__LINE__, -0x0000001,	"-1", "%0d"},
+  {__LINE__, 0xffffffe6,	"FFFFFFE6", "%3.1X"},
+  {__LINE__, 0xff816e27,	"FF816E27", "% 6.X"},
+  {__LINE__, 0x00006415,	"25621", "%ld"},
+  {__LINE__, -0xfae5449,	"-263083081", "%0ld"},
+  {__LINE__, 0x00000001,	" 1", "% 0d"},
+  {__LINE__, 0x00000009,	" 9", "%2.X"},
+  {__LINE__, 0x002d7e18,	"2981400", "%7d"},
+  {__LINE__, -0x00000fc,	"-0000252", "%-#.7d"},
+  {__LINE__, 0x00000003,	"3", "%0x"},
+  {__LINE__, 0x0d46e47f,	"222749823", "%ld"},
+  {__LINE__, 0xfffcbc52,	"FFFCBC52", "%+X"},
+  {__LINE__, 0x00000000,	"0", "%-X"},
+  {__LINE__, 0xfffff0e5,	"fffff0e5", "%x"},
+  {__LINE__, 0xffffffd9,	"FFFFFFD9", "%07X"},
+  {__LINE__, 0x000004ee,	"4ee", "%0x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%0x"},
+  {__LINE__, -0x0008cb4,	"-036020", "%+3.6ld"},
+  {__LINE__, 0x0000dada,	"0xdada", "%#0.x"},
+  {__LINE__, 0x0000001a,	"26  ", "%-4d"},
+  {__LINE__, -0x000000c,	" -12", "%04.d"},
+  {__LINE__, 0x0000025c,	"    25c", "%7.x"},
+  {__LINE__, 0xfe9b091e,	"FE9B091E", "%X"},
+  {__LINE__, 0x00000002,	"      2", "%07.ld"},
+  {__LINE__, -0x0004930,	"-18736", "% 6.d"},
+  {__LINE__, 0xffffffe9,	"FFFFFFE9", "%X"},
+  {__LINE__, 0x00000003,	" 3", "%2.ld"},
+  {__LINE__, 0x00000e00,	"3584", "%.4d"},
+  {__LINE__, 0xffff38c2,	"ffff38c2", "%0.x"},
+  {__LINE__, 0xffffffff,	"FFFFFFFF", "% .3X"},
+  {__LINE__, 0xff7c1b2f,	"FF7C1B2F", "%-3.2X"},
+  {__LINE__, -0x0000005,	"-5", "%2d"},
+  {__LINE__, 0x00098775,	"98775", "%x"},
+  {__LINE__, 0x000015ff,	"  15FF", "%6.X"},
+  {__LINE__, 0xfffbe3ef,	"FFFBE3EF", "%0.3X"},
+  {__LINE__, -0x0000048,	"-72", "%ld"},
+  {__LINE__, 0x0001488a,	"84106", "%d"},
+  {__LINE__, 0x00000001,	"1", "%x"},
+  {__LINE__, -0x0000002,	"-2", "%-0.0ld"},
+  {__LINE__, -0x0000001,	"-1", "%-d"},
+  {__LINE__, 0x0006616f,	"6616f", "%x"},
+  {__LINE__, 0x3657856d,	"911705453", "%6.d"},
+  {__LINE__, -0x0007222,	"-0029218", "%.7d"},
+  {__LINE__, 0x00041606,	"267782", "%04.5d"},
+  {__LINE__, 0x00000001,	" 1", "%2.ld"},
+  {__LINE__, 0x00000219,	"219", "%0x"},
+  {__LINE__, 0x0ae0184c,	"ae0184c", "%x"},
+  {__LINE__, 0x00003a7d,	"  14973", "%7.ld"},
+  {__LINE__, 0xffffffff,	"0XFFFFFFFF", "%#X"},
+  {__LINE__, -0x0000002,	"-2", "%0ld"},
+  {__LINE__, 0x00002cdf,	"11487", "%0ld"},
+  {__LINE__, -0x000000c,	"-12", "%d"},
+  {__LINE__, -0x000000e,	"-14", "%-#2d"},
+  {__LINE__, 0x00000371,	"881", "%#ld"},
+  {__LINE__, 0x000015be,	" 5566", "%5.ld"},
+  {__LINE__, 0x01525b91,	"22174609", "%#0.0ld"},
+  {__LINE__, 0xff8fc22f,	"FF8FC22F", "% X"},
+  {__LINE__, -0x0007f7b,	"-32635", "%4.ld"},
+  {__LINE__, 0x00007bca,	"7bca", "%x"},
+  {__LINE__, -0x0000582,	"-1410", "%ld"},
+  {__LINE__, 0x00000047,	" +71", "%+04.2d"},
+  {__LINE__, 0xf8a8dce2,	"f8a8dce2", "%+.6x"},
+  {__LINE__, -0x000de2e,	"-56878", "%.0d"},
+  {__LINE__, 0x019c03c1,	"0X19C03C1", "%#X"},
+  {__LINE__, -0x0f3a43e,	"-15967294", "%ld"},
+  {__LINE__, 0x00009e87,	"40583", "%#5.1d"},
+  {__LINE__, 0x000000b8,	"184", "%0ld"},
+  {__LINE__, -0x000befe,	"-48894", "%2ld"},
+  {__LINE__, -0x002ee1a,	"-192026", "%.2d"},
+  {__LINE__, 0x00004fd8,	"4fd8", "%x"},
+  {__LINE__, 0x0006d57b,	"447867", "%2d"},
+  {__LINE__, 0xfffffa9c,	"FFFFFA9C", "%-X"},
+  {__LINE__, 0x0000000f,	"15", "%ld"},
+  {__LINE__, 0x0005deb2,	"5DEB2", "% X"},
+  {__LINE__, 0x00000007,	"7", "%X"},
+  {__LINE__, 0xffffffc8,	"0XFFFFFFC8", "% #.1X"},
+  {__LINE__, 0xfffff62f,	"FFFFF62F", "%X"},
+  {__LINE__, -0x1a935bba,	"-445864890", "% 3.5d"},
+  {__LINE__, 0x000b34b4,	"0x0b34b4", "%-#3.6x"},
+  {__LINE__, 0xfffff430,	"FFFFF430", "%X"},
+  {__LINE__, 0x00000b5f,	"+0002911", "%+#.7d"},
+  {__LINE__, 0x00000007,	"  7", "%3ld"},
+  {__LINE__, 0xffffffd8,	"FFFFFFD8", "% .7X"},
+  {__LINE__, 0xfffff544,	"FFFFF544", "%0X"},
+  {__LINE__, -0x353667b9,	"-892757945", "%d"},
+  {__LINE__, 0x00000058,	"0x00058", "%+#.5x"},
+  {__LINE__, 0x39dbcc4a,	"+970705994", "%+0.6ld"},
+  {__LINE__, 0xfffffffd,	"fffffffd", "% 01x"},
+  {__LINE__, 0x00b1c28e,	"+11649678", "%+0ld"},
+  {__LINE__, 0x000066c2,	"0X66C2", "%-#4X"},
+  {__LINE__, 0x007171a2,	"+7434658", "%+07.ld"},
+  {__LINE__, -0x0000001,	"-1", "%-d"},
+  {__LINE__, 0x00000ae0,	"+2784", "%+0d"},
+  {__LINE__, 0x13786a57,	"326658647", "%#5d"},
+  {__LINE__, -0x0000001,	"-1", "%2.ld"},
+  {__LINE__, -0x0168a16,	"-1477142", "%d"},
+  {__LINE__, 0x12df7dd6,	"316636630", "%ld"},
+  {__LINE__, 0x00000000,	"000000", "%1.6d"},
+  {__LINE__, 0x266da2a9,	"644719273", "%ld"},
+  {__LINE__, 0x0000004a,	"74", "%d"},
+  {__LINE__, 0x000102ff,	"00102FF", "%+06.7X"},
+  {__LINE__, 0x17916237,	"0x17916237", "%#5x"},
+  {__LINE__, -0x0003cbb,	"-0015547", "%-.7d"},
+  {__LINE__, 0xe7da2010,	"e7da2010", "%2.4x"},
+  {__LINE__, 0xfffffff3,	"fffffff3", "% .7x"},
+  {__LINE__, 0xfc9b64f8,	"FC9B64F8", "% 7.X"},
+  {__LINE__, 0x000001af,	"431", "%0d"},
+  {__LINE__, 0xffc81796,	"0xffc81796", "%#.5x"},
+  {__LINE__, 0x057a1fbc,	"+91889596", "%+04d"},
+  {__LINE__, 0x00001ae1,	"6881", "%ld"},
+  {__LINE__, 0xfffffff6,	"fffffff6", "%3.0x"},
+  {__LINE__, -0x6b7d5db,	"-112711131", "%-06.1d"},
+  {__LINE__, 0x008e8a5c,	" 8e8a5c", "%7.0x"},
+  {__LINE__, 0xfe07a9bd,	"fe07a9bd", "%.1x"},
+  {__LINE__, -0x00278e6,	"-162022", "%0ld"},
+  {__LINE__, 0xf98709f5,	"F98709F5", "%X"},
+  {__LINE__, -0x00000c9,	"-201", "% 1.d"},
+  {__LINE__, -0x000001d,	"-00029", "%+2.5ld"},
+  {__LINE__, 0x00000030,	" 48", "% d"},
+  {__LINE__, 0xffd753f4,	"FFD753F4", "%0X"},
+  {__LINE__, 0xfffffffd,	"FFFFFFFD", "%X"},
+  {__LINE__, 0x0000a765,	"a765", "%x"},
+  {__LINE__, 0x0026e2c8,	"26E2C8", "%-0X"},
+  {__LINE__, -0x00003eb,	"-1003", "%3.1ld"},
+  {__LINE__, 0x015d53ca,	"22893514", "%0ld"},
+  {__LINE__, -0x0000020,	"-32", "%ld"},
+  {__LINE__, -0x03558dd,	"-3496157", "%1.0ld"},
+  {__LINE__, -0x000007f,	"-127", "%1.d"},
+  {__LINE__, 0xffffc737,	"0xffffc737", "%+#x"},
+  {__LINE__, 0x0000a70d,	"  a70d", "%6.x"},
+  {__LINE__, 0x01ea0e31,	"0X1EA0E31", "% #1.X"},
+  {__LINE__, 0x00b5f406,	"0X0B5F406", "%-#.7X"},
+  {__LINE__, 0x0e58fa9a,	"240712346", "%.2d"},
+  {__LINE__, 0xf43ff8a9,	"f43ff8a9", "%+0.6x"},
+  {__LINE__, -0x5d0d3d3,	"-97571795", "%.3ld"},
+  {__LINE__, -0x000027a,	"-634", "%0d"},
+  {__LINE__, 0xffcef248,	"FFCEF248", "%07.X"},
+  {__LINE__, 0x000002dc,	"2dc", "%0x"},
+  {__LINE__, -0x31fa6c1,	"-52405953", "%.2d"},
+  {__LINE__, 0x00000014,	"14", "%X"},
+  {__LINE__, -0x0282f98,	"-2633624", "%ld"},
+  {__LINE__, 0x00005f55,	"24405", "%#d"},
+  {__LINE__, -0x0000004,	"-4", "%d"},
+  {__LINE__, 0x00000001,	"1", "%+x"},
+  {__LINE__, 0x013f47ce,	"13f47ce", "%0.x"},
+  {__LINE__, 0x00143fce,	"1327054", "%.3d"},
+  {__LINE__, 0x00000000,	"0", "%d"},
+  {__LINE__, 0x00001f9a,	"1F9A", "% X"},
+  {__LINE__, 0x00000cf5,	"cf5", "%x"},
+  {__LINE__, 0xffea9c24,	"ffea9c24", "%x"},
+  {__LINE__, 0xf09f85a7,	"F09F85A7", "%X"},
+  {__LINE__, 0x00001e04,	"7684", "%ld"},
+  {__LINE__, 0xffffc82a,	"ffffc82a", "%7x"},
+  {__LINE__, -0x0000a77,	"-2679", "% d"},
+  {__LINE__, 0x0019a859,	"+1681497", "%+2.6ld"},
+  {__LINE__, -0x00002d7,	"-727", "%ld"},
+  {__LINE__, 0x00011b82,	"72578", "%-#ld"},
+  {__LINE__, 0x00000c32,	"3122", "%ld"},
+  {__LINE__, -0x0000337,	"-823", "%1.d"},
+  {__LINE__, 0x00000004,	"4", "%1ld"},
+  {__LINE__, 0x0000062c,	"1580", "%.1ld"},
+  {__LINE__, 0xffffffd3,	"FFFFFFD3", "% X"},
+  {__LINE__, -0x07b1bf8,	"-8068088", "%#d"},
+  {__LINE__, 0xfffffff9,	"fffffff9", "%x"},
+  {__LINE__, 0x159e6cfb,	"159e6cfb", "%0.x"},
+  {__LINE__, 0x0001148d,	"1148d", "%-.1x"},
+  {__LINE__, 0x003373b7,	"3371959", "%#.0d"},
+  {__LINE__, 0x00001af2,	"1af2", "%.4x"},
+  {__LINE__, -0x0000001,	"-000001", "%+.6ld"},
+  {__LINE__, -0x00001a3,	"-419", "%d"},
+  {__LINE__, 0xfdb232e7,	"fdb232e7", "%5.4x"},
+  {__LINE__, -0x000000d,	"-13", "%d"},
+  {__LINE__, 0x98ec1c74,	"98ec1c74", "% 3x"},
+  {__LINE__, 0xfffffff8,	"fffffff8", "%+1.4x"},
+  {__LINE__, -0x0000d58,	"-3416", "%+#0ld"},
+  {__LINE__, -0x65d1973,	"-106764659", "%.6d"},
+  {__LINE__, -0x0737641,	"-7566913", "%-d"},
+  {__LINE__, 0x0000037c,	"37c", "%+0x"},
+  {__LINE__, 0x0000012c,	"0000300", "%#3.7d"},
+  {__LINE__, 0x00c12d9b,	"12660123", "%1.5ld"},
+  {__LINE__, 0xe7e5e77d,	"e7e5e77d", "%6x"},
+  {__LINE__, 0x1fe0e820,	"1FE0E820", "%-4X"},
+  {__LINE__, 0xc85a793a,	"C85A793A", "%X"},
+  {__LINE__, 0x05f9fe2c,	"100269612", "%#ld"},
+  {__LINE__, 0x00000032,	"0X32", "%+#4.1X"},
+  {__LINE__, 0xfab4ce81,	"fab4ce81", "%3.x"},
+  {__LINE__, -0x0000009,	"-9", "%2.d"},
+  {__LINE__, 0xffff8d2e,	"ffff8d2e", "% 6x"},
+  {__LINE__, 0xfffffffe,	"0xfffffffe", "%#x"},
+  {__LINE__, 0x02960f60,	"2960f60", "%1.x"},
+  {__LINE__, 0x34cf3cbc,	" 885996732", "% 5ld"},
+  {__LINE__, -0x000006e,	"-110", "% d"},
+  {__LINE__, -0x0000001,	"-1", "%-.0d"},
+  {__LINE__, 0x000000b1,	"     B1", "%+7X"},
+  {__LINE__, 0xfffff5b4,	"FFFFF5B4", "%01.7X"},
+  {__LINE__, 0x00000086,	"86", "%0X"},
+  {__LINE__, 0x00074367,	" 74367", "% 6x"},
+  {__LINE__, 0x001000d7,	"+1048791", "%+ld"},
+  {__LINE__, 0x00000f35,	" 3893", "% d"},
+  {__LINE__, -0x00000e1,	"-225", "%d"},
+  {__LINE__, 0xffff6694,	"FFFF6694", "%6.X"},
+  {__LINE__, 0x00019cf7,	"19cf7", "%0.x"},
+  {__LINE__, 0x00000046,	"0046", "%+.4X"},
+  {__LINE__, -0x000001f,	"-31", "%ld"},
+  {__LINE__, 0xfff25859,	"fff25859", "%6x"},
+  {__LINE__, 0x21884061,	"562577505", "%#ld"},
+  {__LINE__, 0x01448b7a,	"1448B7A", "%0.1X"},
+  {__LINE__, 0xffffffc0,	"ffffffc0", "%x"},
+  {__LINE__, 0xfffffed5,	"fffffed5", "% 1.0x"},
+  {__LINE__, 0x0e349767,	"E349767", "%.5X"},
+  {__LINE__, 0x00000330,	"816", "%0d"},
+  {__LINE__, -0x0000016,	"-22", "%d"},
+  {__LINE__, 0xffff9bab,	"FFFF9BAB", "%X"},
+  {__LINE__, 0xffffee4e,	"ffffee4e", "%x"},
+  {__LINE__, 0x0026beeb,	"2539243", "%6.d"},
+  {__LINE__, 0x00002c6c,	"11372", "%.2d"},
+  {__LINE__, -0x000002c,	"-44", "%ld"},
+  {__LINE__, -0x001dcfa,	"-122106", "% d"},
+  {__LINE__, 0x0001683c,	"92220", "%#4.ld"},
+  {__LINE__, 0x09b51fc9,	"9b51fc9", "%+.7x"},
+  {__LINE__, 0x0000001d,	"29", "%0ld"},
+  {__LINE__, -0x83f17e5,	"-138352613", "%ld"},
+  {__LINE__, 0xfa4e2c1b,	"fa4e2c1b", "%x"},
+  {__LINE__, 0x000001f3,	"499", "%0ld"},
+  {__LINE__, 0xffff03e4,	"ffff03e4", "%x"},
+  {__LINE__, 0x000000ac,	"+0172", "%+.4ld"},
+  {__LINE__, 0x03c3903b,	"63148091", "%00d"},
+  {__LINE__, 0x0000000d,	"13", "%#d"},
+  {__LINE__, 0x0000002e,	"0X2E", "%#X"},
+  {__LINE__, 0x00006b2d,	"6B2D", "%X"},
+  {__LINE__, 0x0000010b,	"  0010b", "%7.5x"},
+  {__LINE__, 0x0000017a,	" 17a", "%4x"},
+  {__LINE__, 0xfffffffb,	"fffffffb", "%+x"},
+  {__LINE__, 0xffffac6a,	"ffffac6a", "%-.3x"},
+  {__LINE__, -0x0005870,	"-22640", "%0d"},
+  {__LINE__, 0x189c17bc,	"189c17bc", "%x"},
+  {__LINE__, -0x01bbc38,	"-1817656", "%#6.ld"},
+  {__LINE__, -0x3382b55,	"-54012757", "%d"},
+  {__LINE__, -0x0000007,	"-7", "%-ld"},
+  {__LINE__, -0x000c74b,	"-51019", "%ld"},
+  {__LINE__, 0x0001a6f2,	"+108274", "%+#1.ld"},
+  {__LINE__, 0x00077448,	"77448", "%x"},
+  {__LINE__, 0x00000000,	"0", "%x"},
+  {__LINE__, 0xfffff056,	"FFFFF056", "%.3X"},
+  {__LINE__, -0x6f3f9451,	"-1866437713", "%-#3.0ld"},
+  {__LINE__, 0x000000ac,	"AC", "%X"},
+  {__LINE__, 0xffc8752f,	"ffc8752f", "%-x"},
+  {__LINE__, 0xfffffe6d,	"FFFFFE6D", "%2.X"},
+  {__LINE__, -0x377f1a5,	"-58192293", "% .2d"},
+  {__LINE__, -0x0000294,	"-660", "%d"},
+  {__LINE__, 0xfffffffe,	"fffffffe", "%-x"},
+  {__LINE__, 0xfffcbbe8,	"0xfffcbbe8", "%-#4.x"},
+  {__LINE__, 0x0022e510,	"+2286864", "%+ld"},
+  {__LINE__, 0xfffffe2a,	"FFFFFE2A", "%0.3X"},
+  {__LINE__, 0xfe29f7c0,	"fe29f7c0", "%x"},
+  {__LINE__, 0xfffe957e,	"FFFE957E", "%X"},
+  {__LINE__, 0x000080f8,	"33016", "%ld"},
+  {__LINE__, 0x0003ee2c,	" 257580", "%7d"},
+  {__LINE__, 0x000003a1,	"929", "%d"},
+  {__LINE__, 0x0000021f,	"21f", "%+x"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%.5x"},
+  {__LINE__, -0x040a988,	"-4237704", "%-d"},
+  {__LINE__, 0x027c8b69,	"41716585", "%ld"},
+  {__LINE__, 0x00000003,	"3", "%-X"},
+  {__LINE__, -0x0000368,	"   -872", "%7.d"},
+  {__LINE__, 0x00000d3c,	"3388", "%0.2d"},
+  {__LINE__, -0x33734cc,	"-53949644", "%2ld"},
+  {__LINE__, 0x000003db,	"3DB", "%X"},
+  {__LINE__, -0x00f154d,	"-988493", "%5d"},
+  {__LINE__, 0x0000000b,	"  11", "%4.ld"},
+  {__LINE__, 0x00000067,	"103", "%-ld"},
+  {__LINE__, -0x0199fce,	"-1679310", "%4d"},
+  {__LINE__, 0x02b6266b,	"2b6266b", "% x"},
+  {__LINE__, -0x006b39d,	"-439197", "%+d"},
+  {__LINE__, 0x00000007,	"7", "%ld"},
+  {__LINE__, 0x0141fc98,	"21101720", "%0ld"},
+  {__LINE__, -0x0008420,	"-33824", "%d"},
+  {__LINE__, 0x0011622b,	"1139243", "%6ld"},
+  {__LINE__, 0x0000001b,	"27", "%-d"},
+  {__LINE__, -0x0030935,	"-198965", "%3d"},
+  {__LINE__, 0x0000001f,	"  1f", "%4.x"},
+  {__LINE__, -0x10782a19,	"-276310553", "%#ld"},
+  {__LINE__, -0x007eac4,	"-518852", "%06.ld"},
+  {__LINE__, 0x0bc4c681,	"197445249", "%6ld"},
+  {__LINE__, 0x000000f5,	"245", "%.3ld"},
+  {__LINE__, 0x00000197,	"197", "%X"},
+  {__LINE__, 0xfffffeab,	"FFFFFEAB", "% X"},
+  {__LINE__, 0x00000f05,	"F05", "%+X"},
+  {__LINE__, 0xffe1b785,	"0xffe1b785", "%#x"},
+  {__LINE__, -0x02d3581,	"-2962817", "%05d"},
+  {__LINE__, 0xffffb994,	"FFFFB994", "%X"},
+  {__LINE__, 0x03d139a3,	"64043427", "%ld"},
+  {__LINE__, -0x0000002,	"  -2", "%+4.d"},
+  {__LINE__, -0x043da83,	"-4446851", "%#ld"},
+  {__LINE__, -0x6aad891,	"-111859857", "%7.ld"},
+  {__LINE__, 0x00003e68,	"15976", "%-4.5ld"},
+  {__LINE__, 0xffe4d3ee,	"FFE4D3EE", "%X"},
+  {__LINE__, 0x00000002,	"000002", "%4.6ld"},
+  {__LINE__, 0xffffee32,	"ffffee32", "%4x"},
+  {__LINE__, 0x0cb7dd25,	"cb7dd25", "%3x"},
+  {__LINE__, 0xf773d422,	"F773D422", "%X"},
+  {__LINE__, -0x0b590f7,	"-11899127", "%#d"},
+  {__LINE__, -0x0002c45,	"-11333", "%-#5ld"},
+  {__LINE__, -0x1efc9e4,	"-32492004", "%ld"},
+  {__LINE__, -0x0003b9c,	"-15260", "%d"},
+  {__LINE__, 0x000001b6,	"0X1B6", "%#4X"},
+  {__LINE__, 0x3ce93ec3,	"1021918915", "%.6d"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%-x"},
+  {__LINE__, 0xfffaf0e4,	"fffaf0e4", "%2.x"},
+  {__LINE__, 0x00000002,	"0x2", "%#x"},
+  {__LINE__, 0x0000e806,	"e806", "%4x"},
+  {__LINE__, 0xfffffff0,	"fffffff0", "% 2.x"},
+  {__LINE__, 0xfffffc0e,	"fffffc0e", "%+.4x"},
+  {__LINE__, 0xfd45716e,	"FD45716E", "%.4X"},
+  {__LINE__, 0xfff96fda,	"FFF96FDA", "%-X"},
+  {__LINE__, 0xff99d08a,	"FF99D08A", "%.5X"},
+  {__LINE__, 0x00000002,	"2", "%-00.d"},
+  {__LINE__, -0x000000f,	"   -15", "%6.ld"},
+  {__LINE__, -0x00d321c,	"-864796", "%#1ld"},
+  {__LINE__, 0xff19ff8d,	"ff19ff8d", "%1.5x"},
+  {__LINE__, 0x00000000,	"0000000", "%-.7x"},
+  {__LINE__, 0x0000f50d,	" F50D", "%5X"},
+  {__LINE__, 0x00001688,	"   5768", "%7.ld"},
+  {__LINE__, 0x00000157,	"343", "%2ld"},
+  {__LINE__, 0xfffffffd,	"0xfffffffd", "%+#3x"},
+  {__LINE__, 0x00000d52,	"3410", "%ld"},
+  {__LINE__, 0x00000003,	"3", "%d"},
+  {__LINE__, 0x0001c6d2,	"01c6d2", "%.6x"},
+  {__LINE__, 0x242d65d2,	"606954962", "%#7.ld"},
+  {__LINE__, 0x00000e9f,	"0000E9F", "%5.7X"},
+  {__LINE__, 0x0002d785,	"2D785", "%0X"},
+  {__LINE__, 0x00000167,	"167", "%0X"},
+  {__LINE__, 0xfffff5e5,	"fffff5e5", "% x"},
+  {__LINE__, 0xffb69a04,	"0xffb69a04", "%#0.x"},
+  {__LINE__, 0xfffa012e,	"FFFA012E", "%X"},
+  {__LINE__, 0x0000001a,	"0x1a", "% #x"},
+  {__LINE__, 0xfffb26d3,	"fffb26d3", "%+x"},
+  {__LINE__, -0x00003e6,	"   -998", "%7ld"},
+  {__LINE__, 0x00000004,	"4", "%-d"},
+  {__LINE__, 0xfffffd76,	"0XFFFFFD76", "%#7X"},
+  {__LINE__, 0x00000035,	"53", "%ld"},
+  {__LINE__, 0xffc6c190,	"0XFFC6C190", "%#X"},
+  {__LINE__, 0xffffffe2,	"ffffffe2", "%7.0x"},
+  {__LINE__, 0x03ff1b87,	"67050375", "%2.d"},
+  {__LINE__, 0x00020c47,	"0X20C47", "%#X"},
+  {__LINE__, 0x00000000,	"0", "%d"},
+  {__LINE__, 0x0000000e,	"0X000E", "% #.4X"},
+  {__LINE__, -0x00035cd,	"-13773", "%+2.d"},
+  {__LINE__, 0x00005eec,	"5eec", "%1x"},
+  {__LINE__, 0x001da0ff,	"1941759", "%0d"},
+  {__LINE__, 0xf8a9e96a,	"f8a9e96a", "%+x"},
+  {__LINE__, -0x0000120,	"-288  ", "%-#6.d"},
+  {__LINE__, 0x00000000,	"0", "%-X"},
+  {__LINE__, 0x0000152e,	"152E", "%+X"},
+  {__LINE__, -0x0001077,	"-4215", "% 0d"},
+  {__LINE__, 0xffffffd7,	"FFFFFFD7", "%0X"},
+  {__LINE__, 0xfffe097d,	"FFFE097D", "%2X"},
+  {__LINE__, 0xcb982712,	"cb982712", "%x"},
+  {__LINE__, 0xfff39f2e,	"FFF39F2E", "%.5X"},
+  {__LINE__, -0x0058cae,	"-363694", "%+.1d"},
+  {__LINE__, -0x000002b,	"-043", "%#1.3d"},
+  {__LINE__, -0x001e989,	"-125321", "%1d"},
+  {__LINE__, 0x00959ecd,	"9805517", "%d"},
+  {__LINE__, 0xf49df846,	"F49DF846", "%+3X"},
+  {__LINE__, 0xfffffffd,	"fffffffd", "%+.5x"},
+  {__LINE__, -0x000ac76,	"-44150", "%3.ld"},
+  {__LINE__, 0x00000028,	"  0028", "%06.4x"},
+  {__LINE__, 0x000003e8,	"3E8", "%-02X"},
+  {__LINE__, 0x00000012,	"012", "%.3X"},
+  {__LINE__, 0x00000006,	"0X6", "%#X"},
+  {__LINE__, 0x00ef8479,	"+15697017", "%+0.6d"},
+  {__LINE__, 0xffffffe8,	"FFFFFFE8", "%-X"},
+  {__LINE__, 0x773a90f7,	"773a90f7", "%3.5x"},
+  {__LINE__, 0x00096d44,	"96D44", "%-X"},
+  {__LINE__, -0x08a3d96,	"-9059734", "%ld"},
+  {__LINE__, -0x000001a,	"-26", "%00.ld"},
+  {__LINE__, 0x32f57585,	"32f57585", "% x"},
+  {__LINE__, 0x2825f175,	"2825F175", "%X"},
+  {__LINE__, 0x000054ff,	"21759", "%-2d"},
+  {__LINE__, -0x0266cdc,	"-2518236", "%ld"},
+  {__LINE__, 0x0000031d,	"0X31D", "%+#4X"},
+  {__LINE__, 0x0003fc99,	"3fc99", "%x"},
+  {__LINE__, -0x0064624,	"-411172", "%-#d"},
+  {__LINE__, 0x0001b2d9,	"111321", "%-ld"},
+  {__LINE__, -0x000007c,	"-124", "%#d"},
+  {__LINE__, 0xfffffffa,	"FFFFFFFA", "%+X"},
+  {__LINE__, -0x007a5b8,	"-501176", "%+ld"},
+  {__LINE__, 0x0213b583,	"213B583", "%2.X"},
+  {__LINE__, 0xfff12e51,	"FFF12E51", "%+X"},
+  {__LINE__, 0x00052403,	"0336899", "%-0.7d"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%-04.4x"},
+  {__LINE__, 0x00000010,	"0010", "%0.4X"},
+  {__LINE__, 0xffffffb5,	"FFFFFFB5", "%-1.3X"},
+  {__LINE__, -0x0000001,	"-1", "%d"},
+  {__LINE__, 0x0003a2d1,	"3a2d1", "% x"},
+  {__LINE__, 0x00000424,	"1060", "%0ld"},
+  {__LINE__, -0x0000078,	"-120", "%1d"},
+  {__LINE__, 0x00000000,	"0", "%ld"},
+  {__LINE__, 0x00000414,	"1044", "%ld"},
+  {__LINE__, 0x00000072,	"0x072", "%#5.3x"},
+  {__LINE__, 0x0000007a,	"7A", "% X"},
+  {__LINE__, 0x081542a3,	"135611043", "%0d"},
+  {__LINE__, 0xfffb4ce6,	"fffb4ce6", "%4.6x"},
+  {__LINE__, 0x00002ab2,	"2ab2", "%-1x"},
+  {__LINE__, 0x00000000,	" 0", "% 2x"},
+  {__LINE__, 0xfffffa59,	"FFFFFA59", "%2.X"},
+  {__LINE__, 0xffffe22b,	"ffffe22b", "%-x"},
+  {__LINE__, 0xfffffd52,	"FFFFFD52", "%+.2X"},
+  {__LINE__, 0x0000039f,	"927", "%-d"},
+  {__LINE__, 0x0002dea6,	"2dea6", "%0x"},
+  {__LINE__, 0x000216db,	"136923", "%ld"},
+  {__LINE__, 0x00000013,	"19", "%0d"},
+  {__LINE__, 0x000047cc,	"18380", "%2.2ld"},
+  {__LINE__, -0x0007d10,	"-32016", "%d"},
+  {__LINE__, 0xff9af906,	"FF9AF906", "%0X"},
+  {__LINE__, 0x02cfa224,	"+47161892", "%+0.7d"},
+  {__LINE__, -0x0000022,	"-34", "%1.d"},
+  {__LINE__, 0xfffffff0,	"FFFFFFF0", "%-4X"},
+  {__LINE__, 0x00000029,	"    41", "%6.ld"},
+  {__LINE__, 0xffffff76,	"ffffff76", "%x"},
+  {__LINE__, 0x00000000,	"0", "%+X"},
+  {__LINE__, 0x00000001,	"1", "%d"},
+  {__LINE__, 0xfff6de5a,	"FFF6DE5A", "%X"},
+  {__LINE__, 0x00000002,	"2", "%ld"},
+  {__LINE__, 0x00000025,	"25", "%+x"},
+  {__LINE__, 0xfffffffb,	"FFFFFFFB", "%5.0X"},
+  {__LINE__, 0x0011bbb5,	"1162165", "%0.0ld"},
+  {__LINE__, 0xfffcdc96,	"0XFFFCDC96", "%#X"},
+  {__LINE__, 0x00008f5f,	"8f5f", "%3.1x"},
+  {__LINE__, 0xffa0fa5d,	"0XFFA0FA5D", "%#X"},
+  {__LINE__, 0x00004534,	"4534", "% 0X"},
+  {__LINE__, 0xfffffff9,	"fffffff9", "%.2x"},
+  {__LINE__, 0xffeeae50,	"ffeeae50", "%-x"},
+  {__LINE__, 0x00002964,	" 0010596", "% 0.7d"},
+  {__LINE__, 0x000021c9,	"  21c9", "%6x"},
+  {__LINE__, 0x00000001,	" 1", "% d"},
+  {__LINE__, 0x0002abd8,	"+175064", "%+d"},
+  {__LINE__, 0xffffffad,	"FFFFFFAD", "%+0X"},
+  {__LINE__, 0x00000003,	"3", "%ld"},
+  {__LINE__, 0x0c036da3,	" 201551267", "% .3d"},
+  {__LINE__, -0x004343c,	"-275516", "%+ld"},
+  {__LINE__, 0x00000003,	"003", "% .3x"},
+  {__LINE__, 0xffffe34e,	"ffffe34e", "%x"},
+  {__LINE__, 0x0000e118,	"e118", "%x"},
+  {__LINE__, -0x007d945,	"-514373", "%+#0ld"},
+  {__LINE__, 0x277f1cc5,	"277f1cc5", "% x"},
+  {__LINE__, 0x00003bef,	"03bef", "% 0.5x"},
+  {__LINE__, 0xfffffcb9,	"fffffcb9", "%x"},
+  {__LINE__, 0x0003311a,	"209178", "%ld"},
+  {__LINE__, 0x00000000,	"   ", "%3.ld"},
+  {__LINE__, 0x05942225,	"5942225", "%x"},
+  {__LINE__, 0xfffceb4c,	"FFFCEB4C", "%-X"},
+  {__LINE__, 0xffd08633,	"ffd08633", "%2.x"},
+  {__LINE__, -0x0000001,	"    -1", "%6d"},
+  {__LINE__, 0x000fdb12,	"1039122", "%d"},
+  {__LINE__, 0x00000003,	"3", "% 0X"},
+  {__LINE__, -0x2fd5bf1,	"-50158577", "% 5.ld"},
+  {__LINE__, -0x0089a03,	"-563715", "%-d"},
+  {__LINE__, 0xfffffffe,	"FFFFFFFE", "% X"},
+  {__LINE__, 0x29fdb2ba,	"29fdb2ba", "% 0x"},
+  {__LINE__, 0x0000008f,	"8F", "% X"},
+  {__LINE__, 0x00000003,	"3", "%ld"},
+  {__LINE__, 0xffc58445,	"FFC58445", "%.2X"},
+  {__LINE__, -0x00023f6,	"-9206", "%+d"},
+  {__LINE__, 0x00000011,	"11", "%X"},
+  {__LINE__, -0x0000003,	"-0000003", "%-.7d"},
+  {__LINE__, -0x0000003,	"-3", "%#ld"},
+  {__LINE__, 0x001242d9,	"1242D9", "%X"},
+  {__LINE__, -0x48d0c81,	"-76352641", "%7.d"},
+  {__LINE__, -0x001b675,	"-112245", "%#ld"},
+  {__LINE__, 0x00000003,	"3", "%-d"},
+  {__LINE__, 0xfff93fdf,	"0XFFF93FDF", "% #X"},
+  {__LINE__, 0x001a9414,	"1741844", "%#ld"},
+  {__LINE__, 0x0001fd86,	"130438", "%ld"},
+  {__LINE__, 0x010f37a8,	"17774504", "%4.7d"},
+  {__LINE__, 0x00382838,	"0382838", "%3.7X"},
+  {__LINE__, -0x47fd56c2,	"-1207785154", "%ld"},
+  {__LINE__, 0x001981dd,	"1981dd", "%x"},
+  {__LINE__, 0xffffefba,	"ffffefba", "% 06.x"},
+  {__LINE__, -0x3f402b29,	"-1061169961", "%+#ld"},
+  {__LINE__, -0x395aae44,	"-962244164", "%-1d"},
+  {__LINE__, 0x1fa39f42,	"530816834", "%#d"},
+  {__LINE__, -0x000358d,	"-13709", "%d"},
+  {__LINE__, -0xdc17b8f,	"-230783887", "%ld"},
+  {__LINE__, -0x23c41583,	"-600053123", "%+3.d"},
+  {__LINE__, 0xfffffc16,	"fffffc16", "%x"},
+  {__LINE__, 0x003f1364,	"4133732", "%7.ld"},
+  {__LINE__, 0xffffe691,	"FFFFE691", "%07X"},
+  {__LINE__, 0x07b31d71,	"129178993", "%.7d"},
+  {__LINE__, -0x0019732,	"-104242", "% ld"},
+  {__LINE__, 0x02428167,	"0x2428167", "%#x"},
+  {__LINE__, -0x06c1ecd,	"-7085773", "%.7ld"},
+  {__LINE__, 0xfb01cb4e,	"fb01cb4e", "%x"},
+  {__LINE__, 0x00005a41,	"+23105", "%+ld"},
+  {__LINE__, 0xfffffff4,	"FFFFFFF4", "%-5.X"},
+  {__LINE__, 0x00000005,	"   5", "%4.ld"},
+  {__LINE__, 0xf4ab4b2d,	"F4AB4B2D", "%0.X"},
+  {__LINE__, -0x000fce3,	"-64739", "%+#3.ld"},
+  {__LINE__, 0x000076ea,	" 30442", "%6.2ld"},
+  {__LINE__, 0x00000cb9,	" cb9", "%4.x"},
+  {__LINE__, 0x002f43ef,	"3097583", "%1.1ld"},
+  {__LINE__, 0xf5bd0105,	"F5BD0105", "%+X"},
+  {__LINE__, 0x0037954a,	"3642698", "%d"},
+  {__LINE__, 0xfffffff7,	"0XFFFFFFF7", "%-#X"},
+  {__LINE__, 0xffffcedf,	"0xffffcedf", "%#6.7x"},
+  {__LINE__, 0xfffffde4,	"FFFFFDE4", "%2.4X"},
+  {__LINE__, 0x01a6f103,	"1a6f103", "%5.x"},
+  {__LINE__, 0x00000191,	"    191", "%7.0X"},
+  {__LINE__, 0x00000003,	"03", "% .2X"},
+  {__LINE__, -0xd4e3219,	"-223228441", "%6.ld"},
+  {__LINE__, 0x00b0efbd,	"11595709", "%d"},
+  {__LINE__, -0x00000ea,	"-234", "%#3d"},
+  {__LINE__, 0x00000be8,	"BE8  ", "%-5X"},
+  {__LINE__, 0xffffffff,	"ffffffff", "%5.3x"},
+  {__LINE__, -0x267f8c6,	"-40368326", "%d"},
+  {__LINE__, 0x000006ed,	"6ED", "%X"},
+  {__LINE__, 0xfdd6c9b6,	"FDD6C9B6", "%X"},
+  {__LINE__, 0x0007ac29,	"7ac29", "%-x"},
+  {__LINE__, 0x00000014,	"14", "%2x"},
+  {__LINE__, 0x123ca563,	"+305964387", "%+ld"},
+  {__LINE__, 0x00000004,	"    4", "%5.d"},
+  {__LINE__, 0xffff877a,	"ffff877a", "%x"},
+  {__LINE__, -0x00003e7,	"-999", "%+0.3d"},
+  {__LINE__, 0x0a68ba6e,	"a68ba6e", "%3.1x"},
+  {__LINE__, 0xfe29c810,	"FE29C810", "%+X"},
+#endif
+
+  {__LINE__, 0x00000000,	"0", "%o"},
+  {__LINE__, 0000000123,	"123", "%o"},
+  {__LINE__, 0000123456,	"0123456", "%#o"},
+  {__LINE__, 0000123456,	"00123456", "%#.8o"},
+  {__LINE__, 0000123456,	"  00123456", "%#10.8o"},
+  {__LINE__, 0x00000123,	"0x00123", "%#07x"},
+  {__LINE__, 0x00000000,	"", "%#.0d"},
+  {__LINE__, 0x00000000,	"", "%#.0x"},
+  {__LINE__, 0x00000000,	"0", "%#.0o"},
+
+  {__LINE__, 0x00000000,	"0", "%Id"},
+  {__LINE__, 0x0000000a,	"10", "%Id"},
+  {__LINE__, 0x000000d2,	"210", "%Id"},
+  {__LINE__, 0x00000c8a,	"3210", "%Id"},
+  {__LINE__, 0x0000a8ca,	"43210", "%Id"},
+  {__LINE__, 0x000849ea,	"543210", "%Id"},
+  {__LINE__, 0x0063d76a,	"6543210", "%Id"},
+  {__LINE__, 0x048ff4ea,	"76543210", "%Id"},
+  {__LINE__, 0x343efcea,	"876543210", "%Id"},
+
+  {0},
+};
+
+int
+main(int argc, char *argv[])
+{
+    int errcount = 0;
+    int testcount = 0;
+#define BSIZE 1024
+    char buffer[BSIZE];
+    sprint_int_type *iptr;
+    for (iptr = sprint_ints; iptr->line; iptr++) {
+	sprintf(buffer, iptr->format_string, iptr->value);
+	if (strcmp(buffer, iptr->result) != 0) {
+	    errcount++;
+	    printf(
+    "Error in line %d using \"%s\".  Result is \"%s\"; should be: \"%s\".\n",
+		    iptr->line, iptr->format_string, buffer, iptr->result);
+	}
+	testcount++;
+    }
+
+    if (errcount == 0) {
+	printf ("Encountered no errors in %d tests.\n", testcount);
+	return 0;
+    }
+    else {
+	printf ("Encountered %d errors in %d tests.\n",
+		errcount, testcount);
+	return 1;
+    }
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tllformat.c b/ap/libc/glibc/glibc-2.23/stdio-common/tllformat.c
new file mode 100644
index 0000000..b53b825
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tllformat.c
@@ -0,0 +1,59 @@
+#include <stdio.h>
+#include <string.h>
+
+/* The original file was tiformat.c and it has been changed for long long tests\
+. */
+typedef struct
+{
+  int line;
+  long long int value;
+  const char *result;
+  const char *format_string;
+} sprint_int_type;
+
+sprint_int_type sprint_ints[] =
+{
+  {__LINE__, 0x00000000ULL,             "0", "%llx"},
+  {__LINE__, 0xffff00000000208bULL,     "ffff00000000208b", "%llx"},
+  {__LINE__, 0xffff00000000208bULL,     "18446462598732849291", "%llu"},
+  {__LINE__, 18446462598732849291ULL,   "ffff00000000208b", "%llx"},
+  {__LINE__, 18446462598732849291ULL,   "18446462598732849291", "%llu"},
+  {__LINE__, 18359476226655002763ULL,   "fec9f65b0000208b", "%llx"},
+  {__LINE__, 18359476226655002763ULL,   "18359476226655002763", "%llu"},
+
+  {0},
+};
+
+int
+main (void)
+{
+  int errcount = 0;
+  int testcount = 0;
+#define BSIZE 1024
+  char buffer[BSIZE];
+  sprint_int_type *iptr;
+  for (iptr = sprint_ints; iptr->line; iptr++)
+    {
+      sprintf (buffer, iptr->format_string, iptr->value);
+      if (strcmp (buffer, iptr->result) != 0)
+	{
+	  ++errcount;
+	  printf ("\
+Error in line %d using \"%s\".  Result is \"%s\"; should be: \"%s\".\n",
+		  iptr->line, iptr->format_string, buffer, iptr->result);
+        }
+      ++testcount;
+    }
+
+  if (errcount == 0)
+    {
+      printf ("Encountered no errors in %d tests.\n", testcount);
+      return 0;
+    }
+  else
+    {
+      printf ("Encountered %d errors in %d tests.\n",
+	      errcount, testcount);
+      return 1;
+    }
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tmpfile.c b/ap/libc/glibc/glibc-2.23/stdio-common/tmpfile.c
new file mode 100644
index 0000000..d4720a4
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tmpfile.c
@@ -0,0 +1,69 @@
+/* Open a stdio stream on an anonymous temporary file.  Generic/POSIX version.
+   Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <iolibio.h>
+#define __fdopen _IO_fdopen
+#ifndef tmpfile
+# define tmpfile __new_tmpfile
+#endif
+
+
+/* This returns a new stream opened on a temporary file (generated
+   by tmpnam).  The file is opened with mode "w+b" (binary read/write).
+   If we couldn't generate a unique filename or the file couldn't
+   be opened, NULL is returned.  */
+FILE *
+tmpfile (void)
+{
+  char buf[FILENAME_MAX];
+  int fd;
+  FILE *f;
+
+  if (__path_search (buf, FILENAME_MAX, NULL, "tmpf", 0))
+    return NULL;
+  int flags = 0;
+#ifdef FLAGS
+  flags = FLAGS;
+#endif
+  fd = __gen_tempname (buf, 0, flags, __GT_FILE);
+  if (fd < 0)
+    return NULL;
+
+  /* Note that this relies on the Unix semantics that
+     a file is not really removed until it is closed.  */
+  (void) __unlink (buf);
+
+  if ((f = __fdopen (fd, "w+b")) == NULL)
+    __close (fd);
+
+  return f;
+}
+
+#if !defined O_LARGEFILE || O_LARGEFILE == 0
+weak_alias (__new_tmpfile, tmpfile64)
+#endif
+
+#ifndef FLAGS /* Not for tmpfile64.  */
+# undef tmpfile
+# include <shlib-compat.h>
+versioned_symbol (libc, __new_tmpfile, tmpfile, GLIBC_2_1);
+#endif
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tmpfile64.c b/ap/libc/glibc/glibc-2.23/stdio-common/tmpfile64.c
new file mode 100644
index 0000000..6864c33
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tmpfile64.c
@@ -0,0 +1,28 @@
+/* Open a stdio stream on an anonymous, large temporary file.  Generic version.
+   Copyright (C) 2012-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <fcntl.h>
+
+/* If there is no O_LARGEFILE, then the plain tmpfile definition
+   does the job and it gets tmpfile64 as an alias.  */
+
+#if defined O_LARGEFILE && O_LARGEFILE != 0
+# define FLAGS		O_LARGEFILE
+# define tmpfile	tmpfile64
+# include <tmpfile.c>
+#endif
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tmpnam.c b/ap/libc/glibc/glibc-2.23/stdio-common/tmpnam.c
new file mode 100644
index 0000000..6f0b1d5
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tmpnam.c
@@ -0,0 +1,51 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <string.h>
+
+static char tmpnam_buffer[L_tmpnam];
+
+/* Generate a unique filename in P_tmpdir.
+
+   This function is *not* thread safe!  */
+char *
+tmpnam (char *s)
+{
+  /* By using two buffers we manage to be thread safe in the case
+     where S != NULL.  */
+  char tmpbufmem[L_tmpnam];
+  char *tmpbuf = s ?: tmpbufmem;
+
+  /* In the following call we use the buffer pointed to by S if
+     non-NULL although we don't know the size.  But we limit the size
+     to L_tmpnam characters in any case.  */
+  if (__builtin_expect (__path_search (tmpbuf, L_tmpnam, NULL, NULL, 0),
+			0))
+    return NULL;
+
+  if (__glibc_unlikely (__gen_tempname (tmpbuf, 0, 0, __GT_NOCREATE)))
+    return NULL;
+
+  if (s == NULL)
+    return (char *) memcpy (tmpnam_buffer, tmpbuf, L_tmpnam);
+
+  return s;
+}
+
+link_warning (tmpnam,
+	      "the use of `tmpnam' is dangerous, better use `mkstemp'")
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tmpnam_r.c b/ap/libc/glibc/glibc-2.23/stdio-common/tmpnam_r.c
new file mode 100644
index 0000000..aa26737
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tmpnam_r.c
@@ -0,0 +1,37 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+
+/* Generate a unique filename in P_tmpdir.  If S is NULL return NULL.
+   This makes this function thread safe.  */
+char *
+tmpnam_r (char *s)
+{
+  if (s == NULL)
+    return NULL;
+
+  if (__path_search (s, L_tmpnam, NULL, NULL, 0))
+    return NULL;
+  if (__gen_tempname (s, 0, 0, __GT_NOCREATE))
+    return NULL;
+
+  return s;
+}
+
+link_warning (tmpnam_r,
+	      "the use of `tmpnam_r' is dangerous, better use `mkstemp'")
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-cookie.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-cookie.c
new file mode 100644
index 0000000..030e684
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-cookie.c
@@ -0,0 +1,95 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#include <stdio.h>
+
+
+#define THE_COOKIE ((void *) 0xdeadbeeful)
+
+static int errors;
+
+
+static int cookieread_called;
+static ssize_t
+cookieread (void *cookie, char *buf, size_t count)
+{
+  printf ("`%s' called with cookie %#lx\n", __FUNCTION__,
+	  (unsigned long int) cookie);
+  if (cookie != THE_COOKIE)
+    ++errors;
+  cookieread_called = 1;
+  return 42;
+}
+
+
+static int cookiewrite_called;
+static ssize_t
+cookiewrite (void *cookie, const char *buf, size_t count)
+{
+  printf ("`%s' called with cookie %#lx\n", __FUNCTION__,
+	  (unsigned long int) cookie);
+  if (cookie != THE_COOKIE)
+    ++errors;
+  cookiewrite_called = 1;
+  return 43;
+}
+
+
+static int cookieseek_called;
+static int
+cookieseek (void *cookie, off64_t *offset, int whence)
+{
+  printf ("`%s' called with cookie %#lx\n", __FUNCTION__,
+	  (unsigned long int) cookie);
+  if (cookie != THE_COOKIE)
+    ++errors;
+  cookieseek_called = 1;
+  return 44;
+}
+
+
+static int cookieclose_called;
+static int
+cookieclose (void *cookie)
+{
+  printf ("`%s' called with cookie %#lx\n", __FUNCTION__,
+	  (unsigned long int) cookie);
+  if (cookie != THE_COOKIE)
+    ++errors;
+  cookieclose_called = 1;
+  return 45;
+}
+
+
+static int
+do_test (void)
+{
+  cookie_io_functions_t fcts;
+  char buf[1];
+  FILE *f;
+
+  fcts.read = cookieread;
+  fcts.seek = cookieseek;
+  fcts.close = cookieclose;
+  fcts.write = cookiewrite;
+
+  f = fopencookie (THE_COOKIE, "r+", fcts);
+
+  fread (buf, 1, 1, f);
+  fwrite (buf, 1, 1, f);
+  fseek (f, 0, SEEK_CUR);
+  fclose (f);
+
+  if (cookieread_called == 0
+      || cookiewrite_called == 0
+      || cookieseek_called == 0
+      || cookieclose_called == 0)
+    ++errors;
+
+  return errors != 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-fdopen.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fdopen.c
new file mode 100644
index 0000000..e70a0cd
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fdopen.c
@@ -0,0 +1,50 @@
+/* Test for fdopen bugs.  */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#undef assert
+#define assert(x) \
+  if (!(x)) \
+    { \
+      fputs ("test failed: " #x "\n", stderr); \
+      retval = 1; \
+      goto the_end; \
+    }
+
+char buffer[256];
+
+int
+main (int argc, char *argv[])
+{
+  char *name;
+  FILE *fp = NULL;
+  int retval = 0;
+  int fd;
+
+  name = tmpnam (NULL);
+  fp = fopen (name, "w");
+  assert (fp != NULL)
+  fputs ("foobar and baz", fp);
+  fclose (fp);
+  fp = NULL;
+
+  fd = open (name, O_RDONLY);
+  assert (fd != -1);
+  assert (lseek (fd, 5, SEEK_SET) == 5);
+  /* The file position indicator associated with the new stream is set to
+     the position indicated by the file offset associated with the file
+     descriptor.  */
+  fp = fdopen (fd, "r");
+  assert (fp != NULL);
+  assert (getc (fp) == 'r');
+  assert (getc (fp) == ' ');
+
+the_end:
+  if (fp != NULL)
+    fclose (fp);
+  unlink (name);
+
+  return retval;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-ferror.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-ferror.c
new file mode 100644
index 0000000..69592df
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-ferror.c
@@ -0,0 +1,44 @@
+#include <stdio.h>
+
+static int
+do_test (void)
+{
+  char buf[100];
+  int result = 0;
+
+  if (ferror (stdin) != 0)
+    {
+      fputs ("error bit set for stdin at startup\n", stdout);
+      result = 1;
+    }
+  if (fgets (buf, sizeof buf, stdin) != buf)
+    {
+      fputs ("fgets with existing input has problem\n", stdout);
+      result = 1;
+    }
+  if (ferror (stdin) != 0)
+    {
+      fputs ("error bit set for stdin after setup\n", stdout);
+      result = 1;
+    }
+  if (fputc ('a', stdin) != EOF)
+    {
+      fputs ("fputc to stdin does not terminate with an error\n", stdout);
+      result = 1;
+    }
+  if (ferror (stdin) == 0)
+    {
+      fputs ("error bit not set for stdin after fputc\n", stdout);
+      result = 1;
+    }
+  clearerr (stdin);
+  if (ferror (stdin) != 0)
+    {
+      fputs ("error bit set for stdin after clearerr\n", stdout);
+      result = 1;
+    }
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-ferror.input b/ap/libc/glibc/glibc-2.23/stdio-common/tst-ferror.input
new file mode 100644
index 0000000..484ba93
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-ferror.input
@@ -0,0 +1 @@
+This is a test.
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-fgets.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fgets.c
new file mode 100644
index 0000000..0aa9030
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fgets.c
@@ -0,0 +1,20 @@
+/* Derived from the test case in
+   http://sourceware.org/bugzilla/show_bug.cgi?id=713.  */
+#include <stdio.h>
+
+static int
+do_test (void)
+{
+  FILE *fp = fmemopen ((char *) "hello", 5, "r");
+  char buf[2];
+  char *bp = fgets (buf, sizeof (buf), fp);
+  printf ("fgets: %s\n", bp == buf ? "OK" : "ERROR");
+  int res = bp != buf;
+  bp = fgets_unlocked (buf, sizeof (buf), fp);
+  printf ("fgets_unlocked: %s\n", bp == buf ? "OK" : "ERROR");
+  res |= bp != buf;
+  return res;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-fileno.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fileno.c
new file mode 100644
index 0000000..a1a05a9
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fileno.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 1994-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static int
+check (const char *name, FILE *stream, int fd)
+{
+  int sfd = fileno (stream);
+  printf ("(fileno (%s) = %d) %c= %d\n", name, sfd,
+	  sfd == fd ? '=' : '!', fd);
+  return sfd != fd;
+}
+
+static int
+do_test (void)
+{
+  return (check ("stdin", stdin, STDIN_FILENO) ||
+	  check ("stdout", stdout, STDOUT_FILENO) ||
+	  check ("stderr", stderr, STDERR_FILENO));
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-fmemopen.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fmemopen.c
new file mode 100644
index 0000000..cd151cc
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fmemopen.c
@@ -0,0 +1,165 @@
+/* basic fmemopen interface testing.
+   Copyright (C) 2014-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+static char *test_file;
+
+static void
+do_prepare (int argc, char *argv[])
+{
+  /* Construct the test file name based on ARGV[0], which will be
+     an absolute file name in the build directory.  Don't touch the
+     source directory, which might be read-only.  */
+  if (asprintf (&test_file, "%s.test", argv[0]) < 0)
+    {
+      puts ("asprintf failed\n");
+      exit (EXIT_FAILURE);
+    }
+}
+
+static int
+do_test (void)
+{
+  const char blah[] = "BLAH";
+  FILE *fp;
+  char *mmap_data;
+  int ch, fd;
+  struct stat fs;
+  const char *cp;
+
+  /* setup the physical file, and use it */
+  if ((fp = fopen (test_file, "w+")) == NULL)
+    return 1;
+  if (fwrite (blah, 1, strlen (blah), fp) != strlen (blah))
+    {
+      fclose (fp);
+      return 2;
+    }
+
+  rewind (fp);
+  printf ("file: ");
+  cp = blah;
+  while ((ch = getc (fp)) != EOF)
+    {
+      fputc (ch, stdout);
+      if (ch != *cp)
+	{
+	  printf ("\ncharacter %td: '%c' instead of '%c'\n",
+		  cp - blah, ch, *cp);
+	  fclose (fp);
+	  return 1;
+	}
+      ++cp;
+    }
+  fputc ('\n', stdout);
+  if (ferror (fp))
+    {
+      puts ("fp: error");
+      fclose (fp);
+      return 1;
+    }
+  if (feof (fp))
+    printf ("fp: EOF\n");
+  else
+    {
+      puts ("not EOF");
+      fclose (fp);
+      return 1;
+    }
+  fclose (fp);
+
+  /* Now, mmap the file into a buffer, and do that too */
+  if ((fd = open (test_file, O_RDONLY)) == -1)
+    {
+      printf ("open (%s, O_RDONLY) failed\n", test_file);
+      return 3;
+    }
+  if (fstat (fd, &fs) == -1)
+    {
+      printf ("stat (%i)\n", fd);
+      return 4;
+    }
+
+  if ((mmap_data = (char *) mmap (NULL, fs.st_size, PROT_READ,
+				  MAP_SHARED, fd, 0)) == MAP_FAILED)
+    {
+      printf ("mmap (NULL, %zu, PROT_READ, MAP_SHARED, %i, 0) failed\n",
+	      (size_t) fs.st_size, fd);
+      return 5;
+    }
+
+  if ((fp = fmemopen (mmap_data, fs.st_size, "r")) == NULL)
+    {
+      printf ("fmemopen (%p, %zu) failed\n", mmap_data, (size_t) fs.st_size);
+      return 1;
+    }
+
+  printf ("mem: ");
+  cp = blah;
+  while ((ch = getc (fp)) != EOF)
+    {
+      fputc (ch, stdout);
+      if (ch != *cp)
+	{
+	  printf ("%td character: '%c' instead of '%c'\n",
+		  cp - blah, ch, *cp);
+	  fclose (fp);
+	  return 1;
+	}
+      ++cp;
+    }
+
+  fputc ('\n', stdout);
+
+  if (ferror (fp))
+    {
+      puts ("fp: error");
+      fclose (fp);
+      return 1;
+    }
+  if (feof (fp))
+    printf ("fp: EOF\n");
+  else
+    {
+      puts ("not EOF");
+      fclose (fp);
+      return 1;
+    }
+
+  fclose (fp);
+
+  munmap (mmap_data, fs.st_size);
+
+  unlink (test_file);
+  free (test_file);
+
+  return 0;
+}
+
+#define PREPARE(argc, argv) do_prepare (argc, argv)
+#define TEST_FUNCTION       do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-fmemopen2.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fmemopen2.c
new file mode 100644
index 0000000..9d0891d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fmemopen2.c
@@ -0,0 +1,261 @@
+/* fmemopen tests.
+   Copyright (C) 2015-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <errno.h>
+
+/* Check fmemopen with user provided buffer open for write.  */
+static int
+do_test_with_buffer (void)
+{
+  int result = 0;
+  char buf[100];
+  const size_t nbuf = sizeof (buf);
+
+  FILE *fp = fmemopen (buf, nbuf, "w");
+  if (fp == NULL)
+    {
+      printf ("FAIL: fmemopen failed (%s)\n", __FUNCTION__);
+      return 1;
+    }
+
+  /* Default write operation, check if file position is correct after it.  */
+  static const char str[] = "hello world";
+  const size_t nstr = sizeof (str) - 1;
+  fputs (str, fp);
+  off_t o = ftello (fp);
+  if (o != nstr)
+    {
+      printf ("FAIL: first ftello returned %jd, expected %zu\n",
+	      (intmax_t)o, nstr);
+      result = 1;
+    }
+
+  /* Rewind stream and seek tests, the position size should be equal to
+     buffer size provided in open function.  */
+  rewind (fp);
+  o = ftello (fp);
+  if (o != 0)
+    {
+      printf ("FAIL: second ftello returned %jd, expected 0\n",
+	      (intmax_t)o);
+      result = 1;
+    }
+  if (fseeko (fp, 0, SEEK_END) != 0)
+    {
+      printf ("FAIL: fseeko failed\n");
+      result = 1;
+    }
+  o = ftello (fp);
+  if (o != nstr)
+    {
+      printf ("FAIL: third ftello returned %jd, expected %zu\n",
+	      (intmax_t)o, nstr);
+      result = 1;
+    }
+
+  /* Rewind the stream and recheck by using a shorter string.  */
+  rewind (fp);
+  static const char str2[] = "just hello";
+  const size_t nstr2 = sizeof (str2) - 1;
+  assert (nstr2 < nstr);
+  fputs (str2, fp);
+  o = ftello (fp);
+  if (o != nstr2)
+    {
+      printf ("FAIL: fourth ftello returned %jd, expected %zu\n",
+	      (intmax_t)o, nstr2);
+      result = 1;
+    }
+  fclose (fp);
+
+  /* Again, but now with a larger string.  */
+  static const char str3[] = "just hellod";
+  if (strcmp (buf, str3) != 0)
+    {
+      printf ("FAIL: final string is \"%s\", expected \"%s\"\n",
+              buf, str3);
+      result = 1;
+    }
+  return result;
+}
+
+/* Check fmemopen without user provided buffer open for write.  */
+static int
+do_test_without_buffer (void)
+{
+  int result = 0;
+  const size_t nbuf = 100;
+
+  FILE *fp = fmemopen (NULL, nbuf, "w");
+  if (fp == NULL)
+    {
+      printf ("FAIL: fmemopen failed (%s)\n", __FUNCTION__);
+      return 1;
+    }
+
+  static const char str[] = "hello world";
+  const size_t nstr = sizeof (str) - 1;
+
+  /* Default write operation, check if file position is correct after it.  */
+  fputs (str, fp);
+  off_t o = ftello (fp);
+  if (o != nstr)
+    {
+      printf ("FAIL: first ftello returned %jd, expected %zu\n",
+	      (intmax_t) o, nstr);
+      result = 1;
+    }
+  if (fseeko (fp, 0, SEEK_END) != 0)
+    {
+      printf ("FAIL: fseeko failed\n");
+      result = 1;
+    }
+  o = ftello (fp);
+  if (o != nstr)
+    {
+      printf ("FAIL: second ftello returned %jd, expected %zu\n",
+	      (intmax_t) o, nbuf);
+      result = 1;
+    }
+
+  /* Rewind the stream and recheck by using a shorter string.  */
+  rewind (fp);
+  static const char str2[] = "just hello";
+  const size_t nstr2 = sizeof (str2) - 1;
+  assert (nstr2 < nstr);
+  fputs (str2, fp);
+  o = ftello (fp);
+  if (o != nstr2)
+    {
+      printf ("FAIL: third ftello returned %jd, expected %zu\n",
+	      (intmax_t) o, nstr2);
+      result = 1;
+    }
+  fclose (fp);
+
+  return result;
+}
+
+/* Check fmemopen with a buffer lenght of zero.  */
+static int
+do_test_length_zero (void)
+{
+  int result = 0;
+  FILE *fp;
+#define BUFCONTENTS "testing buffer"
+  char buf[100] = BUFCONTENTS;
+  const size_t nbuf = 0;
+  int r;
+
+  fp = fmemopen (buf, nbuf, "r");
+  if (fp == NULL)
+    {
+      printf ("FAIL: fmemopen failed (%s)\n", __FUNCTION__);
+      return 1;
+    }
+
+  /* Reading any data on a zero-length buffer should return EOF.  */
+  if ((r = fgetc (fp)) != EOF)
+    {
+      printf ("FAIL: fgetc on a zero-length returned: %d\n", r);
+      result = 1;
+    }
+  off_t o = ftello (fp);
+  if (o != 0)
+    {
+      printf ("FAIL: first ftello returned %jd, expected 0\n",
+	      (intmax_t) o);
+      result = 1;
+    }
+  fclose (fp);
+
+  /* Writing any data shall start at current position and shall not pass
+     current buffer size beyond the size in fmemopen call.  */
+  fp = fmemopen (buf, nbuf, "w");
+  if (fp == NULL)
+    {
+      printf ("FAIL: second fmemopen failed (%s)\n", __FUNCTION__);
+      return 1;
+    }
+
+  static const char str[] = "hello world";
+  /* Because of buffering, the fputs call itself will not fail. However the
+     final buffer should be not changed because length 0 was passed to the
+     fmemopen call.  */
+  fputs (str, fp);
+  r = 0;
+  errno = 0;
+  if (fflush (fp) != EOF)
+    {
+      printf ("FAIL: fflush did not return EOF\n");
+      fclose (fp);
+      return 1;
+    }
+  if (errno != ENOSPC)
+    {
+      printf ("FAIL: errno is %i (expected ENOSPC)\n", errno);
+      fclose (fp);
+      return 1;
+    }
+
+  fclose (fp);
+
+  if (strcmp (buf, BUFCONTENTS) != 0)
+    {
+      printf ("FAIL: strcmp (%s, %s) failed\n", buf, BUFCONTENTS);
+      return 1;
+    }
+
+  /* Different than 'w' mode, 'w+' truncates the buffer.  */
+  fp = fmemopen (buf, nbuf, "w+");
+  if (fp == NULL)
+    {
+      printf ("FAIL: third fmemopen failed (%s)\n", __FUNCTION__);
+      return 1;
+    }
+
+  fclose (fp);
+
+  if (strcmp (buf, "") != 0)
+    {
+      printf ("FAIL: strcmp (%s, \"\") failed\n", buf);
+      return 1;
+    }
+
+  return result;
+}
+
+static int
+do_test (void)
+{
+  int ret = 0;
+
+  ret += do_test_with_buffer ();
+  ret += do_test_without_buffer ();
+  ret += do_test_length_zero ();
+
+  return ret;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-fmemopen3.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fmemopen3.c
new file mode 100644
index 0000000..250f9ec
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fmemopen3.c
@@ -0,0 +1,206 @@
+/* fmemopen tests for append and read mode.
+   Copyright (C) 2015-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+
+static void
+print_buffer (const char *s, size_t n)
+{
+  size_t i;
+  for (i=0; i<n; ++i)
+    printf ("0x%02X (%c), ", s[i], s[i]);
+}
+
+/* This test check append mode initial position (a/a+) based on POSIX defition
+   (BZ#6544 and BZ#13151).  */
+static int
+do_test_write_append (const char *mode)
+{
+  char buf[32] = "testing buffer";
+  char exp[32] = "testing bufferXX";
+
+  FILE *fp = fmemopen (buf, sizeof (buf), mode);
+
+  fflush (fp);
+  fprintf (fp, "X");
+  fseek (fp, 0, SEEK_SET);
+  fprintf (fp, "X");
+  fclose (fp);
+
+  if (strcmp (buf, exp) != 0)
+    {
+      printf ("%s: check failed: %s != %s\n", __FUNCTION__, buf, exp);
+      return 1;
+    }
+
+  return 0;
+}
+
+/* This test check append mode initial position (a/a+) based on POSIX defition
+   (BZ#6544 and BZ#13151) for buffer without null byte end.  */
+static int
+do_test_write_append_without_null (const char *mode)
+{
+  char buf[] = { 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55 };
+  char exp[] = { 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55 };
+
+  /* If '\0' is not found in buffer, POSIX states that SEEK_SET should be
+     the size argument.  */
+  FILE *fp = fmemopen (buf, sizeof (buf) - 2, "a");
+
+  fflush (fp);
+  fputc (0x70, fp);
+  fseek (fp, 0, SEEK_SET);
+  fputc (0x70, fp);
+  fputc (0x70, fp);
+  fclose (fp);
+
+  /* POSIX also states that a write operation on the stream shall not advance
+     the current buffer size beyond the size given in fmemopen, so the string
+     should be same.  */
+  if (memcmp (buf, exp, sizeof (buf)) != 0)
+    {
+      printf ("%s: check failed: ", __FUNCTION__);
+      print_buffer (buf, sizeof (buf));
+      printf ("!= ");
+      print_buffer (exp, sizeof (exp));
+      printf ("\n");
+      return 1;
+    }
+
+  return 0;
+}
+
+/* This test check for initial position and feek value for fmemopen objects
+   opened with append mode.  */
+static int
+do_test_read_append (void)
+{
+  char buf[32] = "testing buffer";
+  size_t buflen = strlen (buf);
+  long fpos;
+
+  /* POSIX defines for 'a+' the initial position is the first null byte.  */
+  FILE *fp = fmemopen (buf, sizeof (buf), "a+");
+
+  fpos = ftell (fp);
+  if (fpos != buflen)
+    {
+      printf ("%s: ftell|SEEK_SET (fp) %li != strlen (%s) %zu\n",
+	      __FUNCTION__, fpos, buf, buflen);
+      fclose (fp);
+      return 1;
+    }
+
+  fseek (fp, 0, SEEK_END);
+
+  if (fpos != buflen)
+    {
+      printf ("%s: ftell|SEEK_END (fp) %li != strlen (%s) %zu\n",
+	      __FUNCTION__, fpos, buf, buflen);
+      fclose (fp);
+      return 1;
+    }
+  fclose (fp);
+
+  /* Check if attempting to read past the current size, defined as strlen (buf)
+     yield an EOF.  */
+  fp = fmemopen (buf, sizeof (buf), "a+");
+  if (getc(fp) != EOF)
+    {
+      printf ("%s: getc(fp) != EOF\n", __FUNCTION__);
+      fclose (fp);
+      return -1;
+    }
+
+  fclose (fp);
+
+  return 0;
+}
+
+/* This test check for fseek (SEEK_END) using negative offsets (BZ#14292).  The
+   starting position of descriptor is different base on the opening mode.  */
+static int
+do_test_read_seek_neg (const char *mode, const char *expected)
+{
+  char buf[] = "abcdefghijklmnopqrstuvxz0123456789";
+  char tmp[10];
+  size_t tmps = sizeof (tmps);
+  long offset = -11;
+
+  FILE *fp = fmemopen (buf, sizeof (buf), mode);
+  fseek (fp, offset, SEEK_END);
+  fread (tmp, tmps, 1, fp);
+
+  if (memcmp (tmp, expected, tmps) != 0)
+    {
+      printf ("%s: fmemopen(%s) - fseek (fp, %li, SEEK_END):\n",
+	      __FUNCTION__, mode, offset);
+      printf ("  returned: ");
+      print_buffer (tmp, tmps);
+      printf ("\n");
+      printf ("  expected: ");
+      print_buffer (expected, tmps);
+      printf ("\n");
+      return 1;
+    }
+
+  fclose (fp);
+
+  return 0;
+}
+
+static int
+do_test_read_seek_negative (void)
+{
+  int ret = 0;
+
+  /* 'r' and 'w' modes defines the initial position at the buffer start and
+     seek with SEEK_END shall seek relative to its size give in fmemopen
+     call.  The expected tmp result is 0 to 9 *without* the ending null  */
+  ret += do_test_read_seek_neg ("r", "0123456789");
+  /* 'a+' mode sets the initial position at the first null byte in buffer and
+    SEEK_END shall seek relative to its size as well.  The expected result is
+    z012345678, since SEEK_END plus a+ start at '\0', not size.  */
+  ret += do_test_read_seek_neg ("a+", "z012345678");
+
+  return ret;
+}
+
+static int
+do_test (void)
+{
+  int ret = 0;
+
+  ret += do_test_write_append ("a");
+  ret += do_test_write_append_without_null ("a");
+  ret += do_test_write_append ("a+");
+  ret += do_test_write_append_without_null ("a+");
+
+  ret += do_test_read_append ();
+
+  ret += do_test_read_seek_negative ();
+
+  return ret;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-fphex-wide.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fphex-wide.c
new file mode 100644
index 0000000..1f4797c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fphex-wide.c
@@ -0,0 +1,24 @@
+/* Test program for %a wprintf formats.
+   This file is part of the GNU C Library.
+   Copyright (C) 2012-2016 Free Software Foundation, Inc.
+   Contributed by Marek Polacek <polacek@redhat.com>, 2012.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <wchar.h>
+
+#define WIDE 1
+
+#include "tst-fphex.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-fphex.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fphex.c
new file mode 100644
index 0000000..c2e8961
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fphex.c
@@ -0,0 +1,72 @@
+/* Test program for %a printf formats.  */
+
+#include <stdio.h>
+#include <string.h>
+
+#ifndef WIDE
+# define STR_LEN strlen
+# define STR_CMP strcmp
+# define SPRINT snprintf
+# define CHAR_T char
+# define PRINT printf
+# define L_(Str) Str
+# define S "%s"
+#else
+# define STR_LEN wcslen
+# define SPRINT swprintf
+# define STR_CMP wcscmp
+# define CHAR_T wchar_t
+# define PRINT wprintf
+# define L_(Str) L##Str
+# define S "%ls"
+#endif
+
+struct testcase
+{
+  double value;
+  const CHAR_T *fmt;
+  const CHAR_T *expect;
+};
+
+static const struct testcase testcases[] =
+  {
+    { 0x0.0030p+0, L_("%a"),		L_("0x1.8p-11") },
+    { 0x0.0040p+0, L_("%a"),		L_("0x1p-10") },
+    { 0x0.0030p+0, L_("%040a"),		L_("0x00000000000000000000000000000001.8p-11") },
+    { 0x0.0040p+0, L_("%040a"),		L_("0x0000000000000000000000000000000001p-10") },
+    { 0x0.0040p+0, L_("%40a"),		L_("                                 0x1p-10") },
+    { 0x0.0040p+0, L_("%#40a"),		L_("                                0x1.p-10") },
+    { 0x0.0040p+0, L_("%-40a"),		L_("0x1p-10                                 ") },
+    { 0x0.0040p+0, L_("%#-40a"),	L_("0x1.p-10                                ") },
+    { 0x0.0030p+0, L_("%040e"),		L_("00000000000000000000000000007.324219e-04") },
+    { 0x0.0040p+0, L_("%040e"),		L_("00000000000000000000000000009.765625e-04") },
+  };
+
+
+static int
+do_test (void)
+{
+  const struct testcase *t;
+  int result = 0;
+
+  for (t = testcases;
+       t < &testcases[sizeof testcases / sizeof testcases[0]];
+       ++t)
+    {
+      CHAR_T buf[1024];
+      int n = SPRINT (buf, sizeof buf / sizeof (buf[0]), t->fmt, t->value);
+      if (n != STR_LEN (t->expect) || STR_CMP (buf, t->expect) != 0)
+	{
+	  PRINT (L_("" S "\tExpected \"" S "\" (%Zu)\n\tGot      \""
+		    S "\" (%d, %Zu)\n"),
+		 t->fmt, t->expect, STR_LEN (t->expect),
+		 buf, n, STR_LEN (buf));
+	  result = 1;
+	}
+    }
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-fseek.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fseek.c
new file mode 100644
index 0000000..2598edd
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fseek.c
@@ -0,0 +1,482 @@
+/* Tests of fseek and fseeko.
+   Copyright (C) 2000-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <error.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <time.h>
+#include <sys/stat.h>
+
+
+static int
+do_test (void)
+{
+  const char *tmpdir;
+  char *fname;
+  int fd;
+  FILE *fp;
+  const char outstr[] = "hello world!\n";
+  char strbuf[sizeof outstr];
+  char buf[200];
+  struct stat64 st1;
+  struct stat64 st2;
+  int result = 0;
+
+  tmpdir = getenv ("TMPDIR");
+  if (tmpdir == NULL || tmpdir[0] == '\0')
+    tmpdir = "/tmp";
+
+  asprintf (&fname, "%s/tst-fseek.XXXXXX", tmpdir);
+  if (fname == NULL)
+    error (EXIT_FAILURE, errno, "cannot generate name for temporary file");
+
+  /* Create a temporary file.   */
+  fd = mkstemp (fname);
+  if (fd == -1)
+    error (EXIT_FAILURE, errno, "cannot open temporary file");
+
+  fp = fdopen (fd, "w+");
+  if (fp == NULL)
+    error (EXIT_FAILURE, errno, "cannot get FILE for temporary file");
+
+  setbuffer (fp, strbuf, sizeof (outstr) -1);
+
+  if (fwrite (outstr, sizeof (outstr) - 1, 1, fp) != 1)
+    {
+      printf ("%d: write error\n", __LINE__);
+      result = 1;
+      goto out;
+    }
+
+  /* The EOF flag must be reset.  */
+  if (fgetc (fp) != EOF)
+    {
+      printf ("%d: managed to read at end of file\n", __LINE__);
+      result = 1;
+    }
+  else if (! feof (fp))
+    {
+      printf ("%d: EOF flag not set\n", __LINE__);
+      result = 1;
+    }
+  if (fseek (fp, 0, SEEK_CUR) != 0)
+    {
+      printf ("%d: fseek(fp, 0, SEEK_CUR) failed\n", __LINE__);
+      result = 1;
+    }
+  else if (feof (fp))
+    {
+      printf ("%d: fseek() didn't reset EOF flag\n", __LINE__);
+      result = 1;
+    }
+
+  /* Do the same for fseeko().  */
+    if (fgetc (fp) != EOF)
+    {
+      printf ("%d: managed to read at end of file\n", __LINE__);
+      result = 1;
+    }
+  else if (! feof (fp))
+    {
+      printf ("%d: EOF flag not set\n", __LINE__);
+      result = 1;
+    }
+  if (fseeko (fp, 0, SEEK_CUR) != 0)
+    {
+      printf ("%d: fseek(fp, 0, SEEK_CUR) failed\n", __LINE__);
+      result = 1;
+    }
+  else if (feof (fp))
+    {
+      printf ("%d: fseek() didn't reset EOF flag\n", __LINE__);
+      result = 1;
+    }
+
+  /* Go back to the beginning of the file: absolute.  */
+  if (fseek (fp, 0, SEEK_SET) != 0)
+    {
+      printf ("%d: fseek(fp, 0, SEEK_SET) failed\n", __LINE__);
+      result = 1;
+    }
+  else if (fflush (fp) != 0)
+    {
+      printf ("%d: fflush() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (lseek (fd, 0, SEEK_CUR) != 0)
+    {
+      printf ("%d: lseek() returned different position\n", __LINE__);
+      result = 1;
+    }
+  else if (fread (buf, sizeof (outstr) - 1, 1, fp) != 1)
+    {
+      printf ("%d: fread() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0)
+    {
+      printf ("%d: content after fseek(,,SEEK_SET) wrong\n", __LINE__);
+      result = 1;
+    }
+
+  /* Now with fseeko.  */
+  if (fseeko (fp, 0, SEEK_SET) != 0)
+    {
+      printf ("%d: fseeko(fp, 0, SEEK_SET) failed\n", __LINE__);
+      result = 1;
+    }
+  else if (fflush (fp) != 0)
+    {
+      printf ("%d: fflush() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (lseek (fd, 0, SEEK_CUR) != 0)
+    {
+      printf ("%d: lseek() returned different position\n", __LINE__);
+      result = 1;
+    }
+  else if (fread (buf, sizeof (outstr) - 1, 1, fp) != 1)
+    {
+      printf ("%d: fread() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0)
+    {
+      printf ("%d: content after fseeko(,,SEEK_SET) wrong\n", __LINE__);
+      result = 1;
+    }
+
+  /* Go back to the beginning of the file: relative.  */
+  if (fseek (fp, -((int) sizeof (outstr) - 1), SEEK_CUR) != 0)
+    {
+      printf ("%d: fseek(fp, 0, SEEK_SET) failed\n", __LINE__);
+      result = 1;
+    }
+  else if (fflush (fp) != 0)
+    {
+      printf ("%d: fflush() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (lseek (fd, 0, SEEK_CUR) != 0)
+    {
+      printf ("%d: lseek() returned different position\n", __LINE__);
+      result = 1;
+    }
+  else if (fread (buf, sizeof (outstr) - 1, 1, fp) != 1)
+    {
+      printf ("%d: fread() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0)
+    {
+      printf ("%d: content after fseek(,,SEEK_SET) wrong\n", __LINE__);
+      result = 1;
+    }
+
+  /* Now with fseeko.  */
+  if (fseeko (fp, -((int) sizeof (outstr) - 1), SEEK_CUR) != 0)
+    {
+      printf ("%d: fseeko(fp, 0, SEEK_SET) failed\n", __LINE__);
+      result = 1;
+    }
+  else if (fflush (fp) != 0)
+    {
+      printf ("%d: fflush() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (lseek (fd, 0, SEEK_CUR) != 0)
+    {
+      printf ("%d: lseek() returned different position\n", __LINE__);
+      result = 1;
+    }
+  else if (fread (buf, sizeof (outstr) - 1, 1, fp) != 1)
+    {
+      printf ("%d: fread() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0)
+    {
+      printf ("%d: content after fseeko(,,SEEK_SET) wrong\n", __LINE__);
+      result = 1;
+    }
+
+  /* Go back to the beginning of the file: from the end.  */
+  if (fseek (fp, -((int) sizeof (outstr) - 1), SEEK_END) != 0)
+    {
+      printf ("%d: fseek(fp, 0, SEEK_SET) failed\n", __LINE__);
+      result = 1;
+    }
+  else if (fflush (fp) != 0)
+    {
+      printf ("%d: fflush() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (lseek (fd, 0, SEEK_CUR) != 0)
+    {
+      printf ("%d: lseek() returned different position\n", __LINE__);
+      result = 1;
+    }
+  else if (fread (buf, sizeof (outstr) - 1, 1, fp) != 1)
+    {
+      printf ("%d: fread() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0)
+    {
+      printf ("%d: content after fseek(,,SEEK_SET) wrong\n", __LINE__);
+      result = 1;
+    }
+
+  /* Now with fseeko.  */
+  if (fseeko (fp, -((int) sizeof (outstr) - 1), SEEK_END) != 0)
+    {
+      printf ("%d: fseeko(fp, 0, SEEK_SET) failed\n", __LINE__);
+      result = 1;
+    }
+  else if (fflush (fp) != 0)
+    {
+      printf ("%d: fflush() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (lseek (fd, 0, SEEK_CUR) != 0)
+    {
+      printf ("%d: lseek() returned different position\n", __LINE__);
+      result = 1;
+    }
+  else if (fread (buf, sizeof (outstr) - 1, 1, fp) != 1)
+    {
+      printf ("%d: fread() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0)
+    {
+      printf ("%d: content after fseeko(,,SEEK_SET) wrong\n", __LINE__);
+      result = 1;
+    }
+
+  if (fwrite (outstr, sizeof (outstr) - 1, 1, fp) != 1)
+    {
+      printf ("%d: write error 2\n", __LINE__);
+      result = 1;
+      goto out;
+    }
+
+  if (fwrite (outstr, sizeof (outstr) - 1, 1, fp) != 1)
+    {
+      printf ("%d: write error 3\n", __LINE__);
+      result = 1;
+      goto out;
+    }
+
+  if (fwrite (outstr, sizeof (outstr) - 1, 1, fp) != 1)
+    {
+      printf ("%d: write error 4\n", __LINE__);
+      result = 1;
+      goto out;
+    }
+
+  if (fwrite (outstr, sizeof (outstr) - 1, 1, fp) != 1)
+    {
+      printf ("%d: write error 5\n", __LINE__);
+      result = 1;
+      goto out;
+    }
+
+  if (fputc ('1', fp) == EOF || fputc ('2', fp) == EOF)
+    {
+      printf ("%d: cannot add characters at the end\n", __LINE__);
+      result = 1;
+      goto out;
+    }
+
+  /* Check the access time.  */
+  if (fstat64 (fd, &st1) < 0)
+    {
+      printf ("%d: fstat64() before fseeko() failed\n\n", __LINE__);
+      result = 1;
+    }
+  else
+    {
+      sleep (1);
+
+      if (fseek (fp, -(2 + 2 * (sizeof (outstr) - 1)), SEEK_CUR) != 0)
+	{
+	  printf ("%d: fseek() after write characters failed\n", __LINE__);
+	  result = 1;
+	  goto out;
+	}
+      else
+	{
+
+	  time_t t;
+	  /* Make sure the timestamp actually can be different.  */
+	  sleep (1);
+	  t = time (NULL);
+
+	  if (fstat64 (fd, &st2) < 0)
+	    {
+	      printf ("%d: fstat64() after fseeko() failed\n\n", __LINE__);
+	      result = 1;
+	    }
+	  if (st1.st_ctime >= t)
+	    {
+	      printf ("%d: st_ctime not updated\n", __LINE__);
+	      result = 1;
+	    }
+	  if (st1.st_mtime >= t)
+	    {
+	      printf ("%d: st_mtime not updated\n", __LINE__);
+	      result = 1;
+	    }
+	  if (st1.st_ctime >= st2.st_ctime)
+	    {
+	      printf ("%d: st_ctime not changed\n", __LINE__);
+	      result = 1;
+	    }
+	  if (st1.st_mtime >= st2.st_mtime)
+	    {
+	      printf ("%d: st_mtime not changed\n", __LINE__);
+	      result = 1;
+	    }
+	}
+    }
+
+  if (fread (buf, 1, 2 + 2 * (sizeof (outstr) - 1), fp)
+      != 2 + 2 * (sizeof (outstr) - 1))
+    {
+      printf ("%d: reading 2 records plus bits failed\n", __LINE__);
+      result = 1;
+    }
+  else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0
+	   || memcmp (&buf[sizeof (outstr) - 1], outstr,
+		      sizeof (outstr) - 1) != 0
+	   || buf[2 * (sizeof (outstr) - 1)] != '1'
+	   || buf[2 * (sizeof (outstr) - 1) + 1] != '2')
+    {
+      printf ("%d: reading records failed\n", __LINE__);
+      result = 1;
+    }
+  else if (ungetc ('9', fp) == EOF)
+    {
+      printf ("%d: ungetc() failed\n", __LINE__);
+      result = 1;
+    }
+  else if (fseek (fp, -(2 + 2 * (sizeof (outstr) - 1)), SEEK_END) != 0)
+    {
+      printf ("%d: fseek after ungetc failed\n", __LINE__);
+      result = 1;
+    }
+  else if (fread (buf, 1, 2 + 2 * (sizeof (outstr) - 1), fp)
+      != 2 + 2 * (sizeof (outstr) - 1))
+    {
+      printf ("%d: reading 2 records plus bits failed\n", __LINE__);
+      result = 1;
+    }
+  else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0
+	   || memcmp (&buf[sizeof (outstr) - 1], outstr,
+		      sizeof (outstr) - 1) != 0
+	   || buf[2 * (sizeof (outstr) - 1)] != '1')
+    {
+      printf ("%d: reading records for the second time failed\n", __LINE__);
+      result = 1;
+    }
+  else if (buf[2 * (sizeof (outstr) - 1) + 1] == '9')
+    {
+      printf ("%d: unget character not ignored\n", __LINE__);
+      result = 1;
+    }
+  else if (buf[2 * (sizeof (outstr) - 1) + 1] != '2')
+    {
+      printf ("%d: unget somehow changed character\n", __LINE__);
+      result = 1;
+    }
+
+  fclose (fp);
+
+  fp = fopen (fname, "r");
+  if (fp == NULL)
+    {
+      printf ("%d: fopen() failed\n\n", __LINE__);
+      result = 1;
+    }
+  else if (fstat64 (fileno (fp), &st1) < 0)
+    {
+      printf ("%d: fstat64() before fseeko() failed\n\n", __LINE__);
+      result = 1;
+    }
+  else if (fseeko (fp, 0, SEEK_END) != 0)
+    {
+      printf ("%d: fseeko(fp, 0, SEEK_END) failed\n", __LINE__);
+      result = 1;
+    }
+  else if (ftello (fp) != st1.st_size)
+    {
+      printf ("%d: fstat64 st_size %zd ftello %zd\n", __LINE__,
+	      (size_t) st1.st_size, (size_t) ftello (fp));
+      result = 1;
+    }
+  else
+    printf ("%d: SEEK_END works\n", __LINE__);
+  if (fp != NULL)
+    fclose (fp);
+
+  fp = fopen (fname, "r");
+  if (fp == NULL)
+    {
+      printf ("%d: fopen() failed\n\n", __LINE__);
+      result = 1;
+    }
+  else if (fstat64 (fileno (fp), &st1) < 0)
+    {
+      printf ("%d: fstat64() before fgetc() failed\n\n", __LINE__);
+      result = 1;
+    }
+  else if (fgetc (fp) == EOF)
+    {
+      printf ("%d: fgetc() before fseeko() failed\n\n", __LINE__);
+      result = 1;
+    }
+  else if (fseeko (fp, 0, SEEK_END) != 0)
+    {
+      printf ("%d: fseeko(fp, 0, SEEK_END) failed\n", __LINE__);
+      result = 1;
+    }
+  else if (ftello (fp) != st1.st_size)
+    {
+      printf ("%d: fstat64 st_size %zd ftello %zd\n", __LINE__,
+	      (size_t) st1.st_size, (size_t) ftello (fp));
+      result = 1;
+    }
+  else
+    printf ("%d: SEEK_END works\n", __LINE__);
+  if (fp != NULL)
+    fclose (fp);
+
+ out:
+  unlink (fname);
+
+  return result;
+}
+
+#define TIMEOUT 3
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-fwrite.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fwrite.c
new file mode 100644
index 0000000..2986c89
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-fwrite.c
@@ -0,0 +1,70 @@
+/* Derived from the test case in
+   http://sourceware.org/bugzilla/show_bug.cgi?id=1078.  */
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define OUT_SIZE 10000
+
+
+static int fd;
+
+static void prepare (void);
+#define PREPARE(argc, argv) prepare ()
+
+static int do_test (void);
+#define TEST_FUNCTION do_test ()
+
+#include "../test-skeleton.c"
+
+
+static void
+prepare (void)
+{
+  fd = create_temp_file ("tst-fwrite.", NULL);
+  if (fd == -1)
+    {
+      puts ("cannot create temporary file");
+      exit (1);
+    }
+}
+
+
+static int
+do_test (void)
+{
+  FILE* f = fdopen (fd, "w+");
+  if (f == NULL) {
+    puts ("cannot create stream");
+    return 1;
+  }
+  puts ("Opened temp file");
+
+  if (fwrite ("a", 1, 1, f) != 1)
+    {
+      puts ("1st fwrite failed");
+      return 1;
+    }
+  puts ("Wrote a byte");
+  fflush (f);
+
+  char buffer[10000];
+  size_t i = fread (buffer, 1, sizeof (buffer), f);
+  printf ("Read %zu bytes\n", i);
+
+  for (i = 0; i < OUT_SIZE; i++)
+    {
+      if (fwrite ("n", 1, 1, f) != 1)
+	{
+	  printf ("fwrite in loop round %zu failed\n", i);
+	  return 1;
+	}
+
+      if ((i + 1) % 1000 == 0)
+	printf ("wrote %zu bytes ...\n", i + 1);
+    }
+
+  printf ("Wrote %i bytes [done]\n", OUT_SIZE);
+
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-gets.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-gets.c
new file mode 100644
index 0000000..073bc54
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-gets.c
@@ -0,0 +1,66 @@
+/* Tests for gets.
+   Copyright (C) 2001-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <string.h>
+
+
+static int
+do_test (void)
+{
+  char buf[100];
+  int result = 0;
+
+  if (gets (buf) != buf)
+    {
+      printf ("gets: read error: %m\n");
+      result = 1;
+    }
+  else if (strchr (buf, '\n') != NULL)
+    {
+      printf ("newline not stripped: \"%s\"\n", buf);
+      result = 1;
+    }
+  else if (strcmp (buf, "foo") != 0)
+    {
+      printf ("read mismatch: expected \"%s\", got \"%s\"\n", "foo", buf);
+      result = 1;
+    }
+
+  if (gets (buf) != buf)
+    {
+      printf ("gets: read error: %m\n");
+      result = 1;
+    }
+  else if (strchr (buf, '\n') != NULL)
+    {
+      printf ("newline not stripped: \"%s\"\n", buf);
+      result = 1;
+    }
+  else if (strcmp (buf, "bar") != 0)
+    {
+      printf ("read mismatch: expected \"%s\", got \"%s\"\n", "bar", buf);
+      result = 1;
+    }
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-gets.input b/ap/libc/glibc/glibc-2.23/stdio-common/tst-gets.input
new file mode 100644
index 0000000..3bd1f0e
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-gets.input
@@ -0,0 +1,2 @@
+foo
+bar
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-grouping.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-grouping.c
new file mode 100644
index 0000000..e8f4b8c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-grouping.c
@@ -0,0 +1,83 @@
+/* BZ 12394, test by Bruno Haible.  */
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+static int
+do_test (void)
+{
+  char buf1[1000];
+  char buf2[1000];
+  int result = 0;
+
+  if (setlocale (LC_NUMERIC, "de_DE.UTF-8") == NULL)
+    return 1;
+
+  sprintf (buf1, "%'.2f",  999.996);
+  sprintf (buf2, "%'.2f", 1000.004);
+  printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
+  if (strcmp (buf1, buf2) != 0)
+    result |= 2;
+
+  sprintf (buf1, "%'.2f",  999999.996);
+  sprintf (buf2, "%'.2f", 1000000.004);
+  printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
+  if (strcmp (buf1, buf2) != 0)
+    result |= 2;
+
+  sprintf (buf1, "%'.2f",  999999999.996);
+  sprintf (buf2, "%'.2f", 1000000000.004);
+  printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
+  if (strcmp (buf1, buf2) != 0)
+    result |= 2;
+
+  sprintf (buf1, "%'.2f",  999999999999.996);
+  sprintf (buf2, "%'.2f", 1000000000000.004);
+  printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
+  if (strcmp (buf1, buf2) != 0)
+    result |= 2;
+
+  sprintf (buf1, "%'.2f",  999999999999999.996);
+  sprintf (buf2, "%'.2f", 1000000000000000.004);
+  printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
+  if (strcmp (buf1, buf2) != 0)
+    result |= 2;
+
+  sprintf (buf1, "%'.5g",  999.996);
+  sprintf (buf2, "%'.5g", 1000.004);
+  printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
+  if (strcmp (buf1, buf2) != 0)
+    result |= 4;
+
+  sprintf (buf1, "%'.4g",  9999.996);
+  sprintf (buf2, "%'.4g", 10000.004);
+  printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
+  if (strcmp (buf1, buf2) != 0)
+    result |= 8;
+
+  sprintf (buf1, "%'.5g",  99999.996);
+  sprintf (buf2, "%'.5g", 100000.004);
+  printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
+  if (strcmp (buf1, buf2) != 0)
+    result |= 8;
+
+  sprintf (buf1, "%'.6g",  999999.996);
+  sprintf (buf2, "%'.6g", 1000000.004);
+  printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
+  if (strcmp (buf1, buf2) != 0)
+    result |= 8;
+
+  sprintf (buf1, "%'.7g",  9999999.996);
+  sprintf (buf2, "%'.7g", 10000000.004);
+  printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2);
+  if (strcmp (buf1, buf2) != 0)
+    result |= 8;
+
+  return result;
+}
+
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-long-dbl-fphex.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-long-dbl-fphex.c
new file mode 100644
index 0000000..6241dfd
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-long-dbl-fphex.c
@@ -0,0 +1,53 @@
+/* This file is part of the GNU C Library.
+   Copyright (C) 2012-2016 Free Software Foundation, Inc.
+   Contributed by Marek Polacek <polacek@redhat.com>, 2012.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <wchar.h>
+
+/* Prototype for our test function.  */
+static int do_test (void);
+
+static int
+do_test (void)
+{
+#ifndef NO_LONG_DOUBLE
+  int result = 0;
+  const long double x = 24.5;
+  wchar_t a[16];
+  swprintf (a, sizeof a / sizeof a[0], L"%La\n", x);
+  wchar_t A[16];
+  swprintf (A, sizeof A / sizeof A[0], L"%LA\n", x);
+
+  /* Here wprintf can return four valid variants.  We must accept all
+     of them.  */
+  result |= (wmemcmp (a, L"0xc.4p+1", 8) == 0
+	     && wmemcmp (A, L"0XC.4P+1", 8) == 0);
+  result |= (wmemcmp (a, L"0x3.1p+3", 8) == 0
+	     && wmemcmp (A, L"0X3.1P+3", 8) == 0);
+  result |= (wmemcmp (a, L"0x6.2p+2", 8) == 0
+	     && wmemcmp (A, L"0X6.2P+2", 8) == 0);
+  result |= (wmemcmp (a, L"0x1.88p+4", 8) == 0
+	     && wmemcmp (A, L"0X1.88P+4", 8) == 0);
+
+  return result != 1;
+#else
+  return 0;
+#endif
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-obprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-obprintf.c
new file mode 100644
index 0000000..5151593
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-obprintf.c
@@ -0,0 +1,45 @@
+#include <mcheck.h>
+#include <obstack.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+static int
+do_test (void)
+{
+  struct obstack ob;
+  int n;
+
+  mcheck_pedantic (NULL);
+
+#define obstack_chunk_alloc malloc
+#define obstack_chunk_free free
+
+  obstack_init (&ob);
+
+  for (n = 0; n < 40000; ++n)
+    {
+      mcheck_check_all ();
+      obstack_printf (&ob, "%.*s%05d", 1 + n % 7, "foobarbaz", n);
+      if (n % 777 == 0)
+	obstack_finish (&ob);
+    }
+
+  /* Another loop where we finish all objects, each of size 1.  This will
+     manage to call `obstack_print' with all possible positions inside
+     an obstack chunk.  */
+  for (n = 0; n < 40000; ++n)
+    {
+      mcheck_check_all ();
+      obstack_printf (&ob, "%c", 'a' + n % 26);
+      obstack_finish (&ob);
+    }
+
+  /* And a final check.  */
+  mcheck_check_all ();
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-perror.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-perror.c
new file mode 100644
index 0000000..416b120
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-perror.c
@@ -0,0 +1,157 @@
+/* Test of perror.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
+   To be used only for testing glibc.  */
+
+#include <errno.h>
+#include <error.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <wchar.h>
+
+
+#define MB_EXP \
+  "null mode test 1: Invalid or incomplete multibyte or wide character\n" \
+  "multibyte string\n" \
+  "<0 mode test: Invalid argument\n"
+#define MB_EXP_LEN (sizeof (MB_EXP) - 1)
+
+#define WC_EXP \
+  "null mode test 2: Invalid or incomplete multibyte or wide character\n" \
+  "wide string\n" \
+  ">0 mode test: Invalid argument\n"
+#define WC_EXP_LEN (sizeof (WC_EXP) - 1)
+
+
+static int
+do_test (void)
+{
+  int fd;
+  char fname[] = "/tmp/tst-perror.XXXXXX";
+  int result = 0;
+  char buf[200];
+  ssize_t n;
+
+  fd = mkstemp (fname);
+  if (fd == -1)
+    error (EXIT_FAILURE, errno, "cannot create temporary file");
+
+  /* Make sure the file gets removed.  */
+  unlink (fname);
+
+  fclose (stderr);
+
+  if (dup2 (fd, 2) == -1)
+    {
+      printf ("cannot create file descriptor 2: %m\n");
+      exit (EXIT_FAILURE);
+    }
+
+  stderr = fdopen (2, "w");
+  if (stderr == NULL)
+    {
+      printf ("fdopen failed: %m\n");
+      exit (EXIT_FAILURE);
+    }
+
+  if (fwide (stderr, 0) != 0)
+    {
+      printf ("stderr not initially in mode 0\n");
+      exit (EXIT_FAILURE);
+    }
+
+  errno = EILSEQ;
+  perror ("null mode test 1");
+
+  if (fwide (stderr, 0) != 0)
+    {
+      puts ("perror changed the mode from 0");
+      result = 1;
+    }
+
+  fputs ("multibyte string\n", stderr);
+
+  if (fwide (stderr, 0) >= 0)
+    {
+      puts ("fputs didn't set orientation to narrow");
+      result = 1;
+    }
+
+  errno = EINVAL;
+  perror ("<0 mode test");
+
+  fclose (stderr);
+
+  lseek (fd, 0, SEEK_SET);
+  n = read (fd, buf, sizeof (buf));
+  if (n != MB_EXP_LEN || memcmp (buf, MB_EXP, MB_EXP_LEN) != 0)
+    {
+      printf ("multibyte test failed.  Expected:\n%s\nGot:\n%.*s\n",
+	      MB_EXP, (int) n, buf);
+      result = 1;
+    }
+  else
+    puts ("multibyte test succeeded");
+
+  lseek (fd, 0, SEEK_SET);
+  ftruncate (fd, 0);
+
+  if (dup2 (fd, 2) == -1)
+    {
+      printf ("cannot create file descriptor 2: %m\n");
+      exit (EXIT_FAILURE);
+    }
+  stderr = fdopen (2, "w");
+  if (stderr == NULL)
+    {
+      printf ("fdopen failed: %m\n");
+      exit (EXIT_FAILURE);
+    }
+
+  if (fwide (stderr, 0) != 0)
+    {
+      printf ("stderr not initially in mode 0\n");
+      exit (EXIT_FAILURE);
+    }
+
+  errno = EILSEQ;
+  perror ("null mode test 2");
+
+  if (fwide (stderr, 0) != 0)
+    {
+      puts ("perror changed the mode from 0");
+      result = 1;
+    }
+
+  fputws (L"wide string\n", stderr);
+
+  if (fwide (stderr, 0) <= 0)
+    {
+      puts ("fputws didn't set orientation to wide");
+      result = 1;
+    }
+
+  errno = EINVAL;
+  perror (">0 mode test");
+
+  fclose (stderr);
+
+  lseek (fd, 0, SEEK_SET);
+  n = read (fd, buf, sizeof (buf));
+  if (n != WC_EXP_LEN || memcmp (buf, WC_EXP, WC_EXP_LEN) != 0)
+    {
+      printf ("wide test failed.  Expected:\n%s\nGot:\n%.*s\n",
+	      WC_EXP, (int) n, buf);
+      result = 1;
+    }
+  else
+    puts ("wide test succeeded");
+
+  close (fd);
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-popen.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-popen.c
new file mode 100644
index 0000000..94cb59d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-popen.c
@@ -0,0 +1,72 @@
+/* Copyright (C) 2004-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <string.h>
+#include <wchar.h>
+
+static int
+do_test (void)
+{
+  FILE *f = popen ("echo test", "r");
+  int result = 0, ret;
+  char *line = NULL;
+  size_t len = 0;
+
+  if (f == NULL)
+    {
+      printf ("popen failed %m");
+      return 1;
+    }
+
+  /* POSIX says that pipe streams are byte-oriented.  */
+  if (fwide (f, 0) >= 0)
+    {
+      puts ("popen did not return byte-oriented stream");
+      result = 1;
+    }
+
+  if (getline (&line, &len, f) != 5)
+    {
+      puts ("could not read line from popen");
+      result = 1;
+    }
+  else if (strcmp (line, "test\n") != 0)
+    {
+      printf ("read \"%s\"\n", line);
+      result = 1;
+    }
+
+  if (getline (&line, &len, f) != -1)
+    {
+      puts ("second getline did not return -1");
+      result = 1;
+    }
+
+  ret = pclose (f);
+  if (ret != 0)
+    {
+      printf ("pclose returned %d\n", ret);
+      result = 1;
+    }
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-popen2.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-popen2.c
new file mode 100644
index 0000000..0ab151c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-popen2.c
@@ -0,0 +1,92 @@
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+static int
+do_test (void)
+{
+  int fd = dup (fileno (stdout));
+  if (fd <= 1)
+    {
+      puts ("dup failed");
+      return 1;
+    }
+
+  FILE *f1 = fdopen (fd, "w");
+  if (f1 == NULL)
+    {
+      printf ("fdopen failed: %m\n");
+      return 1;
+    }
+
+  fclose (stdout);
+
+  FILE *f2 = popen ("echo test1", "r");
+  if (f2 == NULL)
+    {
+      fprintf (f1, "1st popen failed: %m\n");
+      return 1;
+    }
+  FILE *f3 = popen ("echo test2", "r");
+  if (f2 == NULL || f3 == NULL)
+    {
+      fprintf (f1, "2nd popen failed: %m\n");
+      return 1;
+    }
+
+  char *line = NULL;
+  size_t len = 0;
+  int result = 0;
+  if (getline (&line, &len, f2) != 6)
+    {
+      fputs ("could not read line from 1st popen\n", f1);
+      result = 1;
+    }
+  else if (strcmp (line, "test1\n") != 0)
+    {
+      fprintf (f1, "read \"%s\"\n", line);
+      result = 1;
+    }
+
+  if (getline (&line, &len, f2) != -1)
+    {
+      fputs ("second getline did not return -1\n", f1);
+      result = 1;
+    }
+
+  if (getline (&line, &len, f3) != 6)
+    {
+      fputs ("could not read line from 2nd popen\n", f1);
+      result = 1;
+    }
+  else if (strcmp (line, "test2\n") != 0)
+    {
+      fprintf (f1, "read \"%s\"\n", line);
+      result = 1;
+    }
+
+  if (getline (&line, &len, f3) != -1)
+    {
+      fputs ("second getline did not return -1\n", f1);
+      result = 1;
+    }
+
+  int ret = pclose (f2);
+  if (ret != 0)
+    {
+      fprintf (f1, "1st pclose returned %d\n", ret);
+      result = 1;
+    }
+
+  ret = pclose (f3);
+  if (ret != 0)
+    {
+      fprintf (f1, "2nd pclose returned %d\n", ret);
+      result = 1;
+    }
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-printf-bz18872.sh b/ap/libc/glibc/glibc-2.23/stdio-common/tst-printf-bz18872.sh
new file mode 100644
index 0000000..b96695b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-printf-bz18872.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+# Copyright (C) 2015-2016 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+# To test BZ #18872, we need a printf() with 10K arguments.
+# Such a printf could be generated with non-trivial macro
+# application, but it's simpler to generate the test source
+# via this script.
+
+n_args=10000
+
+cat <<'EOF'
+#include <stdio.h>
+#include <mcheck.h>
+
+/*
+  Compile do_test without optimization: GCC 4.9/5.0/6.0 takes a long time
+  to build this source. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67396  */
+
+__attribute__ ((optimize ("-O0")))
+int do_test (void)
+{
+    mtrace ();
+    printf (
+EOF
+
+for ((j = 0; j < $n_args / 10; j++)); do
+  for ((k = 0; k < 10; k++)); do
+    printf '"%%%d$s" ' $((10 * $j + $k + 1))
+  done
+  printf "\n"
+done
+
+printf '"%%%d$s",\n' $(($n_args + 1))
+
+for ((j = 0; j < $n_args / 10; j++)); do
+  for ((k = 0; k < 10; k++)); do
+    printf '"a", '
+  done
+  printf "  /* %4d */\n" $((10 * $j + $k))
+done
+
+printf '"\\n");'
+
+
+cat <<'EOF'
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
+
+EOF
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-printf-round.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-printf-round.c
new file mode 100644
index 0000000..93a29b5
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-printf-round.c
@@ -0,0 +1,234 @@
+/* Test for correct rounding of printf floating-point output.
+   Copyright (C) 2012-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <fenv.h>
+#include <stdio.h>
+#include <string.h>
+
+struct dec_test {
+  double d;
+  const char *fmt;
+  const char *rd, *rn, *rz, *ru;
+};
+
+static const struct dec_test dec_tests[] = {
+  { 1.5, "%.0f", "1", "2", "1", "2" },
+  { -1.5, "%.0f", "-2", "-2", "-1", "-1" },
+  { 2.5, "%.0f", "2", "2", "2", "3" },
+  { -2.5, "%.0f", "-3", "-2", "-2", "-2" },
+  { 1.4999, "%.0f", "1", "1", "1", "2" },
+  { -1.4999, "%.0f", "-2", "-1", "-1", "-1" },
+  { 1.5001, "%.0f", "1", "2", "1", "2" },
+  { -1.5001, "%.0f", "-2", "-2", "-1", "-1" },
+  { 2.4999, "%.0f", "2", "2", "2", "3" },
+  { -2.4999, "%.0f", "-3", "-2", "-2", "-2" },
+  { 2.5001, "%.0f", "2", "3", "2", "3" },
+  { -2.5001, "%.0f", "-3", "-3", "-2", "-2" },
+  { 1.0 / 3.0, "%f", "0.333333", "0.333333", "0.333333", "0.333334" },
+  { -1.0 / 3.0, "%f", "-0.333334", "-0.333333", "-0.333333", "-0.333333" },
+  { 0.2500001, "%.2e", "2.50e-01", "2.50e-01", "2.50e-01", "2.51e-01" },
+  { -0.2500001, "%.2e", "-2.51e-01", "-2.50e-01", "-2.50e-01", "-2.50e-01" },
+  { 1000001.0, "%.1e", "1.0e+06", "1.0e+06", "1.0e+06", "1.1e+06" },
+  { -1000001.0, "%.1e", "-1.1e+06", "-1.0e+06", "-1.0e+06", "-1.0e+06" },
+};
+
+static int
+test_dec_in_one_mode (double d, const char *fmt, const char *expected,
+		      const char *mode_name)
+{
+  char buf[100];
+  int ret = snprintf (buf, sizeof buf, fmt, d);
+  if (ret <= 0 || ret >= (int) sizeof buf)
+    {
+      printf ("snprintf for %a returned %d\n", d, ret);
+      return 1;
+    }
+  if (strcmp (buf, expected) == 0)
+    return 0;
+  else
+    {
+      printf ("snprintf (\"%s\", %a) returned \"%s\" not \"%s\" (%s)\n",
+	      fmt, d, buf, expected, mode_name);
+      return 1;
+    }
+}
+
+struct hex_test
+{
+  double d;
+  const char *fmt;
+  const char *rd[4], *rn[4], *rz[4], *ru[4];
+};
+
+static const struct hex_test hex_tests[] =
+  {
+    {
+      0x1.fffffp+4, "%.1a",
+      { "0x1.fp+4", "0x3.fp+3", "0x7.fp+2", "0xf.fp+1" },
+      { "0x2.0p+4", "0x4.0p+3", "0x8.0p+2", "0x1.0p+5" },
+      { "0x1.fp+4", "0x3.fp+3", "0x7.fp+2", "0xf.fp+1" },
+      { "0x2.0p+4", "0x4.0p+3", "0x8.0p+2", "0x1.0p+5" }
+    },
+    {
+      -0x1.fffffp+4, "%.1a",
+      { "-0x2.0p+4", "-0x4.0p+3", "-0x8.0p+2", "-0x1.0p+5" },
+      { "-0x2.0p+4", "-0x4.0p+3", "-0x8.0p+2", "-0x1.0p+5" },
+      { "-0x1.fp+4", "-0x3.fp+3", "-0x7.fp+2", "-0xf.fp+1" },
+      { "-0x1.fp+4", "-0x3.fp+3", "-0x7.fp+2", "-0xf.fp+1" }
+    },
+    {
+      0x1.88p+4, "%.1a",
+      { "0x1.8p+4", "0x3.1p+3", "0x6.2p+2", "0xc.4p+1" },
+      { "0x1.8p+4", "0x3.1p+3", "0x6.2p+2", "0xc.4p+1" },
+      { "0x1.8p+4", "0x3.1p+3", "0x6.2p+2", "0xc.4p+1" },
+      { "0x1.9p+4", "0x3.1p+3", "0x6.2p+2", "0xc.4p+1" }
+    },
+    {
+      -0x1.88p+4, "%.1a",
+      { "-0x1.9p+4", "-0x3.1p+3", "-0x6.2p+2", "-0xc.4p+1" },
+      { "-0x1.8p+4", "-0x3.1p+3", "-0x6.2p+2", "-0xc.4p+1" },
+      { "-0x1.8p+4", "-0x3.1p+3", "-0x6.2p+2", "-0xc.4p+1" },
+      { "-0x1.8p+4", "-0x3.1p+3", "-0x6.2p+2", "-0xc.4p+1" }
+    },
+    {
+      0x1.78p+4, "%.1a",
+      { "0x1.7p+4", "0x2.fp+3", "0x5.ep+2", "0xb.cp+1" },
+      { "0x1.8p+4", "0x2.fp+3", "0x5.ep+2", "0xb.cp+1" },
+      { "0x1.7p+4", "0x2.fp+3", "0x5.ep+2", "0xb.cp+1" },
+      { "0x1.8p+4", "0x2.fp+3", "0x5.ep+2", "0xb.cp+1" }
+    },
+    {
+      -0x1.78p+4, "%.1a",
+      { "-0x1.8p+4", "-0x2.fp+3", "-0x5.ep+2", "-0xb.cp+1" },
+      { "-0x1.8p+4", "-0x2.fp+3", "-0x5.ep+2", "-0xb.cp+1" },
+      { "-0x1.7p+4", "-0x2.fp+3", "-0x5.ep+2", "-0xb.cp+1" },
+      { "-0x1.7p+4", "-0x2.fp+3", "-0x5.ep+2", "-0xb.cp+1" }
+    },
+    {
+      64.0 / 3.0, "%.1a",
+      { "0x1.5p+4", "0x2.ap+3", "0x5.5p+2", "0xa.ap+1" },
+      { "0x1.5p+4", "0x2.bp+3", "0x5.5p+2", "0xa.bp+1" },
+      { "0x1.5p+4", "0x2.ap+3", "0x5.5p+2", "0xa.ap+1" },
+      { "0x1.6p+4", "0x2.bp+3", "0x5.6p+2", "0xa.bp+1" }
+    },
+    {
+      -64.0 / 3.0, "%.1a",
+      { "-0x1.6p+4", "-0x2.bp+3", "-0x5.6p+2", "-0xa.bp+1" },
+      { "-0x1.5p+4", "-0x2.bp+3", "-0x5.5p+2", "-0xa.bp+1" },
+      { "-0x1.5p+4", "-0x2.ap+3", "-0x5.5p+2", "-0xa.ap+1" },
+      { "-0x1.5p+4", "-0x2.ap+3", "-0x5.5p+2", "-0xa.ap+1" }
+    },
+  };
+
+static int
+test_hex_in_one_mode (double d, const char *fmt, const char *const expected[4],
+		      const char *mode_name)
+{
+  char buf[100];
+  int ret = snprintf (buf, sizeof buf, fmt, d);
+  if (ret <= 0 || ret >= (int) sizeof buf)
+    {
+      printf ("snprintf for %a returned %d\n", d, ret);
+      return 1;
+    }
+  if (strcmp (buf, expected[0]) == 0
+      || strcmp (buf, expected[1]) == 0
+      || strcmp (buf, expected[2]) == 0
+      || strcmp (buf, expected[3]) == 0)
+    return 0;
+  else
+    {
+      printf ("snprintf (\"%s\", %a) returned \"%s\" not "
+	      "\"%s\" or \"%s\" or \"%s\" or \"%s\" (%s)\n",
+	      fmt, d, buf, expected[0], expected[1], expected[2], expected[3],
+	      mode_name);
+      return 1;
+    }
+}
+
+static int
+do_test (void)
+{
+  int save_round_mode __attribute__ ((unused)) = fegetround ();
+  int result = 0;
+
+  for (size_t i = 0; i < sizeof (dec_tests) / sizeof (dec_tests[0]); i++)
+    {
+      result |= test_dec_in_one_mode (dec_tests[i].d, dec_tests[i].fmt,
+				      dec_tests[i].rn, "default rounding mode");
+#ifdef FE_DOWNWARD
+      if (!fesetround (FE_DOWNWARD))
+	{
+	  result |= test_dec_in_one_mode (dec_tests[i].d, dec_tests[i].fmt,
+					  dec_tests[i].rd, "FE_DOWNWARD");
+	  fesetround (save_round_mode);
+	}
+#endif
+#ifdef FE_TOWARDZERO
+      if (!fesetround (FE_TOWARDZERO))
+	{
+	  result |= test_dec_in_one_mode (dec_tests[i].d, dec_tests[i].fmt,
+					  dec_tests[i].rz, "FE_TOWARDZERO");
+	  fesetround (save_round_mode);
+	}
+#endif
+#ifdef FE_UPWARD
+      if (!fesetround (FE_UPWARD))
+	{
+	  result |= test_dec_in_one_mode (dec_tests[i].d, dec_tests[i].fmt,
+					  dec_tests[i].ru, "FE_UPWARD");
+	  fesetround (save_round_mode);
+	}
+#endif
+    }
+
+  for (size_t i = 0; i < sizeof (hex_tests) / sizeof (hex_tests[0]); i++)
+    {
+      result |= test_hex_in_one_mode (hex_tests[i].d, hex_tests[i].fmt,
+				      hex_tests[i].rn, "default rounding mode");
+#ifdef FE_DOWNWARD
+      if (!fesetround (FE_DOWNWARD))
+	{
+	  result |= test_hex_in_one_mode (hex_tests[i].d, hex_tests[i].fmt,
+					  hex_tests[i].rd, "FE_DOWNWARD");
+	  fesetround (save_round_mode);
+	}
+#endif
+#ifdef FE_TOWARDZERO
+      if (!fesetround (FE_TOWARDZERO))
+	{
+	  result |= test_hex_in_one_mode (hex_tests[i].d, hex_tests[i].fmt,
+					  hex_tests[i].rz, "FE_TOWARDZERO");
+	  fesetround (save_round_mode);
+	}
+#endif
+#ifdef FE_UPWARD
+      if (!fesetround (FE_UPWARD))
+	{
+	  result |= test_hex_in_one_mode (hex_tests[i].d, hex_tests[i].fmt,
+					  hex_tests[i].ru, "FE_UPWARD");
+	  fesetround (save_round_mode);
+	}
+#endif
+    }
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-printf.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-printf.c
new file mode 100644
index 0000000..2896b18
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-printf.c
@@ -0,0 +1,398 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifdef	BSD
+#include </usr/include/stdio.h>
+#define EXIT_SUCCESS 0
+#else
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#endif
+
+#include <float.h>
+#include <libc-internal.h>
+
+/* This whole file is picayune tests of corner cases of printf format strings.
+   The compiler warnings are not useful here.  */
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat");
+
+static void rfg1 (void);
+static void rfg2 (void);
+static void rfg3 (void);
+
+
+static void
+fmtchk (const char *fmt)
+{
+  (void) fputs(fmt, stdout);
+  (void) printf(":\t`");
+  (void) printf(fmt, 0x12);
+  (void) printf("'\n");
+}
+
+static void
+fmtst1chk (const char *fmt)
+{
+  (void) fputs(fmt, stdout);
+  (void) printf(":\t`");
+  (void) printf(fmt, 4, 0x12);
+  (void) printf("'\n");
+}
+
+static void
+fmtst2chk (const char *fmt)
+{
+  (void) fputs(fmt, stdout);
+  (void) printf(":\t`");
+  (void) printf(fmt, 4, 4, 0x12);
+  (void) printf("'\n");
+}
+
+/* This page is covered by the following copyright: */
+
+/* (C) Copyright C E Chew
+ *
+ * Feel free to copy, use and distribute this software provided:
+ *
+ *	1. you do not pretend that you wrote it
+ *	2. you leave this copyright notice intact.
+ */
+
+/*
+ * Extracted from exercise.c for glibc-1.05 bug report by Bruce Evans.
+ */
+
+#define DEC -123
+#define INT 255
+#define UNS (~0)
+
+/* Formatted Output Test
+ *
+ * This exercises the output formatting code.
+ */
+
+static void
+fp_test (void)
+{
+  int i, j, k, l;
+  char buf[7];
+  char *prefix = buf;
+  char tp[20];
+
+  puts("\nFormatted output test");
+  printf("prefix  6d      6o      6x      6X      6u\n");
+  strcpy(prefix, "%");
+  for (i = 0; i < 2; i++) {
+    for (j = 0; j < 2; j++) {
+      for (k = 0; k < 2; k++) {
+	for (l = 0; l < 2; l++) {
+	  strcpy(prefix, "%");
+	  if (i == 0) strcat(prefix, "-");
+	  if (j == 0) strcat(prefix, "+");
+	  if (k == 0) strcat(prefix, "#");
+	  if (l == 0) strcat(prefix, "0");
+	  printf("%5s |", prefix);
+	  strcpy(tp, prefix);
+	  strcat(tp, "6d |");
+	  printf(tp, DEC);
+	  strcpy(tp, prefix);
+	  strcat(tp, "6o |");
+	  printf(tp, INT);
+	  strcpy(tp, prefix);
+	  strcat(tp, "6x |");
+	  printf(tp, INT);
+	  strcpy(tp, prefix);
+	  strcat(tp, "6X |");
+	  printf(tp, INT);
+	  strcpy(tp, prefix);
+	  strcat(tp, "6u |");
+	  printf(tp, UNS);
+	  printf("\n");
+	}
+      }
+    }
+  }
+  printf("%10s\n", (char *) NULL);
+  printf("%-10s\n", (char *) NULL);
+}
+
+static int
+do_test (void)
+{
+  static char shortstr[] = "Hi, Z.";
+  static char longstr[] = "Good morning, Doctor Chandra.  This is Hal.  \
+I am ready for my first lesson today.";
+  int result = 0;
+
+  fmtchk("%.4x");
+  fmtchk("%04x");
+  fmtchk("%4.4x");
+  fmtchk("%04.4x");
+  fmtchk("%4.3x");
+  fmtchk("%04.3x");
+
+  fmtst1chk("%.*x");
+  fmtst1chk("%0*x");
+  fmtst2chk("%*.*x");
+  fmtst2chk("%0*.*x");
+
+#ifndef	BSD
+  printf("bad format:\t\"%b\"\n");
+  printf("nil pointer (padded):\t\"%10p\"\n", (void *) NULL);
+#endif
+
+  printf("decimal negative:\t\"%d\"\n", -2345);
+  printf("octal negative:\t\"%o\"\n", -2345);
+  printf("hex negative:\t\"%x\"\n", -2345);
+  printf("long decimal number:\t\"%ld\"\n", -123456L);
+  printf("long octal negative:\t\"%lo\"\n", -2345L);
+  printf("long unsigned decimal number:\t\"%lu\"\n", -123456L);
+  printf("zero-padded LDN:\t\"%010ld\"\n", -123456L);
+  printf("left-adjusted ZLDN:\t\"%-010ld\"\n", -123456L);
+  printf("space-padded LDN:\t\"%10ld\"\n", -123456L);
+  printf("left-adjusted SLDN:\t\"%-10ld\"\n", -123456L);
+
+  printf("zero-padded string:\t\"%010s\"\n", shortstr);
+  printf("left-adjusted Z string:\t\"%-010s\"\n", shortstr);
+  printf("space-padded string:\t\"%10s\"\n", shortstr);
+  printf("left-adjusted S string:\t\"%-10s\"\n", shortstr);
+  printf("null string:\t\"%s\"\n", (char *)NULL);
+  printf("limited string:\t\"%.22s\"\n", longstr);
+
+  printf("e-style >= 1:\t\"%e\"\n", 12.34);
+  printf("e-style >= .1:\t\"%e\"\n", 0.1234);
+  printf("e-style < .1:\t\"%e\"\n", 0.001234);
+  printf("e-style big:\t\"%.60e\"\n", 1e20);
+  printf ("e-style == .1:\t\"%e\"\n", 0.1);
+  printf("f-style >= 1:\t\"%f\"\n", 12.34);
+  printf("f-style >= .1:\t\"%f\"\n", 0.1234);
+  printf("f-style < .1:\t\"%f\"\n", 0.001234);
+  printf("g-style >= 1:\t\"%g\"\n", 12.34);
+  printf("g-style >= .1:\t\"%g\"\n", 0.1234);
+  printf("g-style < .1:\t\"%g\"\n", 0.001234);
+  printf("g-style big:\t\"%.60g\"\n", 1e20);
+
+  printf (" %6.5f\n", .099999999860301614);
+  printf (" %6.5f\n", .1);
+  printf ("x%5.4fx\n", .5);
+
+  printf ("%#03x\n", 1);
+
+  printf ("something really insane: %.10000f\n", 1.0);
+
+  {
+    double d = FLT_MIN;
+    int niter = 17;
+
+    while (niter-- != 0)
+      printf ("%.17e\n", d / 2);
+    fflush (stdout);
+  }
+
+  printf ("%15.5e\n", 4.9406564584124654e-324);
+
+#define FORMAT "|%12.4f|%12.4e|%12.4g|\n"
+  printf (FORMAT, 0.0, 0.0, 0.0);
+  printf (FORMAT, 1.0, 1.0, 1.0);
+  printf (FORMAT, -1.0, -1.0, -1.0);
+  printf (FORMAT, 100.0, 100.0, 100.0);
+  printf (FORMAT, 1000.0, 1000.0, 1000.0);
+  printf (FORMAT, 10000.0, 10000.0, 10000.0);
+  printf (FORMAT, 12345.0, 12345.0, 12345.0);
+  printf (FORMAT, 100000.0, 100000.0, 100000.0);
+  printf (FORMAT, 123456.0, 123456.0, 123456.0);
+#undef	FORMAT
+
+  {
+    char buf[20];
+    char buf2[512];
+    printf ("snprintf (\"%%30s\", \"foo\") == %d, \"%.*s\"\n",
+	    snprintf (buf, sizeof (buf), "%30s", "foo"), (int) sizeof (buf),
+	    buf);
+    printf ("snprintf (\"%%.999999u\", 10) == %d\n",
+	    snprintf(buf2, sizeof(buf2), "%.999999u", 10));
+  }
+
+  fp_test ();
+
+  printf ("%e should be 1.234568e+06\n", 1234567.8);
+  printf ("%f should be 1234567.800000\n", 1234567.8);
+  printf ("%g should be 1.23457e+06\n", 1234567.8);
+  printf ("%g should be 123.456\n", 123.456);
+  printf ("%g should be 1e+06\n", 1000000.0);
+  printf ("%g should be 10\n", 10.0);
+  printf ("%g should be 0.02\n", 0.02);
+
+#if 0
+  /* This test rather checks the way the compiler handles constant
+     folding.  gcc behavior wrt to this changed in 3.2 so it is not a
+     portable test.  */
+  {
+    double x=1.0;
+    printf("%.17f\n",(1.0/x/10.0+1.0)*x-x);
+  }
+#endif
+
+  {
+    char buf[200];
+
+    sprintf(buf,"%*s%*s%*s",-1,"one",-20,"two",-30,"three");
+
+    result |= strcmp (buf,
+		      "onetwo                 three                         ");
+
+    puts (result != 0 ? "Test failed!" : "Test ok.");
+  }
+
+  {
+    char buf[200];
+
+    sprintf (buf, "%07Lo", 040000000000ll);
+    printf ("sprintf (buf, \"%%07Lo\", 040000000000ll) = %s", buf);
+
+    if (strcmp (buf, "40000000000") != 0)
+      {
+	result = 1;
+	fputs ("\tFAILED", stdout);
+      }
+    puts ("");
+  }
+
+  printf ("printf (\"%%hhu\", %u) = %hhu\n", UCHAR_MAX + 2, UCHAR_MAX + 2);
+  printf ("printf (\"%%hu\", %u) = %hu\n", USHRT_MAX + 2, USHRT_MAX + 2);
+  printf ("printf (\"%%hhi\", %i) = %hhi\n", UCHAR_MAX + 2, UCHAR_MAX + 2);
+  printf ("printf (\"%%hi\", %i) = %hi\n", USHRT_MAX + 2, USHRT_MAX + 2);
+
+  printf ("printf (\"%%1$hhu\", %2$u) = %1$hhu\n",
+	  UCHAR_MAX + 2, UCHAR_MAX + 2);
+  printf ("printf (\"%%1$hu\", %2$u) = %1$hu\n", USHRT_MAX + 2, USHRT_MAX + 2);
+  printf ("printf (\"%%1$hhi\", %2$i) = %1$hhi\n",
+	  UCHAR_MAX + 2, UCHAR_MAX + 2);
+  printf ("printf (\"%%1$hi\", %2$i) = %1$hi\n", USHRT_MAX + 2, USHRT_MAX + 2);
+
+  puts ("--- Should be no further output. ---");
+  rfg1 ();
+  rfg2 ();
+  rfg3 ();
+
+  {
+    char bytes[7];
+    char buf[20];
+
+    memset (bytes, '\xff', sizeof bytes);
+    sprintf (buf, "foo%hhn\n", &bytes[3]);
+    if (bytes[0] != '\xff' || bytes[1] != '\xff' || bytes[2] != '\xff'
+	|| bytes[4] != '\xff' || bytes[5] != '\xff' || bytes[6] != '\xff')
+      {
+	puts ("%hhn overwrite more bytes");
+	result = 1;
+      }
+    if (bytes[3] != 3)
+      {
+	puts ("%hhn wrote incorrect value");
+	result = 1;
+      }
+  }
+
+  return result != 0;
+}
+
+static void
+rfg1 (void)
+{
+  char buf[100];
+
+  sprintf (buf, "%5.s", "xyz");
+  if (strcmp (buf, "     ") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, "     ");
+  sprintf (buf, "%5.f", 33.3);
+  if (strcmp (buf, "   33") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, "   33");
+  sprintf (buf, "%8.e", 33.3e7);
+  if (strcmp (buf, "   3e+08") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, "   3e+08");
+  sprintf (buf, "%8.E", 33.3e7);
+  if (strcmp (buf, "   3E+08") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, "   3E+08");
+  sprintf (buf, "%.g", 33.3);
+  if (strcmp (buf, "3e+01") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, "3e+01");
+  sprintf (buf, "%.G", 33.3);
+  if (strcmp (buf, "3E+01") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, "3E+01");
+}
+
+static void
+rfg2 (void)
+{
+  int prec;
+  char buf[100];
+
+  prec = 0;
+  sprintf (buf, "%.*g", prec, 3.3);
+  if (strcmp (buf, "3") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, "3");
+  prec = 0;
+  sprintf (buf, "%.*G", prec, 3.3);
+  if (strcmp (buf, "3") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, "3");
+  prec = 0;
+  sprintf (buf, "%7.*G", prec, 3.33);
+  if (strcmp (buf, "      3") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, "      3");
+  prec = 3;
+  sprintf (buf, "%04.*o", prec, 33);
+  if (strcmp (buf, " 041") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, " 041");
+  prec = 7;
+  sprintf (buf, "%09.*u", prec, 33);
+  if (strcmp (buf, "  0000033") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, "  0000033");
+  prec = 3;
+  sprintf (buf, "%04.*x", prec, 33);
+  if (strcmp (buf, " 021") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, " 021");
+  prec = 3;
+  sprintf (buf, "%04.*X", prec, 33);
+  if (strcmp (buf, " 021") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf, " 021");
+}
+
+static void
+rfg3 (void)
+{
+  char buf[100];
+  double g = 5.0000001;
+  unsigned long l = 1234567890;
+  double d = 321.7654321;
+  const char s[] = "test-string";
+  int i = 12345;
+  int h = 1234;
+
+  sprintf (buf,
+	   "%1$*5$d %2$*6$hi %3$*7$lo %4$*8$f %9$*12$e %10$*13$g %11$*14$s",
+	   i, h, l, d, 8, 5, 14, 14, d, g, s, 14, 3, 14);
+  if (strcmp (buf,
+	      "   12345  1234    11145401322     321.765432   3.217654e+02   5    test-string") != 0)
+    printf ("got: '%s', expected: '%s'\n", buf,
+	    "   12345  1234    11145401322     321.765432   3.217654e+02   5    test-string");
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-printf.sh b/ap/libc/glibc/glibc-2.23/stdio-common/tst-printf.sh
new file mode 100644
index 0000000..5755a1b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-printf.sh
@@ -0,0 +1,268 @@
+#!/bin/sh
+# Testing of printf.
+# Copyright (C) 2000-2016 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+set -e
+
+common_objpfx=$1; shift
+test_program_prefix=$1; shift
+
+status=0
+
+${test_program_prefix} \
+  ${common_objpfx}stdio-common/tst-printf \
+  > ${common_objpfx}stdio-common/tst-printf.out || status=1
+
+cat <<'EOF' |
+%.4x:	`0012'
+%04x:	`0012'
+%4.4x:	`0012'
+%04.4x:	`0012'
+%4.3x:	` 012'
+%04.3x:	` 012'
+%.*x:	`0012'
+%0*x:	`0012'
+%*.*x:	`0012'
+%0*.*x:	`0012'
+bad format:	"%b"
+nil pointer (padded):	"     (nil)"
+decimal negative:	"-2345"
+octal negative:	"37777773327"
+hex negative:	"fffff6d7"
+long decimal number:	"-123456"
+long octal negative:	"37777773327"
+long unsigned decimal number:	"4294843840"
+zero-padded LDN:	"-000123456"
+left-adjusted ZLDN:	"-123456   "
+space-padded LDN:	"   -123456"
+left-adjusted SLDN:	"-123456   "
+zero-padded string:	"    Hi, Z."
+left-adjusted Z string:	"Hi, Z.    "
+space-padded string:	"    Hi, Z."
+left-adjusted S string:	"Hi, Z.    "
+null string:	"(null)"
+limited string:	"Good morning, Doctor C"
+e-style >= 1:	"1.234000e+01"
+e-style >= .1:	"1.234000e-01"
+e-style < .1:	"1.234000e-03"
+e-style big:	"1.000000000000000000000000000000000000000000000000000000000000e+20"
+e-style == .1:	"1.000000e-01"
+f-style >= 1:	"12.340000"
+f-style >= .1:	"0.123400"
+f-style < .1:	"0.001234"
+g-style >= 1:	"12.34"
+g-style >= .1:	"0.1234"
+g-style < .1:	"0.001234"
+g-style big:	"100000000000000000000"
+ 0.10000
+ 0.10000
+x0.5000x
+0x1
+something really insane: 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+   4.94066e-324
+|      0.0000|  0.0000e+00|           0|
+|      1.0000|  1.0000e+00|           1|
+|     -1.0000| -1.0000e+00|          -1|
+|    100.0000|  1.0000e+02|         100|
+|   1000.0000|  1.0000e+03|        1000|
+|  10000.0000|  1.0000e+04|       1e+04|
+|  12345.0000|  1.2345e+04|   1.234e+04|
+| 100000.0000|  1.0000e+05|       1e+05|
+| 123456.0000|  1.2346e+05|   1.235e+05|
+snprintf ("%30s", "foo") == 30, "                   "
+snprintf ("%.999999u", 10) == 999999
+
+Formatted output test
+prefix  6d      6o      6x      6X      6u
+%-+#0 |-123   |0377   |0xff   |0XFF   |4294967295 |
+ %-+# |-123   |0377   |0xff   |0XFF   |4294967295 |
+ %-+0 |-123   |377    |ff     |FF     |4294967295 |
+  %-+ |-123   |377    |ff     |FF     |4294967295 |
+ %-#0 |-123   |0377   |0xff   |0XFF   |4294967295 |
+  %-# |-123   |0377   |0xff   |0XFF   |4294967295 |
+  %-0 |-123   |377    |ff     |FF     |4294967295 |
+   %- |-123   |377    |ff     |FF     |4294967295 |
+ %+#0 |-00123 |000377 |0x00ff |0X00FF |4294967295 |
+  %+# |  -123 |  0377 |  0xff |  0XFF |4294967295 |
+  %+0 |-00123 |000377 |0000ff |0000FF |4294967295 |
+   %+ |  -123 |   377 |    ff |    FF |4294967295 |
+  %#0 |-00123 |000377 |0x00ff |0X00FF |4294967295 |
+   %# |  -123 |  0377 |  0xff |  0XFF |4294967295 |
+   %0 |-00123 |000377 |0000ff |0000FF |4294967295 |
+    % |  -123 |   377 |    ff |    FF |4294967295 |
+    (null)
+(null)    
+1.234568e+06 should be 1.234568e+06
+1234567.800000 should be 1234567.800000
+1.23457e+06 should be 1.23457e+06
+123.456 should be 123.456
+1e+06 should be 1e+06
+10 should be 10
+0.02 should be 0.02
+Test ok.
+sprintf (buf, "%07Lo", 040000000000ll) = 40000000000
+printf ("%hhu", 257) = 1
+printf ("%hu", 65537) = 1
+printf ("%hhi", 257) = 1
+printf ("%hi", 65537) = 1
+printf ("%1$hhu", 257) = 1
+printf ("%1$hu", 65537) = 1
+printf ("%1$hhi", 257) = 1
+printf ("%1$hi", 65537) = 1
+--- Should be no further output. ---
+EOF
+cmp - ${common_objpfx}stdio-common/tst-printf.out > /dev/null 2>&1 ||
+cat <<'EOF' |
+%.4x:	`0012'
+%04x:	`0012'
+%4.4x:	`0012'
+%04.4x:	`0012'
+%4.3x:	` 012'
+%04.3x:	` 012'
+%.*x:	`0012'
+%0*x:	`0012'
+%*.*x:	`0012'
+%0*.*x:	`0012'
+bad format:	"%b"
+nil pointer (padded):	"     (nil)"
+decimal negative:	"-2345"
+octal negative:	"37777773327"
+hex negative:	"fffff6d7"
+long decimal number:	"-123456"
+long octal negative:	"1777777777777777773327"
+long unsigned decimal number:	"18446744073709428160"
+zero-padded LDN:	"-000123456"
+left-adjusted ZLDN:	"-123456   "
+space-padded LDN:	"   -123456"
+left-adjusted SLDN:	"-123456   "
+zero-padded string:	"    Hi, Z."
+left-adjusted Z string:	"Hi, Z.    "
+space-padded string:	"    Hi, Z."
+left-adjusted S string:	"Hi, Z.    "
+null string:	"(null)"
+limited string:	"Good morning, Doctor C"
+e-style >= 1:	"1.234000e+01"
+e-style >= .1:	"1.234000e-01"
+e-style < .1:	"1.234000e-03"
+e-style big:	"1.000000000000000000000000000000000000000000000000000000000000e+20"
+e-style == .1:	"1.000000e-01"
+f-style >= 1:	"12.340000"
+f-style >= .1:	"0.123400"
+f-style < .1:	"0.001234"
+g-style >= 1:	"12.34"
+g-style >= .1:	"0.1234"
+g-style < .1:	"0.001234"
+g-style big:	"100000000000000000000"
+ 0.10000
+ 0.10000
+x0.5000x
+0x1
+something really insane: 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+5.87747175411143754e-39
+   4.94066e-324
+|      0.0000|  0.0000e+00|           0|
+|      1.0000|  1.0000e+00|           1|
+|     -1.0000| -1.0000e+00|          -1|
+|    100.0000|  1.0000e+02|         100|
+|   1000.0000|  1.0000e+03|        1000|
+|  10000.0000|  1.0000e+04|       1e+04|
+|  12345.0000|  1.2345e+04|   1.234e+04|
+| 100000.0000|  1.0000e+05|       1e+05|
+| 123456.0000|  1.2346e+05|   1.235e+05|
+snprintf ("%30s", "foo") == 30, "                   "
+snprintf ("%.999999u", 10) == 999999
+
+Formatted output test
+prefix  6d      6o      6x      6X      6u
+%-+#0 |-123   |0377   |0xff   |0XFF   |4294967295 |
+ %-+# |-123   |0377   |0xff   |0XFF   |4294967295 |
+ %-+0 |-123   |377    |ff     |FF     |4294967295 |
+  %-+ |-123   |377    |ff     |FF     |4294967295 |
+ %-#0 |-123   |0377   |0xff   |0XFF   |4294967295 |
+  %-# |-123   |0377   |0xff   |0XFF   |4294967295 |
+  %-0 |-123   |377    |ff     |FF     |4294967295 |
+   %- |-123   |377    |ff     |FF     |4294967295 |
+ %+#0 |-00123 |000377 |0x00ff |0X00FF |4294967295 |
+  %+# |  -123 |  0377 |  0xff |  0XFF |4294967295 |
+  %+0 |-00123 |000377 |0000ff |0000FF |4294967295 |
+   %+ |  -123 |   377 |    ff |    FF |4294967295 |
+  %#0 |-00123 |000377 |0x00ff |0X00FF |4294967295 |
+   %# |  -123 |  0377 |  0xff |  0XFF |4294967295 |
+   %0 |-00123 |000377 |0000ff |0000FF |4294967295 |
+    % |  -123 |   377 |    ff |    FF |4294967295 |
+    (null)
+(null)    
+1.234568e+06 should be 1.234568e+06
+1234567.800000 should be 1234567.800000
+1.23457e+06 should be 1.23457e+06
+123.456 should be 123.456
+1e+06 should be 1e+06
+10 should be 10
+0.02 should be 0.02
+Test ok.
+sprintf (buf, "%07Lo", 040000000000ll) = 40000000000
+printf ("%hhu", 257) = 1
+printf ("%hu", 65537) = 1
+printf ("%hhi", 257) = 1
+printf ("%hi", 65537) = 1
+printf ("%1$hhu", 257) = 1
+printf ("%1$hu", 65537) = 1
+printf ("%1$hhi", 257) = 1
+printf ("%1$hi", 65537) = 1
+--- Should be no further output. ---
+EOF
+cmp - ${common_objpfx}stdio-common/tst-printf.out > /dev/null 2>&1 ||
+{
+  status=1
+  echo "*** output comparison failed"
+}
+
+exit $status
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-printfsz.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-printfsz.c
new file mode 100644
index 0000000..8a3385f
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-printfsz.c
@@ -0,0 +1,81 @@
+/* Based on code by Larry McVoy <lm@neteng.engr.sgi.com>.  */
+#include <printf.h>
+#include <stdio.h>
+#include <string.h>
+#include <libc-internal.h>
+
+#define V       12345678.12345678
+
+
+static int
+do_test (void)
+{
+  char buf[1024];
+  int result = 0;
+
+  /* Testing printf_size_info requires using the deprecated
+     register_printf_function, resulting in warnings
+     "'register_printf_function' is deprecated".  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
+  /* Register the printf handlers.  */
+  register_printf_function ('b', printf_size, printf_size_info);
+  register_printf_function ('B', printf_size, printf_size_info);
+  DIAG_POP_NEEDS_COMMENT;
+
+  /* All of the formats here use the nonstandard extension specifier
+     just registered, so compiler checking will never grok them.  */
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat");
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat-extra-args");
+
+  sprintf (buf, "%g %b %B %.0b %.0B %.1b %.1B %8.0b %08.0B",
+	   V, 1025., V, V, V, V, V, V, V, V);
+  fputs (buf, stdout);
+  if (strcmp (buf, "\
+1.23457e+07 1.001k 12.346M 12m 12M 11.8m 12.3M      12m 0000012M"))
+    {
+      result = 1;
+      fputs (" -> WRONG\n", stdout);
+    }
+  else
+    fputs (" -> OK\n", stdout);
+
+  sprintf (buf, "%b|%B|%-20.2b|%-10.0b|%-10.8b|%-10.2B|",
+	   V, V, V, V, V, V, V, V, V, V, V);
+  fputs (buf, stdout);
+  if (strcmp (buf, "\
+11.774m|12.346M|11.77m              |12m       |11.77375614m|12.35M    |"))
+    {
+      result = 1;
+      fputs (" -> WRONG\n", stdout);
+    }
+  else
+    fputs (" -> OK\n", stdout);
+
+  sprintf (buf, "%#.0B %*.0b %10.*b %*.*B %10.2B",
+	   V, 2, V, 2, V, 10, 2, V, V);
+  fputs (buf, stdout);
+  if (strcmp (buf, "12.M 12m     11.77m     12.35M     12.35M"))
+    {
+      result = 1;
+      fputs (" -> WRONG\n", stdout);
+    }
+  else
+    fputs (" -> OK\n", stdout);
+
+  sprintf (buf, "%6B %6.1B %b %B %b %B",
+	   V, V, 1000.0, 1000.0, 1024.0, 1024.0);
+  fputs (buf, stdout);
+  if (strcmp (buf, "12.346M  12.3M 1000.000  1.000K 1.000k 1.024K"))
+    {
+      result = 1;
+      fputs (" -> WRONG\n", stdout);
+    }
+  else
+    fputs (" -> OK\n", stdout);
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-put-error.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-put-error.c
new file mode 100644
index 0000000..86e7fbd
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-put-error.c
@@ -0,0 +1,69 @@
+/* Verify that print functions return error when there is an I/O error.
+
+   Copyright (C) 2005-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <error.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+
+static int
+do_test (void)
+{
+  char tmpl[] = "/tmp/tst-put-error.XXXXXX";
+  int fd = mkstemp (tmpl);
+  if (fd == -1)
+    error (EXIT_FAILURE, errno, "cannot create temporary file");
+  FILE *fp = fdopen (fd, "w");
+  if (fp == NULL)
+    error (EXIT_FAILURE, errno, "fdopen");
+
+  /* All of the tests below verify that flushing buffers result in failure of
+     the fprintf calls.  We ensure that the buffer is flushed at the end of
+     each fprintf call by doing two things - setting the file pointer to
+     line-buffered so that it is flushed whenever it encounters a newline and
+     then ensuring that there is a newline in each of the format strings we
+     pass to fprintf.  */
+
+  setlinebuf (fp);
+  close (fd);
+  unlink (tmpl);
+
+  int n = fprintf (fp, "hello world\n");
+  printf ("fprintf = %d\n", n);
+  if (n >= 0)
+    error (EXIT_FAILURE, 0, "first fprintf succeeded");
+
+  n = fprintf (fp, "hello world\n");
+  printf ("fprintf = %d\n", n);
+  if (n >= 0)
+    error (EXIT_FAILURE, 0, "second fprintf succeeded");
+
+  /* Padded printing takes a different code path.  */
+  n = fprintf (fp, "%100s\n", "foo");
+  printf ("fprintf = %d\n", n);
+  if (n >= 0)
+    error (EXIT_FAILURE, 0, "padded fprintf succeeded");
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-rndseek.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-rndseek.c
new file mode 100644
index 0000000..cf53aa4
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-rndseek.c
@@ -0,0 +1,144 @@
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+
+static char fname[] = "/tmp/rndseek.XXXXXX";
+static char tempdata[65 * 1024];
+
+
+static int do_test (void);
+#define TEST_FUNCTION do_test ()
+#define TIMEOUT 10
+
+#include "../test-skeleton.c"
+
+
+static int
+fp_test (const char *name, FILE *fp)
+{
+  int result = 0;
+  int rounds = 10000;
+
+  do
+    {
+      int idx = random () % (sizeof (tempdata) - 2);
+      char ch1;
+      char ch2;
+
+      if (fseek (fp, idx, SEEK_SET) != 0)
+	{
+	  printf ("%s: %d: fseek failed: %m\n", name, rounds);
+	  result = 1;
+	  break;
+	}
+
+      ch1 = fgetc_unlocked (fp);
+      ch2 = tempdata[idx];
+      if (ch1 != ch2)
+	{
+	  printf ("%s: %d: character at index %d not what is expected ('%c' vs '%c')\n",
+		  name, rounds, idx, ch1, ch2);
+	  result = 1;
+	  break;
+	}
+
+      ch1 = fgetc (fp);
+      ch2 = tempdata[idx + 1];
+      if (ch1 != ch2)
+	{
+	  printf ("%s: %d: character at index %d not what is expected ('%c' vs '%c')\n",
+		  name, rounds, idx + 1, ch1, ch2);
+	  result = 1;
+	  break;
+	}
+    }
+  while (--rounds > 0);
+
+  fclose (fp);
+
+  return result;
+}
+
+
+static int
+do_test (void)
+{
+  int fd;
+  FILE *fp;
+  size_t i;
+  int result;
+
+  fd = mkstemp (fname);
+  if (fd == -1)
+    {
+      printf ("cannot open temporary file: %m\n");
+      return 1;
+    }
+  /* Make sure the file gets removed.  */
+  add_temp_file (fname);
+
+  /* Repeatability demands this.  */
+  srandom (42);
+
+  /* First create some temporary data.  */
+  for (i = 0; i < sizeof (tempdata); ++i)
+    tempdata[i] = 'a' + random () % 26;
+
+  /* Write this data to a file.  */
+  if (TEMP_FAILURE_RETRY (write (fd, tempdata, sizeof (tempdata)))
+      != sizeof (tempdata))
+    {
+      printf ("cannot wrote data to temporary file: %m\n");
+      return 1;
+    }
+
+  /* Now try reading the data.  */
+  fp = fdopen (dup (fd), "r");
+  if (fp == NULL)
+    {
+      printf ("cannot duplicate temporary file descriptor: %m\n");
+      return 1;
+    }
+
+  rewind (fp);
+  for (i = 0; i < sizeof (tempdata); ++i)
+    {
+      int ch0 = fgetc (fp);
+      char ch1 = ch0;
+      char ch2 = tempdata[i];
+
+      if (ch0 == EOF)
+	{
+	  puts ("premature end of file while reading data");
+	  return 1;
+	}
+
+      if (ch1 != ch2)
+	{
+	  printf ("%zd: '%c' vs '%c'\n", i, ch1, ch2);
+	  return 1;
+	}
+    }
+
+  result = fp_test ("fdopen(\"r\")", fp);
+
+  fp = fopen (fname, "r");
+  result |= fp_test ("fopen(\"r\")", fp);
+
+  fp = fopen64 (fname, "r");
+  result |= fp_test ("fopen64(\"r\")", fp);
+
+  /* The "rw" mode will prevent the mmap-using code from being used.  */
+  fp = fdopen (fd, "rw");
+  result = fp_test ("fdopen(\"rw\")", fp);
+
+  fp = fopen (fname, "rw");
+  result |= fp_test ("fopen(\"rw\")", fp);
+
+  fp = fopen64 (fname, "rw");
+  result |= fp_test ("fopen64(\"rw\")", fp);
+
+  return result;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-setvbuf1.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-setvbuf1.c
new file mode 100644
index 0000000..2241093
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-setvbuf1.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+
+static int
+do_test (void)
+{
+  if (setvbuf (stderr, NULL, _IOFBF, BUFSIZ) != 0)
+    {
+      puts ("Set full buffer error.");
+      return 1;
+    }
+
+  fprintf (stderr, "Output #1 <stderr>.\n");
+  printf ("Output #2 <stdout>.\n");
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-setvbuf1.expect b/ap/libc/glibc/glibc-2.23/stdio-common/tst-setvbuf1.expect
new file mode 100644
index 0000000..281c18c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-setvbuf1.expect
@@ -0,0 +1,2 @@
+Output #2 <stdout>.
+Output #1 <stderr>.
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-sprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-sprintf.c
new file mode 100644
index 0000000..d5284b9
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-sprintf.c
@@ -0,0 +1,90 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <locale.h>
+#include <string.h>
+#include <libc-internal.h>
+
+
+static int
+do_test (void)
+{
+  char buf[100];
+  int result = 0;
+
+  if (sprintf (buf, "%.0ls", L"foo") != 0
+      || strlen (buf) != 0)
+    {
+      puts ("sprintf (buf, \"%.0ls\", L\"foo\") produced some output");
+      result = 1;
+    }
+
+#define SIZE (1024*70000)
+#define STR(x) #x
+
+  char *dst = malloc (SIZE + 1);
+
+  if (dst == NULL)
+    {
+      puts ("memory allocation failure");
+      result = 1;
+    }
+  else
+    {
+      sprintf (dst, "%*s", SIZE, "");
+      if (strnlen (dst, SIZE + 1) != SIZE)
+	{
+	  puts ("sprintf (dst, \"%*s\", " STR(SIZE) ", \"\") did not produce enough output");
+	  result = 1;
+	}
+      free (dst);
+    }
+
+  if (sprintf (buf, "%1$d%3$.*2$s%4$d", 7, 67108863, "x", 8) != 3
+      || strcmp (buf, "7x8") != 0)
+    {
+      printf ("sprintf (buf, \"%%1$d%%3$.*2$s%%4$d\", 7, 67108863, \"x\", 8) produced `%s' output", buf);
+      result = 1;
+    }
+
+  /* We are testing a corner case of the sprintf format string here.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat");
+  int n = sprintf (buf, "%67108863.16\"%d", 7);
+  DIAG_POP_NEEDS_COMMENT;
+
+  if (n != 14 || strcmp (buf, "%67108863.16\"7") != 0)
+    {
+      printf ("sprintf (buf, \"%%67108863.16\\\"%%d\", 7) produced `%s' output",
+              buf);
+      result = 1;
+    }
+
+  /* We are testing a corner case of the sprintf format string here.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat");
+  n = sprintf (buf, "%*\"%d", 0x3ffffff, 7);
+  DIAG_POP_NEEDS_COMMENT;
+
+  if (n != 11 || strcmp (buf, "%67108863\"7") != 0)
+    {
+      printf ("sprintf (buf, \"%%*\\\"%%d\", 0x3ffffff, 7) produced `%s' output", buf);
+      result = 1;
+    }
+
+  if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
+    {
+      puts ("cannot set locale");
+      result = 1;
+    }
+  else if (sprintf (buf, "%.8s\n", "Foo: \277") != 7
+	   || strcmp (buf, "Foo: \277\n") != 0)
+    {
+      printf ("sprintf (buf, \"%%.8s\\n\", \"Foo: \\277\") produced '%s' output\n", buf);
+      result = 1;
+    }
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-sprintf2.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-sprintf2.c
new file mode 100644
index 0000000..0ddf15b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-sprintf2.c
@@ -0,0 +1,87 @@
+#include <float.h>
+#include <math.h>
+#include <stdio.h>
+#include <string.h>
+
+static int
+do_test (void)
+{
+#if LDBL_MANT_DIG >= 106
+  volatile union { long double l; long long x[2]; } u, v;
+  char buf[64];
+#endif
+  int result = 0;
+
+#if LDBL_MANT_DIG == 106 || LDBL_MANT_DIG == 113
+# define COMPARE_LDBL(u, v) \
+  ((u).l == (v).l && (u).x[0] == (v).x[0] && (u).x[1] == (v).x[1])
+#else
+# define COMPARE_LDBL(u, v) ((u).l == (v).l)
+#endif
+
+#define TEST(val) \
+  do									   \
+    {									   \
+      u.l = (val);							   \
+      snprintf (buf, sizeof buf, "%LaL", u.l);				   \
+      if (strcmp (buf, #val) != 0)					   \
+	{								   \
+	  printf ("Error on line %d: %s != %s\n", __LINE__, buf, #val);	   \
+	  result = 1;							   \
+	}								   \
+      if (sscanf (#val, "%La", &v.l) != 1 || !COMPARE_LDBL (u, v))	   \
+	{								   \
+	  printf ("Error sscanf on line %d: %La != %La\n", __LINE__,	   \
+		  u.l, v.l);						   \
+	  result = 1;							   \
+	}								   \
+      /* printf ("%s %La %016Lx %016Lx\n", #val, u.l, u.x[0], u.x[1]); */  \
+    }									   \
+  while (0)
+
+#if LDBL_MANT_DIG >= 106
+# if LDBL_MANT_DIG == 106
+  TEST (0x0.ffffffffffffp-1022L);
+  TEST (0x0.ffffffffffff1p-1022L);
+  TEST (0x0.fffffffffffffp-1022L);
+# endif
+  TEST (0x1p-1022L);
+  TEST (0x1.0000000000001p-1022L);
+  TEST (0x1.00000000001e7p-1022L);
+  TEST (0x1.fffffffffffffp-1022L);
+  TEST (0x1p-1021L);
+  TEST (0x1.00000000000008p-1021L);
+  TEST (0x1.0000000000001p-1021L);
+  TEST (0x1.00000000000018p-1021L);
+  TEST (0x1.0000000000000f8p-1017L);
+  TEST (0x1.0000000000001p-1017L);
+  TEST (0x1.000000000000108p-1017L);
+  TEST (0x1.000000000000dcf8p-1013L);
+  TEST (0x1.000000000000ddp-1013L);
+  TEST (0x1.000000000000dd08p-1013L);
+  TEST (0x1.ffffffffffffffffffffffffffp-1L);
+  TEST (0x1.ffffffffffffffffffffffffff8p-1L);
+  TEST (0x1p+0L);
+  TEST (0x1.000000000000000000000000008p+0L);
+  TEST (0x1.00000000000000000000000001p+0L);
+  TEST (0x1.000000000000000000000000018p+0L);
+  TEST (0x1.23456789abcdef123456789abc8p+0L);
+  TEST (0x1.23456789abcde7123456789abc8p+0L);
+  TEST (0x1.23456789abcdef123456789abc8p+64L);
+  TEST (0x1.23456789abcde7123456789abc8p+64L);
+  TEST (0x1.123456789abcdef123456789p-969L);
+# if LDBL_MANT_DIG == 106
+  TEST (-0x1.2d71957cc1263bbbeb1d365f1e8p-969L);
+  TEST (0x1.23456789abcdef0123456789abp-970L);
+  TEST (0x1.579bde02468acp-1001L);
+  TEST (0x0.abcdef0123456p-1022L);
+  TEST (0x1.abcdef0123456p-1022L);
+  TEST (0x1.abcdef012345678p-1014L);
+  TEST (0x1.abcdef0123456f8p-1014L);
+# endif
+#endif
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-sprintf3.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-sprintf3.c
new file mode 100644
index 0000000..cffd1b6
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-sprintf3.c
@@ -0,0 +1,93 @@
+/* Copyright (C) 2012-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Test bug #13941.  */
+
+#include <float.h>
+#include <math.h>
+#include <stdio.h>
+#include <string.h>
+
+static int
+do_test (void)
+{
+#if LDBL_MANT_DIG >= 106
+  volatile union { long double l; long long x[2]; } u, v;
+  char buf[64];
+#endif
+  int result = 0;
+
+#if LDBL_MANT_DIG == 106 || LDBL_MANT_DIG == 113
+# define COMPARE_LDBL(u, v) \
+  ((u).l == (v).l && (u).x[0] == (v).x[0] && (u).x[1] == (v).x[1])
+#else
+# define COMPARE_LDBL(u, v) ((u).l == (v).l)
+#endif
+
+#define TEST(val) \
+  do									   \
+    {									   \
+      u.l = (val);							   \
+      snprintf (buf, sizeof buf, "%.30LgL", u.l);			   \
+      if (strcmp (buf, #val) != 0)					   \
+	{								   \
+	  printf ("Error on line %d: %s != %s\n", __LINE__, buf, #val);	   \
+	  result = 1;							   \
+	}								   \
+      if (sscanf (#val, "%Lg", &v.l) != 1 || !COMPARE_LDBL (u, v))	   \
+	{								   \
+	  printf ("Error sscanf on line %d: %.30Lg != %.30Lg\n", __LINE__, \
+		  u.l, v.l);						   \
+	  result = 1;							   \
+	}								   \
+      /* printf ("%s %Lg %016Lx %016Lx\n", #val, u.l, u.x[0], u.x[1]); */  \
+    }									   \
+  while (0)
+
+#if LDBL_MANT_DIG >= 106
+# if LDBL_MANT_DIG == 106
+  TEST (2.22507385850719347803989925739e-308L);
+  TEST (2.22507385850719397210554509863e-308L);
+  TEST (2.22507385850720088902458687609e-308L);
+# endif
+  TEST (2.22507385850720138309023271733e-308L);
+  TEST (2.22507385850720187715587855858e-308L);
+  TEST (2.2250738585074419930597574044e-308L);
+  TEST (4.45014771701440227211481959342e-308L);
+  TEST (4.45014771701440276618046543466e-308L);
+  TEST (4.45014771701440375431175711716e-308L);
+  TEST (4.45014771701440474244304879965e-308L);
+  TEST (7.12023634722304600689881138745e-307L);
+  TEST (1.13923781555569064960474854133e-305L);
+  TEST (1.13777777777777776389998996996L);
+  TEST (1.13777777777777765287768750745L);
+  TEST (20988295479420645138.2044444444L);
+  TEST (20988295479420643090.2044444444L);
+  TEST (2.14668699894294423266045294316e-292L);
+# if LDBL_MANT_DIG == 106
+  TEST (-2.35993711055432139266626434123e-292L);
+  TEST (6.26323524637968345414769634658e-302L);
+  TEST (1.49327164802066885331814201989e-308L);
+  TEST (3.71834550652787023640837473722e-308L);
+  TEST (9.51896449671134907001349268087e-306L);
+# endif
+#endif
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-sscanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-sscanf.c
new file mode 100644
index 0000000..f52cc9e
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-sscanf.c
@@ -0,0 +1,273 @@
+/* Copyright (C) 2000-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jakub Jelinek <jakub@redhat.com>, 2000.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <locale.h>
+
+#ifndef CHAR
+# define CHAR char
+# define L(str) str
+# define SSCANF sscanf
+#endif
+
+const CHAR *str_double[] =
+{
+  L("-.10000E+020.20000E+020.25000E+010.40000E+010.50000E+010.12500E+01"),
+  L("0.10000E+020.20000E+020.25000E+010.40000E+010.50000E+010.12500E+01"),
+  L("-1234567E0198765432E0912345678901987654321091234567890198765432109"),
+  L("-0.1000E+020.20000E+020.25000E+010.40000E+010.50000E+010.12500E+01")
+};
+
+const double val_double[] =
+{
+  -.10000E+02, 0.20000E+02, 0.25000E+01, 0.40000E+01, 0.50000E+01, 0.12500E+01,
+  0.10000E+02, 0.20000E+02, 0.25000E+01, 0.40000E+01, 0.50000E+01, 0.12500E+01,
+  -1234567E01, 98765432E09, 12345678901.0, 98765432109.0, 12345678901.0,
+    98765432109.0,
+  -0.1000E+02, 0.20000E+02, 0.25000E+01, 0.40000E+01, 0.50000E+01, 0.12500E+01
+};
+
+const CHAR *str_long[] =
+{
+  L("-12345678987654321123456789987654321123456789987654321"),
+  L("-12345678987654321123456789987654321123456789987654321"),
+  L("-12,345,678987,654,321123,456,789987,654,321123,456,789987,654,321"),
+  L("-12,345,678987,654,321123,456,789987,654,321123,456,789987,654,321")
+};
+
+const CHAR *fmt_long[] =
+{
+  L("%9ld%9ld%9ld%9ld%9ld%9ld"),
+  L("%I9ld%I9ld%I9ld%I9ld%I9ld%I9ld"),
+  L("%'11ld%'11ld%'11ld%'11ld%'11ld%'11ld"),
+  L("%I'11ld%I'11ld%I'11ld%I'11ld%I'11ld%I'11ld")
+};
+
+const long int val_long[] =
+{
+  -12345678, 987654321, 123456789, 987654321, 123456789, 987654321
+};
+
+struct test
+{
+  const CHAR *str;
+  const CHAR *fmt;
+  int retval;
+} int_tests[] =
+{
+  { L("foo\n"), L("foo\nbar"), -1 },
+  { L("foo\n"), L("foo bar"), -1 },
+  { L("foo\n"), L("foo %d"), -1 },
+  { L("foo\n"), L("foo\n%d"), -1 },
+  { L("foon"), L("foonbar"), -1 },
+  { L("foon"), L("foon%d"), -1 },
+  { L("foo "), L("foo bar"), -1 },
+  { L("foo "), L("foo %d"), -1 },
+  { L("foo\t"), L("foo\tbar"), -1 },
+  { L("foo\t"), L("foo bar"), -1 },
+  { L("foo\t"), L("foo %d"), -1 },
+  { L("foo\t"), L("foo\t%d"), -1 },
+  { L("foo"), L("foo"), 0 },
+  { L("foon"), L("foo bar"), 0 },
+  { L("foon"), L("foo %d"), 0 },
+  { L("foo "), L("fooxbar"), 0 },
+  { L("foo "), L("foox%d"), 0 },
+  { L("foo bar"), L("foon"), 0 },
+  { L("foo bar"), L("foo bar"), 0 },
+  { L("foo bar"), L("foo %d"), 0 },
+  { L("foo bar"), L("foon%d"), 0 },
+  { L("foo (nil)"), L("foo %p"), 1},
+  { L("foo (nil)"), L("foo %4p"), 0},
+  { L("foo "), L("foo %n"), 0 },
+  { L("foo%bar1"), L("foo%%bar%d"), 1 },
+  /* Some OSes skip whitespace here while others don't.  */
+  { L("foo \t %bar1"), L("foo%%bar%d"), 1 }
+};
+
+struct test double_tests[] =
+{
+  { L("-1"), L("%1g"), 0 },
+  { L("-.1"), L("%2g"), 0 },
+  { L("-inf"), L("%3g"), 0 },
+  { L("+0"), L("%1g"),  },
+  { L("-0x1p0"), L("%2g"), 1 },
+  { L("-..1"), L("%g"), 0 },
+  { L("-inf"), L("%g"), 1 }
+};
+
+struct test2
+{
+  const CHAR *str;
+  const CHAR *fmt;
+  int retval;
+  char residual;
+} double_tests2[] =
+{
+  { L("0e+0"), L("%g%c"), 1, 0 },
+  { L("0xe+0"), L("%g%c"), 2, '+' },
+  { L("0x.e+0"), L("%g%c"), 2, '+' },
+};
+
+static int
+do_test (void)
+{
+  double d[6];
+  long l[6];
+  int i, j;
+  int tst_locale;
+  int result = 0;
+
+  tst_locale = 1;
+  if (tst_locale)
+    if (setlocale (LC_ALL, "en_US.ISO-8859-1") == NULL)
+      {
+	puts ("Failed to set en_US locale, skipping locale related tests");
+	tst_locale = 0;
+      }
+
+  for (i = 0; i < 4; ++i)
+    {
+      if (SSCANF (str_double[i], L("%11lf%11lf%11lf%11lf%11lf%11lf"),
+		  &d[0], &d[1], &d[2], &d[3], &d[4], &d[5]) != 6)
+	{
+	  printf ("Double sscanf test %d wrong number of "
+		  "assigned inputs\n", i);
+	  result = 1;
+	}
+      else
+	for (j = 0; j < 6; ++j)
+	  if (d[j] != val_double[6 * i + j])
+	    {
+	      printf ("Double sscanf test %d failed (%g instead of %g)\n",
+		      i, d[j], val_double[6 * i + j]);
+	      result = 1;
+	      break;
+	    }
+    }
+
+  for (i = 0; i < 4; ++i)
+    {
+      if (SSCANF (str_long[i], fmt_long[i],
+		  &l[0], &l[1], &l[2], &l[3], &l[4], &l[5]) != 6)
+	{
+	  printf ("Integer sscanf test %d wrong number of "
+		  "assigned inputs\n", i);
+	  result = 1;
+	}
+      else
+	for (j = 0; j < 6; ++j)
+	  if (l[j] != val_long[j])
+	    {
+	      printf ("Integer sscanf test %d failed (%ld instead %ld)\n",
+		      i, l[j], val_long[j]);
+	      result = 1;
+	      break;
+	    }
+
+      if (! tst_locale)
+	break;
+    }
+
+  for (i = 0; i < sizeof (int_tests) / sizeof (int_tests[0]); ++i)
+    {
+      long dummy;
+      int ret;
+
+      if ((ret = SSCANF (int_tests[i].str, int_tests[i].fmt,
+			 &dummy)) != int_tests[i].retval)
+	{
+	  printf ("int_tests[%d] returned %d != %d\n",
+		  i, ret, int_tests[i].retval);
+	  result = 1;
+	}
+    }
+
+  for (i = 0; i < sizeof (double_tests) / sizeof (double_tests[0]); ++i)
+    {
+      double dummy;
+      int ret;
+
+      if ((ret = SSCANF (double_tests[i].str, double_tests[i].fmt,
+			 &dummy)) != double_tests[i].retval)
+	{
+	  printf ("double_tests[%d] returned %d != %d\n",
+		  i, ret, double_tests[i].retval);
+	  result = 1;
+	}
+    }
+
+  for (i = 0; i < sizeof (double_tests2) / sizeof (double_tests2[0]); ++i)
+    {
+      double dummy;
+      int ret;
+      char c = 0;
+
+      if ((ret = SSCANF (double_tests2[i].str, double_tests2[i].fmt,
+			 &dummy, &c)) != double_tests2[i].retval)
+	{
+	  printf ("double_tests2[%d] returned %d != %d\n",
+		  i, ret, double_tests2[i].retval);
+	  result = 1;
+	}
+      else if (ret == 2 && c != double_tests2[i].residual)
+	{
+	  printf ("double_tests2[%d] stopped at '%c' != '%c'\n",
+		  i, c, double_tests2[i].residual);
+	  result = 1;
+	}
+    }
+
+  /* BZ #16618
+     The test will segfault during SSCANF if the buffer overflow
+     is not fixed.  The size of `s` is such that it forces the use
+     of malloc internally and this triggers the incorrect computation.
+     Thus the value for SIZE is arbitrariy high enough that malloc
+     is used.  */
+  {
+#define SIZE 131072
+    CHAR *s = malloc ((SIZE + 1) * sizeof (*s));
+    if (s == NULL)
+      abort ();
+    for (size_t i = 0; i < SIZE; i++)
+      s[i] = L('0');
+    s[SIZE] = L('\0');
+    int i = 42;
+    /* Scan multi-digit zero into `i`.  */
+    if (SSCANF (s, L("%d"), &i) != 1)
+      {
+	printf ("FAIL: bug16618: SSCANF did not read one input item.\n");
+	result = 1;
+      }
+    if (i != 0)
+      {
+	printf ("FAIL: bug16618: Value of `i` was not zero as expected.\n");
+	result = 1;
+      }
+    free (s);
+    if (result != 1)
+      printf ("PASS: bug16618: Did not crash.\n");
+#undef SIZE
+  }
+
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-swprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-swprintf.c
new file mode 100644
index 0000000..ce62c6b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-swprintf.c
@@ -0,0 +1,59 @@
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <wchar.h>
+
+/* This is the relevant piece from the charmap:
+<UFF61>     /x8e/xa1     HALFWIDTH IDEOGRAPHIC FULL STOP
+<UFF62>     /x8e/xa2     HALFWIDTH LEFT CORNER BRACKET
+<UFF63>     /x8e/xa3     HALFWIDTH RIGHT CORNER BRACKET
+<UFF64>     /x8e/xa4     HALFWIDTH IDEOGRAPHIC COMMA
+ */
+
+const char input[] = "\x8e\xa1g\x8e\xa2h\x8e\xa3i\x8e\xa4j";
+
+static int
+do_test (void)
+{
+  wchar_t buf[1000];
+#define nbuf (sizeof (buf) / sizeof (buf[0]))
+  int result = 0;
+  ssize_t n;
+
+  if (setlocale (LC_ALL, "ja_JP.EUC-JP") == NULL)
+    {
+      puts ("cannot set locale");
+      exit (1);
+    }
+
+#define CHECK(fmt, nexp, exp) \
+  n = swprintf (buf, nbuf, fmt, input);					      \
+  if (n != nexp)							      \
+    {									      \
+      printf ("swprintf (.., .., L\"%ls\", \"%ls\") return %d, not %d\n",     \
+	      fmt, (wchar_t*) input, (int) n, (int) nexp);		      \
+      result = 1;							      \
+    }									      \
+  else if (wcscmp (buf, exp) != 0)					      \
+    {									      \
+      printf ("\
+swprintf (.., .., L\"%ls\", \"%ls\") produced \"%ls\", not \"%ls\"\n",	      \
+	     fmt, (wchar_t *) input, buf, exp );			      \
+      result = 1;							      \
+    }
+
+  CHECK (L"[%-6.0s]", 8, L"[      ]");
+  CHECK (L"[%-6.1s]", 8, L"[\xff61     ]");
+  CHECK (L"[%-6.2s]", 8, L"[\xff61g    ]");
+  CHECK (L"[%-6.3s]", 8, L"[\xff61g\xff62   ]");
+  CHECK (L"[%-6.4s]", 8, L"[\xff61g\xff62h  ]");
+  CHECK (L"[%-6.5s]", 8, L"[\xff61g\xff62h\xff63 ]");
+  CHECK (L"[%-6.6s]", 8, L"[\xff61g\xff62h\xff63i]");
+  CHECK (L"[%-6.7s]", 9, L"[\xff61g\xff62h\xff63i\xff64]");
+  CHECK (L"[%-6.8s]", 10, L"[\xff61g\xff62h\xff63i\xff64j]");
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-swscanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-swscanf.c
new file mode 100644
index 0000000..6ec1c8e
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-swscanf.c
@@ -0,0 +1,5 @@
+#define CHAR wchar_t
+#define L(str) L##str
+#define SSCANF swscanf
+#include <wchar.h>
+#include "tst-sscanf.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-tmpnam.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-tmpnam.c
new file mode 100644
index 0000000..e3dc077
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-tmpnam.c
@@ -0,0 +1,53 @@
+/* Copyright (C) 1998-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+static int
+do_test (void)
+{
+  const char *name;
+  int retval = 0;
+
+  /* Set TMPDIR to a value other than the traditional /tmp.  */
+  setenv ("TMPDIR", "/usr", 1);
+
+  name = tmpnam (NULL);
+
+  printf ("name = %s\n", name);
+
+  /* Make sure the name is not based on the value in TMPDIR.  */
+  if (strncmp (name, "/usr", 4) == 0)
+    {
+      puts ("error: `tmpnam' used TMPDIR value");
+      retval = 1;
+    }
+
+  /* Test that it is in the directory denoted by P_tmpdir.  */
+  if (strncmp (name, P_tmpdir, sizeof (P_tmpdir) - 1) != 0)
+    {
+      puts ("error: `tmpnam' return value not in P_tmpdir directory");
+      retval = 1;
+    }
+
+  return retval;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-unbputc.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-unbputc.c
new file mode 100644
index 0000000..7200a82
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-unbputc.c
@@ -0,0 +1,14 @@
+#include <stdio.h>
+
+
+static int
+do_test (void)
+{
+  putc ('1', stderr);
+  putc ('2', stderr);
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-unbputc.sh b/ap/libc/glibc/glibc-2.23/stdio-common/tst-unbputc.sh
new file mode 100755
index 0000000..8156400
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-unbputc.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Testing the stdio implementation
+# Copyright (C) 2000-2016 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+set -e
+
+common_objpfx=$1; shift
+test_program_prefix=$1; shift
+
+status=0
+
+${test_program_prefix} \
+  ${common_objpfx}stdio-common/tst-unbputc \
+    2> ${common_objpfx}stdio-common/tst-unbputc.out || status=1
+
+(printf 12 | cmp ${common_objpfx}stdio-common/tst-unbputc.out -) || status=1
+
+exit $status
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-ungetc.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-ungetc.c
new file mode 100644
index 0000000..44cf6a6
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-ungetc.c
@@ -0,0 +1,63 @@
+/* Test for ungetc bugs.  */
+
+#include <stdio.h>
+#include <unistd.h>
+
+#undef assert
+#define assert(x) \
+  if (!(x)) \
+    { \
+      fputs ("test failed: " #x "\n", stderr); \
+      retval = 1; \
+      goto the_end; \
+    }
+
+int
+main (int argc, char *argv[])
+{
+  char *name;
+  FILE *fp = NULL;
+  int retval = 0;
+  int c;
+  char buffer[64];
+
+  name = tmpnam (NULL);
+  fp = fopen (name, "w");
+  assert (fp != NULL)
+  fputs ("bla", fp);
+  fclose (fp);
+  fp = NULL;
+
+  fp = fopen (name, "r");
+  assert (fp != NULL);
+  assert (ungetc ('z', fp) == 'z');
+  assert (getc (fp) == 'z');
+  assert (getc (fp) == 'b');
+  assert (getc (fp) == 'l');
+  assert (ungetc ('m', fp) == 'm');
+  assert (getc (fp) == 'm');
+  assert ((c = getc (fp)) == 'a');
+  assert (getc (fp) == EOF);
+  assert (ungetc (c, fp) == c);
+  assert (feof (fp) == 0);
+  assert (getc (fp) == c);
+  assert (getc (fp) == EOF);
+  fclose (fp);
+  fp = NULL;
+
+  fp = fopen (name, "r");
+  assert (fp != NULL);
+  assert (getc (fp) == 'b');
+  assert (getc (fp) == 'l');
+  assert (ungetc ('b', fp) == 'b');
+  assert (fread (buffer, 1, 64, fp) == 2);
+  assert (buffer[0] == 'b');
+  assert (buffer[1] == 'a');
+
+the_end:
+  if (fp != NULL)
+    fclose (fp);
+  unlink (name);
+
+  return retval;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-unlockedio.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-unlockedio.c
new file mode 100644
index 0000000..4e47e14
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-unlockedio.c
@@ -0,0 +1,169 @@
+/* Test for some *_unlocked stdio interfaces.
+   Copyright (C) 2004-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <libc-internal.h>
+
+int fd;
+static void do_prepare (void);
+static int do_test (void);
+#define PREPARE(argc, argv) do_prepare ()
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
+
+static int
+do_test (void)
+{
+  const char blah[] = "BLAH";
+  char buf[strlen (blah) + 1];
+  FILE *fp, *f;
+  const char *cp;
+  char *wp;
+
+  if ((fp = fdopen (fd, "w+")) == NULL)
+    exit (1);
+
+  flockfile (fp);
+
+  f = fp;
+  cp = blah;
+  /* These tests deliberately use fwrite_unlocked with the size
+     argument specified as 0, which results in "division by zero"
+     warnings from the expansion of that macro (in code that is not
+     evaluated for a size of 0).  This applies to the tests of
+     fread_unlocked below as well.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdiv-by-zero");
+  if (ftello (fp) != 0
+      || fwrite_unlocked (blah, blah - blah, strlen (blah), f++) != 0
+      || f != fp + 1
+      || fwrite_unlocked ("", 5.0, 0, --f) != 0
+      || f != fp
+      || fwrite_unlocked (cp++, 16, 0.25, fp) != 0
+      || cp != blah + 1
+      || fwrite_unlocked (--cp, 0.25, 16, fp) != 0
+      || cp != blah
+      || fwrite_unlocked (blah, 0, -0.0, fp) != 0
+      || ftello (fp) != 0)
+    {
+      puts ("One of fwrite_unlocked tests failed");
+      exit (1);
+    }
+  DIAG_POP_NEEDS_COMMENT;
+
+  if (fwrite_unlocked (blah, 1, strlen (blah) - 2, fp) != strlen (blah) - 2)
+    {
+      puts ("Could not write string into file");
+      exit (1);
+    }
+
+  if (putc_unlocked ('A' + 0x1000000, fp) != 'A')
+    {
+      puts ("putc_unlocked failed");
+      exit (1);
+    }
+
+  f = fp;
+  cp = blah + strlen (blah) - 1;
+  if (putc_unlocked (*cp++, f++) != 'H'
+      || f != fp + 1
+      || cp != strchr (blah, '\0'))
+    {
+      puts ("fputc_unlocked failed");
+      exit (1);
+    }
+
+  if (ftello (fp) != (off_t) strlen (blah))
+    {
+      printf ("Failed to write %zd bytes to temporary file", strlen (blah));
+      exit (1);
+    }
+
+  rewind (fp);
+
+  f = fp;
+  wp = buf;
+  memset (buf, ' ', sizeof (buf));
+  /* See explanation above.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdiv-by-zero");
+  if (ftello (fp) != 0
+      || fread_unlocked (buf, buf - buf, strlen (blah), f++) != 0
+      || f != fp + 1
+      || fread_unlocked (buf, 5.0, 0, --f) != 0
+      || f != fp
+      || fread_unlocked (wp++, 16, 0.25, fp) != 0
+      || wp != buf + 1
+      || fread_unlocked (--wp, 0.25, 16, fp) != 0
+      || wp != buf
+      || fread_unlocked (buf, 0, -0.0, fp) != 0
+      || ftello (fp) != 0
+      || memcmp (buf, "     ", sizeof (buf)) != 0)
+    {
+      puts ("One of fread_unlocked tests failed");
+      exit (1);
+    }
+  DIAG_POP_NEEDS_COMMENT;
+
+  if (fread_unlocked (buf, 1, strlen (blah) - 2, fp) != strlen (blah) - 2)
+    {
+      puts ("Could not read string from file");
+      exit (1);
+    }
+
+  if (getc_unlocked (fp) != 'A')
+    {
+      puts ("getc_unlocked failed");
+      exit (1);
+    }
+
+  f = fp;
+  if (fgetc_unlocked (f++) != 'H'
+      || f != fp + 1
+      || fgetc_unlocked (--f) != EOF
+      || f != fp)
+    {
+      puts ("fgetc_unlocked failed");
+      exit (1);
+    }
+
+  if (ftello (fp) != (off_t) strlen (blah))
+    {
+      printf ("Failed to read %zd bytes from temporary file", strlen (blah));
+      exit (1);
+    }
+
+  funlockfile (fp);
+  fclose (fp);
+
+  return 0;
+}
+
+static void
+do_prepare (void)
+{
+  fd = create_temp_file ("tst-unlockedio.", NULL);
+  if (fd == -1)
+    {
+      printf ("cannot create temporary file: %m\n");
+      exit (1);
+    }
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tst-wc-printf.c b/ap/libc/glibc/glibc-2.23/stdio-common/tst-wc-printf.c
new file mode 100644
index 0000000..2a2acb5
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tst-wc-printf.c
@@ -0,0 +1,25 @@
+#define _GNU_SOURCE 1
+#include <wchar.h>
+#include <stdio.h>
+#include <string.h>
+#include <wctype.h>
+
+static int
+do_test (void)
+{
+  wchar_t tmp[3];
+  tmp[0] = '8';
+  tmp[1] = '1';
+  tmp[2] = 0;
+
+  printf ("Test for wide character output with printf\n");
+
+  printf ("with %%S: %S\n", tmp);
+
+  printf ("with %%C: %C\n", (wint_t) tmp[0]);
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tstdiomisc.c b/ap/libc/glibc/glibc-2.23/stdio-common/tstdiomisc.c
new file mode 100644
index 0000000..5548a71
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tstdiomisc.c
@@ -0,0 +1,279 @@
+#include <float.h>
+#include <math.h>
+#include <stdio.h>
+#include <string.h>
+#include <wchar.h>
+#include <libc-internal.h>
+
+static int
+t1 (void)
+{
+  int n = -1;
+  sscanf ("abc  ", "abc %n", &n);
+  printf ("t1: count=%d\n", n);
+
+  return n != 5;
+}
+
+static int
+t2 (void)
+{
+  int result = 0;
+  int n;
+  long N;
+  int retval;
+#define SCAN(INPUT, FORMAT, VAR, EXP_RES, EXP_VAL) \
+  VAR = -1; \
+  retval = sscanf (INPUT, FORMAT, &VAR); \
+  printf ("sscanf (\"%s\", \"%s\", &x) => %d, x = %ld\n", \
+	  INPUT, FORMAT, retval, (long int) VAR); \
+  result |= retval != EXP_RES || VAR != EXP_VAL
+
+  /* This function is testing corner cases of the scanf format string,
+     so they do not all conform to -Wformat's expectations.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat");
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat-extra-args");
+
+  SCAN ("12345", "%ld", N, 1, 12345);
+  SCAN ("12345", "%llllld", N, 0, -1);
+  SCAN ("12345", "%LLLLLd", N, 0, -1);
+  SCAN ("test ", "%*s%n",  n, 0, 4);
+  SCAN ("test ", "%2*s%n",  n, 0, -1);
+  SCAN ("12 ",   "%l2d",  n, 0, -1);
+  SCAN ("12 ",   "%2ld",  N, 1, 12);
+
+  n = -1;
+  N = -1;
+  retval = sscanf ("1 1", "%d %Z", &n, &N);
+  printf ("sscanf (\"1 1\", \"%%d %%Z\", &n, &N) => %d, n = %d, N = %ld\n", \
+	  retval, n, N); \
+  result |= retval != 1 || n != 1 || N != -1;
+
+  DIAG_POP_NEEDS_COMMENT;
+
+  return result;
+}
+
+static int
+t3 (void)
+{
+  char buf[80];
+  wchar_t wbuf[80];
+  int result = 0;
+  int retval;
+
+  retval = sprintf (buf, "%p", (char *) NULL);
+  result |= retval != 5 || strcmp (buf, "(nil)") != 0;
+
+  retval = swprintf (wbuf, sizeof (wbuf) / sizeof (wbuf[0]),
+		     L"%p", (char *) NULL);
+  result |= retval != 5 || wcscmp (wbuf, L"(nil)") != 0;
+
+  return result;
+}
+
+volatile double qnanval;
+volatile long double lqnanval;
+/* A sNaN is only guaranteed to be representable in variables with static (or
+   thread-local) storage duration.  */
+static volatile double snanval = __builtin_nans ("");
+static volatile double msnanval = -__builtin_nans ("");
+static volatile long double lsnanval = __builtin_nansl ("");
+static volatile long double lmsnanval = -__builtin_nansl ("");
+volatile double infval;
+volatile long double linfval;
+
+
+static int
+F (void)
+{
+  char buf[80];
+  wchar_t wbuf[40];
+  int result = 0;
+
+  qnanval = NAN;
+
+  snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
+	    qnanval, qnanval, qnanval, qnanval,
+	    qnanval, qnanval, qnanval, qnanval);
+  result |= strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n", buf);
+
+  snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
+	    -qnanval, -qnanval, -qnanval, -qnanval,
+	    -qnanval, -qnanval, -qnanval, -qnanval);
+  result |= strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
+  printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n",
+	  buf);
+
+  snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
+	    snanval, snanval, snanval, snanval,
+	    snanval, snanval, snanval, snanval);
+  result |= strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n", buf);
+
+  snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
+	    msnanval, msnanval, msnanval, msnanval,
+	    msnanval, msnanval, msnanval, msnanval);
+  result |= strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
+  printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n",
+	  buf);
+
+  infval = DBL_MAX * DBL_MAX;
+
+  snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
+	    infval, infval, infval, infval, infval, infval, infval, infval);
+  result |= strcmp (buf, "inf INF inf INF inf INF inf INF") != 0;
+  printf ("expected \"inf INF inf INF inf INF inf INF\", got \"%s\"\n", buf);
+
+  snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
+	    -infval, -infval, -infval, -infval,
+	    -infval, -infval, -infval, -infval);
+  result |= strcmp (buf, "-inf -INF -inf -INF -inf -INF -inf -INF") != 0;
+  printf ("expected \"-inf -INF -inf -INF -inf -INF -inf -INF\", got \"%s\"\n",
+	  buf);
+
+  swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
+	    qnanval, qnanval, qnanval, qnanval,
+	    qnanval, qnanval, qnanval, qnanval);
+  result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n", wbuf);
+
+  swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
+	    -qnanval, -qnanval, -qnanval, -qnanval,
+	    -qnanval, -qnanval, -qnanval, -qnanval);
+  result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
+  printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n",
+	  wbuf);
+
+  swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
+	    snanval, snanval, snanval, snanval,
+	    snanval, snanval, snanval, snanval);
+  result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n", wbuf);
+
+  swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
+	    msnanval, msnanval, msnanval, msnanval,
+	    msnanval, msnanval, msnanval, msnanval);
+  result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
+  printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n",
+	  wbuf);
+
+  swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
+	    infval, infval, infval, infval, infval, infval, infval, infval);
+  result |= wcscmp (wbuf, L"inf INF inf INF inf INF inf INF") != 0;
+  printf ("expected L\"inf INF inf INF inf INF inf INF\", got L\"%S\"\n", wbuf);
+
+  swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
+	    -infval, -infval, -infval, -infval,
+	    -infval, -infval, -infval, -infval);
+  result |= wcscmp (wbuf, L"-inf -INF -inf -INF -inf -INF -inf -INF") != 0;
+  printf ("expected L\"-inf -INF -inf -INF -inf -INF -inf -INF\", got L\"%S\"\n",
+	  wbuf);
+
+  lqnanval = NAN;
+
+  snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
+	    lqnanval, lqnanval, lqnanval, lqnanval,
+	    lqnanval, lqnanval, lqnanval, lqnanval);
+  result |= strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n", buf);
+
+  snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
+	    -lqnanval, -lqnanval, -lqnanval, -lqnanval,
+	    -lqnanval, -lqnanval, -lqnanval, -lqnanval);
+  result |= strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
+  printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n",
+	  buf);
+
+  snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
+	    lsnanval, lsnanval, lsnanval, lsnanval,
+	    lsnanval, lsnanval, lsnanval, lsnanval);
+  result |= strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n", buf);
+
+  snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
+	    lmsnanval, lmsnanval, lmsnanval, lmsnanval,
+	    lmsnanval, lmsnanval, lmsnanval, lmsnanval);
+  result |= strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
+  printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n",
+	  buf);
+
+  linfval = LDBL_MAX * LDBL_MAX;
+
+  snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
+	    linfval, linfval, linfval, linfval,
+	    linfval, linfval, linfval, linfval);
+  result |= strcmp (buf, "inf INF inf INF inf INF inf INF") != 0;
+  printf ("expected \"inf INF inf INF inf INF inf INF\", got \"%s\"\n", buf);
+
+  snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
+	    -linfval, -linfval, -linfval, -linfval,
+	    -linfval, -linfval, -linfval, -linfval);
+  result |= strcmp (buf, "-inf -INF -inf -INF -inf -INF -inf -INF") != 0;
+  printf ("expected \"-inf -INF -inf -INF -inf -INF -inf -INF\", got \"%s\"\n",
+	  buf);
+
+  swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
+	    L"%La %LA %Le %LE %Lf %LF %Lg %LG",
+	    lqnanval, lqnanval, lqnanval, lqnanval,
+	    lqnanval, lqnanval, lqnanval, lqnanval);
+  result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n", wbuf);
+
+  swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
+	    L"%La %LA %Le %LE %Lf %LF %Lg %LG",
+	    -lqnanval, -lqnanval, -lqnanval, -lqnanval,
+	    -lqnanval, -lqnanval, -lqnanval, -lqnanval);
+  result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
+  printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n",
+	  wbuf);
+
+  swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
+	    L"%La %LA %Le %LE %Lf %LF %Lg %LG",
+	    lsnanval, lsnanval, lsnanval, lsnanval,
+	    lsnanval, lsnanval, lsnanval, lsnanval);
+  result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0;
+  printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n", wbuf);
+
+  swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
+	    L"%La %LA %Le %LE %Lf %LF %Lg %LG",
+	    lmsnanval, lmsnanval, lmsnanval, lmsnanval,
+	    lmsnanval, lmsnanval, lmsnanval, lmsnanval);
+  result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
+  printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n",
+	  wbuf);
+
+  swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
+	    L"%La %LA %Le %LE %Lf %LF %Lg %LG",
+	    linfval, linfval, linfval, linfval,
+	    linfval, linfval, linfval, linfval);
+  result |= wcscmp (wbuf, L"inf INF inf INF inf INF inf INF") != 0;
+  printf ("expected L\"inf INF inf INF inf INF inf INF\", got L\"%S\"\n", wbuf);
+
+  swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
+	    L"%La %LA %Le %LE %Lf %LF %Lg %LG",
+	    -linfval, -linfval, -linfval, -linfval,
+	    -linfval, -linfval, -linfval, -linfval);
+  result |= wcscmp (wbuf, L"-inf -INF -inf -INF -inf -INF -inf -INF") != 0;
+  printf ("expected L\"-inf -INF -inf -INF -inf -INF -inf -INF\", got L\"%S\"\n",
+	  wbuf);
+
+  return result;
+}
+
+int
+main (int argc, char *argv[])
+{
+  int result = 0;
+
+  result |= t1 ();
+  result |= t2 ();
+  result |= t3 ();
+  result |= F ();
+
+  result |= fflush (stdout) == EOF;
+
+  return result;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tstgetln.c b/ap/libc/glibc/glibc-2.23/stdio-common/tstgetln.c
new file mode 100644
index 0000000..d52b2bc
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tstgetln.c
@@ -0,0 +1,46 @@
+/* Copyright (C) 1992-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#undef ssize_t
+#define ssize_t _IO_ssize_t
+
+int
+main (int argc, char *argv[])
+{
+  char *buf = NULL;
+  size_t size = 0;
+  ssize_t len;
+
+  while ((len = getline (&buf, &size, stdin)) != -1)
+    {
+      printf ("bufsize %Zu; read %Zd: ", size, len);
+      if (fwrite (buf, len, 1, stdout) != 1)
+	{
+	  perror ("fwrite");
+	  return 1;
+	}
+    }
+
+  if (ferror (stdin))
+    {
+      perror ("getline");
+      return 1;
+    }
+
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tstgetln.input b/ap/libc/glibc/glibc-2.23/stdio-common/tstgetln.input
new file mode 100644
index 0000000..d04ed5b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tstgetln.input
@@ -0,0 +1,3 @@
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
+z
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tstscanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/tstscanf.c
new file mode 100644
index 0000000..767b4d6
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tstscanf.c
@@ -0,0 +1,355 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifdef	BSD
+#include </usr/include/stdio.h>
+#else
+#include <stdio.h>
+#endif
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+int
+main (int argc, char **argv)
+{
+  char buf[BUFSIZ];
+  FILE *in = stdin, *out = stdout;
+  int x;
+  int result = 0;
+
+  if (sscanf ("0", "%d", &x) != 1)
+    {
+      fputs ("test failed!\n", stdout);
+      result = 1;
+    }
+
+  if (sscanf ("08905x", "%9[0-9]", buf) != 1
+      || strcmp (buf, "08905") != 0)
+    {
+      fputs ("test failed!\n", stdout);
+      result = 1;
+    }
+
+  if (sscanf ("", "%10[a-z]", buf) != EOF)
+    {
+      fputs ("test failed!\n", stdout);
+      result = 1;
+    }
+
+  sscanf ("conversion] Zero flag Ze]ro#\n", "%*[^]] %[^#]\n", buf);
+  if (strcmp (buf, "] Zero flag Ze]ro") != 0)
+    {
+      fputs ("test failed!\n", stdout);
+      result = 1;
+    }
+
+  if (argc == 2 && !strcmp (argv[1], "-opipe"))
+    {
+      out = popen ("/bin/cat", "w");
+      if (out == NULL)
+	{
+	  perror ("popen: /bin/cat");
+	  result = 1;
+	}
+    }
+  else if (argc == 3 && !strcmp (argv[1], "-ipipe"))
+    {
+      sprintf (buf, "/bin/cat %s", argv[2]);
+      in = popen (buf, "r");
+      if (in == NULL)
+	{
+	  perror ("popen: /bin/cat");
+	  result = 1;
+	}
+    }
+
+  {
+    char name[50];
+    fprintf (out,
+	     "sscanf (\"thompson\", \"%%s\", name) == %d, name == \"%s\"\n",
+	     sscanf ("thompson", "%s", name),
+	     name);
+    if (strcmp (name, "thompson") != 0)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+
+  fputs ("Testing scanf (vfscanf)\n", out);
+
+  fputs ("Test 1:\n", out);
+  {
+    int n, i;
+    float x;
+    char name[50];
+    n = fscanf (in, "%d%f%s", &i, &x, name);
+    fprintf (out, "n = %d, i = %d, x = %f, name = \"%.50s\"\n",
+	     n, i, x, name);
+    if (n != 3 || i != 25 || x != 5.432F || strcmp (name, "thompson"))
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+  fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in));
+  if (strcmp (buf, "\n"))
+    {
+      fputs ("test failed!\n", stdout);
+      result = 1;
+    }
+  fputs ("Test 2:\n", out);
+  {
+    int i;
+    float x;
+    char name[50];
+    (void) fscanf (in, "%2d%f%*d %[0123456789]", &i, &x, name);
+    fprintf (out, "i = %d, x = %f, name = \"%.50s\"\n", i, x, name);
+    if (i != 56 || x != 789.0F || strcmp (name, "56"))
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+  fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in));
+  if (strcmp (buf, "a72\n"))
+    {
+      fputs ("test failed!\n", stdout);
+      result = 1;
+    }
+  fputs ("Test 3:\n", out);
+  {
+    static struct {
+      int count;
+      float quant;
+      const char *units;
+      const char *item;
+    } ok[] = {
+      { 3, 2.0F, "quarts", "oil" },
+      { 2, -12.8F, "degrees", "" },
+      { 0, 0.0F, "", "" },
+      { 3, 10.0F, "LBS", "fertilizer" },
+      { 3, 100.0F, "rgs", "energy" },
+      { -1, 0.0F, "", "" }};
+    size_t rounds = 0;
+    float quant;
+    char units[21], item[21];
+    while (!feof (in) && !ferror (in))
+      {
+	int count;
+
+	if (rounds++ >= sizeof (ok) / sizeof (ok[0]))
+	  {
+	    fputs ("test failed!\n", stdout);
+	    result = 1;
+	  }
+
+	quant = 0.0;
+	units[0] = item[0] = '\0';
+	count = fscanf (in, "%f%20s of %20s", &quant, units, item);
+	(void) fscanf (in, "%*[^\n]");
+	fprintf (out, "count = %d, quant = %f, item = %.21s, units = %.21s\n",
+		 count, quant, item, units);
+	if (count != ok[rounds-1].count || quant != ok[rounds-1].quant
+	    || strcmp (item, ok[rounds-1].item)
+	    || strcmp (units, ok[rounds-1].units))
+	  {
+	    fputs ("test failed!\n", stdout);
+	    result = 1;
+	  }
+      }
+  }
+  buf[0] = '\0';
+  fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in));
+  if (strcmp (buf, ""))
+    {
+      fputs ("test failed!\n", stdout);
+      result = 1;
+    }
+
+  if (out != stdout)
+    pclose (out);
+
+  fputs ("Test 4:\n", out);
+  {
+    int res, val, n;
+
+    res = sscanf ("-242", "%3o%n", &val, &n);
+    printf ("res = %d, val = %d, n = %d\n", res, val, n);
+    if (res != 1 || val != -20 || n != 3)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+
+  fputs ("Test 5:\n", out);
+  {
+    double a = 0, b = 0;
+    int res, n;
+
+    res = sscanf ("1234567", "%3lg%3lg%n", &a, &b, &n);
+    printf ("res = %d, a = %g, b = %g, n = %d\n", res, a, b, n);
+
+    if (res != 2 || a != 123 || b != 456 || n != 6)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+
+    res = sscanf ("0", "%lg", &a);
+    printf ("res = %d, a = %g\n", res, a);
+
+    if (res != 1 || a != 0)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+
+    res = sscanf ("1e3", "%lg%n", &a, &n);
+    printf ("res = %d, a = %g, n = %d\n", res, a, n);
+
+    if (res != 1 || a != 1000 || n != 3)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+
+  fputs ("Test 6:\n", stdout);
+  {
+    char *p = (char *) -1;
+    int res;
+
+    sprintf (buf, "%p", NULL);
+    res = sscanf (buf, "%p", &p);
+    printf ("sscanf (\"%s\", \"%%p\", &p) = %d, p == %p\n", buf, res, p);
+
+    if (res != 1 || p != NULL)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+
+  fputs ("Test 7:\n", stdout);
+  {
+    short a[2] = { -1, -1 };
+    int res;
+
+    res = sscanf ("32767 1234", "%hd %hd", &a[0], &a[1]);
+    printf ("res = %d, a[0] = %d, a[1] = %d\n", res, a[0], a[1]);
+
+    if (res != 2 || a[0] != 32767 || a[1] != 1234)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+
+  fputs ("Test 8:\n", stdout);
+  {
+    double d = 123456.789;
+    int res;
+
+    res = sscanf ("0x1234", "%lf", &d);
+    printf ("res = %d, d = %f\n", res, d);
+
+    if (res != 1 || d != 4660)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+
+  fputs ("Test 9:\n", stdout);
+  {
+    /* From PR libc/1313 reported by Ben Caradoc-Davies <bmcd@physics.otago.ac.nz>.  */
+    float value;
+    int res;
+
+    res = sscanf ("0123", "%2f", &value);
+    if (res != 1 || value != 1.0)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+
+  fputs ("Test 10:\n", stdout);
+  {
+    float value;
+    int res;
+
+    res = sscanf ("--", "%f", &value);
+    if (res != 0)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+
+  fputs ("Test 11:\n", stdout);
+  {
+    char uart[50];
+    int res;
+
+    res = sscanf ("uart:16550A tx:0", "uart:%31s tx:%*u", uart);
+    if (res != 1)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+
+  fputs ("Test 12:\n", stdout);
+  {
+    char uart[50];
+    int res;
+
+    res = sscanf ("uart:16550A", "uart:%31s tx:%*u", uart);
+    if (res != 1)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+
+  fputs ("Test 13:\n", stdout);
+  {
+    float value;
+    int res;
+
+    res = sscanf ("-InF", "%f", &value);
+    if (res != 1 || isinf (value) != -1)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+
+    res = sscanf ("+InfiNiTY", "%f", &value);
+    if (res != 1 || isinf (value) != 1)
+      {
+	fputs ("test failed!\n", stdout);
+	result = 1;
+      }
+  }
+
+  return result;
+}
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/tstscanf.input b/ap/libc/glibc/glibc-2.23/stdio-common/tstscanf.input
new file mode 100644
index 0000000..2615865
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/tstscanf.input
@@ -0,0 +1,7 @@
+25 54.32E-1 thompson
+56789 0123 56a72
+2 quarts of oil
+-12.8degrees Celsius
+lots of luck
+10.0LBS      of       fertilizer
+100ergs of energy
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/vfprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/vfprintf.c
new file mode 100644
index 0000000..6829d4d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/vfprintf.c
@@ -0,0 +1,2362 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <ctype.h>
+#include <limits.h>
+#include <printf.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <wchar.h>
+#include <libc-lock.h>
+#include <sys/param.h>
+#include <_itoa.h>
+#include <locale/localeinfo.h>
+#include <stdio.h>
+#include <scratch_buffer.h>
+
+/* This code is shared between the standard stdio implementation found
+   in GNU C library and the libio implementation originally found in
+   GNU libg++.
+
+   Beside this it is also shared between the normal and wide character
+   implementation as defined in ISO/IEC 9899:1990/Amendment 1:1995.  */
+
+
+#include <libioP.h>
+#define FILE		_IO_FILE
+#undef va_list
+#define va_list	_IO_va_list
+#undef BUFSIZ
+#define BUFSIZ		_IO_BUFSIZ
+#define ARGCHECK(S, Format) \
+  do									      \
+    {									      \
+      /* Check file argument for consistence.  */			      \
+      CHECK_FILE (S, -1);						      \
+      if (S->_flags & _IO_NO_WRITES)					      \
+	{								      \
+	  S->_flags |= _IO_ERR_SEEN;					      \
+	  __set_errno (EBADF);						      \
+	  return -1;							      \
+	}								      \
+      if (Format == NULL)						      \
+	{								      \
+	  MAYBE_SET_EINVAL;						      \
+	  return -1;							      \
+	}								      \
+    } while (0)
+#define UNBUFFERED_P(S) ((S)->_IO_file_flags & _IO_UNBUFFERED)
+
+#define done_add(val) \
+  do {									      \
+    unsigned int _val = val;						      \
+    assert ((unsigned int) done < (unsigned int) INT_MAX);		      \
+    if (__glibc_unlikely (INT_MAX - done < _val))			      \
+      {									      \
+	done = -1;							      \
+	 __set_errno (EOVERFLOW);					      \
+	goto all_done;							      \
+      }									      \
+    done += _val;							      \
+  } while (0)
+
+#ifndef COMPILE_WPRINTF
+# define vfprintf	_IO_vfprintf_internal
+# define CHAR_T		char
+# define UCHAR_T	unsigned char
+# define INT_T		int
+typedef const char *THOUSANDS_SEP_T;
+# define L_(Str)	Str
+# define ISDIGIT(Ch)	((unsigned int) ((Ch) - '0') < 10)
+# define STR_LEN(Str)	strlen (Str)
+
+# define PUT(F, S, N)	_IO_sputn ((F), (S), (N))
+# define PAD(Padchar) \
+  do {									      \
+    if (width > 0)							      \
+      {									      \
+	_IO_ssize_t written = _IO_padn (s, (Padchar), width);		      \
+	if (__glibc_unlikely (written != width))			      \
+	  {								      \
+	    done = -1;							      \
+	    goto all_done;						      \
+	  }								      \
+	done_add (written);						      \
+      }									      \
+  } while (0)
+# define PUTC(C, F)	_IO_putc_unlocked (C, F)
+# define ORIENT		if (_IO_vtable_offset (s) == 0 && _IO_fwide (s, -1) != -1)\
+			  return -1
+#else
+# define vfprintf	_IO_vfwprintf
+# define CHAR_T		wchar_t
+/* This is a hack!!!  There should be a type uwchar_t.  */
+# define UCHAR_T	unsigned int /* uwchar_t */
+# define INT_T		wint_t
+typedef wchar_t THOUSANDS_SEP_T;
+# define L_(Str)	L##Str
+# define ISDIGIT(Ch)	((unsigned int) ((Ch) - L'0') < 10)
+# define STR_LEN(Str)	__wcslen (Str)
+
+# include <_itowa.h>
+
+# define PUT(F, S, N)	_IO_sputn ((F), (S), (N))
+# define PAD(Padchar) \
+  do {									      \
+    if (width > 0)							      \
+      {									      \
+	_IO_ssize_t written = _IO_wpadn (s, (Padchar), width);		      \
+	if (__glibc_unlikely (written != width))			      \
+	  {								      \
+	    done = -1;							      \
+	    goto all_done;						      \
+	  }								      \
+	done_add (written);						      \
+      }									      \
+  } while (0)
+# define PUTC(C, F)	_IO_putwc_unlocked (C, F)
+# define ORIENT		if (_IO_fwide (s, 1) != 1) return -1
+
+# undef _itoa
+# define _itoa(Val, Buf, Base, Case) _itowa (Val, Buf, Base, Case)
+# define _itoa_word(Val, Buf, Base, Case) _itowa_word (Val, Buf, Base, Case)
+# undef EOF
+# define EOF WEOF
+#endif
+
+#include "_i18n_number.h"
+
+/* Include the shared code for parsing the format string.  */
+#include "printf-parse.h"
+
+
+#define	outchar(Ch)							      \
+  do									      \
+    {									      \
+      const INT_T outc = (Ch);						      \
+      if (PUTC (outc, s) == EOF || done == INT_MAX)			      \
+	{								      \
+	  done = -1;							      \
+	  goto all_done;						      \
+	}								      \
+      ++done;								      \
+    }									      \
+  while (0)
+
+#define outstring(String, Len)						      \
+  do									      \
+    {									      \
+      assert ((size_t) done <= (size_t) INT_MAX);			      \
+      if ((size_t) PUT (s, (String), (Len)) != (size_t) (Len))		      \
+	{								      \
+	  done = -1;							      \
+	  goto all_done;						      \
+	}								      \
+      if (__glibc_unlikely (INT_MAX - done < (Len)))			      \
+      {									      \
+	done = -1;							      \
+	 __set_errno (EOVERFLOW);					      \
+	goto all_done;							      \
+      }									      \
+      done += (Len);							      \
+    }									      \
+  while (0)
+
+/* For handling long_double and longlong we use the same flag.  If
+   `long' and `long long' are effectively the same type define it to
+   zero.  */
+#if LONG_MAX == LONG_LONG_MAX
+# define is_longlong 0
+#else
+# define is_longlong is_long_double
+#endif
+
+/* If `long' and `int' is effectively the same type we don't have to
+   handle `long separately.  */
+#if INT_MAX == LONG_MAX
+# define is_long_num	0
+#else
+# define is_long_num	is_long
+#endif
+
+
+/* Global constants.  */
+static const CHAR_T null[] = L_("(null)");
+
+/* Size of the work_buffer variable (in characters, not bytes.  */
+enum { WORK_BUFFER_SIZE = 1000 };
+
+/* This table maps a character into a number representing a class.  In
+   each step there is a destination label for each class.  */
+static const uint8_t jump_table[] =
+  {
+    /* ' ' */  1,            0,            0, /* '#' */  4,
+	       0, /* '%' */ 14,            0, /* '\''*/  6,
+	       0,            0, /* '*' */  7, /* '+' */  2,
+	       0, /* '-' */  3, /* '.' */  9,            0,
+    /* '0' */  5, /* '1' */  8, /* '2' */  8, /* '3' */  8,
+    /* '4' */  8, /* '5' */  8, /* '6' */  8, /* '7' */  8,
+    /* '8' */  8, /* '9' */  8,            0,            0,
+	       0,            0,            0,            0,
+	       0, /* 'A' */ 26,            0, /* 'C' */ 25,
+	       0, /* 'E' */ 19, /* F */   19, /* 'G' */ 19,
+	       0, /* 'I' */ 29,            0,            0,
+    /* 'L' */ 12,            0,            0,            0,
+	       0,            0,            0, /* 'S' */ 21,
+	       0,            0,            0,            0,
+    /* 'X' */ 18,            0, /* 'Z' */ 13,            0,
+	       0,            0,            0,            0,
+	       0, /* 'a' */ 26,            0, /* 'c' */ 20,
+    /* 'd' */ 15, /* 'e' */ 19, /* 'f' */ 19, /* 'g' */ 19,
+    /* 'h' */ 10, /* 'i' */ 15, /* 'j' */ 28,            0,
+    /* 'l' */ 11, /* 'm' */ 24, /* 'n' */ 23, /* 'o' */ 17,
+    /* 'p' */ 22, /* 'q' */ 12,            0, /* 's' */ 21,
+    /* 't' */ 27, /* 'u' */ 16,            0,            0,
+    /* 'x' */ 18,            0, /* 'z' */ 13
+  };
+
+#define NOT_IN_JUMP_RANGE(Ch) ((Ch) < L_(' ') || (Ch) > L_('z'))
+#define CHAR_CLASS(Ch) (jump_table[(INT_T) (Ch) - L_(' ')])
+#define LABEL(Name) do_##Name
+#ifdef SHARED
+  /* 'int' is enough and it saves some space on 64 bit systems.  */
+# define JUMP_TABLE_TYPE const int
+# define JUMP_TABLE_BASE_LABEL do_form_unknown
+# define REF(Name) &&do_##Name - &&JUMP_TABLE_BASE_LABEL
+# define JUMP(ChExpr, table)						      \
+      do								      \
+	{								      \
+	  int offset;							      \
+	  void *ptr;							      \
+	  spec = (ChExpr);						      \
+	  offset = NOT_IN_JUMP_RANGE (spec) ? REF (form_unknown)	      \
+	    : table[CHAR_CLASS (spec)];					      \
+	  ptr = &&JUMP_TABLE_BASE_LABEL + offset;			      \
+	  goto *ptr;							      \
+	}								      \
+      while (0)
+#else
+# define JUMP_TABLE_TYPE const void *const
+# define REF(Name) &&do_##Name
+# define JUMP(ChExpr, table)						      \
+      do								      \
+	{								      \
+	  const void *ptr;						      \
+	  spec = (ChExpr);						      \
+	  ptr = NOT_IN_JUMP_RANGE (spec) ? REF (form_unknown)		      \
+	    : table[CHAR_CLASS (spec)];					      \
+	  goto *ptr;							      \
+	}								      \
+      while (0)
+#endif
+
+#define STEP0_3_TABLE							      \
+    /* Step 0: at the beginning.  */					      \
+    static JUMP_TABLE_TYPE step0_jumps[30] =				      \
+    {									      \
+      REF (form_unknown),						      \
+      REF (flag_space),		/* for ' ' */				      \
+      REF (flag_plus),		/* for '+' */				      \
+      REF (flag_minus),		/* for '-' */				      \
+      REF (flag_hash),		/* for '<hash>' */			      \
+      REF (flag_zero),		/* for '0' */				      \
+      REF (flag_quote),		/* for '\'' */				      \
+      REF (width_asterics),	/* for '*' */				      \
+      REF (width),		/* for '1'...'9' */			      \
+      REF (precision),		/* for '.' */				      \
+      REF (mod_half),		/* for 'h' */				      \
+      REF (mod_long),		/* for 'l' */				      \
+      REF (mod_longlong),	/* for 'L', 'q' */			      \
+      REF (mod_size_t),		/* for 'z', 'Z' */			      \
+      REF (form_percent),	/* for '%' */				      \
+      REF (form_integer),	/* for 'd', 'i' */			      \
+      REF (form_unsigned),	/* for 'u' */				      \
+      REF (form_octal),		/* for 'o' */				      \
+      REF (form_hexa),		/* for 'X', 'x' */			      \
+      REF (form_float),		/* for 'E', 'e', 'F', 'f', 'G', 'g' */	      \
+      REF (form_character),	/* for 'c' */				      \
+      REF (form_string),	/* for 's', 'S' */			      \
+      REF (form_pointer),	/* for 'p' */				      \
+      REF (form_number),	/* for 'n' */				      \
+      REF (form_strerror),	/* for 'm' */				      \
+      REF (form_wcharacter),	/* for 'C' */				      \
+      REF (form_floathex),	/* for 'A', 'a' */			      \
+      REF (mod_ptrdiff_t),      /* for 't' */				      \
+      REF (mod_intmax_t),       /* for 'j' */				      \
+      REF (flag_i18n),		/* for 'I' */				      \
+    };									      \
+    /* Step 1: after processing width.  */				      \
+    static JUMP_TABLE_TYPE step1_jumps[30] =				      \
+    {									      \
+      REF (form_unknown),						      \
+      REF (form_unknown),	/* for ' ' */				      \
+      REF (form_unknown),	/* for '+' */				      \
+      REF (form_unknown),	/* for '-' */				      \
+      REF (form_unknown),	/* for '<hash>' */			      \
+      REF (form_unknown),	/* for '0' */				      \
+      REF (form_unknown),	/* for '\'' */				      \
+      REF (form_unknown),	/* for '*' */				      \
+      REF (form_unknown),	/* for '1'...'9' */			      \
+      REF (precision),		/* for '.' */				      \
+      REF (mod_half),		/* for 'h' */				      \
+      REF (mod_long),		/* for 'l' */				      \
+      REF (mod_longlong),	/* for 'L', 'q' */			      \
+      REF (mod_size_t),		/* for 'z', 'Z' */			      \
+      REF (form_percent),	/* for '%' */				      \
+      REF (form_integer),	/* for 'd', 'i' */			      \
+      REF (form_unsigned),	/* for 'u' */				      \
+      REF (form_octal),		/* for 'o' */				      \
+      REF (form_hexa),		/* for 'X', 'x' */			      \
+      REF (form_float),		/* for 'E', 'e', 'F', 'f', 'G', 'g' */	      \
+      REF (form_character),	/* for 'c' */				      \
+      REF (form_string),	/* for 's', 'S' */			      \
+      REF (form_pointer),	/* for 'p' */				      \
+      REF (form_number),	/* for 'n' */				      \
+      REF (form_strerror),	/* for 'm' */				      \
+      REF (form_wcharacter),	/* for 'C' */				      \
+      REF (form_floathex),	/* for 'A', 'a' */			      \
+      REF (mod_ptrdiff_t),      /* for 't' */				      \
+      REF (mod_intmax_t),       /* for 'j' */				      \
+      REF (form_unknown)        /* for 'I' */				      \
+    };									      \
+    /* Step 2: after processing precision.  */				      \
+    static JUMP_TABLE_TYPE step2_jumps[30] =				      \
+    {									      \
+      REF (form_unknown),						      \
+      REF (form_unknown),	/* for ' ' */				      \
+      REF (form_unknown),	/* for '+' */				      \
+      REF (form_unknown),	/* for '-' */				      \
+      REF (form_unknown),	/* for '<hash>' */			      \
+      REF (form_unknown),	/* for '0' */				      \
+      REF (form_unknown),	/* for '\'' */				      \
+      REF (form_unknown),	/* for '*' */				      \
+      REF (form_unknown),	/* for '1'...'9' */			      \
+      REF (form_unknown),	/* for '.' */				      \
+      REF (mod_half),		/* for 'h' */				      \
+      REF (mod_long),		/* for 'l' */				      \
+      REF (mod_longlong),	/* for 'L', 'q' */			      \
+      REF (mod_size_t),		/* for 'z', 'Z' */			      \
+      REF (form_percent),	/* for '%' */				      \
+      REF (form_integer),	/* for 'd', 'i' */			      \
+      REF (form_unsigned),	/* for 'u' */				      \
+      REF (form_octal),		/* for 'o' */				      \
+      REF (form_hexa),		/* for 'X', 'x' */			      \
+      REF (form_float),		/* for 'E', 'e', 'F', 'f', 'G', 'g' */	      \
+      REF (form_character),	/* for 'c' */				      \
+      REF (form_string),	/* for 's', 'S' */			      \
+      REF (form_pointer),	/* for 'p' */				      \
+      REF (form_number),	/* for 'n' */				      \
+      REF (form_strerror),	/* for 'm' */				      \
+      REF (form_wcharacter),	/* for 'C' */				      \
+      REF (form_floathex),	/* for 'A', 'a' */			      \
+      REF (mod_ptrdiff_t),      /* for 't' */				      \
+      REF (mod_intmax_t),       /* for 'j' */				      \
+      REF (form_unknown)        /* for 'I' */				      \
+    };									      \
+    /* Step 3a: after processing first 'h' modifier.  */		      \
+    static JUMP_TABLE_TYPE step3a_jumps[30] =				      \
+    {									      \
+      REF (form_unknown),						      \
+      REF (form_unknown),	/* for ' ' */				      \
+      REF (form_unknown),	/* for '+' */				      \
+      REF (form_unknown),	/* for '-' */				      \
+      REF (form_unknown),	/* for '<hash>' */			      \
+      REF (form_unknown),	/* for '0' */				      \
+      REF (form_unknown),	/* for '\'' */				      \
+      REF (form_unknown),	/* for '*' */				      \
+      REF (form_unknown),	/* for '1'...'9' */			      \
+      REF (form_unknown),	/* for '.' */				      \
+      REF (mod_halfhalf),	/* for 'h' */				      \
+      REF (form_unknown),	/* for 'l' */				      \
+      REF (form_unknown),	/* for 'L', 'q' */			      \
+      REF (form_unknown),	/* for 'z', 'Z' */			      \
+      REF (form_percent),	/* for '%' */				      \
+      REF (form_integer),	/* for 'd', 'i' */			      \
+      REF (form_unsigned),	/* for 'u' */				      \
+      REF (form_octal),		/* for 'o' */				      \
+      REF (form_hexa),		/* for 'X', 'x' */			      \
+      REF (form_unknown),	/* for 'E', 'e', 'F', 'f', 'G', 'g' */	      \
+      REF (form_unknown),	/* for 'c' */				      \
+      REF (form_unknown),	/* for 's', 'S' */			      \
+      REF (form_unknown),	/* for 'p' */				      \
+      REF (form_number),	/* for 'n' */				      \
+      REF (form_unknown),	/* for 'm' */				      \
+      REF (form_unknown),	/* for 'C' */				      \
+      REF (form_unknown),	/* for 'A', 'a' */			      \
+      REF (form_unknown),       /* for 't' */				      \
+      REF (form_unknown),       /* for 'j' */				      \
+      REF (form_unknown)        /* for 'I' */				      \
+    };									      \
+    /* Step 3b: after processing first 'l' modifier.  */		      \
+    static JUMP_TABLE_TYPE step3b_jumps[30] =				      \
+    {									      \
+      REF (form_unknown),						      \
+      REF (form_unknown),	/* for ' ' */				      \
+      REF (form_unknown),	/* for '+' */				      \
+      REF (form_unknown),	/* for '-' */				      \
+      REF (form_unknown),	/* for '<hash>' */			      \
+      REF (form_unknown),	/* for '0' */				      \
+      REF (form_unknown),	/* for '\'' */				      \
+      REF (form_unknown),	/* for '*' */				      \
+      REF (form_unknown),	/* for '1'...'9' */			      \
+      REF (form_unknown),	/* for '.' */				      \
+      REF (form_unknown),	/* for 'h' */				      \
+      REF (mod_longlong),	/* for 'l' */				      \
+      REF (form_unknown),	/* for 'L', 'q' */			      \
+      REF (form_unknown),	/* for 'z', 'Z' */			      \
+      REF (form_percent),	/* for '%' */				      \
+      REF (form_integer),	/* for 'd', 'i' */			      \
+      REF (form_unsigned),	/* for 'u' */				      \
+      REF (form_octal),		/* for 'o' */				      \
+      REF (form_hexa),		/* for 'X', 'x' */			      \
+      REF (form_float),		/* for 'E', 'e', 'F', 'f', 'G', 'g' */	      \
+      REF (form_character),	/* for 'c' */				      \
+      REF (form_string),	/* for 's', 'S' */			      \
+      REF (form_pointer),	/* for 'p' */				      \
+      REF (form_number),	/* for 'n' */				      \
+      REF (form_strerror),	/* for 'm' */				      \
+      REF (form_wcharacter),	/* for 'C' */				      \
+      REF (form_floathex),	/* for 'A', 'a' */			      \
+      REF (form_unknown),       /* for 't' */				      \
+      REF (form_unknown),       /* for 'j' */				      \
+      REF (form_unknown)        /* for 'I' */				      \
+    }
+
+#define STEP4_TABLE							      \
+    /* Step 4: processing format specifier.  */				      \
+    static JUMP_TABLE_TYPE step4_jumps[30] =				      \
+    {									      \
+      REF (form_unknown),						      \
+      REF (form_unknown),	/* for ' ' */				      \
+      REF (form_unknown),	/* for '+' */				      \
+      REF (form_unknown),	/* for '-' */				      \
+      REF (form_unknown),	/* for '<hash>' */			      \
+      REF (form_unknown),	/* for '0' */				      \
+      REF (form_unknown),	/* for '\'' */				      \
+      REF (form_unknown),	/* for '*' */				      \
+      REF (form_unknown),	/* for '1'...'9' */			      \
+      REF (form_unknown),	/* for '.' */				      \
+      REF (form_unknown),	/* for 'h' */				      \
+      REF (form_unknown),	/* for 'l' */				      \
+      REF (form_unknown),	/* for 'L', 'q' */			      \
+      REF (form_unknown),	/* for 'z', 'Z' */			      \
+      REF (form_percent),	/* for '%' */				      \
+      REF (form_integer),	/* for 'd', 'i' */			      \
+      REF (form_unsigned),	/* for 'u' */				      \
+      REF (form_octal),		/* for 'o' */				      \
+      REF (form_hexa),		/* for 'X', 'x' */			      \
+      REF (form_float),		/* for 'E', 'e', 'F', 'f', 'G', 'g' */	      \
+      REF (form_character),	/* for 'c' */				      \
+      REF (form_string),	/* for 's', 'S' */			      \
+      REF (form_pointer),	/* for 'p' */				      \
+      REF (form_number),	/* for 'n' */				      \
+      REF (form_strerror),	/* for 'm' */				      \
+      REF (form_wcharacter),	/* for 'C' */				      \
+      REF (form_floathex),	/* for 'A', 'a' */			      \
+      REF (form_unknown),       /* for 't' */				      \
+      REF (form_unknown),       /* for 'j' */				      \
+      REF (form_unknown)        /* for 'I' */				      \
+    }
+
+
+#define process_arg(fspec)						      \
+      /* Start real work.  We know about all flags and modifiers and	      \
+	 now process the wanted format specifier.  */			      \
+    LABEL (form_percent):						      \
+      /* Write a literal "%".  */					      \
+      outchar (L_('%'));						      \
+      break;								      \
+									      \
+    LABEL (form_integer):						      \
+      /* Signed decimal integer.  */					      \
+      base = 10;							      \
+									      \
+      if (is_longlong)							      \
+	{								      \
+	  long long int signed_number;					      \
+									      \
+	  if (fspec == NULL)						      \
+	    signed_number = va_arg (ap, long long int);			      \
+	  else								      \
+	    signed_number = args_value[fspec->data_arg].pa_long_long_int;     \
+									      \
+	  is_negative = signed_number < 0;				      \
+	  number.longlong = is_negative ? (- signed_number) : signed_number;  \
+									      \
+	  goto LABEL (longlong_number);					      \
+	}								      \
+      else								      \
+	{								      \
+	  long int signed_number;					      \
+									      \
+	  if (fspec == NULL)						      \
+	    {								      \
+	      if (is_long_num)						      \
+		signed_number = va_arg (ap, long int);			      \
+	      else if (is_char)						      \
+		signed_number = (signed char) va_arg (ap, unsigned int);      \
+	      else if (!is_short)					      \
+		signed_number = va_arg (ap, int);			      \
+	      else							      \
+		signed_number = (short int) va_arg (ap, unsigned int);	      \
+	    }								      \
+	  else								      \
+	    if (is_long_num)						      \
+	      signed_number = args_value[fspec->data_arg].pa_long_int;	      \
+	    else if (is_char)						      \
+	      signed_number = (signed char)				      \
+		args_value[fspec->data_arg].pa_u_int;			      \
+	    else if (!is_short)						      \
+	      signed_number = args_value[fspec->data_arg].pa_int;	      \
+	    else							      \
+	      signed_number = (short int)				      \
+		args_value[fspec->data_arg].pa_u_int;			      \
+									      \
+	  is_negative = signed_number < 0;				      \
+	  number.word = is_negative ? (- signed_number) : signed_number;      \
+									      \
+	  goto LABEL (number);						      \
+	}								      \
+      /* NOTREACHED */							      \
+									      \
+    LABEL (form_unsigned):						      \
+      /* Unsigned decimal integer.  */					      \
+      base = 10;							      \
+      goto LABEL (unsigned_number);					      \
+      /* NOTREACHED */							      \
+									      \
+    LABEL (form_octal):							      \
+      /* Unsigned octal integer.  */					      \
+      base = 8;								      \
+      goto LABEL (unsigned_number);					      \
+      /* NOTREACHED */							      \
+									      \
+    LABEL (form_hexa):							      \
+      /* Unsigned hexadecimal integer.  */				      \
+      base = 16;							      \
+									      \
+    LABEL (unsigned_number):	  /* Unsigned number of base BASE.  */	      \
+									      \
+      /* ISO specifies the `+' and ` ' flags only for signed		      \
+	 conversions.  */						      \
+      is_negative = 0;							      \
+      showsign = 0;							      \
+      space = 0;							      \
+									      \
+      if (is_longlong)							      \
+	{								      \
+	  if (fspec == NULL)						      \
+	    number.longlong = va_arg (ap, unsigned long long int);	      \
+	  else								      \
+	    number.longlong = args_value[fspec->data_arg].pa_u_long_long_int; \
+									      \
+	LABEL (longlong_number):					      \
+	  if (prec < 0)							      \
+	    /* Supply a default precision if none was given.  */	      \
+	    prec = 1;							      \
+	  else								      \
+	    /* We have to take care for the '0' flag.  If a precision	      \
+	       is given it must be ignored.  */				      \
+	    pad = L_(' ');						      \
+									      \
+	  /* If the precision is 0 and the number is 0 nothing has to	      \
+	     be written for the number, except for the 'o' format in	      \
+	     alternate form.  */					      \
+	  if (prec == 0 && number.longlong == 0)			      \
+	    {								      \
+	      string = workend;						      \
+	      if (base == 8 && alt)					      \
+		*--string = L_('0');					      \
+	    }								      \
+	  else								      \
+	    {								      \
+	      /* Put the number in WORK.  */				      \
+	      string = _itoa (number.longlong, workend, base,		      \
+			      spec == L_('X'));				      \
+	      if (group && grouping)					      \
+		string = group_number (string, workend, grouping,	      \
+				       thousands_sep);			      \
+									      \
+	      if (use_outdigits && base == 10)				      \
+		string = _i18n_number_rewrite (string, workend, workend);     \
+	    }								      \
+	  /* Simplify further test for num != 0.  */			      \
+	  number.word = number.longlong != 0;				      \
+	}								      \
+      else								      \
+	{								      \
+	  if (fspec == NULL)						      \
+	    {								      \
+	      if (is_long_num)						      \
+		number.word = va_arg (ap, unsigned long int);		      \
+	      else if (is_char)						      \
+		number.word = (unsigned char) va_arg (ap, unsigned int);      \
+	      else if (!is_short)					      \
+		number.word = va_arg (ap, unsigned int);		      \
+	      else							      \
+		number.word = (unsigned short int) va_arg (ap, unsigned int); \
+	    }								      \
+	  else								      \
+	    if (is_long_num)						      \
+	      number.word = args_value[fspec->data_arg].pa_u_long_int;	      \
+	    else if (is_char)						      \
+	      number.word = (unsigned char)				      \
+		args_value[fspec->data_arg].pa_u_int;			      \
+	    else if (!is_short)						      \
+	      number.word = args_value[fspec->data_arg].pa_u_int;	      \
+	    else							      \
+	      number.word = (unsigned short int)			      \
+		args_value[fspec->data_arg].pa_u_int;			      \
+									      \
+	LABEL (number):							      \
+	  if (prec < 0)							      \
+	    /* Supply a default precision if none was given.  */	      \
+	    prec = 1;							      \
+	  else								      \
+	    /* We have to take care for the '0' flag.  If a precision	      \
+	       is given it must be ignored.  */				      \
+	    pad = L_(' ');						      \
+									      \
+	  /* If the precision is 0 and the number is 0 nothing has to	      \
+	     be written for the number, except for the 'o' format in	      \
+	     alternate form.  */					      \
+	  if (prec == 0 && number.word == 0)				      \
+	    {								      \
+	      string = workend;						      \
+	      if (base == 8 && alt)					      \
+		*--string = L_('0');					      \
+	    }								      \
+	  else								      \
+	    {								      \
+	      /* Put the number in WORK.  */				      \
+	      string = _itoa_word (number.word, workend, base,		      \
+				   spec == L_('X'));			      \
+	      if (group && grouping)					      \
+		string = group_number (string, workend, grouping,	      \
+				       thousands_sep);			      \
+									      \
+	      if (use_outdigits && base == 10)				      \
+		string = _i18n_number_rewrite (string, workend, workend);     \
+	    }								      \
+	}								      \
+									      \
+      if (prec <= workend - string && number.word != 0 && alt && base == 8)   \
+	/* Add octal marker.  */					      \
+	*--string = L_('0');						      \
+									      \
+      prec = MAX (0, prec - (workend - string));			      \
+									      \
+      if (!left)							      \
+	{								      \
+	  width -= workend - string + prec;				      \
+									      \
+	  if (number.word != 0 && alt && base == 16)			      \
+	    /* Account for 0X hex marker.  */				      \
+	    width -= 2;							      \
+									      \
+	  if (is_negative || showsign || space)				      \
+	    --width;							      \
+									      \
+	  if (pad == L_(' '))						      \
+	    {								      \
+	      PAD (L_(' '));						      \
+	      width = 0;						      \
+	    }								      \
+									      \
+	  if (is_negative)						      \
+	    outchar (L_('-'));						      \
+	  else if (showsign)						      \
+	    outchar (L_('+'));						      \
+	  else if (space)						      \
+	    outchar (L_(' '));						      \
+									      \
+	  if (number.word != 0 && alt && base == 16)			      \
+	    {								      \
+	      outchar (L_('0'));					      \
+	      outchar (spec);						      \
+	    }								      \
+									      \
+	  width += prec;						      \
+	  PAD (L_('0'));						      \
+									      \
+	  outstring (string, workend - string);				      \
+									      \
+	  break;							      \
+	}								      \
+      else								      \
+	{								      \
+	  if (is_negative)						      \
+	    {								      \
+	      outchar (L_('-'));					      \
+	      --width;							      \
+	    }								      \
+	  else if (showsign)						      \
+	    {								      \
+	      outchar (L_('+'));					      \
+	      --width;							      \
+	    }								      \
+	  else if (space)						      \
+	    {								      \
+	      outchar (L_(' '));					      \
+	      --width;							      \
+	    }								      \
+									      \
+	  if (number.word != 0 && alt && base == 16)			      \
+	    {								      \
+	      outchar (L_('0'));					      \
+	      outchar (spec);						      \
+	      width -= 2;						      \
+	    }								      \
+									      \
+	  width -= workend - string + prec;				      \
+									      \
+	  if (prec > 0)							      \
+	    {								      \
+	      int temp = width;						      \
+	      width = prec;						      \
+	      PAD (L_('0'));						      \
+	      width = temp;						      \
+	    }								      \
+									      \
+	  outstring (string, workend - string);				      \
+									      \
+	  PAD (L_(' '));						      \
+	  break;							      \
+	}								      \
+									      \
+    LABEL (form_float):							      \
+      {									      \
+	/* Floating-point number.  This is handled by printf_fp.c.  */	      \
+	const void *ptr;						      \
+	int function_done;						      \
+									      \
+	if (fspec == NULL)						      \
+	  {								      \
+	    if (__ldbl_is_dbl)						      \
+	      is_long_double = 0;					      \
+									      \
+	    struct printf_info info = { .prec = prec,			      \
+					.width = width,			      \
+					.spec = spec,			      \
+					.is_long_double = is_long_double,     \
+					.is_short = is_short,		      \
+					.is_long = is_long,		      \
+					.alt = alt,			      \
+					.space = space,			      \
+					.left = left,			      \
+					.showsign = showsign,		      \
+					.group = group,			      \
+					.pad = pad,			      \
+					.extra = 0,			      \
+					.i18n = use_outdigits,		      \
+					.wide = sizeof (CHAR_T) != 1 };	      \
+									      \
+	    if (is_long_double)						      \
+	      the_arg.pa_long_double = va_arg (ap, long double);	      \
+	    else							      \
+	      the_arg.pa_double = va_arg (ap, double);			      \
+	    ptr = (const void *) &the_arg;				      \
+									      \
+	    function_done = __printf_fp (s, &info, &ptr);		      \
+	  }								      \
+	else								      \
+	  {								      \
+	    ptr = (const void *) &args_value[fspec->data_arg];		      \
+	    if (__ldbl_is_dbl)						      \
+	      {								      \
+		fspec->data_arg_type = PA_DOUBLE;			      \
+		fspec->info.is_long_double = 0;				      \
+	      }								      \
+									      \
+	    function_done = __printf_fp (s, &fspec->info, &ptr);	      \
+	  }								      \
+									      \
+	if (function_done < 0)						      \
+	  {								      \
+	    /* Error in print handler; up to handler to set errno.  */	      \
+	    done = -1;							      \
+	    goto all_done;						      \
+	  }								      \
+									      \
+	done_add (function_done);					      \
+      }									      \
+      break;								      \
+									      \
+    LABEL (form_floathex):						      \
+      {									      \
+	/* Floating point number printed as hexadecimal number.  */	      \
+	const void *ptr;						      \
+	int function_done;						      \
+									      \
+	if (fspec == NULL)						      \
+	  {								      \
+	    if (__ldbl_is_dbl)						      \
+	      is_long_double = 0;					      \
+									      \
+	    struct printf_info info = { .prec = prec,			      \
+					.width = width,			      \
+					.spec = spec,			      \
+					.is_long_double = is_long_double,     \
+					.is_short = is_short,		      \
+					.is_long = is_long,		      \
+					.alt = alt,			      \
+					.space = space,			      \
+					.left = left,			      \
+					.showsign = showsign,		      \
+					.group = group,			      \
+					.pad = pad,			      \
+					.extra = 0,			      \
+					.wide = sizeof (CHAR_T) != 1 };	      \
+									      \
+	    if (is_long_double)						      \
+	      the_arg.pa_long_double = va_arg (ap, long double);	      \
+	    else							      \
+	      the_arg.pa_double = va_arg (ap, double);			      \
+	    ptr = (const void *) &the_arg;				      \
+									      \
+	    function_done = __printf_fphex (s, &info, &ptr);		      \
+	  }								      \
+	else								      \
+	  {								      \
+	    ptr = (const void *) &args_value[fspec->data_arg];		      \
+	    if (__ldbl_is_dbl)						      \
+	      fspec->info.is_long_double = 0;				      \
+									      \
+	    function_done = __printf_fphex (s, &fspec->info, &ptr);	      \
+	  }								      \
+									      \
+	if (function_done < 0)						      \
+	  {								      \
+	    /* Error in print handler; up to handler to set errno.  */	      \
+	    done = -1;							      \
+	    goto all_done;						      \
+	  }								      \
+									      \
+	done_add (function_done);					      \
+      }									      \
+      break;								      \
+									      \
+    LABEL (form_pointer):						      \
+      /* Generic pointer.  */						      \
+      {									      \
+	const void *ptr;						      \
+	if (fspec == NULL)						      \
+	  ptr = va_arg (ap, void *);					      \
+	else								      \
+	  ptr = args_value[fspec->data_arg].pa_pointer;			      \
+	if (ptr != NULL)						      \
+	  {								      \
+	    /* If the pointer is not NULL, write it as a %#x spec.  */	      \
+	    base = 16;							      \
+	    number.word = (unsigned long int) ptr;			      \
+	    is_negative = 0;						      \
+	    alt = 1;							      \
+	    group = 0;							      \
+	    spec = L_('x');						      \
+	    goto LABEL (number);					      \
+	  }								      \
+	else								      \
+	  {								      \
+	    /* Write "(nil)" for a nil pointer.  */			      \
+	    string = (CHAR_T *) L_("(nil)");				      \
+	    /* Make sure the full string "(nil)" is printed.  */	      \
+	    if (prec < 5)						      \
+	      prec = 5;							      \
+	    /* This is a wide string iff compiling wprintf.  */		      \
+	    is_long = sizeof (CHAR_T) > 1;				      \
+	    goto LABEL (print_string);					      \
+	  }								      \
+      }									      \
+      /* NOTREACHED */							      \
+									      \
+    LABEL (form_number):						      \
+      if (s->_flags2 & _IO_FLAGS2_FORTIFY)				      \
+	{								      \
+	  if (! readonly_format)					      \
+	    {								      \
+	      extern int __readonly_area (const void *, size_t)		      \
+		attribute_hidden;					      \
+	      readonly_format						      \
+		= __readonly_area (format, ((STR_LEN (format) + 1)	      \
+					    * sizeof (CHAR_T)));	      \
+	    }								      \
+	  if (readonly_format < 0)					      \
+	    __libc_fatal ("*** %n in writable segment detected ***\n");	      \
+	}								      \
+      /* Answer the count of characters written.  */			      \
+      if (fspec == NULL)						      \
+	{								      \
+	  if (is_longlong)						      \
+	    *(long long int *) va_arg (ap, void *) = done;		      \
+	  else if (is_long_num)						      \
+	    *(long int *) va_arg (ap, void *) = done;			      \
+	  else if (is_char)						      \
+	    *(char *) va_arg (ap, void *) = done;			      \
+	  else if (!is_short)						      \
+	    *(int *) va_arg (ap, void *) = done;			      \
+	  else								      \
+	    *(short int *) va_arg (ap, void *) = done;			      \
+	}								      \
+      else								      \
+	if (is_longlong)						      \
+	  *(long long int *) args_value[fspec->data_arg].pa_pointer = done;   \
+	else if (is_long_num)						      \
+	  *(long int *) args_value[fspec->data_arg].pa_pointer = done;	      \
+	else if (is_char)						      \
+	  *(char *) args_value[fspec->data_arg].pa_pointer = done;	      \
+	else if (!is_short)						      \
+	  *(int *) args_value[fspec->data_arg].pa_pointer = done;	      \
+	else								      \
+	  *(short int *) args_value[fspec->data_arg].pa_pointer = done;	      \
+      break;								      \
+									      \
+    LABEL (form_strerror):						      \
+      /* Print description of error ERRNO.  */				      \
+      string =								      \
+	(CHAR_T *) __strerror_r (save_errno, (char *) work_buffer,	      \
+				 WORK_BUFFER_SIZE * sizeof (CHAR_T));	      \
+      is_long = 0;		/* This is no wide-char string.  */	      \
+      goto LABEL (print_string)
+
+#ifdef COMPILE_WPRINTF
+# define process_string_arg(fspec) \
+    LABEL (form_character):						      \
+      /* Character.  */							      \
+      if (is_long)							      \
+	goto LABEL (form_wcharacter);					      \
+      --width;	/* Account for the character itself.  */		      \
+      if (!left)							      \
+	PAD (L' ');							      \
+      if (fspec == NULL)						      \
+	outchar (__btowc ((unsigned char) va_arg (ap, int))); /* Promoted. */ \
+      else								      \
+	outchar (__btowc ((unsigned char)				      \
+			  args_value[fspec->data_arg].pa_int));		      \
+      if (left)								      \
+	PAD (L' ');							      \
+      break;								      \
+									      \
+    LABEL (form_wcharacter):						      \
+      {									      \
+	/* Wide character.  */						      \
+	--width;							      \
+	if (!left)							      \
+	  PAD (L' ');							      \
+	if (fspec == NULL)						      \
+	  outchar (va_arg (ap, wchar_t));				      \
+	else								      \
+	  outchar (args_value[fspec->data_arg].pa_wchar);		      \
+	if (left)							      \
+	  PAD (L' ');							      \
+      }									      \
+      break;								      \
+									      \
+    LABEL (form_string):						      \
+      {									      \
+	size_t len;							      \
+	int string_malloced;						      \
+									      \
+	/* The string argument could in fact be `char *' or `wchar_t *'.      \
+	   But this should not make a difference here.  */		      \
+	if (fspec == NULL)						      \
+	  string = (CHAR_T *) va_arg (ap, const wchar_t *);		      \
+	else								      \
+	  string = (CHAR_T *) args_value[fspec->data_arg].pa_wstring;	      \
+									      \
+	/* Entry point for printing other strings.  */			      \
+      LABEL (print_string):						      \
+									      \
+	string_malloced = 0;						      \
+	if (string == NULL)						      \
+	  {								      \
+	    /* Write "(null)" if there's space.  */			      \
+	    if (prec == -1						      \
+		|| prec >= (int) (sizeof (null) / sizeof (null[0])) - 1)      \
+	      {								      \
+		string = (CHAR_T *) null;				      \
+		len = (sizeof (null) / sizeof (null[0])) - 1;		      \
+	      }								      \
+	    else							      \
+	      {								      \
+		string = (CHAR_T *) L"";				      \
+		len = 0;						      \
+	      }								      \
+	  }								      \
+	else if (!is_long && spec != L_('S'))				      \
+	  {								      \
+	    /* This is complicated.  We have to transform the multibyte	      \
+	       string into a wide character string.  */			      \
+	    const char *mbs = (const char *) string;			      \
+	    mbstate_t mbstate;						      \
+									      \
+	    len = prec != -1 ? __strnlen (mbs, (size_t) prec) : strlen (mbs); \
+									      \
+	    /* Allocate dynamically an array which definitely is long	      \
+	       enough for the wide character version.  Each byte in the	      \
+	       multi-byte string can produce at most one wide character.  */  \
+	    if (__glibc_unlikely (len > SIZE_MAX / sizeof (wchar_t)))	      \
+	      {								      \
+		__set_errno (EOVERFLOW);				      \
+		done = -1;						      \
+		goto all_done;						      \
+	      }								      \
+	    else if (__libc_use_alloca (len * sizeof (wchar_t)))	      \
+	      string = (CHAR_T *) alloca (len * sizeof (wchar_t));	      \
+	    else if ((string = (CHAR_T *) malloc (len * sizeof (wchar_t)))    \
+		     == NULL)						      \
+	      {								      \
+		done = -1;						      \
+		goto all_done;						      \
+	      }								      \
+	    else							      \
+	      string_malloced = 1;					      \
+									      \
+	    memset (&mbstate, '\0', sizeof (mbstate_t));		      \
+	    len = __mbsrtowcs (string, &mbs, len, &mbstate);		      \
+	    if (len == (size_t) -1)					      \
+	      {								      \
+		/* Illegal multibyte character.  */			      \
+		done = -1;						      \
+		goto all_done;						      \
+	      }								      \
+	  }								      \
+	else								      \
+	  {								      \
+	    if (prec != -1)						      \
+	      /* Search for the end of the string, but don't search past      \
+		 the length specified by the precision.  */		      \
+	      len = __wcsnlen (string, prec);				      \
+	    else							      \
+	      len = __wcslen (string);					      \
+	  }								      \
+									      \
+	if ((width -= len) < 0)						      \
+	  {								      \
+	    outstring (string, len);					      \
+	    break;							      \
+	  }								      \
+									      \
+	if (!left)							      \
+	  PAD (L' ');							      \
+	outstring (string, len);					      \
+	if (left)							      \
+	  PAD (L' ');							      \
+	if (__glibc_unlikely (string_malloced))				      \
+	  free (string);						      \
+      }									      \
+      break;
+#else
+# define process_string_arg(fspec) \
+    LABEL (form_character):						      \
+      /* Character.  */							      \
+      if (is_long)							      \
+	goto LABEL (form_wcharacter);					      \
+      --width;	/* Account for the character itself.  */		      \
+      if (!left)							      \
+	PAD (' ');							      \
+      if (fspec == NULL)						      \
+	outchar ((unsigned char) va_arg (ap, int)); /* Promoted.  */	      \
+      else								      \
+	outchar ((unsigned char) args_value[fspec->data_arg].pa_int);	      \
+      if (left)								      \
+	PAD (' ');							      \
+      break;								      \
+									      \
+    LABEL (form_wcharacter):						      \
+      {									      \
+	/* Wide character.  */						      \
+	char buf[MB_CUR_MAX];						      \
+	mbstate_t mbstate;						      \
+	size_t len;							      \
+									      \
+	memset (&mbstate, '\0', sizeof (mbstate_t));			      \
+	len = __wcrtomb (buf, (fspec == NULL ? va_arg (ap, wchar_t)	      \
+			       : args_value[fspec->data_arg].pa_wchar),	      \
+			 &mbstate);					      \
+	if (len == (size_t) -1)						      \
+	  {								      \
+	    /* Something went wrong during the conversion.  Bail out.  */     \
+	    done = -1;							      \
+	    goto all_done;						      \
+	  }								      \
+	width -= len;							      \
+	if (!left)							      \
+	  PAD (' ');							      \
+	outstring (buf, len);						      \
+	if (left)							      \
+	  PAD (' ');							      \
+      }									      \
+      break;								      \
+									      \
+    LABEL (form_string):						      \
+      {									      \
+	size_t len;							      \
+	int string_malloced;						      \
+									      \
+	/* The string argument could in fact be `char *' or `wchar_t *'.      \
+	   But this should not make a difference here.  */		      \
+	if (fspec == NULL)						      \
+	  string = (char *) va_arg (ap, const char *);			      \
+	else								      \
+	  string = (char *) args_value[fspec->data_arg].pa_string;	      \
+									      \
+	/* Entry point for printing other strings.  */			      \
+      LABEL (print_string):						      \
+									      \
+	string_malloced = 0;						      \
+	if (string == NULL)						      \
+	  {								      \
+	    /* Write "(null)" if there's space.  */			      \
+	    if (prec == -1 || prec >= (int) sizeof (null) - 1)		      \
+	      {								      \
+		string = (char *) null;					      \
+		len = sizeof (null) - 1;				      \
+	      }								      \
+	    else							      \
+	      {								      \
+		string = (char *) "";					      \
+		len = 0;						      \
+	      }								      \
+	  }								      \
+	else if (!is_long && spec != L_('S'))				      \
+	  {								      \
+	    if (prec != -1)						      \
+	      /* Search for the end of the string, but don't search past      \
+		 the length (in bytes) specified by the precision.  */	      \
+	      len = __strnlen (string, prec);				      \
+	    else							      \
+	      len = strlen (string);					      \
+	  }								      \
+	else								      \
+	  {								      \
+	    const wchar_t *s2 = (const wchar_t *) string;		      \
+	    mbstate_t mbstate;						      \
+									      \
+	    memset (&mbstate, '\0', sizeof (mbstate_t));		      \
+									      \
+	    if (prec >= 0)						      \
+	      {								      \
+		/* The string `s2' might not be NUL terminated.  */	      \
+		if (__libc_use_alloca (prec))				      \
+		  string = (char *) alloca (prec);			      \
+		else if ((string = (char *) malloc (prec)) == NULL)	      \
+		  {							      \
+		    done = -1;						      \
+		    goto all_done;					      \
+		  }							      \
+		else							      \
+		  string_malloced = 1;					      \
+		len = __wcsrtombs (string, &s2, prec, &mbstate);	      \
+	      }								      \
+	    else							      \
+	      {								      \
+		len = __wcsrtombs (NULL, &s2, 0, &mbstate);		      \
+		if (len != (size_t) -1)					      \
+		  {							      \
+		    assert (__mbsinit (&mbstate));			      \
+		    s2 = (const wchar_t *) string;			      \
+		    if (__libc_use_alloca (len + 1))			      \
+		      string = (char *) alloca (len + 1);		      \
+		    else if ((string = (char *) malloc (len + 1)) == NULL)    \
+		      {							      \
+			done = -1;					      \
+			goto all_done;					      \
+		      }							      \
+		    else						      \
+		      string_malloced = 1;				      \
+		    (void) __wcsrtombs (string, &s2, len + 1, &mbstate);      \
+		  }							      \
+	      }								      \
+									      \
+	    if (len == (size_t) -1)					      \
+	      {								      \
+		/* Illegal wide-character string.  */			      \
+		done = -1;						      \
+		goto all_done;						      \
+	      }								      \
+	  }								      \
+									      \
+	if ((width -= len) < 0)						      \
+	  {								      \
+	    outstring (string, len);					      \
+	    break;							      \
+	  }								      \
+									      \
+	if (!left)							      \
+	  PAD (' ');							      \
+	outstring (string, len);					      \
+	if (left)							      \
+	  PAD (' ');							      \
+	if (__glibc_unlikely (string_malloced))			              \
+	  free (string);						      \
+      }									      \
+      break;
+#endif
+
+/* Helper function to provide temporary buffering for unbuffered streams.  */
+static int buffered_vfprintf (FILE *stream, const CHAR_T *fmt, va_list)
+     __THROW __attribute__ ((noinline)) internal_function;
+
+/* Handle positional format specifiers.  */
+static int printf_positional (_IO_FILE *s,
+			      const CHAR_T *format, int readonly_format,
+			      va_list ap, va_list *ap_savep, int done,
+			      int nspecs_done, const UCHAR_T *lead_str_end,
+			      CHAR_T *work_buffer, int save_errno,
+			      const char *grouping, THOUSANDS_SEP_T);
+
+/* Handle unknown format specifier.  */
+static int printf_unknown (FILE *, const struct printf_info *,
+			   const void *const *) __THROW;
+
+/* Group digits of number string.  */
+static CHAR_T *group_number (CHAR_T *, CHAR_T *, const char *, THOUSANDS_SEP_T)
+     __THROW internal_function;
+
+/* The function itself.  */
+int
+vfprintf (FILE *s, const CHAR_T *format, va_list ap)
+{
+  /* The character used as thousands separator.  */
+  THOUSANDS_SEP_T thousands_sep = 0;
+
+  /* The string describing the size of groups of digits.  */
+  const char *grouping;
+
+  /* Place to accumulate the result.  */
+  int done;
+
+  /* Current character in format string.  */
+  const UCHAR_T *f;
+
+  /* End of leading constant string.  */
+  const UCHAR_T *lead_str_end;
+
+  /* Points to next format specifier.  */
+  const UCHAR_T *end_of_spec;
+
+  /* Buffer intermediate results.  */
+  CHAR_T work_buffer[WORK_BUFFER_SIZE];
+  CHAR_T *workstart = NULL;
+  CHAR_T *workend;
+
+  /* We have to save the original argument pointer.  */
+  va_list ap_save;
+
+  /* Count number of specifiers we already processed.  */
+  int nspecs_done;
+
+  /* For the %m format we may need the current `errno' value.  */
+  int save_errno = errno;
+
+  /* 1 if format is in read-only memory, -1 if it is in writable memory,
+     0 if unknown.  */
+  int readonly_format = 0;
+
+  /* Orient the stream.  */
+#ifdef ORIENT
+  ORIENT;
+#endif
+
+  /* Sanity check of arguments.  */
+  ARGCHECK (s, format);
+
+#ifdef ORIENT
+  /* Check for correct orientation.  */
+  if (_IO_vtable_offset (s) == 0 &&
+      _IO_fwide (s, sizeof (CHAR_T) == 1 ? -1 : 1)
+      != (sizeof (CHAR_T) == 1 ? -1 : 1))
+    /* The stream is already oriented otherwise.  */
+    return EOF;
+#endif
+
+  if (UNBUFFERED_P (s))
+    /* Use a helper function which will allocate a local temporary buffer
+       for the stream and then call us again.  */
+    return buffered_vfprintf (s, format, ap);
+
+  /* Initialize local variables.  */
+  done = 0;
+  grouping = (const char *) -1;
+#ifdef __va_copy
+  /* This macro will be available soon in gcc's <stdarg.h>.  We need it
+     since on some systems `va_list' is not an integral type.  */
+  __va_copy (ap_save, ap);
+#else
+  ap_save = ap;
+#endif
+  nspecs_done = 0;
+
+#ifdef COMPILE_WPRINTF
+  /* Find the first format specifier.  */
+  f = lead_str_end = __find_specwc ((const UCHAR_T *) format);
+#else
+  /* Find the first format specifier.  */
+  f = lead_str_end = __find_specmb ((const UCHAR_T *) format);
+#endif
+
+  /* Lock stream.  */
+  _IO_cleanup_region_start ((void (*) (void *)) &_IO_funlockfile, s);
+  _IO_flockfile (s);
+
+  /* Write the literal text before the first format.  */
+  outstring ((const UCHAR_T *) format,
+	     lead_str_end - (const UCHAR_T *) format);
+
+  /* If we only have to print a simple string, return now.  */
+  if (*f == L_('\0'))
+    goto all_done;
+
+  /* Use the slow path in case any printf handler is registered.  */
+  if (__glibc_unlikely (__printf_function_table != NULL
+			|| __printf_modifier_table != NULL
+			|| __printf_va_arg_table != NULL))
+    goto do_positional;
+
+  /* Process whole format string.  */
+  do
+    {
+      STEP0_3_TABLE;
+      STEP4_TABLE;
+
+      union printf_arg *args_value;	/* This is not used here but ... */
+      int is_negative;	/* Flag for negative number.  */
+      union
+      {
+	unsigned long long int longlong;
+	unsigned long int word;
+      } number;
+      int base;
+      union printf_arg the_arg;
+      CHAR_T *string;	/* Pointer to argument string.  */
+      int alt = 0;	/* Alternate format.  */
+      int space = 0;	/* Use space prefix if no sign is needed.  */
+      int left = 0;	/* Left-justify output.  */
+      int showsign = 0;	/* Always begin with plus or minus sign.  */
+      int group = 0;	/* Print numbers according grouping rules.  */
+      int is_long_double = 0; /* Argument is long double/ long long int.  */
+      int is_short = 0;	/* Argument is short int.  */
+      int is_long = 0;	/* Argument is long int.  */
+      int is_char = 0;	/* Argument is promoted (unsigned) char.  */
+      int width = 0;	/* Width of output; 0 means none specified.  */
+      int prec = -1;	/* Precision of output; -1 means none specified.  */
+      /* This flag is set by the 'I' modifier and selects the use of the
+	 `outdigits' as determined by the current locale.  */
+      int use_outdigits = 0;
+      UCHAR_T pad = L_(' ');/* Padding character.  */
+      CHAR_T spec;
+
+      workstart = NULL;
+      workend = work_buffer + WORK_BUFFER_SIZE;
+
+      /* Get current character in format string.  */
+      JUMP (*++f, step0_jumps);
+
+      /* ' ' flag.  */
+    LABEL (flag_space):
+      space = 1;
+      JUMP (*++f, step0_jumps);
+
+      /* '+' flag.  */
+    LABEL (flag_plus):
+      showsign = 1;
+      JUMP (*++f, step0_jumps);
+
+      /* The '-' flag.  */
+    LABEL (flag_minus):
+      left = 1;
+      pad = L_(' ');
+      JUMP (*++f, step0_jumps);
+
+      /* The '#' flag.  */
+    LABEL (flag_hash):
+      alt = 1;
+      JUMP (*++f, step0_jumps);
+
+      /* The '0' flag.  */
+    LABEL (flag_zero):
+      if (!left)
+	pad = L_('0');
+      JUMP (*++f, step0_jumps);
+
+      /* The '\'' flag.  */
+    LABEL (flag_quote):
+      group = 1;
+
+      if (grouping == (const char *) -1)
+	{
+#ifdef COMPILE_WPRINTF
+	  thousands_sep = _NL_CURRENT_WORD (LC_NUMERIC,
+					    _NL_NUMERIC_THOUSANDS_SEP_WC);
+#else
+	  thousands_sep = _NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP);
+#endif
+
+	  grouping = _NL_CURRENT (LC_NUMERIC, GROUPING);
+	  if (*grouping == '\0' || *grouping == CHAR_MAX
+#ifdef COMPILE_WPRINTF
+	      || thousands_sep == L'\0'
+#else
+	      || *thousands_sep == '\0'
+#endif
+	      )
+	    grouping = NULL;
+	}
+      JUMP (*++f, step0_jumps);
+
+    LABEL (flag_i18n):
+      use_outdigits = 1;
+      JUMP (*++f, step0_jumps);
+
+      /* Get width from argument.  */
+    LABEL (width_asterics):
+      {
+	const UCHAR_T *tmp;	/* Temporary value.  */
+
+	tmp = ++f;
+	if (ISDIGIT (*tmp))
+	  {
+	    int pos = read_int (&tmp);
+
+	    if (pos == -1)
+	      {
+		__set_errno (EOVERFLOW);
+		done = -1;
+		goto all_done;
+	      }
+
+	    if (pos && *tmp == L_('$'))
+	      /* The width comes from a positional parameter.  */
+	      goto do_positional;
+	  }
+	width = va_arg (ap, int);
+
+	/* Negative width means left justified.  */
+	if (width < 0)
+	  {
+	    width = -width;
+	    pad = L_(' ');
+	    left = 1;
+	  }
+
+	if (__glibc_unlikely (width >= INT_MAX / sizeof (CHAR_T) - 32))
+	  {
+	    __set_errno (EOVERFLOW);
+	    done = -1;
+	    goto all_done;
+	  }
+
+	if (width >= WORK_BUFFER_SIZE - 32)
+	  {
+	    /* We have to use a special buffer.  The "32" is just a safe
+	       bet for all the output which is not counted in the width.  */
+	    size_t needed = ((size_t) width + 32) * sizeof (CHAR_T);
+	    if (__libc_use_alloca (needed))
+	      workend = (CHAR_T *) alloca (needed) + width + 32;
+	    else
+	      {
+		workstart = (CHAR_T *) malloc (needed);
+		if (workstart == NULL)
+		  {
+		    done = -1;
+		    goto all_done;
+		  }
+		workend = workstart + width + 32;
+	      }
+	  }
+      }
+      JUMP (*f, step1_jumps);
+
+      /* Given width in format string.  */
+    LABEL (width):
+      width = read_int (&f);
+
+      if (__glibc_unlikely (width == -1
+			    || width >= INT_MAX / sizeof (CHAR_T) - 32))
+	{
+	  __set_errno (EOVERFLOW);
+	  done = -1;
+	  goto all_done;
+	}
+
+      if (width >= WORK_BUFFER_SIZE - 32)
+	{
+	  /* We have to use a special buffer.  The "32" is just a safe
+	     bet for all the output which is not counted in the width.  */
+	  size_t needed = ((size_t) width + 32) * sizeof (CHAR_T);
+	  if (__libc_use_alloca (needed))
+	    workend = (CHAR_T *) alloca (needed) + width + 32;
+	  else
+	    {
+	      workstart = (CHAR_T *) malloc (needed);
+	      if (workstart == NULL)
+		{
+		  done = -1;
+		  goto all_done;
+		}
+	      workend = workstart + width + 32;
+	    }
+	}
+      if (*f == L_('$'))
+	/* Oh, oh.  The argument comes from a positional parameter.  */
+	goto do_positional;
+      JUMP (*f, step1_jumps);
+
+    LABEL (precision):
+      ++f;
+      if (*f == L_('*'))
+	{
+	  const UCHAR_T *tmp;	/* Temporary value.  */
+
+	  tmp = ++f;
+	  if (ISDIGIT (*tmp))
+	    {
+	      int pos = read_int (&tmp);
+
+	      if (pos == -1)
+		{
+		  __set_errno (EOVERFLOW);
+		  done = -1;
+		  goto all_done;
+		}
+
+	      if (pos && *tmp == L_('$'))
+		/* The precision comes from a positional parameter.  */
+		goto do_positional;
+	    }
+	  prec = va_arg (ap, int);
+
+	  /* If the precision is negative the precision is omitted.  */
+	  if (prec < 0)
+	    prec = -1;
+	}
+      else if (ISDIGIT (*f))
+	{
+	  prec = read_int (&f);
+
+	  /* The precision was specified in this case as an extremely
+	     large positive value.  */
+	  if (prec == -1)
+	    {
+	      __set_errno (EOVERFLOW);
+	      done = -1;
+	      goto all_done;
+	    }
+	}
+      else
+	prec = 0;
+      if (prec > width && prec > WORK_BUFFER_SIZE - 32)
+	{
+	  if (__glibc_unlikely (prec >= INT_MAX / sizeof (CHAR_T) - 32))
+	    {
+	      __set_errno (EOVERFLOW);
+	      done = -1;
+	      goto all_done;
+	    }
+	  size_t needed = ((size_t) prec + 32) * sizeof (CHAR_T);
+
+	  if (__libc_use_alloca (needed))
+	    workend = (CHAR_T *) alloca (needed) + prec + 32;
+	  else
+	    {
+	      workstart = (CHAR_T *) malloc (needed);
+	      if (workstart == NULL)
+		{
+		  done = -1;
+		  goto all_done;
+		}
+	      workend = workstart + prec + 32;
+	    }
+	}
+      JUMP (*f, step2_jumps);
+
+      /* Process 'h' modifier.  There might another 'h' following.  */
+    LABEL (mod_half):
+      is_short = 1;
+      JUMP (*++f, step3a_jumps);
+
+      /* Process 'hh' modifier.  */
+    LABEL (mod_halfhalf):
+      is_short = 0;
+      is_char = 1;
+      JUMP (*++f, step4_jumps);
+
+      /* Process 'l' modifier.  There might another 'l' following.  */
+    LABEL (mod_long):
+      is_long = 1;
+      JUMP (*++f, step3b_jumps);
+
+      /* Process 'L', 'q', or 'll' modifier.  No other modifier is
+	 allowed to follow.  */
+    LABEL (mod_longlong):
+      is_long_double = 1;
+      is_long = 1;
+      JUMP (*++f, step4_jumps);
+
+    LABEL (mod_size_t):
+      is_long_double = sizeof (size_t) > sizeof (unsigned long int);
+      is_long = sizeof (size_t) > sizeof (unsigned int);
+      JUMP (*++f, step4_jumps);
+
+    LABEL (mod_ptrdiff_t):
+      is_long_double = sizeof (ptrdiff_t) > sizeof (unsigned long int);
+      is_long = sizeof (ptrdiff_t) > sizeof (unsigned int);
+      JUMP (*++f, step4_jumps);
+
+    LABEL (mod_intmax_t):
+      is_long_double = sizeof (intmax_t) > sizeof (unsigned long int);
+      is_long = sizeof (intmax_t) > sizeof (unsigned int);
+      JUMP (*++f, step4_jumps);
+
+      /* Process current format.  */
+      while (1)
+	{
+	  process_arg (((struct printf_spec *) NULL));
+	  process_string_arg (((struct printf_spec *) NULL));
+
+	LABEL (form_unknown):
+	  if (spec == L_('\0'))
+	    {
+	      /* The format string ended before the specifier is complete.  */
+	      __set_errno (EINVAL);
+	      done = -1;
+	      goto all_done;
+	    }
+
+	  /* If we are in the fast loop force entering the complicated
+	     one.  */
+	  goto do_positional;
+	}
+
+      /* The format is correctly handled.  */
+      ++nspecs_done;
+
+      if (__glibc_unlikely (workstart != NULL))
+	free (workstart);
+      workstart = NULL;
+
+      /* Look for next format specifier.  */
+#ifdef COMPILE_WPRINTF
+      f = __find_specwc ((end_of_spec = ++f));
+#else
+      f = __find_specmb ((end_of_spec = ++f));
+#endif
+
+      /* Write the following constant string.  */
+      outstring (end_of_spec, f - end_of_spec);
+    }
+  while (*f != L_('\0'));
+
+  /* Unlock stream and return.  */
+  goto all_done;
+
+  /* Hand off processing for positional parameters.  */
+do_positional:
+  if (__glibc_unlikely (workstart != NULL))
+    {
+      free (workstart);
+      workstart = NULL;
+    }
+  done = printf_positional (s, format, readonly_format, ap, &ap_save,
+			    done, nspecs_done, lead_str_end, work_buffer,
+			    save_errno, grouping, thousands_sep);
+
+ all_done:
+  if (__glibc_unlikely (workstart != NULL))
+    free (workstart);
+  /* Unlock the stream.  */
+  _IO_funlockfile (s);
+  _IO_cleanup_region_end (0);
+
+  return done;
+}
+
+static int
+printf_positional (_IO_FILE *s, const CHAR_T *format, int readonly_format,
+		   va_list ap, va_list *ap_savep, int done, int nspecs_done,
+		   const UCHAR_T *lead_str_end,
+		   CHAR_T *work_buffer, int save_errno,
+		   const char *grouping, THOUSANDS_SEP_T thousands_sep)
+{
+  /* For the argument descriptions, which may be allocated on the heap.  */
+  void *args_malloced = NULL;
+
+  /* For positional argument handling.  */
+  struct scratch_buffer specsbuf;
+  scratch_buffer_init (&specsbuf);
+  struct printf_spec *specs = specsbuf.data;
+  size_t specs_limit = specsbuf.length / sizeof (specs[0]);
+
+  /* Array with information about the needed arguments.  This has to
+     be dynamically extensible.  */
+  size_t nspecs = 0;
+
+  /* The number of arguments the format string requests.  This will
+     determine the size of the array needed to store the argument
+     attributes.  */
+  size_t nargs = 0;
+  size_t bytes_per_arg;
+  union printf_arg *args_value;
+  int *args_size;
+  int *args_type;
+
+  /* Positional parameters refer to arguments directly.  This could
+     also determine the maximum number of arguments.  Track the
+     maximum number.  */
+  size_t max_ref_arg = 0;
+
+  /* Just a counter.  */
+  size_t cnt;
+
+  CHAR_T *workstart = NULL;
+
+  if (grouping == (const char *) -1)
+    {
+#ifdef COMPILE_WPRINTF
+      thousands_sep = _NL_CURRENT_WORD (LC_NUMERIC,
+					_NL_NUMERIC_THOUSANDS_SEP_WC);
+#else
+      thousands_sep = _NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP);
+#endif
+
+      grouping = _NL_CURRENT (LC_NUMERIC, GROUPING);
+      if (*grouping == '\0' || *grouping == CHAR_MAX)
+	grouping = NULL;
+    }
+
+  for (const UCHAR_T *f = lead_str_end; *f != L_('\0');
+       f = specs[nspecs++].next_fmt)
+    {
+      if (nspecs == specs_limit)
+	{
+	  if (!scratch_buffer_grow_preserve (&specsbuf))
+	    {
+	      done = -1;
+	      goto all_done;
+	    }
+	  specs = specsbuf.data;
+	  specs_limit = specsbuf.length / sizeof (specs[0]);
+	}
+
+      /* Parse the format specifier.  */
+#ifdef COMPILE_WPRINTF
+      nargs += __parse_one_specwc (f, nargs, &specs[nspecs], &max_ref_arg);
+#else
+      nargs += __parse_one_specmb (f, nargs, &specs[nspecs], &max_ref_arg);
+#endif
+    }
+
+  /* Determine the number of arguments the format string consumes.  */
+  nargs = MAX (nargs, max_ref_arg);
+  /* Calculate total size needed to represent a single argument across
+     all three argument-related arrays.  */
+  bytes_per_arg = (sizeof (*args_value) + sizeof (*args_size)
+		   + sizeof (*args_type));
+
+  /* Check for potential integer overflow.  */
+  if (__glibc_unlikely (nargs > INT_MAX / bytes_per_arg))
+    {
+      __set_errno (EOVERFLOW);
+      done = -1;
+      goto all_done;
+    }
+
+  /* Allocate memory for all three argument arrays.  */
+  if (__libc_use_alloca (nargs * bytes_per_arg))
+    args_value = alloca (nargs * bytes_per_arg);
+  else
+    {
+      args_value = args_malloced = malloc (nargs * bytes_per_arg);
+      if (args_value == NULL)
+	{
+	  done = -1;
+	  goto all_done;
+	}
+    }
+
+  /* Set up the remaining two arrays to each point past the end of the
+     prior array, since space for all three has been allocated now.  */
+  args_size = &args_value[nargs].pa_int;
+  args_type = &args_size[nargs];
+  memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0',
+	  nargs * sizeof (*args_type));
+
+  /* XXX Could do sanity check here: If any element in ARGS_TYPE is
+     still zero after this loop, format is invalid.  For now we
+     simply use 0 as the value.  */
+
+  /* Fill in the types of all the arguments.  */
+  for (cnt = 0; cnt < nspecs; ++cnt)
+    {
+      /* If the width is determined by an argument this is an int.  */
+      if (specs[cnt].width_arg != -1)
+	args_type[specs[cnt].width_arg] = PA_INT;
+
+      /* If the precision is determined by an argument this is an int.  */
+      if (specs[cnt].prec_arg != -1)
+	args_type[specs[cnt].prec_arg] = PA_INT;
+
+      switch (specs[cnt].ndata_args)
+	{
+	case 0:		/* No arguments.  */
+	  break;
+	case 1:		/* One argument; we already have the
+			   type and size.  */
+	  args_type[specs[cnt].data_arg] = specs[cnt].data_arg_type;
+	  args_size[specs[cnt].data_arg] = specs[cnt].size;
+	  break;
+	default:
+	  /* We have more than one argument for this format spec.
+	     We must call the arginfo function again to determine
+	     all the types.  */
+	  (void) (*__printf_arginfo_table[specs[cnt].info.spec])
+	    (&specs[cnt].info,
+	     specs[cnt].ndata_args, &args_type[specs[cnt].data_arg],
+	     &args_size[specs[cnt].data_arg]);
+	  break;
+	}
+    }
+
+  /* Now we know all the types and the order.  Fill in the argument
+     values.  */
+  for (cnt = 0; cnt < nargs; ++cnt)
+    switch (args_type[cnt])
+      {
+#define T(tag, mem, type)				\
+	case tag:					\
+	  args_value[cnt].mem = va_arg (*ap_savep, type); \
+	  break
+
+	T (PA_WCHAR, pa_wchar, wint_t);
+      case PA_CHAR:				/* Promoted.  */
+      case PA_INT|PA_FLAG_SHORT:		/* Promoted.  */
+#if LONG_MAX == INT_MAX
+      case PA_INT|PA_FLAG_LONG:
+#endif
+	T (PA_INT, pa_int, int);
+#if LONG_MAX == LONG_LONG_MAX
+      case PA_INT|PA_FLAG_LONG:
+#endif
+	T (PA_INT|PA_FLAG_LONG_LONG, pa_long_long_int, long long int);
+#if LONG_MAX != INT_MAX && LONG_MAX != LONG_LONG_MAX
+# error "he?"
+#endif
+      case PA_FLOAT:				/* Promoted.  */
+	T (PA_DOUBLE, pa_double, double);
+      case PA_DOUBLE|PA_FLAG_LONG_DOUBLE:
+	if (__ldbl_is_dbl)
+	  {
+	    args_value[cnt].pa_double = va_arg (*ap_savep, double);
+	    args_type[cnt] &= ~PA_FLAG_LONG_DOUBLE;
+	  }
+	else
+	  args_value[cnt].pa_long_double = va_arg (*ap_savep, long double);
+	break;
+      case PA_STRING:				/* All pointers are the same */
+      case PA_WSTRING:			/* All pointers are the same */
+	T (PA_POINTER, pa_pointer, void *);
+#undef T
+      default:
+	if ((args_type[cnt] & PA_FLAG_PTR) != 0)
+	  args_value[cnt].pa_pointer = va_arg (*ap_savep, void *);
+	else if (__glibc_unlikely (__printf_va_arg_table != NULL)
+		 && __printf_va_arg_table[args_type[cnt] - PA_LAST] != NULL)
+	  {
+	    args_value[cnt].pa_user = alloca (args_size[cnt]);
+	    (*__printf_va_arg_table[args_type[cnt] - PA_LAST])
+	      (args_value[cnt].pa_user, ap_savep);
+	  }
+	else
+	  args_value[cnt].pa_long_double = 0.0;
+	break;
+      case -1:
+	/* Error case.  Not all parameters appear in N$ format
+	   strings.  We have no way to determine their type.  */
+	assert (s->_flags2 & _IO_FLAGS2_FORTIFY);
+	__libc_fatal ("*** invalid %N$ use detected ***\n");
+      }
+
+  /* Now walk through all format specifiers and process them.  */
+  for (; (size_t) nspecs_done < nspecs; ++nspecs_done)
+    {
+      STEP4_TABLE;
+
+      int is_negative;
+      union
+      {
+	unsigned long long int longlong;
+	unsigned long int word;
+      } number;
+      int base;
+      union printf_arg the_arg;
+      CHAR_T *string;		/* Pointer to argument string.  */
+
+      /* Fill variables from values in struct.  */
+      int alt = specs[nspecs_done].info.alt;
+      int space = specs[nspecs_done].info.space;
+      int left = specs[nspecs_done].info.left;
+      int showsign = specs[nspecs_done].info.showsign;
+      int group = specs[nspecs_done].info.group;
+      int is_long_double = specs[nspecs_done].info.is_long_double;
+      int is_short = specs[nspecs_done].info.is_short;
+      int is_char = specs[nspecs_done].info.is_char;
+      int is_long = specs[nspecs_done].info.is_long;
+      int width = specs[nspecs_done].info.width;
+      int prec = specs[nspecs_done].info.prec;
+      int use_outdigits = specs[nspecs_done].info.i18n;
+      char pad = specs[nspecs_done].info.pad;
+      CHAR_T spec = specs[nspecs_done].info.spec;
+
+      workstart = NULL;
+      CHAR_T *workend = work_buffer + WORK_BUFFER_SIZE;
+
+      /* Fill in last information.  */
+      if (specs[nspecs_done].width_arg != -1)
+	{
+	  /* Extract the field width from an argument.  */
+	  specs[nspecs_done].info.width =
+	    args_value[specs[nspecs_done].width_arg].pa_int;
+
+	  if (specs[nspecs_done].info.width < 0)
+	    /* If the width value is negative left justification is
+	       selected and the value is taken as being positive.  */
+	    {
+	      specs[nspecs_done].info.width *= -1;
+	      left = specs[nspecs_done].info.left = 1;
+	    }
+	  width = specs[nspecs_done].info.width;
+	}
+
+      if (specs[nspecs_done].prec_arg != -1)
+	{
+	  /* Extract the precision from an argument.  */
+	  specs[nspecs_done].info.prec =
+	    args_value[specs[nspecs_done].prec_arg].pa_int;
+
+	  if (specs[nspecs_done].info.prec < 0)
+	    /* If the precision is negative the precision is
+	       omitted.  */
+	    specs[nspecs_done].info.prec = -1;
+
+	  prec = specs[nspecs_done].info.prec;
+	}
+
+      /* Maybe the buffer is too small.  */
+      if (MAX (prec, width) + 32 > WORK_BUFFER_SIZE)
+	{
+	  if (__libc_use_alloca ((MAX (prec, width) + 32)
+				 * sizeof (CHAR_T)))
+	    workend = ((CHAR_T *) alloca ((MAX (prec, width) + 32)
+					  * sizeof (CHAR_T))
+		       + (MAX (prec, width) + 32));
+	  else
+	    {
+	      workstart = (CHAR_T *) malloc ((MAX (prec, width) + 32)
+					     * sizeof (CHAR_T));
+	      if (workstart == NULL)
+		{
+		  done = -1;
+		  goto all_done;
+		}
+	      workend = workstart + (MAX (prec, width) + 32);
+	    }
+	}
+
+      /* Process format specifiers.  */
+      while (1)
+	{
+	  extern printf_function **__printf_function_table;
+	  int function_done;
+
+	  if (spec <= UCHAR_MAX
+	      && __printf_function_table != NULL
+	      && __printf_function_table[(size_t) spec] != NULL)
+	    {
+	      const void **ptr = alloca (specs[nspecs_done].ndata_args
+					 * sizeof (const void *));
+
+	      /* Fill in an array of pointers to the argument values.  */
+	      for (unsigned int i = 0; i < specs[nspecs_done].ndata_args;
+		   ++i)
+		ptr[i] = &args_value[specs[nspecs_done].data_arg + i];
+
+	      /* Call the function.  */
+	      function_done = __printf_function_table[(size_t) spec]
+		(s, &specs[nspecs_done].info, ptr);
+
+	      if (function_done != -2)
+		{
+		  /* If an error occurred we don't have information
+		     about # of chars.  */
+		  if (function_done < 0)
+		    {
+		      /* Function has set errno.  */
+		      done = -1;
+		      goto all_done;
+		    }
+
+		  done_add (function_done);
+		  break;
+		}
+	    }
+
+	  JUMP (spec, step4_jumps);
+
+	  process_arg ((&specs[nspecs_done]));
+	  process_string_arg ((&specs[nspecs_done]));
+
+	  LABEL (form_unknown):
+	  {
+	    unsigned int i;
+	    const void **ptr;
+
+	    ptr = alloca (specs[nspecs_done].ndata_args
+			  * sizeof (const void *));
+
+	    /* Fill in an array of pointers to the argument values.  */
+	    for (i = 0; i < specs[nspecs_done].ndata_args; ++i)
+	      ptr[i] = &args_value[specs[nspecs_done].data_arg + i];
+
+	    /* Call the function.  */
+	    function_done = printf_unknown (s, &specs[nspecs_done].info,
+					    ptr);
+
+	    /* If an error occurred we don't have information about #
+	       of chars.  */
+	    if (function_done < 0)
+	      {
+		/* Function has set errno.  */
+		done = -1;
+		goto all_done;
+	      }
+
+	    done_add (function_done);
+	  }
+	  break;
+	}
+
+      if (__glibc_unlikely (workstart != NULL))
+	free (workstart);
+      workstart = NULL;
+
+      /* Write the following constant string.  */
+      outstring (specs[nspecs_done].end_of_fmt,
+		 specs[nspecs_done].next_fmt
+		 - specs[nspecs_done].end_of_fmt);
+    }
+ all_done:
+  if (__glibc_unlikely (args_malloced != NULL))
+    free (args_malloced);
+  if (__glibc_unlikely (workstart != NULL))
+    free (workstart);
+  scratch_buffer_free (&specsbuf);
+  return done;
+}
+
+/* Handle an unknown format specifier.  This prints out a canonicalized
+   representation of the format spec itself.  */
+static int
+printf_unknown (FILE *s, const struct printf_info *info,
+		const void *const *args)
+
+{
+  int done = 0;
+  CHAR_T work_buffer[MAX (sizeof (info->width), sizeof (info->prec)) * 3];
+  CHAR_T *const workend
+    = &work_buffer[sizeof (work_buffer) / sizeof (CHAR_T)];
+  CHAR_T *w;
+
+  outchar (L_('%'));
+
+  if (info->alt)
+    outchar (L_('#'));
+  if (info->group)
+    outchar (L_('\''));
+  if (info->showsign)
+    outchar (L_('+'));
+  else if (info->space)
+    outchar (L_(' '));
+  if (info->left)
+    outchar (L_('-'));
+  if (info->pad == L_('0'))
+    outchar (L_('0'));
+  if (info->i18n)
+    outchar (L_('I'));
+
+  if (info->width != 0)
+    {
+      w = _itoa_word (info->width, workend, 10, 0);
+      while (w < workend)
+	outchar (*w++);
+    }
+
+  if (info->prec != -1)
+    {
+      outchar (L_('.'));
+      w = _itoa_word (info->prec, workend, 10, 0);
+      while (w < workend)
+	outchar (*w++);
+    }
+
+  if (info->spec != L_('\0'))
+    outchar (info->spec);
+
+ all_done:
+  return done;
+}
+
+/* Group the digits according to the grouping rules of the current locale.
+   The interpretation of GROUPING is as in `struct lconv' from <locale.h>.  */
+static CHAR_T *
+internal_function
+group_number (CHAR_T *w, CHAR_T *rear_ptr, const char *grouping,
+	      THOUSANDS_SEP_T thousands_sep)
+{
+  int len;
+  CHAR_T *src, *s;
+#ifndef COMPILE_WPRINTF
+  int tlen = strlen (thousands_sep);
+#endif
+
+  /* We treat all negative values like CHAR_MAX.  */
+
+  if (*grouping == CHAR_MAX || *grouping <= 0)
+    /* No grouping should be done.  */
+    return w;
+
+  len = *grouping++;
+
+  /* Copy existing string so that nothing gets overwritten.  */
+  src = (CHAR_T *) alloca ((rear_ptr - w) * sizeof (CHAR_T));
+  s = (CHAR_T *) __mempcpy (src, w,
+			    (rear_ptr - w) * sizeof (CHAR_T));
+  w = rear_ptr;
+
+  /* Process all characters in the string.  */
+  while (s > src)
+    {
+      *--w = *--s;
+
+      if (--len == 0 && s > src)
+	{
+	  /* A new group begins.  */
+#ifdef COMPILE_WPRINTF
+	  *--w = thousands_sep;
+#else
+	  int cnt = tlen;
+	  do
+	    *--w = thousands_sep[--cnt];
+	  while (cnt > 0);
+#endif
+
+	  if (*grouping == CHAR_MAX
+#if CHAR_MIN < 0
+		   || *grouping < 0
+#endif
+		   )
+	    {
+	      /* No further grouping to be done.
+		 Copy the rest of the number.  */
+	      do
+		*--w = *--s;
+	      while (s > src);
+	      break;
+	    }
+	  else if (*grouping != '\0')
+	    /* The previous grouping repeats ad infinitum.  */
+	    len = *grouping++;
+	  else
+	    len = grouping[-1];
+	}
+    }
+  return w;
+}
+
+/* Helper "class" for `fprintf to unbuffered': creates a temporary buffer.  */
+struct helper_file
+  {
+    struct _IO_FILE_plus _f;
+#ifdef COMPILE_WPRINTF
+    struct _IO_wide_data _wide_data;
+#endif
+    _IO_FILE *_put_stream;
+#ifdef _IO_MTSAFE_IO
+    _IO_lock_t lock;
+#endif
+  };
+
+static int
+_IO_helper_overflow (_IO_FILE *s, int c)
+{
+  _IO_FILE *target = ((struct helper_file*) s)->_put_stream;
+#ifdef COMPILE_WPRINTF
+  int used = s->_wide_data->_IO_write_ptr - s->_wide_data->_IO_write_base;
+  if (used)
+    {
+      _IO_size_t written = _IO_sputn (target, s->_wide_data->_IO_write_base,
+				      used);
+      if (written == 0 || written == WEOF)
+	return WEOF;
+      __wmemmove (s->_wide_data->_IO_write_base,
+		  s->_wide_data->_IO_write_base + written,
+		  used - written);
+      s->_wide_data->_IO_write_ptr -= written;
+    }
+#else
+  int used = s->_IO_write_ptr - s->_IO_write_base;
+  if (used)
+    {
+      _IO_size_t written = _IO_sputn (target, s->_IO_write_base, used);
+      if (written == 0 || written == EOF)
+	return EOF;
+      memmove (s->_IO_write_base, s->_IO_write_base + written,
+	       used - written);
+      s->_IO_write_ptr -= written;
+    }
+#endif
+  return PUTC (c, s);
+}
+
+#ifdef COMPILE_WPRINTF
+static const struct _IO_jump_t _IO_helper_jumps =
+{
+  JUMP_INIT_DUMMY,
+  JUMP_INIT (finish, _IO_wdefault_finish),
+  JUMP_INIT (overflow, _IO_helper_overflow),
+  JUMP_INIT (underflow, _IO_default_underflow),
+  JUMP_INIT (uflow, _IO_default_uflow),
+  JUMP_INIT (pbackfail, (_IO_pbackfail_t) _IO_wdefault_pbackfail),
+  JUMP_INIT (xsputn, _IO_wdefault_xsputn),
+  JUMP_INIT (xsgetn, _IO_wdefault_xsgetn),
+  JUMP_INIT (seekoff, _IO_default_seekoff),
+  JUMP_INIT (seekpos, _IO_default_seekpos),
+  JUMP_INIT (setbuf, _IO_default_setbuf),
+  JUMP_INIT (sync, _IO_default_sync),
+  JUMP_INIT (doallocate, _IO_wdefault_doallocate),
+  JUMP_INIT (read, _IO_default_read),
+  JUMP_INIT (write, _IO_default_write),
+  JUMP_INIT (seek, _IO_default_seek),
+  JUMP_INIT (close, _IO_default_close),
+  JUMP_INIT (stat, _IO_default_stat)
+};
+#else
+static const struct _IO_jump_t _IO_helper_jumps =
+{
+  JUMP_INIT_DUMMY,
+  JUMP_INIT (finish, _IO_default_finish),
+  JUMP_INIT (overflow, _IO_helper_overflow),
+  JUMP_INIT (underflow, _IO_default_underflow),
+  JUMP_INIT (uflow, _IO_default_uflow),
+  JUMP_INIT (pbackfail, _IO_default_pbackfail),
+  JUMP_INIT (xsputn, _IO_default_xsputn),
+  JUMP_INIT (xsgetn, _IO_default_xsgetn),
+  JUMP_INIT (seekoff, _IO_default_seekoff),
+  JUMP_INIT (seekpos, _IO_default_seekpos),
+  JUMP_INIT (setbuf, _IO_default_setbuf),
+  JUMP_INIT (sync, _IO_default_sync),
+  JUMP_INIT (doallocate, _IO_default_doallocate),
+  JUMP_INIT (read, _IO_default_read),
+  JUMP_INIT (write, _IO_default_write),
+  JUMP_INIT (seek, _IO_default_seek),
+  JUMP_INIT (close, _IO_default_close),
+  JUMP_INIT (stat, _IO_default_stat)
+};
+#endif
+
+static int
+internal_function
+buffered_vfprintf (_IO_FILE *s, const CHAR_T *format,
+		   _IO_va_list args)
+{
+  CHAR_T buf[_IO_BUFSIZ];
+  struct helper_file helper;
+  _IO_FILE *hp = (_IO_FILE *) &helper._f;
+  int result, to_flush;
+
+  /* Orient the stream.  */
+#ifdef ORIENT
+  ORIENT;
+#endif
+
+  /* Initialize helper.  */
+  helper._put_stream = s;
+#ifdef COMPILE_WPRINTF
+  hp->_wide_data = &helper._wide_data;
+  _IO_wsetp (hp, buf, buf + sizeof buf / sizeof (CHAR_T));
+  hp->_mode = 1;
+#else
+  _IO_setp (hp, buf, buf + sizeof buf);
+  hp->_mode = -1;
+#endif
+  hp->_IO_file_flags = _IO_MAGIC|_IO_NO_READS|_IO_USER_LOCK;
+#if _IO_JUMPS_OFFSET
+  hp->_vtable_offset = 0;
+#endif
+#ifdef _IO_MTSAFE_IO
+  hp->_lock = NULL;
+#endif
+  hp->_flags2 = s->_flags2;
+  _IO_JUMPS (&helper._f) = (struct _IO_jump_t *) &_IO_helper_jumps;
+
+  /* Now print to helper instead.  */
+#ifndef COMPILE_WPRINTF
+  result = _IO_vfprintf (hp, format, args);
+#else
+  result = vfprintf (hp, format, args);
+#endif
+
+  /* Lock stream.  */
+  __libc_cleanup_region_start (1, (void (*) (void *)) &_IO_funlockfile, s);
+  _IO_flockfile (s);
+
+  /* Now flush anything from the helper to the S. */
+#ifdef COMPILE_WPRINTF
+  if ((to_flush = (hp->_wide_data->_IO_write_ptr
+		   - hp->_wide_data->_IO_write_base)) > 0)
+    {
+      if ((int) _IO_sputn (s, hp->_wide_data->_IO_write_base, to_flush)
+	  != to_flush)
+	result = -1;
+    }
+#else
+  if ((to_flush = hp->_IO_write_ptr - hp->_IO_write_base) > 0)
+    {
+      if ((int) _IO_sputn (s, hp->_IO_write_base, to_flush) != to_flush)
+	result = -1;
+    }
+#endif
+
+  /* Unlock the stream.  */
+  _IO_funlockfile (s);
+  __libc_cleanup_region_end (0);
+
+  return result;
+}
+
+#undef vfprintf
+#ifdef COMPILE_WPRINTF
+strong_alias (_IO_vfwprintf, __vfwprintf);
+ldbl_weak_alias (_IO_vfwprintf, vfwprintf);
+#else
+ldbl_strong_alias (_IO_vfprintf_internal, vfprintf);
+ldbl_hidden_def (_IO_vfprintf_internal, vfprintf)
+ldbl_strong_alias (_IO_vfprintf_internal, _IO_vfprintf);
+ldbl_hidden_def (_IO_vfprintf_internal, _IO_vfprintf)
+#endif
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/vfscanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/vfscanf.c
new file mode 100644
index 0000000..8cd5955
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/vfscanf.c
@@ -0,0 +1,3073 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <wchar.h>
+#include <wctype.h>
+#include <libc-internal.h>
+#include <libc-lock.h>
+#include <locale/localeinfo.h>
+#include <scratch_buffer.h>
+
+#ifdef	__GNUC__
+# define HAVE_LONGLONG
+# define LONGLONG	long long
+#else
+# define LONGLONG	long
+#endif
+
+/* Determine whether we have to handle `long long' at all.  */
+#if LONG_MAX == LONG_LONG_MAX
+# define need_longlong	0
+#else
+# define need_longlong	1
+#endif
+
+/* Determine whether we have to handle `long'.  */
+#if INT_MAX == LONG_MAX
+# define need_long	0
+#else
+# define need_long	1
+#endif
+
+/* Those are flags in the conversion format. */
+#define LONG		0x0001	/* l: long or double */
+#define LONGDBL		0x0002	/* L: long long or long double */
+#define SHORT		0x0004	/* h: short */
+#define SUPPRESS	0x0008	/* *: suppress assignment */
+#define POINTER		0x0010	/* weird %p pointer (`fake hex') */
+#define NOSKIP		0x0020	/* do not skip blanks */
+#define NUMBER_SIGNED	0x0040	/* signed integer */
+#define GROUP		0x0080	/* ': group numbers */
+#define GNU_MALLOC	0x0100	/* a: malloc strings */
+#define CHAR		0x0200	/* hh: char */
+#define I18N		0x0400	/* I: use locale's digits */
+#define HEXA_FLOAT	0x0800	/* hexadecimal float */
+#define READ_POINTER	0x1000	/* this is a pointer value */
+#define POSIX_MALLOC	0x2000	/* m: malloc strings */
+#define MALLOC		(GNU_MALLOC | POSIX_MALLOC)
+
+#include <locale/localeinfo.h>
+#include <libioP.h>
+#include <libio.h>
+
+#undef va_list
+#define va_list	_IO_va_list
+
+#ifdef COMPILE_WSCANF
+# define ungetc(c, s)	((void) (c == WEOF				      \
+				 || (--read_in,				      \
+				     _IO_sputbackwc (s, c))))
+# define ungetc_not_eof(c, s)	((void) (--read_in,			      \
+					 _IO_sputbackwc (s, c)))
+# define inchar()	(c == WEOF ? ((errno = inchar_errno), WEOF)	      \
+			 : ((c = _IO_getwc_unlocked (s)),		      \
+			    (void) (c != WEOF				      \
+				    ? ++read_in				      \
+				    : (size_t) (inchar_errno = errno)), c))
+
+# define ISSPACE(Ch)	  iswspace (Ch)
+# define ISDIGIT(Ch)	  iswdigit (Ch)
+# define ISXDIGIT(Ch)	  iswxdigit (Ch)
+# define TOLOWER(Ch)	  towlower (Ch)
+# define ORIENT	  if (_IO_fwide (s, 1) != 1) return WEOF
+# define __strtoll_internal	__wcstoll_internal
+# define __strtoull_internal	__wcstoull_internal
+# define __strtol_internal	__wcstol_internal
+# define __strtoul_internal	__wcstoul_internal
+# define __strtold_internal	__wcstold_internal
+# define __strtod_internal	__wcstod_internal
+# define __strtof_internal	__wcstof_internal
+
+# define L_(Str)	L##Str
+# define CHAR_T		wchar_t
+# define UCHAR_T	unsigned int
+# define WINT_T		wint_t
+# undef EOF
+# define EOF		WEOF
+#else
+# define ungetc(c, s)	((void) ((int) c == EOF				      \
+				 || (--read_in,				      \
+				     _IO_sputbackc (s, (unsigned char) c))))
+# define ungetc_not_eof(c, s)	((void) (--read_in,			      \
+					 _IO_sputbackc (s, (unsigned char) c)))
+# define inchar()	(c == EOF ? ((errno = inchar_errno), EOF)	      \
+			 : ((c = _IO_getc_unlocked (s)),		      \
+			    (void) (c != EOF				      \
+				    ? ++read_in				      \
+				    : (size_t) (inchar_errno = errno)), c))
+# define ISSPACE(Ch)	  __isspace_l (Ch, loc)
+# define ISDIGIT(Ch)	  __isdigit_l (Ch, loc)
+# define ISXDIGIT(Ch)	  __isxdigit_l (Ch, loc)
+# define TOLOWER(Ch)	  __tolower_l ((unsigned char) (Ch), loc)
+# define ORIENT	  if (_IO_vtable_offset (s) == 0			      \
+			      && _IO_fwide (s, -1) != -1)		      \
+			    return EOF
+
+# define L_(Str)	Str
+# define CHAR_T		char
+# define UCHAR_T	unsigned char
+# define WINT_T		int
+#endif
+
+#define encode_error() do {						      \
+			  errval = 4;					      \
+			  __set_errno (EILSEQ);				      \
+			  goto errout;					      \
+			} while (0)
+#define conv_error()	do {						      \
+			  errval = 2;					      \
+			  goto errout;					      \
+			} while (0)
+#define input_error()	do {						      \
+			  errval = 1;					      \
+			  if (done == 0) done = EOF;			      \
+			  goto errout;					      \
+			} while (0)
+#define add_ptr_to_free(ptr)						      \
+  do									      \
+    {									      \
+      if (ptrs_to_free == NULL						      \
+	  || ptrs_to_free->count == (sizeof (ptrs_to_free->ptrs)	      \
+				     / sizeof (ptrs_to_free->ptrs[0])))	      \
+	{								      \
+	  struct ptrs_to_free *new_ptrs = alloca (sizeof (*ptrs_to_free));    \
+	  new_ptrs->count = 0;						      \
+	  new_ptrs->next = ptrs_to_free;				      \
+	  ptrs_to_free = new_ptrs;					      \
+	}								      \
+      ptrs_to_free->ptrs[ptrs_to_free->count++] = (ptr);		      \
+    }									      \
+  while (0)
+#define ARGCHECK(s, format)						      \
+  do									      \
+    {									      \
+      /* Check file argument for consistence.  */			      \
+      CHECK_FILE (s, EOF);						      \
+      if (s->_flags & _IO_NO_READS)					      \
+	{								      \
+	  __set_errno (EBADF);						      \
+	  return EOF;							      \
+	}								      \
+      else if (format == NULL)						      \
+	{								      \
+	  MAYBE_SET_EINVAL;						      \
+	  return EOF;							      \
+	}								      \
+    } while (0)
+#define LOCK_STREAM(S)							      \
+  __libc_cleanup_region_start (1, (void (*) (void *)) &_IO_funlockfile, (S)); \
+  _IO_flockfile (S)
+#define UNLOCK_STREAM(S)						      \
+  _IO_funlockfile (S);							      \
+  __libc_cleanup_region_end (0)
+
+struct ptrs_to_free
+{
+  size_t count;
+  struct ptrs_to_free *next;
+  char **ptrs[32];
+};
+
+struct char_buffer {
+  CHAR_T *current;
+  CHAR_T *end;
+  struct scratch_buffer scratch;
+};
+
+/* Returns a pointer to the first CHAR_T object in the buffer.  Only
+   valid if char_buffer_add (BUFFER, CH) has been called and
+   char_buffer_error (BUFFER) is false.  */
+static inline CHAR_T *
+char_buffer_start (const struct char_buffer *buffer)
+{
+  return (CHAR_T *) buffer->scratch.data;
+}
+
+/* Returns the number of CHAR_T objects in the buffer.  Only valid if
+   char_buffer_error (BUFFER) is false.  */
+static inline size_t
+char_buffer_size (const struct char_buffer *buffer)
+{
+  return buffer->current - char_buffer_start (buffer);
+}
+
+/* Reinitializes BUFFER->current and BUFFER->end to cover the entire
+   scratch buffer.  */
+static inline void
+char_buffer_rewind (struct char_buffer *buffer)
+{
+  buffer->current = char_buffer_start (buffer);
+  buffer->end = buffer->current + buffer->scratch.length / sizeof (CHAR_T);
+}
+
+/* Returns true if a previous call to char_buffer_add (BUFFER, CH)
+   failed.  */
+static inline bool
+char_buffer_error (const struct char_buffer *buffer)
+{
+  return __glibc_unlikely (buffer->current == NULL);
+}
+
+/* Slow path for char_buffer_add.  */
+static void
+char_buffer_add_slow (struct char_buffer *buffer, CHAR_T ch)
+{
+  if (char_buffer_error (buffer))
+    return;
+  size_t offset = buffer->end - (CHAR_T *) buffer->scratch.data;
+  if (!scratch_buffer_grow_preserve (&buffer->scratch))
+    {
+      buffer->current = NULL;
+      buffer->end = NULL;
+      return;
+    }
+  char_buffer_rewind (buffer);
+  buffer->current += offset;
+  *buffer->current++ = ch;
+}
+
+/* Adds CH to BUFFER.  This function does not report any errors, check
+   for them with char_buffer_error.  */
+static inline void
+char_buffer_add (struct char_buffer *buffer, CHAR_T ch)
+  __attribute__ ((always_inline));
+static inline void
+char_buffer_add (struct char_buffer *buffer, CHAR_T ch)
+{
+  if (__glibc_unlikely (buffer->current == buffer->end))
+    char_buffer_add_slow (buffer, ch);
+  else
+    *buffer->current++ = ch;
+}
+
+/* Read formatted input from S according to the format string
+   FORMAT, using the argument list in ARG.
+   Return the number of assignments made, or -1 for an input error.  */
+#ifdef COMPILE_WSCANF
+int
+_IO_vfwscanf (_IO_FILE *s, const wchar_t *format, _IO_va_list argptr,
+	      int *errp)
+#else
+int
+_IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
+		      int *errp)
+#endif
+{
+  va_list arg;
+  const CHAR_T *f = format;
+  UCHAR_T fc;	/* Current character of the format.  */
+  WINT_T done = 0;	/* Assignments done.  */
+  size_t read_in = 0;	/* Chars read in.  */
+  WINT_T c = 0;	/* Last char read.  */
+  int width;		/* Maximum field width.  */
+  int flags;		/* Modifiers for current format element.  */
+  int errval = 0;
+#ifndef COMPILE_WSCANF
+  __locale_t loc = _NL_CURRENT_LOCALE;
+  struct __locale_data *const curctype = loc->__locales[LC_CTYPE];
+#endif
+
+  /* Errno of last failed inchar call.  */
+  int inchar_errno = 0;
+  /* Status for reading F-P nums.  */
+  char got_digit, got_dot, got_e, negative;
+  /* If a [...] is a [^...].  */
+  CHAR_T not_in;
+#define exp_char not_in
+  /* Base for integral numbers.  */
+  int base;
+  /* Decimal point character.  */
+#ifdef COMPILE_WSCANF
+  wint_t decimal;
+#else
+  const char *decimal;
+#endif
+  /* The thousands character of the current locale.  */
+#ifdef COMPILE_WSCANF
+  wint_t thousands;
+#else
+  const char *thousands;
+#endif
+  struct ptrs_to_free *ptrs_to_free = NULL;
+  /* State for the conversions.  */
+  mbstate_t state;
+  /* Integral holding variables.  */
+  union
+    {
+      long long int q;
+      unsigned long long int uq;
+      long int l;
+      unsigned long int ul;
+    } num;
+  /* Character-buffer pointer.  */
+  char *str = NULL;
+  wchar_t *wstr = NULL;
+  char **strptr = NULL;
+  ssize_t strsize = 0;
+  /* We must not react on white spaces immediately because they can
+     possibly be matched even if in the input stream no character is
+     available anymore.  */
+  int skip_space = 0;
+  /* Workspace.  */
+  CHAR_T *tw;			/* Temporary pointer.  */
+  struct char_buffer charbuf;
+  scratch_buffer_init (&charbuf.scratch);
+
+#ifdef __va_copy
+  __va_copy (arg, argptr);
+#else
+  arg = (va_list) argptr;
+#endif
+
+#ifdef ORIENT
+  ORIENT;
+#endif
+
+  ARGCHECK (s, format);
+
+ {
+#ifndef COMPILE_WSCANF
+   struct __locale_data *const curnumeric = loc->__locales[LC_NUMERIC];
+#endif
+
+   /* Figure out the decimal point character.  */
+#ifdef COMPILE_WSCANF
+   decimal = _NL_CURRENT_WORD (LC_NUMERIC, _NL_NUMERIC_DECIMAL_POINT_WC);
+#else
+   decimal = curnumeric->values[_NL_ITEM_INDEX (DECIMAL_POINT)].string;
+#endif
+   /* Figure out the thousands separator character.  */
+#ifdef COMPILE_WSCANF
+   thousands = _NL_CURRENT_WORD (LC_NUMERIC, _NL_NUMERIC_THOUSANDS_SEP_WC);
+#else
+   thousands = curnumeric->values[_NL_ITEM_INDEX (THOUSANDS_SEP)].string;
+   if (*thousands == '\0')
+     thousands = NULL;
+#endif
+ }
+
+  /* Lock the stream.  */
+  LOCK_STREAM (s);
+
+
+#ifndef COMPILE_WSCANF
+  /* From now on we use `state' to convert the format string.  */
+  memset (&state, '\0', sizeof (state));
+#endif
+
+  /* Run through the format string.  */
+  while (*f != '\0')
+    {
+      unsigned int argpos;
+      /* Extract the next argument, which is of type TYPE.
+	 For a %N$... spec, this is the Nth argument from the beginning;
+	 otherwise it is the next argument after the state now in ARG.  */
+#ifdef __va_copy
+# define ARG(type)	(argpos == 0 ? va_arg (arg, type) :		      \
+			 ({ unsigned int pos = argpos;			      \
+			    va_list arg;				      \
+			    __va_copy (arg, argptr);			      \
+			    while (--pos > 0)				      \
+			      (void) va_arg (arg, void *);		      \
+			    va_arg (arg, type);				      \
+			  }))
+#else
+# if 0
+      /* XXX Possible optimization.  */
+#  define ARG(type)	(argpos == 0 ? va_arg (arg, type) :		      \
+			 ({ va_list arg = (va_list) argptr;		      \
+			    arg = (va_list) ((char *) arg		      \
+					     + (argpos - 1)		      \
+					     * __va_rounded_size (void *));   \
+			    va_arg (arg, type);				      \
+			 }))
+# else
+#  define ARG(type)	(argpos == 0 ? va_arg (arg, type) :		      \
+			 ({ unsigned int pos = argpos;			      \
+			    va_list arg = (va_list) argptr;		      \
+			    while (--pos > 0)				      \
+			      (void) va_arg (arg, void *);		      \
+			    va_arg (arg, type);				      \
+			  }))
+# endif
+#endif
+
+#ifndef COMPILE_WSCANF
+      if (!isascii ((unsigned char) *f))
+	{
+	  /* Non-ASCII, may be a multibyte.  */
+	  int len = __mbrlen (f, strlen (f), &state);
+	  if (len > 0)
+	    {
+	      do
+		{
+		  c = inchar ();
+		  if (__glibc_unlikely (c == EOF))
+		    input_error ();
+		  else if (c != (unsigned char) *f++)
+		    {
+		      ungetc_not_eof (c, s);
+		      conv_error ();
+		    }
+		}
+	      while (--len > 0);
+	      continue;
+	    }
+	}
+#endif
+
+      fc = *f++;
+      if (fc != '%')
+	{
+	  /* Remember to skip spaces.  */
+	  if (ISSPACE (fc))
+	    {
+	      skip_space = 1;
+	      continue;
+	    }
+
+	  /* Read a character.  */
+	  c = inchar ();
+
+	  /* Characters other than format specs must just match.  */
+	  if (__glibc_unlikely (c == EOF))
+	    input_error ();
+
+	  /* We saw white space char as the last character in the format
+	     string.  Now it's time to skip all leading white space.  */
+	  if (skip_space)
+	    {
+	      while (ISSPACE (c))
+		if (__glibc_unlikely (inchar () == EOF))
+		  input_error ();
+	      skip_space = 0;
+	    }
+
+	  if (__glibc_unlikely (c != fc))
+	    {
+	      ungetc (c, s);
+	      conv_error ();
+	    }
+
+	  continue;
+	}
+
+      /* This is the start of the conversion string. */
+      flags = 0;
+
+      /* Initialize state of modifiers.  */
+      argpos = 0;
+
+      /* Prepare temporary buffer.  */
+      char_buffer_rewind (&charbuf);
+
+      /* Check for a positional parameter specification.  */
+      if (ISDIGIT ((UCHAR_T) *f))
+	{
+	  argpos = (UCHAR_T) *f++ - L_('0');
+	  while (ISDIGIT ((UCHAR_T) *f))
+	    argpos = argpos * 10 + ((UCHAR_T) *f++ - L_('0'));
+	  if (*f == L_('$'))
+	    ++f;
+	  else
+	    {
+	      /* Oops; that was actually the field width.  */
+	      width = argpos;
+	      argpos = 0;
+	      goto got_width;
+	    }
+	}
+
+      /* Check for the assignment-suppressing, the number grouping flag,
+	 and the signal to use the locale's digit representation.  */
+      while (*f == L_('*') || *f == L_('\'') || *f == L_('I'))
+	switch (*f++)
+	  {
+	  case L_('*'):
+	    flags |= SUPPRESS;
+	    break;
+	  case L_('\''):
+#ifdef COMPILE_WSCANF
+	    if (thousands != L'\0')
+#else
+	    if (thousands != NULL)
+#endif
+	      flags |= GROUP;
+	    break;
+	  case L_('I'):
+	    flags |= I18N;
+	    break;
+	  }
+
+      /* Find the maximum field width.  */
+      width = 0;
+      while (ISDIGIT ((UCHAR_T) *f))
+	{
+	  width *= 10;
+	  width += (UCHAR_T) *f++ - L_('0');
+	}
+    got_width:
+      if (width == 0)
+	width = -1;
+
+      /* Check for type modifiers.  */
+      switch (*f++)
+	{
+	case L_('h'):
+	  /* ints are short ints or chars.  */
+	  if (*f == L_('h'))
+	    {
+	      ++f;
+	      flags |= CHAR;
+	    }
+	  else
+	    flags |= SHORT;
+	  break;
+	case L_('l'):
+	  if (*f == L_('l'))
+	    {
+	      /* A double `l' is equivalent to an `L'.  */
+	      ++f;
+	      flags |= LONGDBL | LONG;
+	    }
+	  else
+	    /* ints are long ints.  */
+	    flags |= LONG;
+	  break;
+	case L_('q'):
+	case L_('L'):
+	  /* doubles are long doubles, and ints are long long ints.  */
+	  flags |= LONGDBL | LONG;
+	  break;
+	case L_('a'):
+	  /* The `a' is used as a flag only if followed by `s', `S' or
+	     `['.  */
+	  if (*f != L_('s') && *f != L_('S') && *f != L_('['))
+	    {
+	      --f;
+	      break;
+	    }
+	  /* In __isoc99_*scanf %as, %aS and %a[ extension is not
+	     supported at all.  */
+	  if (s->_flags2 & _IO_FLAGS2_SCANF_STD)
+	    {
+	      --f;
+	      break;
+	    }
+	  /* String conversions (%s, %[) take a `char **'
+	     arg and fill it in with a malloc'd pointer.  */
+	  flags |= GNU_MALLOC;
+	  break;
+	case L_('m'):
+	  flags |= POSIX_MALLOC;
+	  if (*f == L_('l'))
+	    {
+	      ++f;
+	      flags |= LONG;
+	    }
+	  break;
+	case L_('z'):
+	  if (need_longlong && sizeof (size_t) > sizeof (unsigned long int))
+	    flags |= LONGDBL;
+	  else if (sizeof (size_t) > sizeof (unsigned int))
+	    flags |= LONG;
+	  break;
+	case L_('j'):
+	  if (need_longlong && sizeof (uintmax_t) > sizeof (unsigned long int))
+	    flags |= LONGDBL;
+	  else if (sizeof (uintmax_t) > sizeof (unsigned int))
+	    flags |= LONG;
+	  break;
+	case L_('t'):
+	  if (need_longlong && sizeof (ptrdiff_t) > sizeof (long int))
+	    flags |= LONGDBL;
+	  else if (sizeof (ptrdiff_t) > sizeof (int))
+	    flags |= LONG;
+	  break;
+	default:
+	  /* Not a recognized modifier.  Backup.  */
+	  --f;
+	  break;
+	}
+
+      /* End of the format string?  */
+      if (__glibc_unlikely (*f == L_('\0')))
+	conv_error ();
+
+      /* Find the conversion specifier.  */
+      fc = *f++;
+      if (skip_space || (fc != L_('[') && fc != L_('c')
+			 && fc != L_('C') && fc != L_('n')))
+	{
+	  /* Eat whitespace.  */
+	  int save_errno = errno;
+	  __set_errno (0);
+	  do
+	    /* We add the additional test for EOF here since otherwise
+	       inchar will restore the old errno value which might be
+	       EINTR but does not indicate an interrupt since nothing
+	       was read at this time.  */
+	    if (__builtin_expect ((c == EOF || inchar () == EOF)
+				  && errno == EINTR, 0))
+	      input_error ();
+	  while (ISSPACE (c));
+	  __set_errno (save_errno);
+	  ungetc (c, s);
+	  skip_space = 0;
+	}
+
+      switch (fc)
+	{
+	case L_('%'):	/* Must match a literal '%'.  */
+	  c = inchar ();
+	  if (__glibc_unlikely (c == EOF))
+	    input_error ();
+	  if (__glibc_unlikely (c != fc))
+	    {
+	      ungetc_not_eof (c, s);
+	      conv_error ();
+	    }
+	  break;
+
+	case L_('n'):	/* Answer number of assignments done.  */
+	  /* Corrigendum 1 to ISO C 1990 describes the allowed flags
+	     with the 'n' conversion specifier.  */
+	  if (!(flags & SUPPRESS))
+	    {
+	      /* Don't count the read-ahead.  */
+	      if (need_longlong && (flags & LONGDBL))
+		*ARG (long long int *) = read_in;
+	      else if (need_long && (flags & LONG))
+		*ARG (long int *) = read_in;
+	      else if (flags & SHORT)
+		*ARG (short int *) = read_in;
+	      else if (!(flags & CHAR))
+		*ARG (int *) = read_in;
+	      else
+		*ARG (char *) = read_in;
+
+#ifdef NO_BUG_IN_ISO_C_CORRIGENDUM_1
+	      /* We have a severe problem here.  The ISO C standard
+		 contradicts itself in explaining the effect of the %n
+		 format in `scanf'.  While in ISO C:1990 and the ISO C
+		 Amendement 1:1995 the result is described as
+
+		   Execution of a %n directive does not effect the
+		   assignment count returned at the completion of
+		   execution of the f(w)scanf function.
+
+		 in ISO C Corrigendum 1:1994 the following was added:
+
+		   Subclause 7.9.6.2
+		   Add the following fourth example:
+		     In:
+		       #include <stdio.h>
+		       int d1, d2, n1, n2, i;
+		       i = sscanf("123", "%d%n%n%d", &d1, &n1, &n2, &d2);
+		     the value 123 is assigned to d1 and the value3 to n1.
+		     Because %n can never get an input failure the value
+		     of 3 is also assigned to n2.  The value of d2 is not
+		     affected.  The value 3 is assigned to i.
+
+		 We go for now with the historically correct code from ISO C,
+		 i.e., we don't count the %n assignments.  When it ever
+		 should proof to be wrong just remove the #ifdef above.  */
+	      ++done;
+#endif
+	    }
+	  break;
+
+	case L_('c'):	/* Match characters.  */
+	  if ((flags & LONG) == 0)
+	    {
+	      if (width == -1)
+		width = 1;
+
+#define STRING_ARG(Str, Type, Width)					      \
+	      do if (!(flags & SUPPRESS))				      \
+		{							      \
+		  if (flags & MALLOC)					      \
+		    {							      \
+		      /* The string is to be stored in a malloc'd buffer.  */ \
+		      /* For %mS using char ** is actually wrong, but	      \
+			 shouldn't make a difference on any arch glibc	      \
+			 supports and would unnecessarily complicate	      \
+			 things. */					      \
+		      strptr = ARG (char **);				      \
+		      if (strptr == NULL)				      \
+			conv_error ();					      \
+		      /* Allocate an initial buffer.  */		      \
+		      strsize = Width;					      \
+		      *strptr = (char *) malloc (strsize * sizeof (Type));    \
+		      Str = (Type *) *strptr;				      \
+		      if (Str != NULL)					      \
+			add_ptr_to_free (strptr);			      \
+		      else if (flags & POSIX_MALLOC)			      \
+			{						      \
+			  done = EOF;					      \
+			  goto errout;					      \
+			}						      \
+		    }							      \
+		  else							      \
+		    Str = ARG (Type *);					      \
+		  if (Str == NULL)					      \
+		    conv_error ();					      \
+		} while (0)
+#ifdef COMPILE_WSCANF
+	      STRING_ARG (str, char, 100);
+#else
+	      STRING_ARG (str, char, (width > 1024 ? 1024 : width));
+#endif
+
+	      c = inchar ();
+	      if (__glibc_unlikely (c == EOF))
+		input_error ();
+
+#ifdef COMPILE_WSCANF
+	      /* We have to convert the wide character(s) into multibyte
+		 characters and store the result.  */
+	      memset (&state, '\0', sizeof (state));
+
+	      do
+		{
+		  size_t n;
+
+		  if (!(flags & SUPPRESS) && (flags & POSIX_MALLOC)
+		      && str + MB_CUR_MAX >= *strptr + strsize)
+		    {
+		      /* We have to enlarge the buffer if the `m' flag
+			 was given.  */
+		      size_t strleng = str - *strptr;
+		      char *newstr;
+
+		      newstr = (char *) realloc (*strptr, strsize * 2);
+		      if (newstr == NULL)
+			{
+			  /* Can't allocate that much.  Last-ditch effort.  */
+			  newstr = (char *) realloc (*strptr,
+						     strleng + MB_CUR_MAX);
+			  if (newstr == NULL)
+			    {
+			      /* c can't have `a' flag, only `m'.  */
+			      done = EOF;
+			      goto errout;
+			    }
+			  else
+			    {
+			      *strptr = newstr;
+			      str = newstr + strleng;
+			      strsize = strleng + MB_CUR_MAX;
+			    }
+			}
+		      else
+			{
+			  *strptr = newstr;
+			  str = newstr + strleng;
+			  strsize *= 2;
+			}
+		    }
+
+		  n = __wcrtomb (!(flags & SUPPRESS) ? str : NULL, c, &state);
+		  if (__glibc_unlikely (n == (size_t) -1))
+		    /* No valid wide character.  */
+		    input_error ();
+
+		  /* Increment the output pointer.  Even if we don't
+		     write anything.  */
+		  str += n;
+		}
+	      while (--width > 0 && inchar () != EOF);
+#else
+	      if (!(flags & SUPPRESS))
+		{
+		  do
+		    {
+		      if ((flags & MALLOC)
+			  && (char *) str == *strptr + strsize)
+			{
+			  /* Enlarge the buffer.  */
+			  size_t newsize
+			    = strsize
+			      + (strsize >= width ? width - 1 : strsize);
+
+			  str = (char *) realloc (*strptr, newsize);
+			  if (str == NULL)
+			    {
+			      /* Can't allocate that much.  Last-ditch
+				 effort.  */
+			      str = (char *) realloc (*strptr, strsize + 1);
+			      if (str == NULL)
+				{
+				  /* c can't have `a' flag, only `m'.  */
+				  done = EOF;
+				  goto errout;
+				}
+			      else
+				{
+				  *strptr = (char *) str;
+				  str += strsize;
+				  ++strsize;
+				}
+			    }
+			  else
+			    {
+			      *strptr = (char *) str;
+			      str += strsize;
+			      strsize = newsize;
+			    }
+			}
+		      *str++ = c;
+		    }
+		  while (--width > 0 && inchar () != EOF);
+		}
+	      else
+		while (--width > 0 && inchar () != EOF);
+#endif
+
+	      if (!(flags & SUPPRESS))
+		{
+		  if ((flags & MALLOC) && str - *strptr != strsize)
+		    {
+		      char *cp = (char *) realloc (*strptr, str - *strptr);
+		      if (cp != NULL)
+			*strptr = cp;
+		    }
+		  strptr = NULL;
+		  ++done;
+		}
+
+	      break;
+	    }
+	  /* FALLTHROUGH */
+	case L_('C'):
+	  if (width == -1)
+	    width = 1;
+
+	  STRING_ARG (wstr, wchar_t, (width > 1024 ? 1024 : width));
+
+	  c = inchar ();
+	  if (__glibc_unlikely (c == EOF))
+	    input_error ();
+
+#ifdef COMPILE_WSCANF
+	  /* Just store the incoming wide characters.  */
+	  if (!(flags & SUPPRESS))
+	    {
+	      do
+		{
+		  if ((flags & MALLOC)
+		      && wstr == (wchar_t *) *strptr + strsize)
+		    {
+		      size_t newsize
+			= strsize + (strsize > width ? width - 1 : strsize);
+		      /* Enlarge the buffer.  */
+		      wstr = (wchar_t *) realloc (*strptr,
+						  newsize * sizeof (wchar_t));
+		      if (wstr == NULL)
+			{
+			  /* Can't allocate that much.  Last-ditch effort.  */
+			  wstr = (wchar_t *) realloc (*strptr,
+						      (strsize + 1)
+						      * sizeof (wchar_t));
+			  if (wstr == NULL)
+			    {
+			      /* C or lc can't have `a' flag, only `m'
+				 flag.  */
+			      done = EOF;
+			      goto errout;
+			    }
+			  else
+			    {
+			      *strptr = (char *) wstr;
+			      wstr += strsize;
+			      ++strsize;
+			    }
+			}
+		      else
+			{
+			  *strptr = (char *) wstr;
+			  wstr += strsize;
+			  strsize = newsize;
+			}
+		    }
+		  *wstr++ = c;
+		}
+	      while (--width > 0 && inchar () != EOF);
+	    }
+	  else
+	    while (--width > 0 && inchar () != EOF);
+#else
+	  {
+	    /* We have to convert the multibyte input sequence to wide
+	       characters.  */
+	    char buf[1];
+	    mbstate_t cstate;
+
+	    memset (&cstate, '\0', sizeof (cstate));
+
+	    do
+	      {
+		/* This is what we present the mbrtowc function first.  */
+		buf[0] = c;
+
+		if (!(flags & SUPPRESS) && (flags & MALLOC)
+		    && wstr == (wchar_t *) *strptr + strsize)
+		  {
+		    size_t newsize
+		      = strsize + (strsize > width ? width - 1 : strsize);
+		    /* Enlarge the buffer.  */
+		    wstr = (wchar_t *) realloc (*strptr,
+						newsize * sizeof (wchar_t));
+		    if (wstr == NULL)
+		      {
+			/* Can't allocate that much.  Last-ditch effort.  */
+			wstr = (wchar_t *) realloc (*strptr,
+						    ((strsize + 1)
+						     * sizeof (wchar_t)));
+			if (wstr == NULL)
+			  {
+			    /* C or lc can't have `a' flag, only `m' flag.  */
+			    done = EOF;
+			    goto errout;
+			  }
+			else
+			  {
+			    *strptr = (char *) wstr;
+			    wstr += strsize;
+			    ++strsize;
+			  }
+		      }
+		    else
+		      {
+			*strptr = (char *) wstr;
+			wstr += strsize;
+			strsize = newsize;
+		      }
+		  }
+
+		while (1)
+		  {
+		    size_t n;
+
+		    n = __mbrtowc (!(flags & SUPPRESS) ? wstr : NULL,
+				   buf, 1, &cstate);
+
+		    if (n == (size_t) -2)
+		      {
+			/* Possibly correct character, just not enough
+			   input.  */
+			if (__glibc_unlikely (inchar () == EOF))
+			  encode_error ();
+
+			buf[0] = c;
+			continue;
+		      }
+
+		    if (__glibc_unlikely (n != 1))
+		      encode_error ();
+
+		    /* We have a match.  */
+		    break;
+		  }
+
+		/* Advance the result pointer.  */
+		++wstr;
+	      }
+	    while (--width > 0 && inchar () != EOF);
+	  }
+#endif
+
+	  if (!(flags & SUPPRESS))
+	    {
+	      if ((flags & MALLOC) && wstr - (wchar_t *) *strptr != strsize)
+		{
+		  wchar_t *cp = (wchar_t *) realloc (*strptr,
+						     ((wstr
+						       - (wchar_t *) *strptr)
+						      * sizeof (wchar_t)));
+		  if (cp != NULL)
+		    *strptr = (char *) cp;
+		}
+	      strptr = NULL;
+
+	      ++done;
+	    }
+
+	  break;
+
+	case L_('s'):		/* Read a string.  */
+	  if (!(flags & LONG))
+	    {
+	      STRING_ARG (str, char, 100);
+
+	      c = inchar ();
+	      if (__glibc_unlikely (c == EOF))
+		input_error ();
+
+#ifdef COMPILE_WSCANF
+	      memset (&state, '\0', sizeof (state));
+#endif
+
+	      do
+		{
+		  if (ISSPACE (c))
+		    {
+		      ungetc_not_eof (c, s);
+		      break;
+		    }
+
+#ifdef COMPILE_WSCANF
+		  /* This is quite complicated.  We have to convert the
+		     wide characters into multibyte characters and then
+		     store them.  */
+		  {
+		    size_t n;
+
+		    if (!(flags & SUPPRESS) && (flags & MALLOC)
+			&& str + MB_CUR_MAX >= *strptr + strsize)
+		      {
+			/* We have to enlarge the buffer if the `a' or `m'
+			   flag was given.  */
+			size_t strleng = str - *strptr;
+			char *newstr;
+
+			newstr = (char *) realloc (*strptr, strsize * 2);
+			if (newstr == NULL)
+			  {
+			    /* Can't allocate that much.  Last-ditch
+			       effort.  */
+			    newstr = (char *) realloc (*strptr,
+						       strleng + MB_CUR_MAX);
+			    if (newstr == NULL)
+			      {
+				if (flags & POSIX_MALLOC)
+				  {
+				    done = EOF;
+				    goto errout;
+				  }
+				/* We lose.  Oh well.  Terminate the
+				   string and stop converting,
+				   so at least we don't skip any input.  */
+				((char *) (*strptr))[strleng] = '\0';
+				strptr = NULL;
+				++done;
+				conv_error ();
+			      }
+			    else
+			      {
+				*strptr = newstr;
+				str = newstr + strleng;
+				strsize = strleng + MB_CUR_MAX;
+			      }
+			  }
+			else
+			  {
+			    *strptr = newstr;
+			    str = newstr + strleng;
+			    strsize *= 2;
+			  }
+		      }
+
+		    n = __wcrtomb (!(flags & SUPPRESS) ? str : NULL, c,
+				   &state);
+		    if (__glibc_unlikely (n == (size_t) -1))
+		      encode_error ();
+
+		    assert (n <= MB_CUR_MAX);
+		    str += n;
+		  }
+#else
+		  /* This is easy.  */
+		  if (!(flags & SUPPRESS))
+		    {
+		      *str++ = c;
+		      if ((flags & MALLOC)
+			  && (char *) str == *strptr + strsize)
+			{
+			  /* Enlarge the buffer.  */
+			  str = (char *) realloc (*strptr, 2 * strsize);
+			  if (str == NULL)
+			    {
+			      /* Can't allocate that much.  Last-ditch
+				 effort.  */
+			      str = (char *) realloc (*strptr, strsize + 1);
+			      if (str == NULL)
+				{
+				  if (flags & POSIX_MALLOC)
+				    {
+				      done = EOF;
+				      goto errout;
+				    }
+				  /* We lose.  Oh well.  Terminate the
+				     string and stop converting,
+				     so at least we don't skip any input.  */
+				  ((char *) (*strptr))[strsize - 1] = '\0';
+				  strptr = NULL;
+				  ++done;
+				  conv_error ();
+				}
+			      else
+				{
+				  *strptr = (char *) str;
+				  str += strsize;
+				  ++strsize;
+				}
+			    }
+			  else
+			    {
+			      *strptr = (char *) str;
+			      str += strsize;
+			      strsize *= 2;
+			    }
+			}
+		    }
+#endif
+		}
+	      while ((width <= 0 || --width > 0) && inchar () != EOF);
+
+	      if (!(flags & SUPPRESS))
+		{
+#ifdef COMPILE_WSCANF
+		  /* We have to emit the code to get into the initial
+		     state.  */
+		  char buf[MB_LEN_MAX];
+		  size_t n = __wcrtomb (buf, L'\0', &state);
+		  if (n > 0 && (flags & MALLOC)
+		      && str + n >= *strptr + strsize)
+		    {
+		      /* Enlarge the buffer.  */
+		      size_t strleng = str - *strptr;
+		      char *newstr;
+
+		      newstr = (char *) realloc (*strptr, strleng + n + 1);
+		      if (newstr == NULL)
+			{
+			  if (flags & POSIX_MALLOC)
+			    {
+			      done = EOF;
+			      goto errout;
+			    }
+			  /* We lose.  Oh well.  Terminate the string
+			     and stop converting, so at least we don't
+			     skip any input.  */
+			  ((char *) (*strptr))[strleng] = '\0';
+			  strptr = NULL;
+			  ++done;
+			  conv_error ();
+			}
+		      else
+			{
+			  *strptr = newstr;
+			  str = newstr + strleng;
+			  strsize = strleng + n + 1;
+			}
+		    }
+
+		  str = __mempcpy (str, buf, n);
+#endif
+		  *str++ = '\0';
+
+		  if ((flags & MALLOC) && str - *strptr != strsize)
+		    {
+		      char *cp = (char *) realloc (*strptr, str - *strptr);
+		      if (cp != NULL)
+			*strptr = cp;
+		    }
+		  strptr = NULL;
+
+		  ++done;
+		}
+	      break;
+	    }
+	  /* FALLTHROUGH */
+
+	case L_('S'):
+	  {
+#ifndef COMPILE_WSCANF
+	    mbstate_t cstate;
+#endif
+
+	    /* Wide character string.  */
+	    STRING_ARG (wstr, wchar_t, 100);
+
+	    c = inchar ();
+	    if (__builtin_expect (c == EOF,  0))
+	      input_error ();
+
+#ifndef COMPILE_WSCANF
+	    memset (&cstate, '\0', sizeof (cstate));
+#endif
+
+	    do
+	      {
+		if (ISSPACE (c))
+		  {
+		    ungetc_not_eof (c, s);
+		    break;
+		  }
+
+#ifdef COMPILE_WSCANF
+		/* This is easy.  */
+		if (!(flags & SUPPRESS))
+		  {
+		    *wstr++ = c;
+		    if ((flags & MALLOC)
+			&& wstr == (wchar_t *) *strptr + strsize)
+		      {
+			/* Enlarge the buffer.  */
+			wstr = (wchar_t *) realloc (*strptr,
+						    (2 * strsize)
+						    * sizeof (wchar_t));
+			if (wstr == NULL)
+			  {
+			    /* Can't allocate that much.  Last-ditch
+			       effort.  */
+			    wstr = (wchar_t *) realloc (*strptr,
+							(strsize + 1)
+							* sizeof (wchar_t));
+			    if (wstr == NULL)
+			      {
+				if (flags & POSIX_MALLOC)
+				  {
+				    done = EOF;
+				    goto errout;
+				  }
+				/* We lose.  Oh well.  Terminate the string
+				   and stop converting, so at least we don't
+				   skip any input.  */
+				((wchar_t *) (*strptr))[strsize - 1] = L'\0';
+				strptr = NULL;
+				++done;
+				conv_error ();
+			      }
+			    else
+			      {
+				*strptr = (char *) wstr;
+				wstr += strsize;
+				++strsize;
+			      }
+			  }
+			else
+			  {
+			    *strptr = (char *) wstr;
+			    wstr += strsize;
+			    strsize *= 2;
+			  }
+		      }
+		  }
+#else
+		{
+		  char buf[1];
+
+		  buf[0] = c;
+
+		  while (1)
+		    {
+		      size_t n;
+
+		      n = __mbrtowc (!(flags & SUPPRESS) ? wstr : NULL,
+				     buf, 1, &cstate);
+
+		      if (n == (size_t) -2)
+			{
+			  /* Possibly correct character, just not enough
+			     input.  */
+			  if (__glibc_unlikely (inchar () == EOF))
+			    encode_error ();
+
+			  buf[0] = c;
+			  continue;
+			}
+
+		      if (__glibc_unlikely (n != 1))
+			encode_error ();
+
+		      /* We have a match.  */
+		      ++wstr;
+		      break;
+		    }
+
+		  if (!(flags & SUPPRESS) && (flags & MALLOC)
+		      && wstr == (wchar_t *) *strptr + strsize)
+		    {
+		      /* Enlarge the buffer.  */
+		      wstr = (wchar_t *) realloc (*strptr,
+						  (2 * strsize
+						   * sizeof (wchar_t)));
+		      if (wstr == NULL)
+			{
+			  /* Can't allocate that much.  Last-ditch effort.  */
+			  wstr = (wchar_t *) realloc (*strptr,
+						      ((strsize + 1)
+						       * sizeof (wchar_t)));
+			  if (wstr == NULL)
+			    {
+			      if (flags & POSIX_MALLOC)
+				{
+				  done = EOF;
+				  goto errout;
+				}
+			      /* We lose.  Oh well.  Terminate the
+				 string and stop converting, so at
+				 least we don't skip any input.  */
+			      ((wchar_t *) (*strptr))[strsize - 1] = L'\0';
+			      strptr = NULL;
+			      ++done;
+			      conv_error ();
+			    }
+			  else
+			    {
+			      *strptr = (char *) wstr;
+			      wstr += strsize;
+			      ++strsize;
+			    }
+			}
+		      else
+			{
+			  *strptr = (char *) wstr;
+			  wstr += strsize;
+			  strsize *= 2;
+			}
+		    }
+		}
+#endif
+	      }
+	    while ((width <= 0 || --width > 0) && inchar () != EOF);
+
+	    if (!(flags & SUPPRESS))
+	      {
+		*wstr++ = L'\0';
+
+		if ((flags & MALLOC) && wstr - (wchar_t *) *strptr != strsize)
+		  {
+		    wchar_t *cp = (wchar_t *) realloc (*strptr,
+						       ((wstr
+							 - (wchar_t *) *strptr)
+							* sizeof(wchar_t)));
+		    if (cp != NULL)
+		      *strptr = (char *) cp;
+		  }
+		strptr = NULL;
+
+		++done;
+	      }
+	  }
+	  break;
+
+	case L_('x'):	/* Hexadecimal integer.  */
+	case L_('X'):	/* Ditto.  */
+	  base = 16;
+	  goto number;
+
+	case L_('o'):	/* Octal integer.  */
+	  base = 8;
+	  goto number;
+
+	case L_('u'):	/* Unsigned decimal integer.  */
+	  base = 10;
+	  goto number;
+
+	case L_('d'):	/* Signed decimal integer.  */
+	  base = 10;
+	  flags |= NUMBER_SIGNED;
+	  goto number;
+
+	case L_('i'):	/* Generic number.  */
+	  base = 0;
+	  flags |= NUMBER_SIGNED;
+
+	number:
+	  c = inchar ();
+	  if (__glibc_unlikely (c == EOF))
+	    input_error ();
+
+	  /* Check for a sign.  */
+	  if (c == L_('-') || c == L_('+'))
+	    {
+	      char_buffer_add (&charbuf, c);
+	      if (width > 0)
+		--width;
+	      c = inchar ();
+	    }
+
+	  /* Look for a leading indication of base.  */
+	  if (width != 0 && c == L_('0'))
+	    {
+	      if (width > 0)
+		--width;
+
+	      char_buffer_add (&charbuf, c);
+	      c = inchar ();
+
+	      if (width != 0 && TOLOWER (c) == L_('x'))
+		{
+		  if (base == 0)
+		    base = 16;
+		  if (base == 16)
+		    {
+		      if (width > 0)
+			--width;
+		      c = inchar ();
+		    }
+		}
+	      else if (base == 0)
+		base = 8;
+	    }
+
+	  if (base == 0)
+	    base = 10;
+
+	  if (base == 10 && __builtin_expect ((flags & I18N) != 0, 0))
+	    {
+	      int from_level;
+	      int to_level;
+	      int level;
+#ifdef COMPILE_WSCANF
+	      const wchar_t *wcdigits[10];
+	      const wchar_t *wcdigits_extended[10];
+#else
+	      const char *mbdigits[10];
+	      const char *mbdigits_extended[10];
+#endif
+	      /*  "to_inpunct" is a map from ASCII digits to their
+		  equivalent in locale. This is defined for locales
+		  which use an extra digits set.  */
+	      wctrans_t map = __wctrans ("to_inpunct");
+	      int n;
+
+	      from_level = 0;
+#ifdef COMPILE_WSCANF
+	      to_level = _NL_CURRENT_WORD (LC_CTYPE,
+					   _NL_CTYPE_INDIGITS_WC_LEN) - 1;
+#else
+	      to_level = (uint32_t) curctype->values[_NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_MB_LEN)].word - 1;
+#endif
+
+	      /* Get the alternative digit forms if there are any.  */
+	      if (__glibc_unlikely (map != NULL))
+		{
+		  /*  Adding new level for extra digits set in locale file.  */
+		  ++to_level;
+
+		  for (n = 0; n < 10; ++n)
+		    {
+#ifdef COMPILE_WSCANF
+		      wcdigits[n] = (const wchar_t *)
+			_NL_CURRENT (LC_CTYPE, _NL_CTYPE_INDIGITS0_WC + n);
+
+		      wchar_t *wc_extended = (wchar_t *)
+			alloca ((to_level + 2) * sizeof (wchar_t));
+		      __wmemcpy (wc_extended, wcdigits[n], to_level);
+		      wc_extended[to_level] = __towctrans (L'0' + n, map);
+		      wc_extended[to_level + 1] = '\0';
+		      wcdigits_extended[n] = wc_extended;
+#else
+		      mbdigits[n]
+			= curctype->values[_NL_CTYPE_INDIGITS0_MB + n].string;
+
+		      /*  Get the equivalent wide char in map.  */
+		      wint_t extra_wcdigit = __towctrans (L'0' + n, map);
+
+		      /*  Convert it to multibyte representation.  */
+		      mbstate_t state;
+		      memset (&state, '\0', sizeof (state));
+
+		      char extra_mbdigit[MB_LEN_MAX];
+		      size_t mblen
+			= __wcrtomb (extra_mbdigit, extra_wcdigit, &state);
+
+		      if (mblen == (size_t) -1)
+			{
+			  /*  Ignore this new level.  */
+			  map = NULL;
+			  break;
+			}
+
+		      /*  Calculate the length of mbdigits[n].  */
+		      const char *last_char = mbdigits[n];
+		      for (level = 0; level < to_level; ++level)
+			last_char = strchr (last_char, '\0') + 1;
+
+		      size_t mbdigits_len = last_char - mbdigits[n];
+
+		      /*  Allocate memory for extended multibyte digit.  */
+		      char *mb_extended;
+		      mb_extended = (char *) alloca (mbdigits_len + mblen + 1);
+
+		      /*  And get the mbdigits + extra_digit string.  */
+		      *(char *) __mempcpy (__mempcpy (mb_extended, mbdigits[n],
+						      mbdigits_len),
+					   extra_mbdigit, mblen) = '\0';
+		      mbdigits_extended[n] = mb_extended;
+#endif
+		    }
+		}
+
+	      /* Read the number into workspace.  */
+	      while (c != EOF && width != 0)
+		{
+		  /* In this round we get the pointer to the digit strings
+		     and also perform the first round of comparisons.  */
+		  for (n = 0; n < 10; ++n)
+		    {
+		      /* Get the string for the digits with value N.  */
+#ifdef COMPILE_WSCANF
+
+		      /* wcdigits_extended[] is fully set in the loop
+			 above, but the test for "map != NULL" is done
+			 inside the loop here and outside the loop there.  */
+		      DIAG_PUSH_NEEDS_COMMENT;
+		      DIAG_IGNORE_NEEDS_COMMENT (4.7, "-Wmaybe-uninitialized");
+
+		      if (__glibc_unlikely (map != NULL))
+			wcdigits[n] = wcdigits_extended[n];
+		      else
+			wcdigits[n] = (const wchar_t *)
+			  _NL_CURRENT (LC_CTYPE, _NL_CTYPE_INDIGITS0_WC + n);
+		      wcdigits[n] += from_level;
+
+		      DIAG_POP_NEEDS_COMMENT;
+
+		      if (c == (wint_t) *wcdigits[n])
+			{
+			  to_level = from_level;
+			  break;
+			}
+
+		      /* Advance the pointer to the next string.  */
+		      ++wcdigits[n];
+#else
+		      const char *cmpp;
+		      int avail = width > 0 ? width : INT_MAX;
+
+		      if (__glibc_unlikely (map != NULL))
+			mbdigits[n] = mbdigits_extended[n];
+		      else
+			mbdigits[n]
+			  = curctype->values[_NL_CTYPE_INDIGITS0_MB + n].string;
+
+		      for (level = 0; level < from_level; level++)
+			mbdigits[n] = strchr (mbdigits[n], '\0') + 1;
+
+		      cmpp = mbdigits[n];
+		      while ((unsigned char) *cmpp == c && avail >= 0)
+			{
+			  if (*++cmpp == '\0')
+			    break;
+			  else
+			    {
+			      if (avail == 0 || inchar () == EOF)
+				break;
+			      --avail;
+			    }
+			}
+
+		      if (*cmpp == '\0')
+			{
+			  if (width > 0)
+			    width = avail;
+			  to_level = from_level;
+			  break;
+			}
+
+		      /* We are pushing all read characters back.  */
+		      if (cmpp > mbdigits[n])
+			{
+			  ungetc (c, s);
+			  while (--cmpp > mbdigits[n])
+			    ungetc_not_eof ((unsigned char) *cmpp, s);
+			  c = (unsigned char) *cmpp;
+			}
+
+		      /* Advance the pointer to the next string.  */
+		      mbdigits[n] = strchr (mbdigits[n], '\0') + 1;
+#endif
+		    }
+
+		  if (n == 10)
+		    {
+		      /* Have not yet found the digit.  */
+		      for (level = from_level + 1; level <= to_level; ++level)
+			{
+			  /* Search all ten digits of this level.  */
+			  for (n = 0; n < 10; ++n)
+			    {
+#ifdef COMPILE_WSCANF
+			      if (c == (wint_t) *wcdigits[n])
+				break;
+
+			      /* Advance the pointer to the next string.  */
+			      ++wcdigits[n];
+#else
+			      const char *cmpp;
+			      int avail = width > 0 ? width : INT_MAX;
+
+			      cmpp = mbdigits[n];
+			      while ((unsigned char) *cmpp == c && avail >= 0)
+				{
+				  if (*++cmpp == '\0')
+				    break;
+				  else
+				    {
+				      if (avail == 0 || inchar () == EOF)
+					break;
+				      --avail;
+				    }
+				}
+
+			      if (*cmpp == '\0')
+				{
+				  if (width > 0)
+				    width = avail;
+				  break;
+				}
+
+			      /* We are pushing all read characters back.  */
+			      if (cmpp > mbdigits[n])
+				{
+				  ungetc (c, s);
+				  while (--cmpp > mbdigits[n])
+				    ungetc_not_eof ((unsigned char) *cmpp, s);
+				  c = (unsigned char) *cmpp;
+				}
+
+			      /* Advance the pointer to the next string.  */
+			      mbdigits[n] = strchr (mbdigits[n], '\0') + 1;
+#endif
+			    }
+
+			  if (n < 10)
+			    {
+			      /* Found it.  */
+			      from_level = level;
+			      to_level = level;
+			      break;
+			    }
+			}
+		    }
+
+		  if (n < 10)
+		    c = L_('0') + n;
+		  else if (flags & GROUP)
+		    {
+		      /* Try matching against the thousands separator.  */
+#ifdef COMPILE_WSCANF
+		      if (c != thousands)
+			  break;
+#else
+		      const char *cmpp = thousands;
+		      int avail = width > 0 ? width : INT_MAX;
+
+		      while ((unsigned char) *cmpp == c && avail >= 0)
+			{
+			  char_buffer_add (&charbuf, c);
+			  if (*++cmpp == '\0')
+			    break;
+			  else
+			    {
+			      if (avail == 0 || inchar () == EOF)
+				break;
+			      --avail;
+			    }
+			}
+
+		      if (char_buffer_error (&charbuf))
+			{
+			  __set_errno (ENOMEM);
+			  done = EOF;
+			  goto errout;
+			}
+
+		      if (*cmpp != '\0')
+			{
+			  /* We are pushing all read characters back.  */
+			  if (cmpp > thousands)
+			    {
+			      charbuf.current -= cmpp - thousands;
+			      ungetc (c, s);
+			      while (--cmpp > thousands)
+				ungetc_not_eof ((unsigned char) *cmpp, s);
+			      c = (unsigned char) *cmpp;
+			    }
+			  break;
+			}
+
+		      if (width > 0)
+			width = avail;
+
+		      /* The last thousands character will be added back by
+			 the char_buffer_add below.  */
+		      --charbuf.current;
+#endif
+		    }
+		  else
+		    break;
+
+		  char_buffer_add (&charbuf, c);
+		  if (width > 0)
+		    --width;
+
+		  c = inchar ();
+		}
+	    }
+	  else
+	    /* Read the number into workspace.  */
+	    while (c != EOF && width != 0)
+	      {
+		if (base == 16)
+		  {
+		    if (!ISXDIGIT (c))
+		      break;
+		  }
+		else if (!ISDIGIT (c) || (int) (c - L_('0')) >= base)
+		  {
+		    if (base == 10 && (flags & GROUP))
+		      {
+			/* Try matching against the thousands separator.  */
+#ifdef COMPILE_WSCANF
+			if (c != thousands)
+			  break;
+#else
+			const char *cmpp = thousands;
+			int avail = width > 0 ? width : INT_MAX;
+
+			while ((unsigned char) *cmpp == c && avail >= 0)
+			  {
+			    char_buffer_add (&charbuf, c);
+			    if (*++cmpp == '\0')
+			      break;
+			    else
+			      {
+				if (avail == 0 || inchar () == EOF)
+				  break;
+				--avail;
+			      }
+			  }
+
+			if (char_buffer_error (&charbuf))
+			  {
+			    __set_errno (ENOMEM);
+			    done = EOF;
+			    goto errout;
+			  }
+
+			if (*cmpp != '\0')
+			  {
+			    /* We are pushing all read characters back.  */
+			    if (cmpp > thousands)
+			      {
+				charbuf.current -= cmpp - thousands;
+				ungetc (c, s);
+				while (--cmpp > thousands)
+				  ungetc_not_eof ((unsigned char) *cmpp, s);
+				c = (unsigned char) *cmpp;
+			      }
+			    break;
+			  }
+
+			if (width > 0)
+			  width = avail;
+
+			/* The last thousands character will be added back by
+			   the char_buffer_add below.  */
+			--charbuf.current;
+#endif
+		      }
+		    else
+		      break;
+		  }
+		char_buffer_add (&charbuf, c);
+		if (width > 0)
+		  --width;
+
+		c = inchar ();
+	      }
+
+	  if (char_buffer_error (&charbuf))
+	    {
+	      __set_errno (ENOMEM);
+	      done = EOF;
+	      goto errout;
+	    }
+
+	  if (char_buffer_size (&charbuf) == 0
+	      || (char_buffer_size (&charbuf) == 1
+		  && (char_buffer_start (&charbuf)[0] == L_('+')
+		      || char_buffer_start (&charbuf)[0] == L_('-'))))
+	    {
+	      /* There was no number.  If we are supposed to read a pointer
+		 we must recognize "(nil)" as well.  */
+	      if (__builtin_expect (char_buffer_size (&charbuf) == 0
+				    && (flags & READ_POINTER)
+				    && (width < 0 || width >= 5)
+				    && c == '('
+				    && TOLOWER (inchar ()) == L_('n')
+				    && TOLOWER (inchar ()) == L_('i')
+				    && TOLOWER (inchar ()) == L_('l')
+				    && inchar () == L_(')'), 1))
+		/* We must produce the value of a NULL pointer.  A single
+		   '0' digit is enough.  */
+		  char_buffer_add (&charbuf, L_('0'));
+	      else
+		{
+		  /* The last read character is not part of the number
+		     anymore.  */
+		  ungetc (c, s);
+
+		  conv_error ();
+		}
+	    }
+	  else
+	    /* The just read character is not part of the number anymore.  */
+	    ungetc (c, s);
+
+	  /* Convert the number.  */
+	  char_buffer_add (&charbuf, L_('\0'));
+	  if (char_buffer_error (&charbuf))
+	    {
+	      __set_errno (ENOMEM);
+	      done = EOF;
+	      goto errout;
+	    }
+	  if (need_longlong && (flags & LONGDBL))
+	    {
+	      if (flags & NUMBER_SIGNED)
+		num.q = __strtoll_internal
+		  (char_buffer_start (&charbuf), &tw, base, flags & GROUP);
+	      else
+		num.uq = __strtoull_internal
+		  (char_buffer_start (&charbuf), &tw, base, flags & GROUP);
+	    }
+	  else
+	    {
+	      if (flags & NUMBER_SIGNED)
+		num.l = __strtol_internal
+		  (char_buffer_start (&charbuf), &tw, base, flags & GROUP);
+	      else
+		num.ul = __strtoul_internal
+		  (char_buffer_start (&charbuf), &tw, base, flags & GROUP);
+	    }
+	  if (__glibc_unlikely (char_buffer_start (&charbuf) == tw))
+	    conv_error ();
+
+	  if (!(flags & SUPPRESS))
+	    {
+	      if (flags & NUMBER_SIGNED)
+		{
+		  if (need_longlong && (flags & LONGDBL))
+		    *ARG (LONGLONG int *) = num.q;
+		  else if (need_long && (flags & LONG))
+		    *ARG (long int *) = num.l;
+		  else if (flags & SHORT)
+		    *ARG (short int *) = (short int) num.l;
+		  else if (!(flags & CHAR))
+		    *ARG (int *) = (int) num.l;
+		  else
+		    *ARG (signed char *) = (signed char) num.ul;
+		}
+	      else
+		{
+		  if (need_longlong && (flags & LONGDBL))
+		    *ARG (unsigned LONGLONG int *) = num.uq;
+		  else if (need_long && (flags & LONG))
+		    *ARG (unsigned long int *) = num.ul;
+		  else if (flags & SHORT)
+		    *ARG (unsigned short int *)
+		      = (unsigned short int) num.ul;
+		  else if (!(flags & CHAR))
+		    *ARG (unsigned int *) = (unsigned int) num.ul;
+		  else
+		    *ARG (unsigned char *) = (unsigned char) num.ul;
+		}
+	      ++done;
+	    }
+	  break;
+
+	case L_('e'):	/* Floating-point numbers.  */
+	case L_('E'):
+	case L_('f'):
+	case L_('F'):
+	case L_('g'):
+	case L_('G'):
+	case L_('a'):
+	case L_('A'):
+	  c = inchar ();
+	  if (width > 0)
+	    --width;
+	  if (__glibc_unlikely (c == EOF))
+	    input_error ();
+
+	  got_digit = got_dot = got_e = 0;
+
+	  /* Check for a sign.  */
+	  if (c == L_('-') || c == L_('+'))
+	    {
+	      negative = c == L_('-');
+	      if (__glibc_unlikely (width == 0 || inchar () == EOF))
+		/* EOF is only an input error before we read any chars.  */
+		conv_error ();
+	      if (width > 0)
+		--width;
+	    }
+	  else
+	    negative = 0;
+
+	  /* Take care for the special arguments "nan" and "inf".  */
+	  if (TOLOWER (c) == L_('n'))
+	    {
+	      /* Maybe "nan".  */
+	      char_buffer_add (&charbuf, c);
+	      if (__builtin_expect (width == 0
+				    || inchar () == EOF
+				    || TOLOWER (c) != L_('a'), 0))
+		conv_error ();
+	      if (width > 0)
+		--width;
+	      char_buffer_add (&charbuf, c);
+	      if (__builtin_expect (width == 0
+				    || inchar () == EOF
+				    || TOLOWER (c) != L_('n'), 0))
+		conv_error ();
+	      if (width > 0)
+		--width;
+	      char_buffer_add (&charbuf, c);
+	      /* It is "nan".  */
+	      goto scan_float;
+	    }
+	  else if (TOLOWER (c) == L_('i'))
+	    {
+	      /* Maybe "inf" or "infinity".  */
+	      char_buffer_add (&charbuf, c);
+	      if (__builtin_expect (width == 0
+				    || inchar () == EOF
+				    || TOLOWER (c) != L_('n'), 0))
+		conv_error ();
+	      if (width > 0)
+		--width;
+	      char_buffer_add (&charbuf, c);
+	      if (__builtin_expect (width == 0
+				    || inchar () == EOF
+				    || TOLOWER (c) != L_('f'), 0))
+		conv_error ();
+	      if (width > 0)
+		--width;
+	      char_buffer_add (&charbuf, c);
+	      /* It is as least "inf".  */
+	      if (width != 0 && inchar () != EOF)
+		{
+		  if (TOLOWER (c) == L_('i'))
+		    {
+		      if (width > 0)
+			--width;
+		      /* Now we have to read the rest as well.  */
+		      char_buffer_add (&charbuf, c);
+		      if (__builtin_expect (width == 0
+					    || inchar () == EOF
+					    || TOLOWER (c) != L_('n'), 0))
+			conv_error ();
+		      if (width > 0)
+			--width;
+		      char_buffer_add (&charbuf, c);
+		      if (__builtin_expect (width == 0
+					    || inchar () == EOF
+					    || TOLOWER (c) != L_('i'), 0))
+			conv_error ();
+		      if (width > 0)
+			--width;
+		      char_buffer_add (&charbuf, c);
+		      if (__builtin_expect (width == 0
+					    || inchar () == EOF
+					    || TOLOWER (c) != L_('t'), 0))
+			conv_error ();
+		      if (width > 0)
+			--width;
+		      char_buffer_add (&charbuf, c);
+		      if (__builtin_expect (width == 0
+					    || inchar () == EOF
+					    || TOLOWER (c) != L_('y'), 0))
+			conv_error ();
+		      if (width > 0)
+			--width;
+		      char_buffer_add (&charbuf, c);
+		    }
+		  else
+		    /* Never mind.  */
+		    ungetc (c, s);
+		}
+	      goto scan_float;
+	    }
+
+	  exp_char = L_('e');
+	  if (width != 0 && c == L_('0'))
+	    {
+	      char_buffer_add (&charbuf, c);
+	      c = inchar ();
+	      if (width > 0)
+		--width;
+	      if (width != 0 && TOLOWER (c) == L_('x'))
+		{
+		  /* It is a number in hexadecimal format.  */
+		  char_buffer_add (&charbuf, c);
+
+		  flags |= HEXA_FLOAT;
+		  exp_char = L_('p');
+
+		  /* Grouping is not allowed.  */
+		  flags &= ~GROUP;
+		  c = inchar ();
+		  if (width > 0)
+		    --width;
+		}
+	      else
+		got_digit = 1;
+	    }
+
+	  while (1)
+	    {
+	      if (char_buffer_error (&charbuf))
+		{
+		  __set_errno (ENOMEM);
+		  done = EOF;
+		  goto errout;
+		}
+	      if (ISDIGIT (c))
+		{
+		  char_buffer_add (&charbuf, c);
+		  got_digit = 1;
+		}
+	      else if (!got_e && (flags & HEXA_FLOAT) && ISXDIGIT (c))
+		{
+		  char_buffer_add (&charbuf, c);
+		  got_digit = 1;
+		}
+	      else if (got_e && charbuf.current[-1] == exp_char
+		       && (c == L_('-') || c == L_('+')))
+		char_buffer_add (&charbuf, c);
+	      else if (got_digit && !got_e
+		       && (CHAR_T) TOLOWER (c) == exp_char)
+		{
+		  char_buffer_add (&charbuf, exp_char);
+		  got_e = got_dot = 1;
+		}
+	      else
+		{
+#ifdef COMPILE_WSCANF
+		  if (! got_dot && c == decimal)
+		    {
+		      char_buffer_add (&charbuf, c);
+		      got_dot = 1;
+		    }
+		  else if ((flags & GROUP) != 0 && ! got_dot && c == thousands)
+		    char_buffer_add (&charbuf, c);
+		  else
+		    {
+		      /* The last read character is not part of the number
+			 anymore.  */
+		      ungetc (c, s);
+		      break;
+		    }
+#else
+		  const char *cmpp = decimal;
+		  int avail = width > 0 ? width : INT_MAX;
+
+		  if (! got_dot)
+		    {
+		      while ((unsigned char) *cmpp == c && avail >= 0)
+			if (*++cmpp == '\0')
+			  break;
+			else
+			  {
+			    if (avail == 0 || inchar () == EOF)
+			      break;
+			    --avail;
+			  }
+		    }
+
+		  if (*cmpp == '\0')
+		    {
+		      /* Add all the characters.  */
+		      for (cmpp = decimal; *cmpp != '\0'; ++cmpp)
+			char_buffer_add (&charbuf, (unsigned char) *cmpp);
+		      if (width > 0)
+			width = avail;
+		      got_dot = 1;
+		    }
+		  else
+		    {
+		      /* Figure out whether it is a thousands separator.
+			 There is one problem: we possibly read more than
+			 one character.  We cannot push them back but since
+			 we know that parts of the `decimal' string matched,
+			 we can compare against it.  */
+		      const char *cmp2p = thousands;
+
+		      if ((flags & GROUP) != 0 && ! got_dot)
+			{
+			  while (cmp2p - thousands < cmpp - decimal
+				 && *cmp2p == decimal[cmp2p - thousands])
+			    ++cmp2p;
+			  if (cmp2p - thousands == cmpp - decimal)
+			    {
+			      while ((unsigned char) *cmp2p == c && avail >= 0)
+				if (*++cmp2p == '\0')
+				  break;
+				else
+				  {
+				    if (avail == 0 || inchar () == EOF)
+				      break;
+				    --avail;
+				  }
+			    }
+			}
+
+		      if (cmp2p != NULL && *cmp2p == '\0')
+			{
+			  /* Add all the characters.  */
+			  for (cmpp = thousands; *cmpp != '\0'; ++cmpp)
+			    char_buffer_add (&charbuf, (unsigned char) *cmpp);
+			  if (width > 0)
+			    width = avail;
+			}
+		      else
+			{
+			  /* The last read character is not part of the number
+			     anymore.  */
+			  ungetc (c, s);
+			  break;
+			}
+		    }
+#endif
+		}
+
+	      if (width == 0 || inchar () == EOF)
+		break;
+
+	      if (width > 0)
+		--width;
+	    }
+
+	  if (char_buffer_error (&charbuf))
+	    {
+	      __set_errno (ENOMEM);
+	      done = EOF;
+	      goto errout;
+	    }
+
+	  wctrans_t map;
+	  if (__builtin_expect ((flags & I18N) != 0, 0)
+	      /* Hexadecimal floats make no sense, fixing localized
+		 digits with ASCII letters.  */
+	      && !(flags & HEXA_FLOAT)
+	      /* Minimum requirement.  */
+	      && (char_buffer_size (&charbuf) == 0 || got_dot)
+	      && (map = __wctrans ("to_inpunct")) != NULL)
+	    {
+	      /* Reget the first character.  */
+	      inchar ();
+
+	      /* Localized digits, decimal points, and thousands
+		 separator.  */
+	      wint_t wcdigits[12];
+
+	      /* First get decimal equivalent to check if we read it
+		 or not.  */
+	      wcdigits[11] = __towctrans (L'.', map);
+
+	      /* If we have not read any character or have just read
+		 locale decimal point which matches the decimal point
+		 for localized FP numbers, then we may have localized
+		 digits.  Note, we test GOT_DOT above.  */
+#ifdef COMPILE_WSCANF
+	      if (char_buffer_size (&charbuf) == 0
+		  || (char_buffer_size (&charbuf) == 1
+		      && wcdigits[11] == decimal))
+#else
+	      char mbdigits[12][MB_LEN_MAX + 1];
+
+	      mbstate_t state;
+	      memset (&state, '\0', sizeof (state));
+
+	      bool match_so_far = char_buffer_size (&charbuf) == 0;
+	      size_t mblen = __wcrtomb (mbdigits[11], wcdigits[11], &state);
+	      if (mblen != (size_t) -1)
+		{
+		  mbdigits[11][mblen] = '\0';
+		  match_so_far |=
+		    (char_buffer_size (&charbuf) == strlen (decimal)
+		     && strcmp (decimal, mbdigits[11]) == 0);
+		}
+	      else
+		{
+		  size_t decimal_len = strlen (decimal);
+		  /* This should always be the case but the data comes
+		     from a file.  */
+		  if (decimal_len <= MB_LEN_MAX)
+		    {
+		      match_so_far |= char_buffer_size (&charbuf) == decimal_len;
+		      memcpy (mbdigits[11], decimal, decimal_len + 1);
+		    }
+		  else
+		    match_so_far = false;
+		}
+
+	      if (match_so_far)
+#endif
+		{
+		  bool have_locthousands = (flags & GROUP) != 0;
+
+		  /* Now get the digits and the thousands-sep equivalents.  */
+		  for (int n = 0; n < 11; ++n)
+		    {
+		      if (n < 10)
+			wcdigits[n] = __towctrans (L'0' + n, map);
+		      else if (n == 10)
+			{
+			  wcdigits[10] = __towctrans (L',', map);
+			  have_locthousands &= wcdigits[10] != L'\0';
+			}
+
+#ifndef COMPILE_WSCANF
+		      memset (&state, '\0', sizeof (state));
+
+		      size_t mblen = __wcrtomb (mbdigits[n], wcdigits[n],
+						&state);
+		      if (mblen == (size_t) -1)
+			{
+			  if (n == 10)
+			    {
+			      if (have_locthousands)
+				{
+				  size_t thousands_len = strlen (thousands);
+				  if (thousands_len <= MB_LEN_MAX)
+				    memcpy (mbdigits[10], thousands,
+					    thousands_len + 1);
+				  else
+				    have_locthousands = false;
+				}
+			    }
+			  else
+			    /* Ignore checking against localized digits.  */
+			    goto no_i18nflt;
+			}
+		      else
+			mbdigits[n][mblen] = '\0';
+#endif
+		    }
+
+		  /* Start checking against localized digits, if
+		     conversion is done correctly. */
+		  while (1)
+		    {
+		      if (char_buffer_error (&charbuf))
+			{
+			  __set_errno (ENOMEM);
+			  done = EOF;
+			  goto errout;
+			}
+		      if (got_e && charbuf.current[-1] == exp_char
+			  && (c == L_('-') || c == L_('+')))
+			char_buffer_add (&charbuf, c);
+		      else if (char_buffer_size (&charbuf) > 0 && !got_e
+			       && (CHAR_T) TOLOWER (c) == exp_char)
+			{
+			  char_buffer_add (&charbuf, exp_char);
+			  got_e = got_dot = 1;
+			}
+		      else
+			{
+			  /* Check against localized digits, decimal point,
+			     and thousands separator.  */
+			  int n;
+			  for (n = 0; n < 12; ++n)
+			    {
+#ifdef COMPILE_WSCANF
+			      if (c == wcdigits[n])
+				{
+				  if (n < 10)
+				    char_buffer_add (&charbuf, L_('0') + n);
+				  else if (n == 11 && !got_dot)
+				    {
+				      char_buffer_add (&charbuf, decimal);
+				      got_dot = 1;
+				    }
+				  else if (n == 10 && have_locthousands
+					   && ! got_dot)
+				    char_buffer_add (&charbuf, thousands);
+				  else
+				    /* The last read character is not part
+				       of the number anymore.  */
+				    n = 12;
+
+				  break;
+				}
+#else
+			      const char *cmpp = mbdigits[n];
+			      int avail = width > 0 ? width : INT_MAX;
+
+			      while ((unsigned char) *cmpp == c && avail >= 0)
+				if (*++cmpp == '\0')
+				  break;
+				else
+				  {
+				    if (avail == 0 || inchar () == EOF)
+				      break;
+				    --avail;
+				  }
+			      if (*cmpp == '\0')
+				{
+				  if (width > 0)
+				    width = avail;
+
+				  if (n < 10)
+				    char_buffer_add (&charbuf, L_('0') + n);
+				  else if (n == 11 && !got_dot)
+				    {
+				      /* Add all the characters.  */
+				      for (cmpp = decimal; *cmpp != '\0';
+					   ++cmpp)
+					char_buffer_add (&charbuf,
+							 (unsigned char) *cmpp);
+
+				      got_dot = 1;
+				    }
+				  else if (n == 10 && (flags & GROUP) != 0
+					   && ! got_dot)
+				    {
+				      /* Add all the characters.  */
+				      for (cmpp = thousands; *cmpp != '\0';
+					   ++cmpp)
+					char_buffer_add (&charbuf,
+							 (unsigned char) *cmpp);
+				    }
+				  else
+				    /* The last read character is not part
+				       of the number anymore.  */
+				      n = 12;
+
+				  break;
+				}
+
+			      /* We are pushing all read characters back.  */
+			      if (cmpp > mbdigits[n])
+				{
+				  ungetc (c, s);
+				  while (--cmpp > mbdigits[n])
+				    ungetc_not_eof ((unsigned char) *cmpp, s);
+				  c = (unsigned char) *cmpp;
+				}
+#endif
+			    }
+
+			  if (n >= 12)
+			    {
+			      /* The last read character is not part
+				 of the number anymore.  */
+			      ungetc (c, s);
+			      break;
+			    }
+			}
+
+		      if (width == 0 || inchar () == EOF)
+			break;
+
+		      if (width > 0)
+			--width;
+		    }
+		}
+
+#ifndef COMPILE_WSCANF
+	    no_i18nflt:
+	      ;
+#endif
+	    }
+
+	  if (char_buffer_error (&charbuf))
+	    {
+	      __set_errno (ENOMEM);
+	      done = EOF;
+	      goto errout;
+	    }
+
+	  /* Have we read any character?  If we try to read a number
+	     in hexadecimal notation and we have read only the `0x'
+	     prefix this is an error.  */
+	  if (__glibc_unlikely (char_buffer_size (&charbuf) == 0
+				|| ((flags & HEXA_FLOAT)
+				    && char_buffer_size (&charbuf) == 2)))
+	    conv_error ();
+
+	scan_float:
+	  /* Convert the number.  */
+	  char_buffer_add (&charbuf, L_('\0'));
+	  if (char_buffer_error (&charbuf))
+	    {
+	      __set_errno (ENOMEM);
+	      done = EOF;
+	      goto errout;
+	    }
+	  if ((flags & LONGDBL) && !__ldbl_is_dbl)
+	    {
+	      long double d = __strtold_internal
+		(char_buffer_start (&charbuf), &tw, flags & GROUP);
+	      if (!(flags & SUPPRESS) && tw != char_buffer_start (&charbuf))
+		*ARG (long double *) = negative ? -d : d;
+	    }
+	  else if (flags & (LONG | LONGDBL))
+	    {
+	      double d = __strtod_internal
+		(char_buffer_start (&charbuf), &tw, flags & GROUP);
+	      if (!(flags & SUPPRESS) && tw != char_buffer_start (&charbuf))
+		*ARG (double *) = negative ? -d : d;
+	    }
+	  else
+	    {
+	      float d = __strtof_internal
+		(char_buffer_start (&charbuf), &tw, flags & GROUP);
+	      if (!(flags & SUPPRESS) && tw != char_buffer_start (&charbuf))
+		*ARG (float *) = negative ? -d : d;
+	    }
+
+	  if (__glibc_unlikely (tw == char_buffer_start (&charbuf)))
+	    conv_error ();
+
+	  if (!(flags & SUPPRESS))
+	    ++done;
+	  break;
+
+	case L_('['):	/* Character class.  */
+	  if (flags & LONG)
+	    STRING_ARG (wstr, wchar_t, 100);
+	  else
+	    STRING_ARG (str, char, 100);
+
+	  if (*f == L_('^'))
+	    {
+	      ++f;
+	      not_in = 1;
+	    }
+	  else
+	    not_in = 0;
+
+	  if (width < 0)
+	    /* There is no width given so there is also no limit on the
+	       number of characters we read.  Therefore we set width to
+	       a very high value to make the algorithm easier.  */
+	    width = INT_MAX;
+
+#ifdef COMPILE_WSCANF
+	  /* Find the beginning and the end of the scanlist.  We are not
+	     creating a lookup table since it would have to be too large.
+	     Instead we search each time through the string.  This is not
+	     a constant lookup time but who uses this feature deserves to
+	     be punished.  */
+	  tw = (wchar_t *) f;	/* Marks the beginning.  */
+
+	  if (*f == L']')
+	    ++f;
+
+	  while ((fc = *f++) != L'\0' && fc != L']');
+
+	  if (__glibc_unlikely (fc == L'\0'))
+	    conv_error ();
+	  wchar_t *twend = (wchar_t *) f - 1;
+#else
+	  /* Fill WP with byte flags indexed by character.
+	     We will use this flag map for matching input characters.  */
+	  if (!scratch_buffer_set_array_size
+	      (&charbuf.scratch, UCHAR_MAX + 1, 1))
+	    {
+	      done = EOF;
+	      goto errout;
+	    }
+	  memset (charbuf.scratch.data, '\0', UCHAR_MAX + 1);
+
+	  fc = *f;
+	  if (fc == ']' || fc == '-')
+	    {
+	      /* If ] or - appears before any char in the set, it is not
+		 the terminator or separator, but the first char in the
+		 set.  */
+	      ((char *)charbuf.scratch.data)[fc] = 1;
+	      ++f;
+	    }
+
+	  while ((fc = *f++) != '\0' && fc != ']')
+	    if (fc == '-' && *f != '\0' && *f != ']'
+		&& (unsigned char) f[-2] <= (unsigned char) *f)
+	      {
+		/* Add all characters from the one before the '-'
+		   up to (but not including) the next format char.  */
+		for (fc = (unsigned char) f[-2]; fc < (unsigned char) *f; ++fc)
+		  ((char *)charbuf.scratch.data)[fc] = 1;
+	      }
+	    else
+	      /* Add the character to the flag map.  */
+	      ((char *)charbuf.scratch.data)[fc] = 1;
+
+	  if (__glibc_unlikely (fc == '\0'))
+	    conv_error();
+#endif
+
+	  if (flags & LONG)
+	    {
+	      size_t now = read_in;
+#ifdef COMPILE_WSCANF
+	      if (__glibc_unlikely (inchar () == WEOF))
+		input_error ();
+
+	      do
+		{
+		  wchar_t *runp;
+
+		  /* Test whether it's in the scanlist.  */
+		  runp = tw;
+		  while (runp < twend)
+		    {
+		      if (runp[0] == L'-' && runp[1] != '\0'
+			  && runp + 1 != twend
+			  && runp != tw
+			  && (unsigned int) runp[-1] <= (unsigned int) runp[1])
+			{
+			  /* Match against all characters in between the
+			     first and last character of the sequence.  */
+			  wchar_t wc;
+
+			  for (wc = runp[-1] + 1; wc <= runp[1]; ++wc)
+			    if ((wint_t) wc == c)
+			      break;
+
+			  if (wc <= runp[1] && !not_in)
+			    break;
+			  if (wc <= runp[1] && not_in)
+			    {
+			      /* The current character is not in the
+				 scanset.  */
+			      ungetc (c, s);
+			      goto out;
+			    }
+
+			  runp += 2;
+			}
+		      else
+			{
+			  if ((wint_t) *runp == c && !not_in)
+			    break;
+			  if ((wint_t) *runp == c && not_in)
+			    {
+			      ungetc (c, s);
+			      goto out;
+			    }
+
+			  ++runp;
+			}
+		    }
+
+		  if (runp == twend && !not_in)
+		    {
+		      ungetc (c, s);
+		      goto out;
+		    }
+
+		  if (!(flags & SUPPRESS))
+		    {
+		      *wstr++ = c;
+
+		      if ((flags & MALLOC)
+			  && wstr == (wchar_t *) *strptr + strsize)
+			{
+			  /* Enlarge the buffer.  */
+			  wstr = (wchar_t *) realloc (*strptr,
+						      (2 * strsize)
+						      * sizeof (wchar_t));
+			  if (wstr == NULL)
+			    {
+			      /* Can't allocate that much.  Last-ditch
+				 effort.  */
+			      wstr = (wchar_t *)
+				realloc (*strptr, (strsize + 1)
+						  * sizeof (wchar_t));
+			      if (wstr == NULL)
+				{
+				  if (flags & POSIX_MALLOC)
+				    {
+				      done = EOF;
+				      goto errout;
+				    }
+				  /* We lose.  Oh well.  Terminate the string
+				     and stop converting, so at least we don't
+				     skip any input.  */
+				  ((wchar_t *) (*strptr))[strsize - 1] = L'\0';
+				  strptr = NULL;
+				  ++done;
+				  conv_error ();
+				}
+			      else
+				{
+				  *strptr = (char *) wstr;
+				  wstr += strsize;
+				  ++strsize;
+				}
+			    }
+			  else
+			    {
+			      *strptr = (char *) wstr;
+			      wstr += strsize;
+			      strsize *= 2;
+			    }
+			}
+		    }
+		}
+	      while (--width > 0 && inchar () != WEOF);
+	    out:
+#else
+	      char buf[MB_LEN_MAX];
+	      size_t cnt = 0;
+	      mbstate_t cstate;
+
+	      if (__glibc_unlikely (inchar () == EOF))
+		input_error ();
+
+	      memset (&cstate, '\0', sizeof (cstate));
+
+	      do
+		{
+		  if (((char *) charbuf.scratch.data)[c] == not_in)
+		    {
+		      ungetc_not_eof (c, s);
+		      break;
+		    }
+
+		  /* This is easy.  */
+		  if (!(flags & SUPPRESS))
+		    {
+		      size_t n;
+
+		      /* Convert it into a wide character.  */
+		      buf[0] = c;
+		      n = __mbrtowc (wstr, buf, 1, &cstate);
+
+		      if (n == (size_t) -2)
+			{
+			  /* Possibly correct character, just not enough
+			     input.  */
+			  ++cnt;
+			  assert (cnt < MB_CUR_MAX);
+			  continue;
+			}
+		      cnt = 0;
+
+		      ++wstr;
+		      if ((flags & MALLOC)
+			  && wstr == (wchar_t *) *strptr + strsize)
+			{
+			  /* Enlarge the buffer.  */
+			  wstr = (wchar_t *) realloc (*strptr,
+						      (2 * strsize
+						       * sizeof (wchar_t)));
+			  if (wstr == NULL)
+			    {
+			      /* Can't allocate that much.  Last-ditch
+				 effort.  */
+			      wstr = (wchar_t *)
+				realloc (*strptr, ((strsize + 1)
+						   * sizeof (wchar_t)));
+			      if (wstr == NULL)
+				{
+				  if (flags & POSIX_MALLOC)
+				    {
+				      done = EOF;
+				      goto errout;
+				    }
+				  /* We lose.  Oh well.  Terminate the
+				     string and stop converting,
+				     so at least we don't skip any input.  */
+				  ((wchar_t *) (*strptr))[strsize - 1] = L'\0';
+				  strptr = NULL;
+				  ++done;
+				  conv_error ();
+				}
+			      else
+				{
+				  *strptr = (char *) wstr;
+				  wstr += strsize;
+				  ++strsize;
+				}
+			    }
+			  else
+			    {
+			      *strptr = (char *) wstr;
+			      wstr += strsize;
+			      strsize *= 2;
+			    }
+			}
+		    }
+
+		  if (--width <= 0)
+		    break;
+		}
+	      while (inchar () != EOF);
+
+	      if (__glibc_unlikely (cnt != 0))
+		/* We stopped in the middle of recognizing another
+		   character.  That's a problem.  */
+		encode_error ();
+#endif
+
+	      if (__glibc_unlikely (now == read_in))
+		/* We haven't succesfully read any character.  */
+		conv_error ();
+
+	      if (!(flags & SUPPRESS))
+		{
+		  *wstr++ = L'\0';
+
+		  if ((flags & MALLOC)
+		      && wstr - (wchar_t *) *strptr != strsize)
+		    {
+		      wchar_t *cp = (wchar_t *)
+			realloc (*strptr, ((wstr - (wchar_t *) *strptr)
+					   * sizeof(wchar_t)));
+		      if (cp != NULL)
+			*strptr = (char *) cp;
+		    }
+		  strptr = NULL;
+
+		  ++done;
+		}
+	    }
+	  else
+	    {
+	      size_t now = read_in;
+
+	      if (__glibc_unlikely (inchar () == EOF))
+		input_error ();
+
+#ifdef COMPILE_WSCANF
+
+	      memset (&state, '\0', sizeof (state));
+
+	      do
+		{
+		  wchar_t *runp;
+		  size_t n;
+
+		  /* Test whether it's in the scanlist.  */
+		  runp = tw;
+		  while (runp < twend)
+		    {
+		      if (runp[0] == L'-' && runp[1] != '\0'
+			  && runp + 1 != twend
+			  && runp != tw
+			  && (unsigned int) runp[-1] <= (unsigned int) runp[1])
+			{
+			  /* Match against all characters in between the
+			     first and last character of the sequence.  */
+			  wchar_t wc;
+
+			  for (wc = runp[-1] + 1; wc <= runp[1]; ++wc)
+			    if ((wint_t) wc == c)
+			      break;
+
+			  if (wc <= runp[1] && !not_in)
+			    break;
+			  if (wc <= runp[1] && not_in)
+			    {
+			      /* The current character is not in the
+				 scanset.  */
+			      ungetc (c, s);
+			      goto out2;
+			    }
+
+			  runp += 2;
+			}
+		      else
+			{
+			  if ((wint_t) *runp == c && !not_in)
+			    break;
+			  if ((wint_t) *runp == c && not_in)
+			    {
+			      ungetc (c, s);
+			      goto out2;
+			    }
+
+			  ++runp;
+			}
+		    }
+
+		  if (runp == twend && !not_in)
+		    {
+		      ungetc (c, s);
+		      goto out2;
+		    }
+
+		  if (!(flags & SUPPRESS))
+		    {
+		      if ((flags & MALLOC)
+			  && str + MB_CUR_MAX >= *strptr + strsize)
+			{
+			  /* Enlarge the buffer.  */
+			  size_t strleng = str - *strptr;
+			  char *newstr;
+
+			  newstr = (char *) realloc (*strptr, 2 * strsize);
+			  if (newstr == NULL)
+			    {
+			      /* Can't allocate that much.  Last-ditch
+				 effort.  */
+			      newstr = (char *) realloc (*strptr,
+							 strleng + MB_CUR_MAX);
+			      if (newstr == NULL)
+				{
+				  if (flags & POSIX_MALLOC)
+				    {
+				      done = EOF;
+				      goto errout;
+				    }
+				  /* We lose.  Oh well.  Terminate the string
+				     and stop converting, so at least we don't
+				     skip any input.  */
+				  ((char *) (*strptr))[strleng] = '\0';
+				  strptr = NULL;
+				  ++done;
+				  conv_error ();
+				}
+			      else
+				{
+				  *strptr = newstr;
+				  str = newstr + strleng;
+				  strsize = strleng + MB_CUR_MAX;
+				}
+			    }
+			  else
+			    {
+			      *strptr = newstr;
+			      str = newstr + strleng;
+			      strsize *= 2;
+			    }
+			}
+		    }
+
+		  n = __wcrtomb (!(flags & SUPPRESS) ? str : NULL, c, &state);
+		  if (__glibc_unlikely (n == (size_t) -1))
+		    encode_error ();
+
+		  assert (n <= MB_CUR_MAX);
+		  str += n;
+		}
+	      while (--width > 0 && inchar () != WEOF);
+	    out2:
+#else
+	      do
+		{
+		  if (((char *) charbuf.scratch.data)[c] == not_in)
+		    {
+		      ungetc_not_eof (c, s);
+		      break;
+		    }
+
+		  /* This is easy.  */
+		  if (!(flags & SUPPRESS))
+		    {
+		      *str++ = c;
+		      if ((flags & MALLOC)
+			  && (char *) str == *strptr + strsize)
+			{
+			  /* Enlarge the buffer.  */
+			  size_t newsize = 2 * strsize;
+
+			allocagain:
+			  str = (char *) realloc (*strptr, newsize);
+			  if (str == NULL)
+			    {
+			      /* Can't allocate that much.  Last-ditch
+				 effort.  */
+			      if (newsize > strsize + 1)
+				{
+				  newsize = strsize + 1;
+				  goto allocagain;
+				}
+			      if (flags & POSIX_MALLOC)
+				{
+				  done = EOF;
+				  goto errout;
+				}
+			      /* We lose.  Oh well.  Terminate the
+				 string and stop converting,
+				 so at least we don't skip any input.  */
+			      ((char *) (*strptr))[strsize - 1] = '\0';
+			      strptr = NULL;
+			      ++done;
+			      conv_error ();
+			    }
+			  else
+			    {
+			      *strptr = (char *) str;
+			      str += strsize;
+			      strsize = newsize;
+			    }
+			}
+		    }
+		}
+	      while (--width > 0 && inchar () != EOF);
+#endif
+
+	      if (__glibc_unlikely (now == read_in))
+		/* We haven't succesfully read any character.  */
+		conv_error ();
+
+	      if (!(flags & SUPPRESS))
+		{
+#ifdef COMPILE_WSCANF
+		  /* We have to emit the code to get into the initial
+		     state.  */
+		  char buf[MB_LEN_MAX];
+		  size_t n = __wcrtomb (buf, L'\0', &state);
+		  if (n > 0 && (flags & MALLOC)
+		      && str + n >= *strptr + strsize)
+		    {
+		      /* Enlarge the buffer.  */
+		      size_t strleng = str - *strptr;
+		      char *newstr;
+
+		      newstr = (char *) realloc (*strptr, strleng + n + 1);
+		      if (newstr == NULL)
+			{
+			  if (flags & POSIX_MALLOC)
+			    {
+			      done = EOF;
+			      goto errout;
+			    }
+			  /* We lose.  Oh well.  Terminate the string
+			     and stop converting, so at least we don't
+			     skip any input.  */
+			  ((char *) (*strptr))[strleng] = '\0';
+			  strptr = NULL;
+			  ++done;
+			  conv_error ();
+			}
+		      else
+			{
+			  *strptr = newstr;
+			  str = newstr + strleng;
+			  strsize = strleng + n + 1;
+			}
+		    }
+
+		  str = __mempcpy (str, buf, n);
+#endif
+		  *str++ = '\0';
+
+		  if ((flags & MALLOC) && str - *strptr != strsize)
+		    {
+		      char *cp = (char *) realloc (*strptr, str - *strptr);
+		      if (cp != NULL)
+			*strptr = cp;
+		    }
+		  strptr = NULL;
+
+		  ++done;
+		}
+	    }
+	  break;
+
+	case L_('p'):	/* Generic pointer.  */
+	  base = 16;
+	  /* A PTR must be the same size as a `long int'.  */
+	  flags &= ~(SHORT|LONGDBL);
+	  if (need_long)
+	    flags |= LONG;
+	  flags |= READ_POINTER;
+	  goto number;
+
+	default:
+	  /* If this is an unknown format character punt.  */
+	  conv_error ();
+	}
+    }
+
+  /* The last thing we saw int the format string was a white space.
+     Consume the last white spaces.  */
+  if (skip_space)
+    {
+      do
+	c = inchar ();
+      while (ISSPACE (c));
+      ungetc (c, s);
+    }
+
+ errout:
+  /* Unlock stream.  */
+  UNLOCK_STREAM (s);
+
+  scratch_buffer_free (&charbuf.scratch);
+  if (errp != NULL)
+    *errp |= errval;
+
+  if (__glibc_unlikely (done == EOF))
+    {
+      if (__glibc_unlikely (ptrs_to_free != NULL))
+	{
+	  struct ptrs_to_free *p = ptrs_to_free;
+	  while (p != NULL)
+	    {
+	      for (size_t cnt = 0; cnt < p->count; ++cnt)
+		{
+		  free (*p->ptrs[cnt]);
+		  *p->ptrs[cnt] = NULL;
+		}
+	      p = p->next;
+	      ptrs_to_free = p;
+	    }
+	}
+    }
+  else if (__glibc_unlikely (strptr != NULL))
+    {
+      free (*strptr);
+      *strptr = NULL;
+    }
+  return done;
+}
+
+#ifdef COMPILE_WSCANF
+int
+__vfwscanf (FILE *s, const wchar_t *format, va_list argptr)
+{
+  return _IO_vfwscanf (s, format, argptr, NULL);
+}
+ldbl_weak_alias (__vfwscanf, vfwscanf)
+#else
+int
+___vfscanf (FILE *s, const char *format, va_list argptr)
+{
+  return _IO_vfscanf_internal (s, format, argptr, NULL);
+}
+ldbl_strong_alias (_IO_vfscanf_internal, _IO_vfscanf)
+ldbl_hidden_def (_IO_vfscanf_internal, _IO_vfscanf)
+ldbl_strong_alias (___vfscanf, __vfscanf)
+ldbl_hidden_def (___vfscanf, __vfscanf)
+ldbl_weak_alias (___vfscanf, vfscanf)
+#endif
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/vfwprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/vfwprintf.c
new file mode 100644
index 0000000..2c3cd06
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/vfwprintf.c
@@ -0,0 +1,3 @@
+#include <wctype.h>
+#define COMPILE_WPRINTF	1
+#include "vfprintf.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/vfwscanf.c b/ap/libc/glibc/glibc-2.23/stdio-common/vfwscanf.c
new file mode 100644
index 0000000..26b1a66
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/vfwscanf.c
@@ -0,0 +1,2 @@
+#define COMPILE_WSCANF	1
+#include "vfscanf.c"
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/vprintf.c b/ap/libc/glibc/glibc-2.23/stdio-common/vprintf.c
new file mode 100644
index 0000000..df66e18
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/vprintf.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdarg.h>
+#undef	__OPTIMIZE__	/* Avoid inline `vprintf' function.  */
+#include <stdio.h>
+#include <libioP.h>
+
+#undef	vprintf
+
+/* Write formatted output to stdout according to the
+   format string FORMAT, using the argument list in ARG.  */
+int
+__vprintf (const char *format, __gnuc_va_list arg)
+{
+  return vfprintf (stdout, format, arg);
+}
+
+ldbl_strong_alias (__vprintf, vprintf)
diff --git a/ap/libc/glibc/glibc-2.23/stdio-common/xbug.c b/ap/libc/glibc/glibc-2.23/stdio-common/xbug.c
new file mode 100644
index 0000000..06f74af
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.23/stdio-common/xbug.c
@@ -0,0 +1,70 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+typedef struct _Buffer {
+  char *buff;
+  int  room, used;
+} Buffer;
+
+void InitBuffer (Buffer *b);
+void AppendToBuffer (Buffer *b, const char *str, int len);
+void ReadFile (Buffer *buffer, FILE *input);
+
+#define INIT_BUFFER_SIZE 10000
+
+void
+InitBuffer (Buffer *b)
+{
+  b->room = INIT_BUFFER_SIZE;
+  b->used = 0;
+  b->buff = (char *)malloc(INIT_BUFFER_SIZE*sizeof(char));
+}
+
+void
+AppendToBuffer (Buffer *b, const char *str, int len)
+{
+  while (b->used + len > b->room) {
+    b->buff = (char *)realloc(b->buff, 2*b->room*(sizeof(char)));
+    b->room *= 2;
+  }
+  strncpy(b->buff + b->used, str, len);
+  b->used += len;
+}
+
+void
+ReadFile (Buffer *buffer, FILE *input)
+{
+  char       buf[BUFSIZ + 1];
+  int        bytes;
+
+  buffer->used = 0;
+  while (!feof(input) && (bytes = fread(buf, 1, BUFSIZ, input)) > 0) {
+    AppendToBuffer(buffer, buf, bytes);
+  }
+  AppendToBuffer(buffer, "", 1);
+}
+
+int
+main(int argc, char *argv[])
+{
+  char filename[] = "xbug.c";
+  FILE *input;
+  Buffer buffer;
+
+  InitBuffer(&buffer);
+
+  if (!freopen (filename, "r", stdin))
+    fprintf(stderr, "cannot open file\n");
+
+  unsetenv ("LD_LIBRARY_PATH");
+
+  if (!(input = popen("/bin/cat", "r")))
+    fprintf(stderr, "cannot run \n");
+
+  ReadFile(&buffer, input);
+  pclose(input);
+
+  return 0;
+}
