diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/Depend b/ap/libc/glibc/glibc-2.22/stdio-common/Depend
new file mode 100644
index 0000000..f3e1156
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/Depend
@@ -0,0 +1 @@
+localedata
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/Makefile b/ap/libc/glibc/glibc-2.22/stdio-common/Makefile
new file mode 100644
index 0000000..d0bf0e1
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/Makefile
@@ -0,0 +1,124 @@
+# Copyright (C) 1991-2015 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
+
+test-srcs = tst-unbputc tst-printf
+
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)tst-unbputc.out $(objpfx)tst-printf.out \
+		 $(objpfx)tst-setvbuf1-cmp.out
+endif
+
+include ../Rules
+
+ifeq ($(run-built-tests),yes)
+$(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)
+endif
+
+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 += $(exceptions)
+CFLAGS-fprintf.c += $(exceptions)
+CFLAGS-printf.c += $(exceptions)
+CFLAGS-vfwprintf.c += $(exceptions)
+CFLAGS-vfscanf.c += $(exceptions)
+CFLAGS-vfwscanf.c += $(exceptions)
+CFLAGS-fscanf.c += $(exceptions)
+CFLAGS-scanf.c += $(exceptions)
+CFLAGS-isoc99_vfscanf.c += $(exceptions)
+CFLAGS-isoc99_vscanf.c += $(exceptions)
+CFLAGS-isoc99_fscanf.c += $(exceptions)
+CFLAGS-isoc99_scanf.c += $(exceptions)
+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.22/stdio-common/Versions b/ap/libc/glibc/glibc-2.22/stdio-common/Versions
new file mode 100644
index 0000000..06b96f6
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/_i18n_number.h b/ap/libc/glibc/glibc-2.22/stdio-common/_i18n_number.h
new file mode 100644
index 0000000..3c73044
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/_i18n_number.h
@@ -0,0 +1,117 @@
+/* Copyright (C) 2000-2015 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.22/stdio-common/_itoa.c b/ap/libc/glibc/glibc-2.22/stdio-common/_itoa.c
new file mode 100644
index 0000000..a3ae5e1
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/_itoa.c
@@ -0,0 +1,482 @@
+/* Internal function for converting integers to ASCII.
+   Copyright (C) 1994-2015 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 (value, buflim, base, upper_case)
+     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.22/stdio-common/_itowa.c b/ap/libc/glibc/glibc-2.22/stdio-common/_itowa.c
new file mode 100644
index 0000000..dedf4b7
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/_itowa.c
@@ -0,0 +1,352 @@
+/* Internal function for converting integers to ASCII.
+   Copyright (C) 1994-2015 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 (value, buflim, base, upper_case)
+     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.22/stdio-common/_itowa.h b/ap/libc/glibc/glibc-2.22/stdio-common/_itowa.h
new file mode 100644
index 0000000..86d65be
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/_itowa.h
@@ -0,0 +1,71 @@
+/* Internal function for converting integers to ASCII.
+   Copyright (C) 1994-2015 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.22/stdio-common/asprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/asprintf.c
new file mode 100644
index 0000000..03bad44
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/asprintf.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/bits/printf-ldbl.h b/ap/libc/glibc/glibc-2.22/stdio-common/bits/printf-ldbl.h
new file mode 100644
index 0000000..36ad50d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/bits/printf-ldbl.h
@@ -0,0 +1,23 @@
+/* -mlong-double-64 compatibility mode for <printf.h> functions.
+   Copyright (C) 2006-2015 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.22/stdio-common/bug-vfprintf-nargs.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug-vfprintf-nargs.c
new file mode 100644
index 0000000..fceb5a3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/bug-vfprintf-nargs.c
@@ -0,0 +1,78 @@
+/* Test for vfprintf nargs allocation overflow (BZ #13656).
+   Copyright (C) 2012-2015 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.22/stdio-common/bug1.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug1.c
new file mode 100644
index 0000000..18e7d4c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug1.input b/ap/libc/glibc/glibc-2.22/stdio-common/bug1.input
new file mode 100644
index 0000000..5595fa4
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/bug1.input
@@ -0,0 +1 @@
+95
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/bug10.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug10.c
new file mode 100644
index 0000000..c4f328d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug11.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug11.c
new file mode 100644
index 0000000..c5af604
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug12.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug12.c
new file mode 100644
index 0000000..48610c0
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug13.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug13.c
new file mode 100644
index 0000000..1eca818
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug14.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug14.c
new file mode 100644
index 0000000..317d496
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug16.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug16.c
new file mode 100644
index 0000000..1112c39
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug17.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug17.c
new file mode 100644
index 0000000..2ef3986
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug18.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug18.c
new file mode 100644
index 0000000..2e4c378
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug18a.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug18a.c
new file mode 100644
index 0000000..663cbf4
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug19.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug19.c
new file mode 100644
index 0000000..e083304
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug19a.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug19a.c
new file mode 100644
index 0000000..c723398
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug2.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug2.c
new file mode 100644
index 0000000..79b89a4
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug20.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug20.c
new file mode 100644
index 0000000..385f6ff
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug21.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug21.c
new file mode 100644
index 0000000..ca27272
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug22.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug22.c
new file mode 100644
index 0000000..b26399a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug23-2.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug23-2.c
new file mode 100644
index 0000000..9e0cfe6
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug23-3.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug23-3.c
new file mode 100644
index 0000000..57c8cef
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug23-4.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug23-4.c
new file mode 100644
index 0000000..a478564
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug23.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug23.c
new file mode 100644
index 0000000..dcc5428
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug24.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug24.c
new file mode 100644
index 0000000..4e6ffcc
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug25.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug25.c
new file mode 100644
index 0000000..30c1339
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug26.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug26.c
new file mode 100644
index 0000000..c72f914
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/bug26.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2013-2015 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.22/stdio-common/bug3.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug3.c
new file mode 100644
index 0000000..6b2ed6b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug4.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug4.c
new file mode 100644
index 0000000..a037786
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug5.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug5.c
new file mode 100644
index 0000000..f655845
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug6.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug6.c
new file mode 100644
index 0000000..0db63a3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug6.input b/ap/libc/glibc/glibc-2.22/stdio-common/bug6.input
new file mode 100644
index 0000000..d996e39
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/bug6.input
@@ -0,0 +1 @@
+XY 1234L
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/bug7.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug7.c
new file mode 100644
index 0000000..2b1efe3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug8.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug8.c
new file mode 100644
index 0000000..77bbfe3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/bug9.c b/ap/libc/glibc/glibc-2.22/stdio-common/bug9.c
new file mode 100644
index 0000000..732904d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/ctermid.c b/ap/libc/glibc/glibc-2.22/stdio-common/ctermid.c
new file mode 100644
index 0000000..454402d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/ctermid.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 1991-2015 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 (s)
+     char *s;
+{
+  __set_errno (ENOSYS);
+  return NULL;
+}
+
+
+stub_warning (ctermid)
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/cuserid.c b/ap/libc/glibc/glibc-2.22/stdio-common/cuserid.c
new file mode 100644
index 0000000..7ab5bb8
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/cuserid.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1991-2015 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 (s)
+     char *s;
+{
+  __set_errno (ENOSYS);
+  return NULL;
+}
+
+
+stub_warning (cuserid)
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/dprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/dprintf.c
new file mode 100644
index 0000000..5a7011d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/dprintf.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/errlist.c b/ap/libc/glibc/glibc-2.22/stdio-common/errlist.c
new file mode 100644
index 0000000..db27054
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/errlist.c
@@ -0,0 +1,36 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/errnobug.c b/ap/libc/glibc/glibc-2.22/stdio-common/errnobug.c
new file mode 100644
index 0000000..deefd51
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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-2015 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.22/stdio-common/flockfile.c b/ap/libc/glibc/glibc-2.22/stdio-common/flockfile.c
new file mode 100644
index 0000000..6695889
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/flockfile.c
@@ -0,0 +1,29 @@
+/* Lock I/O stream.  Singlethreaded version.
+   Copyright (C) 1996-2015 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.22/stdio-common/fprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/fprintf.c
new file mode 100644
index 0000000..5e86bd5
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/fprintf.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/fscanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/fscanf.c
new file mode 100644
index 0000000..a1a84a3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/fscanf.c
@@ -0,0 +1,36 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/ftrylockfile.c b/ap/libc/glibc/glibc-2.22/stdio-common/ftrylockfile.c
new file mode 100644
index 0000000..b197d79
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/ftrylockfile.c
@@ -0,0 +1,30 @@
+/* Try locking I/O stream.  Singlethreaded version.
+   Copyright (C) 1996-2015 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.22/stdio-common/funlockfile.c b/ap/libc/glibc/glibc-2.22/stdio-common/funlockfile.c
new file mode 100644
index 0000000..85cf59d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/funlockfile.c
@@ -0,0 +1,29 @@
+/* Unlock I/O stream.  Singlethreaded version.
+   Copyright (C) 1996-2015 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.22/stdio-common/fxprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/fxprintf.c
new file mode 100644
index 0000000..7b2eb94
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/fxprintf.c
@@ -0,0 +1,55 @@
+/* Copyright (C) 2005-2015 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.22/stdio-common/getline.c b/ap/libc/glibc/glibc-2.22/stdio-common/getline.c
new file mode 100644
index 0000000..9d11993
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/getline.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/getw.c b/ap/libc/glibc/glibc-2.22/stdio-common/getw.c
new file mode 100644
index 0000000..9ea2e25
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/getw.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/isoc99_fscanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/isoc99_fscanf.c
new file mode 100644
index 0000000..d0d56a3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/isoc99_fscanf.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/isoc99_scanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/isoc99_scanf.c
new file mode 100644
index 0000000..00ca988
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/isoc99_scanf.c
@@ -0,0 +1,44 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/isoc99_sscanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/isoc99_sscanf.c
new file mode 100644
index 0000000..6e98408
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/isoc99_sscanf.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/isoc99_vfscanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/isoc99_vfscanf.c
new file mode 100644
index 0000000..bac093f
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/isoc99_vfscanf.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/isoc99_vscanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/isoc99_vscanf.c
new file mode 100644
index 0000000..0d35c9f
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/isoc99_vscanf.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/isoc99_vsscanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/isoc99_vsscanf.c
new file mode 100644
index 0000000..dadd125
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/isoc99_vsscanf.c
@@ -0,0 +1,46 @@
+/* Copyright (C) 1993-2015 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.22/stdio-common/itoa-digits.c b/ap/libc/glibc/glibc-2.22/stdio-common/itoa-digits.c
new file mode 100644
index 0000000..3016485
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/itoa-digits.c
@@ -0,0 +1,24 @@
+/* Digits.
+   Copyright (C) 1994-2015 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.22/stdio-common/itoa-udigits.c b/ap/libc/glibc/glibc-2.22/stdio-common/itoa-udigits.c
new file mode 100644
index 0000000..6e41480
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/itoa-udigits.c
@@ -0,0 +1,24 @@
+/* Digits.
+   Copyright (C) 1994-2015 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.22/stdio-common/itowa-digits.c b/ap/libc/glibc/glibc-2.22/stdio-common/itowa-digits.c
new file mode 100644
index 0000000..4e229c7
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/itowa-digits.c
@@ -0,0 +1,26 @@
+/* Digits.
+   Copyright (C) 1994-2015 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.22/stdio-common/perror.c b/ap/libc/glibc/glibc-2.22/stdio-common/perror.c
new file mode 100644
index 0000000..f28d055
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/perror.c
@@ -0,0 +1,83 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/printf-parse.h b/ap/libc/glibc/glibc-2.22/stdio-common/printf-parse.h
new file mode 100644
index 0000000..e990354
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/printf-parse.h
@@ -0,0 +1,144 @@
+/* Internal header for parsing printf format strings.
+   Copyright (C) 1995-2015 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.22/stdio-common/printf-parsemb.c b/ap/libc/glibc/glibc-2.22/stdio-common/printf-parsemb.c
new file mode 100644
index 0000000..1bffa0e
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/printf-parsemb.c
@@ -0,0 +1,407 @@
+/* Helper functions for parsing printf format strings.
+   Copyright (C) 1995-2015 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.22/stdio-common/printf-parsewc.c b/ap/libc/glibc/glibc-2.22/stdio-common/printf-parsewc.c
new file mode 100644
index 0000000..3de67d8
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/printf-prs.c b/ap/libc/glibc/glibc-2.22/stdio-common/printf-prs.c
new file mode 100644
index 0000000..d66fd15
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/printf-prs.c
@@ -0,0 +1,105 @@
+/* Copyright (C) 1991-2015 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 (fmt, n, argtypes)
+      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.22/stdio-common/printf.c b/ap/libc/glibc/glibc-2.22/stdio-common/printf.c
new file mode 100644
index 0000000..89d0237
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/printf.c
@@ -0,0 +1,42 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/printf.h b/ap/libc/glibc/glibc-2.22/stdio-common/printf.h
new file mode 100644
index 0000000..6441259
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/printf.h
@@ -0,0 +1,188 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/printf_fp.c b/ap/libc/glibc/glibc-2.22/stdio-common/printf_fp.c
new file mode 100644
index 0000000..3023b20
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/printf_fp.c
@@ -0,0 +1,1336 @@
+/* Floating point output for `printf'.
+   Copyright (C) 1995-2015 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.  */
+      int res;
+      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 ((res = __isinfl (fpnum.ldbl)))
+	{
+	  is_neg = res < 0;
+	  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.  */
+      int res;
+      if (isnan (fpnum.dbl))
+	{
+	  union ieee754_double u = { .d = fpnum.dbl };
+	  is_neg = u.ieee.negative != 0;
+	  if (isupper (info->spec))
+	    {
+	      special = "NAN";
+	      wspecial = L"NAN";
+	    }
+	  else
+	    {
+	      special = "nan";
+	      wspecial = L"nan";
+	    }
+	}
+      else if ((res = __isinf (fpnum.dbl)))
+	{
+	  is_neg = res < 0;
+	  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.22/stdio-common/printf_fphex.c b/ap/libc/glibc/glibc-2.22/stdio-common/printf_fphex.c
new file mode 100644
index 0000000..6c3b5e9
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/printf_fphex.c
@@ -0,0 +1,500 @@
+/* Print floating point number in hexadecimal notation according to ISO C99.
+   Copyright (C) 1997-2015 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 (__isinfl (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))
+	{
+	  negative = fpnum.dbl.ieee.negative != 0;
+	  if (isupper (info->spec))
+	    {
+	      special = "NAN";
+	      wspecial = L"NAN";
+	    }
+	  else
+	    {
+	      special = "nan";
+	      wspecial = L"nan";
+	    }
+	}
+      else
+	{
+	  int res = __isinf (fpnum.dbl.d);
+	  if (res)
+	    {
+	      if (isupper (info->spec))
+		{
+		  special = "INF";
+		  wspecial = L"INF";
+		}
+	      else
+		{
+		  special = "inf";
+		  wspecial = L"inf";
+		}
+	      negative = res < 0;
+	    }
+	  else
+	    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.22/stdio-common/printf_size.c b/ap/libc/glibc/glibc-2.22/stdio-common/printf_size.c
new file mode 100644
index 0000000..7dcd58e
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/printf_size.c
@@ -0,0 +1,246 @@
+/* Print size value using units for orders of magnitude.
+   Copyright (C) 1997-2015 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 fpnum_sign = 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;
+  int res;
+
+  /* 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";
+	  // fpnum_sign = 0;	Already zero
+	}
+      else if ((res = __isinfl (fpnum.ldbl)))
+	{
+	  fpnum_sign = res;
+	  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";
+	  // fpnum_sign = 0;	Already zero
+	}
+      else if ((res = __isinf (fpnum.dbl.d)))
+	{
+	  fpnum_sign = res;
+	  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 (fpnum_sign < 0 || info->showsign || info->space)
+	--width;
+      width -= 3;
+
+      if (!info->left && width > 0)
+	PADN (' ', width);
+
+      if (fpnum_sign < 0)
+	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.22/stdio-common/psiginfo-data.h b/ap/libc/glibc/glibc-2.22/stdio-common/psiginfo-data.h
new file mode 100644
index 0000000..05bb76c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/psiginfo-define.h b/ap/libc/glibc/glibc-2.22/stdio-common/psiginfo-define.h
new file mode 100644
index 0000000..e1d1a35
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/psiginfo.c b/ap/libc/glibc/glibc-2.22/stdio-common/psiginfo.c
new file mode 100644
index 0000000..30847ea
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/psiginfo.c
@@ -0,0 +1,203 @@
+/* Copyright (C) 2009-2015 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.22/stdio-common/psignal.c b/ap/libc/glibc/glibc-2.22/stdio-common/psignal.c
new file mode 100644
index 0000000..d4473f1
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/psignal.c
@@ -0,0 +1,52 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/putw.c b/ap/libc/glibc/glibc-2.22/stdio-common/putw.c
new file mode 100644
index 0000000..8db9a85
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/putw.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/reg-modifier.c b/ap/libc/glibc/glibc-2.22/stdio-common/reg-modifier.c
new file mode 100644
index 0000000..0bb04b3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/reg-modifier.c
@@ -0,0 +1,202 @@
+/* Copyright (C) 2009-2015 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 <bits/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.22/stdio-common/reg-printf.c b/ap/libc/glibc/glibc-2.22/stdio-common/reg-printf.c
new file mode 100644
index 0000000..b7226f4
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/reg-printf.c
@@ -0,0 +1,90 @@
+/* Copyright (C) 1991-2015 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 <bits/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 (spec, converter, arginfo)
+     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 (spec, converter, arginfo)
+     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.22/stdio-common/reg-type.c b/ap/libc/glibc/glibc-2.22/stdio-common/reg-type.c
new file mode 100644
index 0000000..d02b5a2
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/reg-type.c
@@ -0,0 +1,61 @@
+/* Copyright (C) 2009-2015 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 <bits/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.22/stdio-common/remove.c b/ap/libc/glibc/glibc-2.22/stdio-common/remove.c
new file mode 100644
index 0000000..c1815b8
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/remove.c
@@ -0,0 +1,31 @@
+/* ANSI C `remove' function to delete a file or directory.  Stub version.
+   Copyright (C) 1995-2015 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 (file)
+     const char *file;
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+libc_hidden_def (remove)
+
+stub_warning (remove)
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/rename.c b/ap/libc/glibc/glibc-2.22/stdio-common/rename.c
new file mode 100644
index 0000000..b4e521d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/rename.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 1991-2015 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 (old, new)
+     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.22/stdio-common/renameat.c b/ap/libc/glibc/glibc-2.22/stdio-common/renameat.c
new file mode 100644
index 0000000..f191fc3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/renameat.c
@@ -0,0 +1,48 @@
+/* Copyright (C) 2005-2015 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 (oldfd, old, newfd, new)
+     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.22/stdio-common/scanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf.c
new file mode 100644
index 0000000..afbfc21
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/scanf.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/scanf1.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf1.c
new file mode 100644
index 0000000..be6d63e
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/scanf10.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf10.c
new file mode 100644
index 0000000..f896137
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/scanf11.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf11.c
new file mode 100644
index 0000000..451f644
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/scanf11.c
@@ -0,0 +1,46 @@
+/* Copyright (C) 2001-2015 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.22/stdio-common/scanf12.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf12.c
new file mode 100644
index 0000000..db37e2f
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/scanf12.input b/ap/libc/glibc/glibc-2.22/stdio-common/scanf12.input
new file mode 100644
index 0000000..41aa98a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/scanf12.input
@@ -0,0 +1 @@
++ foo
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/scanf13.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf13.c
new file mode 100644
index 0000000..720224a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/scanf14.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf14.c
new file mode 100644
index 0000000..cffccb0
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/scanf15.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf15.c
new file mode 100644
index 0000000..851466b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/scanf15.c
@@ -0,0 +1,98 @@
+#undef _GNU_SOURCE
+#define _XOPEN_SOURCE 600
+#undef _LIBC
+/* 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.22/stdio-common/scanf16.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf16.c
new file mode 100644
index 0000000..3e3cb41
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/scanf17.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf17.c
new file mode 100644
index 0000000..4478a70
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/scanf17.c
@@ -0,0 +1,129 @@
+#undef _GNU_SOURCE
+#define _XOPEN_SOURCE 600
+#undef _LIBC
+/* 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.22/stdio-common/scanf2.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf2.c
new file mode 100644
index 0000000..452104d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/scanf3.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf3.c
new file mode 100644
index 0000000..33495cc
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/scanf4.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf4.c
new file mode 100644
index 0000000..9bb14bb
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/scanf5.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf5.c
new file mode 100644
index 0000000..fb4acfa
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/scanf7.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf7.c
new file mode 100644
index 0000000..53ddf4c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/scanf8.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf8.c
new file mode 100644
index 0000000..731ca8b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/scanf9.c b/ap/libc/glibc/glibc-2.22/stdio-common/scanf9.c
new file mode 100644
index 0000000..7aca354
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/siglist.c b/ap/libc/glibc/glibc-2.22/stdio-common/siglist.c
new file mode 100644
index 0000000..a78c692
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/siglist.c
@@ -0,0 +1,36 @@
+/* Define list of all signal numbers and their names.
+   Copyright (C) 1997-2015 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.22/stdio-common/snprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/snprintf.c
new file mode 100644
index 0000000..85ada81
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/snprintf.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/sprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/sprintf.c
new file mode 100644
index 0000000..456b3dc
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/sprintf.c
@@ -0,0 +1,39 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/sscanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/sscanf.c
new file mode 100644
index 0000000..8930409
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/sscanf.c
@@ -0,0 +1,41 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/stdio_ext.h b/ap/libc/glibc/glibc-2.22/stdio-common/stdio_ext.h
new file mode 100644
index 0000000..4c50bc6
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/stdio_ext.h
@@ -0,0 +1,86 @@
+/* Functions to access FILE structure internals.
+   Copyright (C) 2000-2015 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.22/stdio-common/stdio_lim.h.in b/ap/libc/glibc/glibc-2.22/stdio-common/stdio_lim.h.in
new file mode 100644
index 0000000..e2ef3b8
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/stdio_lim.h.in
@@ -0,0 +1,42 @@
+/* Copyright (C) 1994-2015 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.22/stdio-common/tempnam.c b/ap/libc/glibc/glibc-2.22/stdio-common/tempnam.c
new file mode 100644
index 0000000..3b54586
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tempnam.c
@@ -0,0 +1,43 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/tempname.c b/ap/libc/glibc/glibc-2.22/stdio-common/tempname.c
new file mode 100644
index 0000000..32a91b0
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tempname.c
@@ -0,0 +1,59 @@
+/* Copyright (C) 1991-2015 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 (tmpl, tmpl_len, dir, pfx, try_tmpdir)
+     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 (tmpl, suffixlen, flags, kind)
+     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.22/stdio-common/temptest.c b/ap/libc/glibc/glibc-2.22/stdio-common/temptest.c
new file mode 100644
index 0000000..c8cf852
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/test-fseek.c b/ap/libc/glibc/glibc-2.22/stdio-common/test-fseek.c
new file mode 100644
index 0000000..288cfbc
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/test-fseek.c
@@ -0,0 +1,87 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/test-fwrite.c b/ap/libc/glibc/glibc-2.22/stdio-common/test-fwrite.c
new file mode 100644
index 0000000..ce54169
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/test-fwrite.c
@@ -0,0 +1,68 @@
+#include <stdio.h>
+#include <string.h>
+
+int
+main (int argc, char *argv[])
+{
+  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;
+}
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/test-popen.c b/ap/libc/glibc/glibc-2.22/stdio-common/test-popen.c
new file mode 100644
index 0000000..6661388
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/test-popen.c
@@ -0,0 +1,105 @@
+/* Copyright (C) 1997-2015 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.22/stdio-common/test-vfprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/test-vfprintf.c
new file mode 100644
index 0000000..a82a331
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/test-vfprintf.c
@@ -0,0 +1,136 @@
+/* Tests of *printf for very large strings.
+   Copyright (C) 2000-2015 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.22/stdio-common/test_rdwr.c b/ap/libc/glibc/glibc-2.22/stdio-common/test_rdwr.c
new file mode 100644
index 0000000..e85404a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/test_rdwr.c
@@ -0,0 +1,128 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/tfformat.c b/ap/libc/glibc/glibc-2.22/stdio-common/tfformat.c
new file mode 100644
index 0000000..5cb366d
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tiformat.c b/ap/libc/glibc/glibc-2.22/stdio-common/tiformat.c
new file mode 100644
index 0000000..4d2eeb3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tllformat.c b/ap/libc/glibc/glibc-2.22/stdio-common/tllformat.c
new file mode 100644
index 0000000..b53b825
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tmpfile.c b/ap/libc/glibc/glibc-2.22/stdio-common/tmpfile.c
new file mode 100644
index 0000000..e22a3f2
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tmpfile.c
@@ -0,0 +1,69 @@
+/* Open a stdio stream on an anonymous temporary file.  Generic/POSIX version.
+   Copyright (C) 1991-2015 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.22/stdio-common/tmpfile64.c b/ap/libc/glibc/glibc-2.22/stdio-common/tmpfile64.c
new file mode 100644
index 0000000..1c5501a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tmpfile64.c
@@ -0,0 +1,28 @@
+/* Open a stdio stream on an anonymous, large temporary file.  Generic version.
+   Copyright (C) 2012-2015 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.22/stdio-common/tmpnam.c b/ap/libc/glibc/glibc-2.22/stdio-common/tmpnam.c
new file mode 100644
index 0000000..7a1b746
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tmpnam.c
@@ -0,0 +1,51 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/tmpnam_r.c b/ap/libc/glibc/glibc-2.22/stdio-common/tmpnam_r.c
new file mode 100644
index 0000000..7423a68
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tmpnam_r.c
@@ -0,0 +1,37 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/tst-cookie.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-cookie.c
new file mode 100644
index 0000000..030e684
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-fdopen.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fdopen.c
new file mode 100644
index 0000000..e70a0cd
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-ferror.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-ferror.c
new file mode 100644
index 0000000..5f23002
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-ferror.c
@@ -0,0 +1,41 @@
+#include <stdio.h>
+
+int
+main (int argc, char *argv[])
+{
+  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;
+}
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/tst-ferror.input b/ap/libc/glibc/glibc-2.22/stdio-common/tst-ferror.input
new file mode 100644
index 0000000..484ba93
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-ferror.input
@@ -0,0 +1 @@
+This is a test.
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/tst-fgets.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fgets.c
new file mode 100644
index 0000000..0aa9030
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-fileno.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fileno.c
new file mode 100644
index 0000000..8b64d33
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fileno.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 1994-2015 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.22/stdio-common/tst-fmemopen.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fmemopen.c
new file mode 100644
index 0000000..62e8056
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fmemopen.c
@@ -0,0 +1,165 @@
+/* basic fmemopen interface testing.
+   Copyright (C) 2014-2015 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.22/stdio-common/tst-fmemopen2.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fmemopen2.c
new file mode 100644
index 0000000..a2c05c1
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fmemopen2.c
@@ -0,0 +1,261 @@
+/* fmemopen tests.
+   Copyright (C) 2015 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.22/stdio-common/tst-fmemopen3.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fmemopen3.c
new file mode 100644
index 0000000..be48153
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fmemopen3.c
@@ -0,0 +1,206 @@
+/* fmemopen tests for append and read mode.
+   Copyright (C) 2015 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.22/stdio-common/tst-fphex-wide.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fphex-wide.c
new file mode 100644
index 0000000..3b95800
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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-2015 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.22/stdio-common/tst-fphex.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fphex.c
new file mode 100644
index 0000000..c2e8961
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-fseek.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fseek.c
new file mode 100644
index 0000000..8b78a73
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fseek.c
@@ -0,0 +1,482 @@
+/* Tests of fseek and fseeko.
+   Copyright (C) 2000-2015 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.22/stdio-common/tst-fwrite.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-fwrite.c
new file mode 100644
index 0000000..2986c89
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-gets.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-gets.c
new file mode 100644
index 0000000..6a7ffb5
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-gets.c
@@ -0,0 +1,66 @@
+/* Tests for gets.
+   Copyright (C) 2001-2015 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.22/stdio-common/tst-gets.input b/ap/libc/glibc/glibc-2.22/stdio-common/tst-gets.input
new file mode 100644
index 0000000..3bd1f0e
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-gets.input
@@ -0,0 +1,2 @@
+foo
+bar
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/tst-grouping.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-grouping.c
new file mode 100644
index 0000000..e8f4b8c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-long-dbl-fphex.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-long-dbl-fphex.c
new file mode 100644
index 0000000..2f3149f
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-long-dbl-fphex.c
@@ -0,0 +1,53 @@
+/* This file is part of the GNU C Library.
+   Copyright (C) 2012-2015 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.22/stdio-common/tst-obprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-obprintf.c
new file mode 100644
index 0000000..5151593
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-perror.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-perror.c
new file mode 100644
index 0000000..416b120
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-popen.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-popen.c
new file mode 100644
index 0000000..5def27f
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-popen.c
@@ -0,0 +1,72 @@
+/* Copyright (C) 2004-2015 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.22/stdio-common/tst-popen2.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-popen2.c
new file mode 100644
index 0000000..0ab151c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-printf-round.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-printf-round.c
new file mode 100644
index 0000000..36f5e26
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-printf-round.c
@@ -0,0 +1,234 @@
+/* Test for correct rounding of printf floating-point output.
+   Copyright (C) 2012-2015 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.22/stdio-common/tst-printf.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-printf.c
new file mode 100644
index 0000000..8011033
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-printf.c
@@ -0,0 +1,395 @@
+/* Copyright (C) 1991-2015 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);
+}
+
+int
+main (int argc, char *argv[])
+{
+  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");
+}
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/tst-printf.sh b/ap/libc/glibc/glibc-2.22/stdio-common/tst-printf.sh
new file mode 100644
index 0000000..f4ae5e4
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-printf.sh
@@ -0,0 +1,268 @@
+#! /bin/sh
+# Testing of printf.
+# Copyright (C) 2000-2015 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.22/stdio-common/tst-printfsz.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-printfsz.c
new file mode 100644
index 0000000..902b2ac
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-printfsz.c
@@ -0,0 +1,78 @@
+/* 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
+
+
+int
+main (int argc, char *argv[])
+{
+  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;
+}
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/tst-put-error.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-put-error.c
new file mode 100644
index 0000000..24ac068
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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-2015 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.22/stdio-common/tst-rndseek.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-rndseek.c
new file mode 100644
index 0000000..cf53aa4
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-setvbuf1.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-setvbuf1.c
new file mode 100644
index 0000000..2241093
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-setvbuf1.expect b/ap/libc/glibc/glibc-2.22/stdio-common/tst-setvbuf1.expect
new file mode 100644
index 0000000..281c18c
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-setvbuf1.expect
@@ -0,0 +1,2 @@
+Output #2 <stdout>.
+Output #1 <stderr>.
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/tst-sprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-sprintf.c
new file mode 100644
index 0000000..d5284b9
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-sprintf2.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-sprintf2.c
new file mode 100644
index 0000000..0ddf15b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-sprintf3.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-sprintf3.c
new file mode 100644
index 0000000..e1e5317
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-sprintf3.c
@@ -0,0 +1,93 @@
+/* Copyright (C) 2012-2015 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.22/stdio-common/tst-sscanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-sscanf.c
new file mode 100644
index 0000000..9c61ab3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-sscanf.c
@@ -0,0 +1,273 @@
+/* Copyright (C) 2000-2015 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.22/stdio-common/tst-swprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-swprintf.c
new file mode 100644
index 0000000..ce62c6b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-swscanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-swscanf.c
new file mode 100644
index 0000000..6ec1c8e
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-tmpnam.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-tmpnam.c
new file mode 100644
index 0000000..63ef241
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-tmpnam.c
@@ -0,0 +1,53 @@
+/* Copyright (C) 1998-2015 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.22/stdio-common/tst-unbputc.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-unbputc.c
new file mode 100644
index 0000000..7200a82
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-unbputc.sh b/ap/libc/glibc/glibc-2.22/stdio-common/tst-unbputc.sh
new file mode 100755
index 0000000..3e991f2
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-unbputc.sh
@@ -0,0 +1,33 @@
+#! /bin/sh
+# Testing the stdio implementation
+# Copyright (C) 2000-2015 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
+
+(echo -n 12 | cmp ${common_objpfx}stdio-common/tst-unbputc.out -) || status=1
+
+exit $status
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/tst-ungetc.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-ungetc.c
new file mode 100644
index 0000000..44cf6a6
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tst-unlockedio.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-unlockedio.c
new file mode 100644
index 0000000..3b49048
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tst-unlockedio.c
@@ -0,0 +1,169 @@
+/* Test for some *_unlocked stdio interfaces.
+   Copyright (C) 2004-2015 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.22/stdio-common/tst-wc-printf.c b/ap/libc/glibc/glibc-2.22/stdio-common/tst-wc-printf.c
new file mode 100644
index 0000000..2a2acb5
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tstdiomisc.c b/ap/libc/glibc/glibc-2.22/stdio-common/tstdiomisc.c
new file mode 100644
index 0000000..5548a71
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/tstgetln.c b/ap/libc/glibc/glibc-2.22/stdio-common/tstgetln.c
new file mode 100644
index 0000000..1fd5de7
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tstgetln.c
@@ -0,0 +1,46 @@
+/* Copyright (C) 1992-2015 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.22/stdio-common/tstgetln.input b/ap/libc/glibc/glibc-2.22/stdio-common/tstgetln.input
new file mode 100644
index 0000000..d04ed5b
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tstgetln.input
@@ -0,0 +1,3 @@
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
+z
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/tstscanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/tstscanf.c
new file mode 100644
index 0000000..af829f3
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/tstscanf.c
@@ -0,0 +1,355 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/tstscanf.input b/ap/libc/glibc/glibc-2.22/stdio-common/tstscanf.input
new file mode 100644
index 0000000..2615865
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/vfprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/vfprintf.c
new file mode 100644
index 0000000..0592e70
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/vfprintf.c
@@ -0,0 +1,2388 @@
+/* Copyright (C) 1991-2015 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 <bits/libc-lock.h>
+#include <sys/param.h>
+#include <_itoa.h>
+#include <locale/localeinfo.h>
+#include <stdio.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 printf_spec *specs;
+
+  /* Track if we malloced the SPECS array and thus must free it.  */
+  bool specs_malloced = false;
+
+  /* Array with information about the needed arguments.  This has to
+     be dynamically extensible.  */
+  size_t nspecs = 0;
+  /* A more or less arbitrary start value.  */
+  size_t nspecs_size = 32 * sizeof (struct printf_spec);
+
+  specs = alloca (nspecs_size);
+  /* 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 * sizeof (*specs) >= nspecs_size)
+	{
+	  /* Extend the array of format specifiers.  */
+	  if (nspecs_size * 2 < nspecs_size)
+	    {
+	      __set_errno (ENOMEM);
+	      done = -1;
+	      goto all_done;
+	    }
+	  struct printf_spec *old = specs;
+	  if (__libc_use_alloca (2 * nspecs_size))
+	    specs = extend_alloca (specs, nspecs_size, 2 * nspecs_size);
+	  else
+	    {
+	      nspecs_size *= 2;
+	      specs = malloc (nspecs_size);
+	      if (specs == NULL)
+		{
+		  __set_errno (ENOMEM);
+		  specs = old;
+		  done = -1;
+		  goto all_done;
+		}
+	    }
+
+	  /* Copy the old array's elements to the new space.  */
+	  memmove (specs, old, nspecs * sizeof (*specs));
+
+	  /* If we had previously malloc'd space for SPECS, then
+	     release it after the copy is complete.  */
+	  if (specs_malloced)
+	    free (old);
+
+	  /* Now set SPECS_MALLOCED if needed.  */
+	  if (!__libc_use_alloca (nspecs_size))
+	    specs_malloced = true;
+	}
+
+      /* 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 (workstart != NULL))
+    free (workstart);
+  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.22/stdio-common/vfscanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/vfscanf.c
new file mode 100644
index 0000000..0e204e7
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/vfscanf.c
@@ -0,0 +1,2957 @@
+/* Copyright (C) 1991-2015 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 <bits/libc-lock.h>
+#include <locale/localeinfo.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 MEMCPY(d, s, n) __wmemcpy (d, s, n)
+# 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 MEMCPY(d, s, n) memcpy (d, s, n)
+# 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];
+};
+
+/* 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.  */
+  CHAR_T *wp = NULL;		/* Workspace.  */
+  size_t wpmax = 0;		/* Maximal size of workspace.  */
+  size_t wpsize;		/* Currently used bytes in workspace.  */
+  bool use_malloc = false;
+#define ADDW(Ch)							    \
+  do									    \
+    {									    \
+      if (__glibc_unlikely (wpsize == wpmax))				      \
+	{								    \
+	  CHAR_T *old = wp;						    \
+	  bool fits = __glibc_likely (wpmax <= SIZE_MAX / sizeof (CHAR_T) / 2); \
+	  size_t wpneed = MAX (UCHAR_MAX + 1, 2 * wpmax);		    \
+	  size_t newsize = fits ? wpneed * sizeof (CHAR_T) : SIZE_MAX;	    \
+	  if (!__libc_use_alloca (newsize))				    \
+	    {								    \
+	      wp = realloc (use_malloc ? wp : NULL, newsize);		    \
+	      if (wp == NULL)						    \
+		{							    \
+		  if (use_malloc)					    \
+		    free (old);						    \
+		  done = EOF;						    \
+		  goto errout;						    \
+		}							    \
+	      if (! use_malloc)						    \
+		MEMCPY (wp, old, wpsize);				    \
+	      wpmax = wpneed;						    \
+	      use_malloc = true;					    \
+	    }								    \
+	  else								    \
+	    {								    \
+	      size_t s = wpmax * sizeof (CHAR_T);			    \
+	      wp = (CHAR_T *) extend_alloca (wp, s, newsize);		    \
+	      wpmax = s / sizeof (CHAR_T);				    \
+	      if (old != NULL)						    \
+		MEMCPY (wp, old, wpsize);				    \
+	    }								    \
+	}								    \
+      wp[wpsize++] = (Ch);						    \
+    }									    \
+  while (0)
+
+#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.  */
+      wpsize = 0;
+
+      /* 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_('+'))
+	    {
+	      ADDW (c);
+	      if (width > 0)
+		--width;
+	      c = inchar ();
+	    }
+
+	  /* Look for a leading indication of base.  */
+	  if (width != 0 && c == L_('0'))
+	    {
+	      if (width > 0)
+		--width;
+
+	      ADDW (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
+		      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;
+
+		      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)
+			{
+			  ADDW (c);
+			  if (*++cmpp == '\0')
+			    break;
+			  else
+			    {
+			      if (avail == 0 || inchar () == EOF)
+				break;
+			      --avail;
+			    }
+			}
+
+		      if (*cmpp != '\0')
+			{
+			  /* We are pushing all read characters back.  */
+			  if (cmpp > thousands)
+			    {
+			      wpsize -= 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 ADDW below.  */
+			--wpsize;
+#endif
+		    }
+		  else
+		    break;
+
+		  ADDW (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)
+			  {
+			    ADDW (c);
+			    if (*++cmpp == '\0')
+			      break;
+			    else
+			      {
+				if (avail == 0 || inchar () == EOF)
+				  break;
+				--avail;
+			      }
+			  }
+
+			if (*cmpp != '\0')
+			  {
+			    /* We are pushing all read characters back.  */
+			    if (cmpp > thousands)
+			      {
+				wpsize -= 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 ADDW below.  */
+			--wpsize;
+#endif
+		      }
+		    else
+		      break;
+		  }
+		ADDW (c);
+		if (width > 0)
+		  --width;
+
+		c = inchar ();
+	      }
+
+	  if (wpsize == 0
+	      || (wpsize == 1 && (wp[0] == L_('+') || wp[0] == L_('-'))))
+	    {
+	      /* There was no number.  If we are supposed to read a pointer
+		 we must recognize "(nil)" as well.  */
+	      if (__builtin_expect (wpsize == 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.  */
+		ADDW (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.  */
+	  ADDW (L_('\0'));
+	  if (need_longlong && (flags & LONGDBL))
+	    {
+	      if (flags & NUMBER_SIGNED)
+		num.q = __strtoll_internal (wp, &tw, base, flags & GROUP);
+	      else
+		num.uq = __strtoull_internal (wp, &tw, base, flags & GROUP);
+	    }
+	  else
+	    {
+	      if (flags & NUMBER_SIGNED)
+		num.l = __strtol_internal (wp, &tw, base, flags & GROUP);
+	      else
+		num.ul = __strtoul_internal (wp, &tw, base, flags & GROUP);
+	    }
+	  if (__glibc_unlikely (wp == 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".  */
+	      ADDW (c);
+	      if (__builtin_expect (width == 0
+				    || inchar () == EOF
+				    || TOLOWER (c) != L_('a'), 0))
+		conv_error ();
+	      if (width > 0)
+		--width;
+	      ADDW (c);
+	      if (__builtin_expect (width == 0
+				    || inchar () == EOF
+				    || TOLOWER (c) != L_('n'), 0))
+		conv_error ();
+	      if (width > 0)
+		--width;
+	      ADDW (c);
+	      /* It is "nan".  */
+	      goto scan_float;
+	    }
+	  else if (TOLOWER (c) == L_('i'))
+	    {
+	      /* Maybe "inf" or "infinity".  */
+	      ADDW (c);
+	      if (__builtin_expect (width == 0
+				    || inchar () == EOF
+				    || TOLOWER (c) != L_('n'), 0))
+		conv_error ();
+	      if (width > 0)
+		--width;
+	      ADDW (c);
+	      if (__builtin_expect (width == 0
+				    || inchar () == EOF
+				    || TOLOWER (c) != L_('f'), 0))
+		conv_error ();
+	      if (width > 0)
+		--width;
+	      ADDW (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.  */
+		      ADDW (c);
+		      if (__builtin_expect (width == 0
+					    || inchar () == EOF
+					    || TOLOWER (c) != L_('n'), 0))
+			conv_error ();
+		      if (width > 0)
+			--width;
+		      ADDW (c);
+		      if (__builtin_expect (width == 0
+					    || inchar () == EOF
+					    || TOLOWER (c) != L_('i'), 0))
+			conv_error ();
+		      if (width > 0)
+			--width;
+		      ADDW (c);
+		      if (__builtin_expect (width == 0
+					    || inchar () == EOF
+					    || TOLOWER (c) != L_('t'), 0))
+			conv_error ();
+		      if (width > 0)
+			--width;
+		      ADDW (c);
+		      if (__builtin_expect (width == 0
+					    || inchar () == EOF
+					    || TOLOWER (c) != L_('y'), 0))
+			conv_error ();
+		      if (width > 0)
+			--width;
+		      ADDW (c);
+		    }
+		  else
+		    /* Never mind.  */
+		    ungetc (c, s);
+		}
+	      goto scan_float;
+	    }
+
+	  exp_char = L_('e');
+	  if (width != 0 && c == L_('0'))
+	    {
+	      ADDW (c);
+	      c = inchar ();
+	      if (width > 0)
+		--width;
+	      if (width != 0 && TOLOWER (c) == L_('x'))
+		{
+		  /* It is a number in hexadecimal format.  */
+		  ADDW (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 (ISDIGIT (c))
+		{
+		  ADDW (c);
+		  got_digit = 1;
+		}
+	      else if (!got_e && (flags & HEXA_FLOAT) && ISXDIGIT (c))
+		{
+		  ADDW (c);
+		  got_digit = 1;
+		}
+	      else if (got_e && wp[wpsize - 1] == exp_char
+		       && (c == L_('-') || c == L_('+')))
+		ADDW (c);
+	      else if (got_digit && !got_e
+		       && (CHAR_T) TOLOWER (c) == exp_char)
+		{
+		  ADDW (exp_char);
+		  got_e = got_dot = 1;
+		}
+	      else
+		{
+#ifdef COMPILE_WSCANF
+		  if (! got_dot && c == decimal)
+		    {
+		      ADDW (c);
+		      got_dot = 1;
+		    }
+		  else if ((flags & GROUP) != 0 && ! got_dot && c == thousands)
+		    ADDW (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)
+			ADDW ((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)
+			    ADDW ((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;
+	    }
+
+	  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.  */
+	      && (wpsize == 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 (wpsize == 0 || (wpsize == 1 && wcdigits[11] == decimal))
+#else
+	      char mbdigits[12][MB_LEN_MAX + 1];
+
+	      mbstate_t state;
+	      memset (&state, '\0', sizeof (state));
+
+	      bool match_so_far = wpsize == 0;
+	      size_t mblen = __wcrtomb (mbdigits[11], wcdigits[11], &state);
+	      if (mblen != (size_t) -1)
+		{
+		  mbdigits[11][mblen] = '\0';
+		  match_so_far |= (wpsize == 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 |= wpsize == 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 (got_e && wp[wpsize - 1] == exp_char
+			  && (c == L_('-') || c == L_('+')))
+			ADDW (c);
+		      else if (wpsize > 0 && !got_e
+			       && (CHAR_T) TOLOWER (c) == exp_char)
+			{
+			  ADDW (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)
+				    ADDW (L_('0') + n);
+				  else if (n == 11 && !got_dot)
+				    {
+				      ADDW (decimal);
+				      got_dot = 1;
+				    }
+				  else if (n == 10 && have_locthousands
+					   && ! got_dot)
+				    ADDW (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)
+				    ADDW (L_('0') + n);
+				  else if (n == 11 && !got_dot)
+				    {
+				      /* Add all the characters.  */
+				      for (cmpp = decimal; *cmpp != '\0';
+					   ++cmpp)
+					ADDW ((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)
+					ADDW ((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
+	    }
+
+	  /* 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 (__builtin_expect (wpsize == 0
+				|| ((flags & HEXA_FLOAT) && wpsize == 2), 0))
+	    conv_error ();
+
+	scan_float:
+	  /* Convert the number.  */
+	  ADDW (L_('\0'));
+	  if ((flags & LONGDBL) && !__ldbl_is_dbl)
+	    {
+	      long double d = __strtold_internal (wp, &tw, flags & GROUP);
+	      if (!(flags & SUPPRESS) && tw != wp)
+		*ARG (long double *) = negative ? -d : d;
+	    }
+	  else if (flags & (LONG | LONGDBL))
+	    {
+	      double d = __strtod_internal (wp, &tw, flags & GROUP);
+	      if (!(flags & SUPPRESS) && tw != wp)
+		*ARG (double *) = negative ? -d : d;
+	    }
+	  else
+	    {
+	      float d = __strtof_internal (wp, &tw, flags & GROUP);
+	      if (!(flags & SUPPRESS) && tw != wp)
+		*ARG (float *) = negative ? -d : d;
+	    }
+
+	  if (__glibc_unlikely (tw == wp))
+	    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 (wpmax < UCHAR_MAX + 1)
+	    {
+	      wpmax = UCHAR_MAX + 1;
+	      wp = (char *) alloca (wpmax);
+	    }
+	  memset (wp, '\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.  */
+	      wp[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)
+		  wp[fc] = 1;
+	      }
+	    else
+	      /* Add the character to the flag map.  */
+	      wp[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 (wp[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 (wp[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);
+
+  if (use_malloc)
+    free (wp);
+
+  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.22/stdio-common/vfwprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/vfwprintf.c
new file mode 100644
index 0000000..2c3cd06
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/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.22/stdio-common/vfwscanf.c b/ap/libc/glibc/glibc-2.22/stdio-common/vfwscanf.c
new file mode 100644
index 0000000..26b1a66
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/vfwscanf.c
@@ -0,0 +1,2 @@
+#define COMPILE_WSCANF	1
+#include "vfscanf.c"
diff --git a/ap/libc/glibc/glibc-2.22/stdio-common/vprintf.c b/ap/libc/glibc/glibc-2.22/stdio-common/vprintf.c
new file mode 100644
index 0000000..d4b0ab5
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/vprintf.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1991-2015 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.22/stdio-common/xbug.c b/ap/libc/glibc/glibc-2.22/stdio-common/xbug.c
new file mode 100644
index 0000000..64ba314
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/stdio-common/xbug.c
@@ -0,0 +1,73 @@
+#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(b)
+     Buffer *b;
+{
+  b->room = INIT_BUFFER_SIZE;
+  b->used = 0;
+  b->buff = (char *)malloc(INIT_BUFFER_SIZE*sizeof(char));
+}
+
+void AppendToBuffer(b, str, len)
+     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, input)
+     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;
+}
