aboutsummaryrefslogtreecommitdiff
path: root/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/Depend1
-rw-r--r--stdlib/Makefile221
-rw-r--r--stdlib/Versions135
-rw-r--r--stdlib/a64l.c64
-rw-r--r--stdlib/abort.c142
-rw-r--r--stdlib/abs.c27
-rw-r--r--stdlib/add_n.c53
-rw-r--r--stdlib/addmul_1.c61
-rw-r--r--stdlib/alloca.h40
-rw-r--r--stdlib/at_quick_exit.c50
-rw-r--r--stdlib/atexit.c52
-rw-r--r--stdlib/atof.c28
-rw-r--r--stdlib/atoi.c28
-rw-r--r--stdlib/atol.c28
-rw-r--r--stdlib/atoll.c28
-rw-r--r--stdlib/bits/monetary-ldbl.h27
-rw-r--r--stdlib/bits/stdlib-float.h29
-rw-r--r--stdlib/bits/stdlib-ldbl.h41
-rw-r--r--stdlib/bits/stdlib.h155
-rw-r--r--stdlib/bsearch.c23
-rw-r--r--stdlib/bug-fmtmsg1.c28
-rw-r--r--stdlib/bug-getcontext.c76
-rw-r--r--stdlib/bug-strtod.c67
-rw-r--r--stdlib/bug-strtod2.c57
-rw-r--r--stdlib/canonicalize.c246
-rw-r--r--stdlib/cmp.c48
-rw-r--r--stdlib/cxa_at_quick_exit.c30
-rw-r--r--stdlib/cxa_atexit.c133
-rw-r--r--stdlib/cxa_finalize.c82
-rw-r--r--stdlib/cxa_thread_atexit_impl.c165
-rw-r--r--stdlib/dbl2mpn.c31
-rw-r--r--stdlib/div.c62
-rw-r--r--stdlib/divmod_1.c199
-rw-r--r--stdlib/divrem.c234
-rw-r--r--stdlib/drand48-iter.c56
-rw-r--r--stdlib/drand48.c30
-rw-r--r--stdlib/drand48_r.c27
-rw-r--r--stdlib/erand48.c30
-rw-r--r--stdlib/erand48_r.c47
-rw-r--r--stdlib/errno.h72
-rw-r--r--stdlib/exit.c107
-rw-r--r--stdlib/exit.h77
-rw-r--r--stdlib/fmtmsg.c386
-rw-r--r--stdlib/fmtmsg.h105
-rw-r--r--stdlib/fpioconst.c1329
-rw-r--r--stdlib/fpioconst.h88
-rw-r--r--stdlib/gen-fpioconst.c108
-rw-r--r--stdlib/gen-tst-strtod-round.c191
-rw-r--r--stdlib/getcontext.c29
-rw-r--r--stdlib/getentropy.c31
-rw-r--r--stdlib/getenv.c92
-rw-r--r--stdlib/getrandom.c31
-rw-r--r--stdlib/getsubopt.c79
-rw-r--r--stdlib/gmp-impl.h367
-rw-r--r--stdlib/gmp.h623
-rw-r--r--stdlib/grouping.c201
-rw-r--r--stdlib/grouping.h33
-rw-r--r--stdlib/groupingwc.c2
-rw-r--r--stdlib/inlines.c3
-rw-r--r--stdlib/isomac.c447
-rw-r--r--stdlib/jrand48.c30
-rw-r--r--stdlib/jrand48_r.c34
-rw-r--r--stdlib/l64a.c56
-rw-r--r--stdlib/labs.c28
-rw-r--r--stdlib/lcong48.c26
-rw-r--r--stdlib/lcong48_r.c36
-rw-r--r--stdlib/ldbl2mpn.c1
-rw-r--r--stdlib/ldiv.c31
-rw-r--r--stdlib/llabs.c29
-rw-r--r--stdlib/lldiv.c32
-rw-r--r--stdlib/longlong.h1773
-rw-r--r--stdlib/lrand48.c30
-rw-r--r--stdlib/lrand48_r.c30
-rw-r--r--stdlib/lshift.c78
-rw-r--r--stdlib/makecontext.c28
-rw-r--r--stdlib/mblen.c68
-rw-r--r--stdlib/mbstowcs.c39
-rw-r--r--stdlib/mbtowc.c72
-rw-r--r--stdlib/mod_1.c189
-rw-r--r--stdlib/monetary.h58
-rw-r--r--stdlib/mp_clz_tab.c36
-rw-r--r--stdlib/mpn2dbl.c29
-rw-r--r--stdlib/mpn2flt.c29
-rw-r--r--stdlib/mpn2ldbl.c1
-rw-r--r--stdlib/mrand48.c30
-rw-r--r--stdlib/mrand48_r.c29
-rw-r--r--stdlib/msort.c310
-rw-r--r--stdlib/mul.c142
-rw-r--r--stdlib/mul_1.c55
-rw-r--r--stdlib/mul_n.c360
-rw-r--r--stdlib/nrand48.c30
-rw-r--r--stdlib/nrand48_r.c37
-rw-r--r--stdlib/old_atexit.c8
-rw-r--r--stdlib/on_exit.c41
-rw-r--r--stdlib/putenv.c87
-rw-r--r--stdlib/qsort.c249
-rw-r--r--stdlib/quick_exit.c48
-rw-r--r--stdlib/rand.c28
-rw-r--r--stdlib/rand_r.c48
-rw-r--r--stdlib/random.c300
-rw-r--r--stdlib/random_r.c401
-rw-r--r--stdlib/rpmatch.c61
-rw-r--r--stdlib/rshift.c78
-rw-r--r--stdlib/secure-getenv.c36
-rw-r--r--stdlib/seed48.c28
-rw-r--r--stdlib/seed48_r.c39
-rw-r--r--stdlib/setcontext.c29
-rw-r--r--stdlib/setenv.c340
-rw-r--r--stdlib/srand48.c26
-rw-r--r--stdlib/srand48_r.c39
-rw-r--r--stdlib/stdlib.h911
-rw-r--r--stdlib/strfmon.c39
-rw-r--r--stdlib/strfmon_l.c625
-rw-r--r--stdlib/strfrom-skeleton.c155
-rw-r--r--stdlib/strfromd.c22
-rw-r--r--stdlib/strfromf.c22
-rw-r--r--stdlib/strfroml.c22
-rw-r--r--stdlib/strtod.c80
-rw-r--r--stdlib/strtod_l.c1787
-rw-r--r--stdlib/strtod_nan.c24
-rw-r--r--stdlib/strtod_nan_double.h30
-rw-r--r--stdlib/strtod_nan_float.h29
-rw-r--r--stdlib/strtod_nan_main.c63
-rw-r--r--stdlib/strtod_nan_narrow.h22
-rw-r--r--stdlib/strtod_nan_wide.h22
-rw-r--r--stdlib/strtof.c34
-rw-r--r--stdlib/strtof_l.c38
-rw-r--r--stdlib/strtof_nan.c24
-rw-r--r--stdlib/strtoimax.c1
-rw-r--r--stdlib/strtol.c109
-rw-r--r--stdlib/strtol_l.c551
-rw-r--r--stdlib/strtold.c64
-rw-r--r--stdlib/strtold_l.c65
-rw-r--r--stdlib/strtold_nan.c30
-rw-r--r--stdlib/strtoll.c33
-rw-r--r--stdlib/strtoll_l.c27
-rw-r--r--stdlib/strtoul.c20
-rw-r--r--stdlib/strtoul_l.c27
-rw-r--r--stdlib/strtoull.c33
-rw-r--r--stdlib/strtoull_l.c28
-rw-r--r--stdlib/strtoumax.c1
-rw-r--r--stdlib/sub_n.c53
-rw-r--r--stdlib/submul_1.c61
-rw-r--r--stdlib/swapcontext.c29
-rw-r--r--stdlib/sys/errno.h1
-rw-r--r--stdlib/sys/random.h42
-rw-r--r--stdlib/system.c35
-rw-r--r--stdlib/tens_in_limb.c31
-rw-r--r--stdlib/test-a64l.c80
-rw-r--r--stdlib/test-canon.c235
-rw-r--r--stdlib/test-canon2.c74
-rw-r--r--stdlib/testdiv.c39
-rw-r--r--stdlib/testdiv.input2
-rw-r--r--stdlib/testmb.c65
-rw-r--r--stdlib/testmb2.c31
-rw-r--r--stdlib/testrand.c52
-rw-r--r--stdlib/testsort.c36
-rw-r--r--stdlib/tst-atof1.c19
-rw-r--r--stdlib/tst-atof2.c55
-rw-r--r--stdlib/tst-bsearch.c153
-rw-r--r--stdlib/tst-empty-env.c58
-rw-r--r--stdlib/tst-environ.c229
-rw-r--r--stdlib/tst-fmtmsg.c85
-rwxr-xr-xstdlib/tst-fmtmsg.sh337
-rw-r--r--stdlib/tst-getrandom.c245
-rw-r--r--stdlib/tst-limits.c72
-rw-r--r--stdlib/tst-makecontext.c110
-rw-r--r--stdlib/tst-makecontext2.c79
-rw-r--r--stdlib/tst-makecontext3.c220
-rw-r--r--stdlib/tst-putenv.c18
-rw-r--r--stdlib/tst-putenvmod.c17
-rw-r--r--stdlib/tst-qsort.c55
-rw-r--r--stdlib/tst-qsort2.c89
-rw-r--r--stdlib/tst-quick_exit.cc47
-rw-r--r--stdlib/tst-rand48-2.c116
-rw-r--r--stdlib/tst-rand48.c393
-rw-r--r--stdlib/tst-random.c122
-rw-r--r--stdlib/tst-random2.c61
-rw-r--r--stdlib/tst-secure-getenv.c242
-rw-r--r--stdlib/tst-setcontext.c244
-rw-r--r--stdlib/tst-setcontext2.c230
-rw-r--r--stdlib/tst-setcontext3.c138
-rw-r--r--stdlib/tst-setcontext3.sh52
-rw-r--r--stdlib/tst-strfmon_l.c220
-rw-r--r--stdlib/tst-strfrom-locale.c91
-rw-r--r--stdlib/tst-strfrom.c91
-rw-r--r--stdlib/tst-strfrom.h120
-rw-r--r--stdlib/tst-strtod-nan-locale-main.c89
-rw-r--r--stdlib/tst-strtod-nan-locale.c25
-rw-r--r--stdlib/tst-strtod-overflow.c49
-rw-r--r--stdlib/tst-strtod-round-data150
-rw-r--r--stdlib/tst-strtod-round-data.h11584
-rw-r--r--stdlib/tst-strtod-round-skeleton.c252
-rw-r--r--stdlib/tst-strtod-round.c24
-rw-r--r--stdlib/tst-strtod-underflow.c225
-rw-r--r--stdlib/tst-strtod.c218
-rw-r--r--stdlib/tst-strtod.h49
-rw-r--r--stdlib/tst-strtod1i.c84
-rw-r--r--stdlib/tst-strtod2.c44
-rw-r--r--stdlib/tst-strtod3.c55
-rw-r--r--stdlib/tst-strtod4.c56
-rw-r--r--stdlib/tst-strtod5.c89
-rw-r--r--stdlib/tst-strtod5i.c100
-rw-r--r--stdlib/tst-strtod6.c57
-rw-r--r--stdlib/tst-strtol-locale-main.c87
-rw-r--r--stdlib/tst-strtol-locale.c25
-rw-r--r--stdlib/tst-strtol.c626
-rw-r--r--stdlib/tst-strtoll.c401
-rw-r--r--stdlib/tst-system.c30
-rw-r--r--stdlib/tst-thread-quick_exit.cc66
-rw-r--r--stdlib/tst-tininess.c69
-rw-r--r--stdlib/tst-tls-atexit-lib.c38
-rw-r--r--stdlib/tst-tls-atexit-nodelete.c24
-rw-r--r--stdlib/tst-tls-atexit.c156
-rw-r--r--stdlib/tst-unsetenv1.c12
-rw-r--r--stdlib/tst-width-stdint.c185
-rw-r--r--stdlib/tst-width.c87
-rw-r--r--stdlib/tst-xpg-basename.c69
-rw-r--r--stdlib/ucontext.h52
-rw-r--r--stdlib/udiv_qrnnd.c10
-rw-r--r--stdlib/wcstoimax.c1
-rw-r--r--stdlib/wcstombs.c35
-rw-r--r--stdlib/wcstoumax.c1
-rw-r--r--stdlib/wctomb.c57
-rw-r--r--stdlib/xpg_basename.c71
225 files changed, 0 insertions, 37988 deletions
diff --git a/stdlib/Depend b/stdlib/Depend
deleted file mode 100644
index f3e1156a4e..0000000000
--- a/stdlib/Depend
+++ /dev/null
@@ -1 +0,0 @@
-localedata
diff --git a/stdlib/Makefile b/stdlib/Makefile
deleted file mode 100644
index 9b0acce8cc..0000000000
--- a/stdlib/Makefile
+++ /dev/null
@@ -1,221 +0,0 @@
-# Copyright (C) 1991-2017 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/>.
-
-#
-# Makefile for stdlib routines
-#
-subdir := stdlib
-
-include ../Makeconfig
-
-headers := stdlib.h bits/stdlib.h bits/stdlib-ldbl.h bits/stdlib-float.h \
- monetary.h bits/monetary-ldbl.h \
- inttypes.h stdint.h bits/wordsize.h \
- errno.h sys/errno.h bits/errno.h \
- ucontext.h sys/ucontext.h \
- alloca.h fmtmsg.h \
- bits/stdlib-bsearch.h sys/random.h bits/stdint-intn.h \
- bits/stdint-uintn.h
-
-routines := \
- atof atoi atol atoll \
- abort \
- bsearch qsort msort \
- getenv putenv setenv secure-getenv \
- exit on_exit atexit cxa_atexit cxa_finalize old_atexit \
- quick_exit at_quick_exit cxa_at_quick_exit cxa_thread_atexit_impl \
- abs labs llabs \
- div ldiv lldiv \
- mblen mbstowcs mbtowc wcstombs wctomb \
- random random_r rand rand_r \
- drand48 erand48 lrand48 nrand48 mrand48 jrand48 \
- srand48 seed48 lcong48 \
- drand48_r erand48_r lrand48_r nrand48_r mrand48_r jrand48_r \
- srand48_r seed48_r lcong48_r \
- drand48-iter getrandom getentropy \
- strfromf strfromd strfroml \
- strtol strtoul strtoll strtoull \
- strtol_l strtoul_l strtoll_l strtoull_l \
- strtof strtod strtold \
- strtof_l strtod_l strtold_l \
- strtof_nan strtod_nan strtold_nan \
- system canonicalize \
- a64l l64a \
- rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg \
- strtoimax strtoumax wcstoimax wcstoumax \
- getcontext setcontext makecontext swapcontext
-aux = grouping groupingwc tens_in_limb
-
-# These routines will be omitted from the libc shared object.
-# Instead the static object files will be included in a special archive
-# linked against when the shared library will be used.
-static-only-routines = atexit at_quick_exit
-
-test-srcs := tst-fmtmsg
-tests := tst-strtol tst-strtod testmb testrand testsort testdiv \
- test-canon test-canon2 tst-strtoll tst-environ \
- tst-xpg-basename tst-random tst-random2 tst-bsearch \
- tst-limits tst-rand48 bug-strtod tst-setcontext \
- tst-setcontext2 test-a64l tst-qsort tst-system testmb2 \
- bug-strtod2 tst-atof1 tst-atof2 tst-strtod2 \
- tst-rand48-2 tst-makecontext tst-strtod5 \
- tst-qsort2 tst-makecontext2 tst-strtod6 tst-unsetenv1 \
- tst-makecontext3 bug-getcontext bug-fmtmsg1 \
- tst-secure-getenv tst-strtod-overflow tst-strtod-round \
- tst-tininess tst-strtod-underflow tst-setcontext3 \
- tst-strtol-locale tst-strtod-nan-locale tst-strfmon_l \
- tst-quick_exit tst-thread-quick_exit tst-width \
- tst-width-stdint tst-strfrom tst-strfrom-locale \
- tst-getrandom
-tests-internal := tst-strtod1i tst-strtod3 tst-strtod4 tst-strtod5i \
- tst-tls-atexit tst-tls-atexit-nodelete
-tests-static := tst-secure-getenv
-
-ifeq ($(build-hardcoded-path-in-tests),yes)
-tests += tst-empty-env
-endif
-
-ifeq ($(have-cxx-thread_local),yes)
-CFLAGS-tst-quick_exit.o = -std=c++11
-LDLIBS-tst-quick_exit = -lstdc++
-CFLAGS-tst-thread-quick_exit.o = -std=c++11
-LDLIBS-tst-thread-quick_exit = -lstdc++
-$(objpfx)tst-thread-quick_exit: $(shared-thread-library)
-else
-tests-unsupported += tst-quick_exit tst-thread-quick_exit
-endif
-
-modules-names = tst-tls-atexit-lib
-extra-test-objs += $(addsuffix .os, $(modules-names))
-
-ifeq ($(build-shared),yes)
-tests += tst-putenv
-endif
-
-# Several mpn functions from GNU MP are used by the strtod function.
-mpn-routines := inlines add_n addmul_1 cmp divmod_1 divrem udiv_qrnnd \
- lshift rshift mod_1 mul mul_1 mul_n sub_n submul_1
-mpn-headers = longlong.h gmp.h gmp-impl.h gmp-mparam.h asm-syntax.h
-
-routines := $(strip $(routines) $(mpn-routines)) \
- dbl2mpn ldbl2mpn \
- mpn2flt mpn2dbl mpn2ldbl
-aux += fpioconst mp_clz_tab
-
-tests-extras += tst-putenvmod
-extra-test-objs += tst-putenvmod.os
-
-generated += isomac isomac.out tst-putenvmod.so
-
-CFLAGS-bsearch.c = $(uses-callbacks)
-CFLAGS-msort.c = $(uses-callbacks)
-CFLAGS-qsort.c = $(uses-callbacks)
-CFLAGS-system.c = -fexceptions
-CFLAGS-system.os = -fomit-frame-pointer
-CFLAGS-fmtmsg.c = -fexceptions
-
-CFLAGS-strfmon.c = $(libio-mtsafe)
-CFLAGS-strfmon_l.c = $(libio-mtsafe)
-
-# The strfrom class of functions call __printf_fp in order to convert the
-# floating-point value to characters. This requires the value of IO_MTSAFE_IO.
-CFLAGS-strfromd.c = $(libio-mtsafe)
-CFLAGS-strfromf.c = $(libio-mtsafe)
-CFLAGS-strfroml.c = $(libio-mtsafe)
-
-CFLAGS-tst-bsearch.c = $(stack-align-test-flags)
-CFLAGS-tst-qsort.c = $(stack-align-test-flags)
-CFLAGS-tst-makecontext.c += -funwind-tables
-CFLAGS-tst-makecontext2.c = $(stack-align-test-flags)
-
-# Run a test on the header files we use.
-tests-special += $(objpfx)isomac.out
-
-ifeq ($(run-built-tests),yes)
-tests-special += $(objpfx)tst-fmtmsg.out
-endif
-
-include ../Rules
-
-ifeq ($(run-built-tests),yes)
-LOCALES := cs_CZ.UTF-8 de_DE.UTF-8 en_US.ISO-8859-1 tr_TR.UTF-8 \
- tr_TR.ISO-8859-9 tg_TJ.UTF-8 te_IN.UTF-8 bn_IN.UTF-8 \
- el_GR.UTF-8
-include ../gen-locales.mk
-
-$(objpfx)bug-strtod2.out: $(gen-locales)
-$(objpfx)testmb2.out: $(gen-locales)
-$(objpfx)tst-strtod.out: $(gen-locales)
-$(objpfx)tst-strtod3.out: $(gen-locales)
-$(objpfx)tst-strtod4.out: $(gen-locales)
-$(objpfx)tst-strtod5.out: $(gen-locales)
-$(objpfx)tst-strtol-locale.out: $(gen-locales)
-$(objpfx)tst-strtod-nan-locale.out: $(gen-locales)
-$(objpfx)tst-strfmon_l.out: $(gen-locales)
-$(objpfx)tst-strfrom.out: $(gen-locales)
-$(objpfx)tst-strfrom-locale.out: $(gen-locales)
-endif
-
-# Testdir has to be named stdlib and needs to be writable
-test-canon-ARGS = --test-dir=${common-objpfx}stdlib
-
-bug-fmtmsg1-ENV = SEV_LEVEL=foo,11,newsev
-
-$(objpfx)isomac.out: $(objpfx)isomac
- $(dir $<)$(notdir $<) '$(CC)' \
- '-I../include $(+sysdep-includes) $(sysincludes) -I..' > $<.out; \
- $(evaluate-test)
-
-isomac-CFLAGS = -O
-$(objpfx)isomac: isomac.c
- $(native-compile)
-
-$(objpfx)tst-fmtmsg.out: tst-fmtmsg.sh $(objpfx)tst-fmtmsg
- $(SHELL) $< $(common-objpfx) '$(test-program-prefix-before-env)' \
- '$(run-program-env)' '$(test-program-prefix-after-env)' \
- $(common-objpfx)stdlib/; \
- $(evaluate-test)
-
-$(objpfx)tst-putenv: $(objpfx)tst-putenvmod.so
-LDFLAGS-tst-putenv = $(no-as-needed)
-
-$(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os $(link-libc-deps)
- $(build-module)
-libof-tst-putenvmod = extramodules
-
-$(objpfx)bug-getcontext: $(libm)
-$(objpfx)tst-strtod-round: $(libm)
-$(objpfx)tst-tininess: $(libm)
-$(objpfx)tst-strtod-underflow: $(libm)
-$(objpfx)tst-strtod6: $(libm)
-$(objpfx)tst-strtod-nan-locale: $(libm)
-
-tst-tls-atexit-lib.so-no-z-defs = yes
-
-$(objpfx)tst-tls-atexit: $(shared-thread-library) $(libdl)
-$(objpfx)tst-tls-atexit.out: $(objpfx)tst-tls-atexit-lib.so
-
-$(objpfx)tst-tls-atexit-nodelete: $(shared-thread-library) $(libdl)
-$(objpfx)tst-tls-atexit-nodelete.out: $(objpfx)tst-tls-atexit-lib.so
-
-$(objpfx)tst-setcontext3.out: tst-setcontext3.sh $(objpfx)tst-setcontext3
- $(SHELL) $< $(common-objpfx) '$(test-program-prefix-before-env)' \
- '$(run-program-env)' '$(test-program-prefix-after-env)' \
- $(common-objpfx)stdlib/; \
- $(evaluate-test)
-
-$(objpfx)tst-makecontext: $(libdl)
diff --git a/stdlib/Versions b/stdlib/Versions
deleted file mode 100644
index 9cade20a06..0000000000
--- a/stdlib/Versions
+++ /dev/null
@@ -1,135 +0,0 @@
-libc {
- GLIBC_2.0 {
- # functions with required interface outside normal name space
- __xpg_basename;
-
- # functions used in inline functions or macros
- __strtod_internal; __strtof_internal; __strtold_internal;
- __strtol_internal; __strtoll_internal;
- __strtoul_internal; __strtoull_internal;
- # functions formerly so used (compatibility symbols)
- __strtoq_internal; __strtouq_internal;
-
- # compatibility symbol
- __secure_getenv;
-
- # a*
- a64l; abort; abs; atexit; atof; atoi; atol; atoll;
-
- # b*
- bsearch;
-
- # c*
- canonicalize_file_name; clearenv;
-
- # d*
- div; drand48; drand48_r;
-
- # e*
- erand48; erand48_r; exit;
-
- # g*
- getenv; getsubopt;
-
- # i*
- initstate; initstate_r;
-
- # l*
- l64a; labs; lcong48; lcong48_r; ldiv; llabs; lldiv; lrand48; lrand48_r;
-
- # m*
- mblen; mbrlen; mbrtowc; mbsinit; mbsnrtowcs; mbsrtowcs; mbstowcs;
- mbtowc; mcheck; mcount; mrand48; mrand48_r;
-
- # n*
- nrand48; nrand48_r;
-
- # o*
- on_exit;
-
- # p*
- putenv;
-
- # q*
- qsort;
-
- # r*
- rand; rand_r; random; random_r; realpath; rpmatch;
-
- # s*
- seed48; seed48_r; setcontext; setenv; setstate; setstate_r; srand; srand48;
- srand48_r; srandom; srandom_r; step; strfmon; strtod; strtof; strtol;
- strtold; strtoll; strtoq; strtoul; strtoull; strtouq; system;
-
- # u*
- unsetenv;
-
- # w*
- wcstombs; wctomb;
- }
- GLIBC_2.1 {
- # a*
- addseverity;
-
- # f*
- fmtmsg;
-
- # g*
- getcontext;
-
- # m*
- makecontext;
-
- # s*
- strtoimax; strtoumax; swapcontext;
- }
- GLIBC_2.1.1 {
- # _*
- _Exit;
-
- # i*
- imaxabs; imaxdiv;
- }
- GLIBC_2.1.3 {
- # used by new G++ ABI
- __cxa_atexit; __cxa_finalize;
- }
- GLIBC_2.3 {
- # Silent change in SUS.
- realpath;
- }
- GLIBC_2.8 {
- qsort_r;
- }
- GLIBC_2.10 {
- quick_exit; __cxa_at_quick_exit;
- }
- GLIBC_2.13 {
- __fentry__;
- }
- GLIBC_2.17 {
- secure_getenv;
- }
- GLIBC_2.18 {
- __cxa_thread_atexit_impl;
- }
- GLIBC_2.24 {
- quick_exit;
- }
- GLIBC_2.25 {
- # s*
- strfromd; strfromf; strfroml;
- getrandom; getentropy;
- }
- GLIBC_PRIVATE {
- # functions which have an additional interface since they are
- # are cancelable.
- __libc_system;
- # Variable which needs a dynamic symbol table entry.
- __abort_msg;
- # Used from other libraries
- __libc_secure_getenv;
- __call_tls_dtors;
- __strtof_nan; __strtod_nan; __strtold_nan;
- }
-}
diff --git a/stdlib/a64l.c b/stdlib/a64l.c
deleted file mode 100644
index 55de3129d3..0000000000
--- a/stdlib/a64l.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.org>, August 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/>. */
-
-#include <stdlib.h>
-
-#define TABLE_BASE 0x2e
-#define TABLE_SIZE 0x4d
-
-#define XX ((char)0x40)
-
-
-static const char a64l_table[TABLE_SIZE] =
-{
- /* 0x2e */ 0, 1,
- /* 0x30 */ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, XX, XX, XX, XX, XX, XX,
- /* 0x40 */ XX, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- /* 0x50 */ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, XX, XX, XX, XX, XX,
- /* 0x60 */ XX, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- /* 0x70 */ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
-};
-
-
-long int
-a64l (const char *string)
-{
- const char *ptr = string;
- unsigned long int result = 0ul;
- const char *end = ptr + 6;
- int shift = 0;
-
- do
- {
- unsigned index;
- unsigned value;
-
- index = *ptr - TABLE_BASE;
- if ((unsigned int) index >= TABLE_SIZE)
- break;
- value = (int) a64l_table[index];
- if (value == (int) XX)
- break;
- ++ptr;
- result |= value << shift;
- shift += 6;
- }
- while (ptr != end);
-
- return (long int) result;
-}
diff --git a/stdlib/abort.c b/stdlib/abort.c
deleted file mode 100644
index 19882f3e3d..0000000000
--- a/stdlib/abort.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* Copyright (C) 1991-2017 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 <libc-lock.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sigsetops.h>
-
-/* Try to get a machine dependent instruction which will make the
- program crash. This is used in case everything else fails. */
-#include <abort-instr.h>
-#ifndef ABORT_INSTRUCTION
-/* No such instruction is available. */
-# define ABORT_INSTRUCTION
-#endif
-
-#include <libio/libioP.h>
-#define fflush(s) _IO_flush_all_lockp (0)
-
-/* Exported variable to locate abort message in core files etc. */
-struct abort_msg_s *__abort_msg __attribute__ ((nocommon));
-libc_hidden_def (__abort_msg)
-
-/* We must avoid to run in circles. Therefore we remember how far we
- already got. */
-static int stage;
-
-/* We should be prepared for multiple threads trying to run abort. */
-__libc_lock_define_initialized_recursive (static, lock);
-
-
-/* Cause an abnormal program termination with core-dump. */
-void
-abort (void)
-{
- struct sigaction act;
- sigset_t sigs;
-
- /* First acquire the lock. */
- __libc_lock_lock_recursive (lock);
-
- /* Now it's for sure we are alone. But recursive calls are possible. */
-
- /* Unblock SIGABRT. */
- if (stage == 0)
- {
- ++stage;
- __sigemptyset (&sigs);
- __sigaddset (&sigs, SIGABRT);
- __sigprocmask (SIG_UNBLOCK, &sigs, 0);
- }
-
- /* Flush all streams. We cannot close them now because the user
- might have registered a handler for SIGABRT. */
- if (stage == 1)
- {
- ++stage;
- fflush (NULL);
- }
-
- /* Send signal which possibly calls a user handler. */
- if (stage == 2)
- {
- /* This stage is special: we must allow repeated calls of
- `abort' when a user defined handler for SIGABRT is installed.
- This is risky since the `raise' implementation might also
- fail but I don't see another possibility. */
- int save_stage = stage;
-
- stage = 0;
- __libc_lock_unlock_recursive (lock);
-
- raise (SIGABRT);
-
- __libc_lock_lock_recursive (lock);
- stage = save_stage + 1;
- }
-
- /* There was a handler installed. Now remove it. */
- if (stage == 3)
- {
- ++stage;
- memset (&act, '\0', sizeof (struct sigaction));
- act.sa_handler = SIG_DFL;
- __sigfillset (&act.sa_mask);
- act.sa_flags = 0;
- __sigaction (SIGABRT, &act, NULL);
- }
-
- /* Now close the streams which also flushes the output the user
- defined handler might has produced. */
- if (stage == 4)
- {
- ++stage;
- __fcloseall ();
- }
-
- /* Try again. */
- if (stage == 5)
- {
- ++stage;
- raise (SIGABRT);
- }
-
- /* Now try to abort using the system specific command. */
- if (stage == 6)
- {
- ++stage;
- ABORT_INSTRUCTION;
- }
-
- /* If we can't signal ourselves and the abort instruction failed, exit. */
- if (stage == 7)
- {
- ++stage;
- _exit (127);
- }
-
- /* If even this fails try to use the provided instruction to crash
- or otherwise make sure we never return. */
- while (1)
- /* Try for ever and ever. */
- ABORT_INSTRUCTION;
-}
-libc_hidden_def (abort)
diff --git a/stdlib/abs.c b/stdlib/abs.c
deleted file mode 100644
index dad7403658..0000000000
--- a/stdlib/abs.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-
-#undef abs
-
-/* Return the absolute value of I. */
-int
-abs (int i)
-{
- return i < 0 ? -i : i;
-}
diff --git a/stdlib/add_n.c b/stdlib/add_n.c
deleted file mode 100644
index 12ded53c58..0000000000
--- a/stdlib/add_n.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* mpn_add_n -- Add two limb vectors of equal, non-zero length.
-
-Copyright (C) 1992-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-
-mp_limb_t
-mpn_add_n (mp_ptr res_ptr, mp_srcptr s1_ptr, mp_srcptr s2_ptr, mp_size_t size)
-{
- register mp_limb_t x, y, cy;
- register mp_size_t j;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- s1_ptr -= j;
- s2_ptr -= j;
- res_ptr -= j;
-
- cy = 0;
- do
- {
- y = s2_ptr[j];
- x = s1_ptr[j];
- y += cy; /* add previous carry to one addend */
- cy = (y < cy); /* get out carry from that addition */
- y = x + y; /* add other addend */
- cy = (y < x) + cy; /* get out carry from that add, combine */
- res_ptr[j] = y;
- }
- while (++j != 0);
-
- return cy;
-}
diff --git a/stdlib/addmul_1.c b/stdlib/addmul_1.c
deleted file mode 100644
index 9eaea8ba33..0000000000
--- a/stdlib/addmul_1.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* mpn_addmul_1 -- multiply the S1_SIZE long limb vector pointed to by S1_PTR
- by S2_LIMB, add the S1_SIZE least significant limbs of the product to the
- limb vector pointed to by RES_PTR. Return the most significant limb of
- the product, adjusted for carry-out from the addition.
-
-Copyright (C) 1992-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-#include "longlong.h"
-
-mp_limb_t
-mpn_addmul_1 (register mp_ptr res_ptr, register mp_srcptr s1_ptr,
- mp_size_t s1_size, register mp_limb_t s2_limb)
-{
- register mp_limb_t cy_limb;
- register mp_size_t j;
- register mp_limb_t prod_high, prod_low;
- register mp_limb_t x;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -s1_size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- res_ptr -= j;
- s1_ptr -= j;
-
- cy_limb = 0;
- do
- {
- umul_ppmm (prod_high, prod_low, s1_ptr[j], s2_limb);
-
- prod_low += cy_limb;
- cy_limb = (prod_low < cy_limb) + prod_high;
-
- x = res_ptr[j];
- prod_low = x + prod_low;
- cy_limb += (prod_low < x);
- res_ptr[j] = prod_low;
- }
- while (++j != 0);
-
- return cy_limb;
-}
diff --git a/stdlib/alloca.h b/stdlib/alloca.h
deleted file mode 100644
index 89a1a90a4f..0000000000
--- a/stdlib/alloca.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright (C) 1992-2017 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 _ALLOCA_H
-#define _ALLOCA_H 1
-
-#include <features.h>
-
-#define __need_size_t
-#include <stddef.h>
-
-__BEGIN_DECLS
-
-/* Remove any previous definitions. */
-#undef alloca
-
-/* Allocate a block that will be freed when the calling function exits. */
-extern void *alloca (size_t __size) __THROW;
-
-#ifdef __GNUC__
-# define alloca(size) __builtin_alloca (size)
-#endif /* GCC. */
-
-__END_DECLS
-
-#endif /* alloca.h */
diff --git a/stdlib/at_quick_exit.c b/stdlib/at_quick_exit.c
deleted file mode 100644
index 3b74d0a688..0000000000
--- a/stdlib/at_quick_exit.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (C) 1991-2017 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file with other
- programs, and to distribute those programs without any restriction
- coming from the use of this file. (The GNU Lesser General Public
- License restrictions do apply in other respects; for example, they
- cover modification of the file, and distribution when not linked
- into another program.)
-
- Note that people who make modified versions of this file are not
- obligated to grant this special exception for their modified
- versions; it is their choice whether to do so. The GNU Lesser
- General Public License gives permission to release a modified
- version without this exception; this exception also makes it
- possible to release a modified version which carries forward this
- exception.
-
- 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 "exit.h"
-
-
-/* This is defined by newer gcc version unique for each module. */
-extern void *__dso_handle __attribute__ ((__weak__));
-
-
-/* Register FUNC to be executed by `quick_exit'. */
-int
-attribute_hidden
-at_quick_exit (void (*func) (void))
-{
- return __cxa_at_quick_exit ((void (*) (void *)) func,
- &__dso_handle == NULL ? NULL : __dso_handle);
-}
diff --git a/stdlib/atexit.c b/stdlib/atexit.c
deleted file mode 100644
index f28b6ba1b7..0000000000
--- a/stdlib/atexit.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (C) 1991-2017 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file with other
- programs, and to distribute those programs without any restriction
- coming from the use of this file. (The GNU Lesser General Public
- License restrictions do apply in other respects; for example, they
- cover modification of the file, and distribution when not linked
- into another program.)
-
- Note that people who make modified versions of this file are not
- obligated to grant this special exception for their modified
- versions; it is their choice whether to do so. The GNU Lesser
- General Public License gives permission to release a modified
- version without this exception; this exception also makes it
- possible to release a modified version which carries forward this
- exception.
-
- 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 "exit.h"
-
-
-/* This is defined by newer gcc version unique for each module. */
-extern void *__dso_handle __attribute__ ((__weak__));
-
-
-/* Register FUNC to be executed by `exit'. */
-int
-#ifndef atexit
-attribute_hidden
-#endif
-atexit (void (*func) (void))
-{
- return __cxa_atexit ((void (*) (void *)) func, NULL,
- &__dso_handle == NULL ? NULL : __dso_handle);
-}
diff --git a/stdlib/atof.c b/stdlib/atof.c
deleted file mode 100644
index a21ce58924..0000000000
--- a/stdlib/atof.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-
-#undef atof
-
-
-/* Convert a string to a double. */
-double
-atof (const char *nptr)
-{
- return strtod (nptr, (char **) NULL);
-}
diff --git a/stdlib/atoi.c b/stdlib/atoi.c
deleted file mode 100644
index f8593423a6..0000000000
--- a/stdlib/atoi.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-
-#undef atoi
-
-
-/* Convert a string to an int. */
-int
-atoi (const char *nptr)
-{
- return (int) strtol (nptr, (char **) NULL, 10);
-}
diff --git a/stdlib/atol.c b/stdlib/atol.c
deleted file mode 100644
index 8ca34c0803..0000000000
--- a/stdlib/atol.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-
-#undef atol
-
-
-/* Convert a string to a long int. */
-long int
-atol (const char *nptr)
-{
- return strtol (nptr, (char **) NULL, 10);
-}
diff --git a/stdlib/atoll.c b/stdlib/atoll.c
deleted file mode 100644
index 41b36a016e..0000000000
--- a/stdlib/atoll.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-
-#undef atoll
-
-
-/* Convert a string to a long long int. */
-long long int
-atoll (const char *nptr)
-{
- return strtoll (nptr, (char **) NULL, 10);
-}
diff --git a/stdlib/bits/monetary-ldbl.h b/stdlib/bits/monetary-ldbl.h
deleted file mode 100644
index d042ac5af1..0000000000
--- a/stdlib/bits/monetary-ldbl.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -mlong-double-64 compatibility mode for monetary functions.
- Copyright (C) 2006-2017 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 _MONETARY_H
-# error "Never include <bits/monetary-ldbl.h> directly; use <monetary.h> instead."
-#endif
-
-__LDBL_REDIR_DECL (strfmon)
-
-#ifdef __USE_GNU
-__LDBL_REDIR_DECL (strfmon_l)
-#endif
diff --git a/stdlib/bits/stdlib-float.h b/stdlib/bits/stdlib-float.h
deleted file mode 100644
index aba8e94596..0000000000
--- a/stdlib/bits/stdlib-float.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Floating-point inline functions for stdlib.h.
- Copyright (C) 2012-2017 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 _STDLIB_H
-# error "Never use <bits/stdlib-float.h> directly; include <stdlib.h> instead."
-#endif
-
-#ifdef __USE_EXTERN_INLINES
-__extern_inline double
-__NTH (atof (const char *__nptr))
-{
- return strtod (__nptr, (char **) NULL);
-}
-#endif /* Optimizing and Inlining. */
diff --git a/stdlib/bits/stdlib-ldbl.h b/stdlib/bits/stdlib-ldbl.h
deleted file mode 100644
index 2f568db45a..0000000000
--- a/stdlib/bits/stdlib-ldbl.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* -mlong-double-64 compatibility mode for <stdlib.h> functions.
- Copyright (C) 2006-2017 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 _STDLIB_H
-# error "Never include <bits/stdlib-ldbl.h> directly; use <stdlib.h> instead."
-#endif
-
-#ifdef __USE_ISOC99
-__LDBL_REDIR1_DECL (strtold, strtod)
-#endif
-
-#ifdef __USE_GNU
-__LDBL_REDIR1_DECL (strtold_l, strtod_l)
-#endif
-
-#if __GLIBC_USE (IEC_60559_BFP_EXT)
-__LDBL_REDIR1_DECL (strfroml, strfromd)
-#endif
-
-#ifdef __USE_MISC
-__LDBL_REDIR1_DECL (qecvt, ecvt)
-__LDBL_REDIR1_DECL (qfcvt, fcvt)
-__LDBL_REDIR1_DECL (qgcvt, gcvt)
-__LDBL_REDIR1_DECL (qecvt_r, ecvt_r)
-__LDBL_REDIR1_DECL (qfcvt_r, fcvt_r)
-#endif
diff --git a/stdlib/bits/stdlib.h b/stdlib/bits/stdlib.h
deleted file mode 100644
index 864284fc74..0000000000
--- a/stdlib/bits/stdlib.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/* Checking macros for stdlib functions.
- Copyright (C) 2005-2017 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 _STDLIB_H
-# error "Never include <bits/stdlib.h> directly; use <stdlib.h> instead."
-#endif
-
-extern char *__realpath_chk (const char *__restrict __name,
- char *__restrict __resolved,
- size_t __resolvedlen) __THROW __wur;
-extern char *__REDIRECT_NTH (__realpath_alias,
- (const char *__restrict __name,
- char *__restrict __resolved), realpath) __wur;
-extern char *__REDIRECT_NTH (__realpath_chk_warn,
- (const char *__restrict __name,
- char *__restrict __resolved,
- size_t __resolvedlen), __realpath_chk) __wur
- __warnattr ("second argument of realpath must be either NULL or at "
- "least PATH_MAX bytes long buffer");
-
-__fortify_function __wur char *
-__NTH (realpath (const char *__restrict __name, char *__restrict __resolved))
-{
- if (__bos (__resolved) != (size_t) -1)
- {
-#if defined _LIBC_LIMITS_H_ && defined PATH_MAX
- if (__bos (__resolved) < PATH_MAX)
- return __realpath_chk_warn (__name, __resolved, __bos (__resolved));
-#endif
- return __realpath_chk (__name, __resolved, __bos (__resolved));
- }
-
- return __realpath_alias (__name, __resolved);
-}
-
-
-extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
- size_t __nreal) __THROW __nonnull ((2));
-extern int __REDIRECT_NTH (__ptsname_r_alias, (int __fd, char *__buf,
- size_t __buflen), ptsname_r)
- __nonnull ((2));
-extern int __REDIRECT_NTH (__ptsname_r_chk_warn,
- (int __fd, char *__buf, size_t __buflen,
- size_t __nreal), __ptsname_r_chk)
- __nonnull ((2)) __warnattr ("ptsname_r called with buflen bigger than "
- "size of buf");
-
-__fortify_function int
-__NTH (ptsname_r (int __fd, char *__buf, size_t __buflen))
-{
- if (__bos (__buf) != (size_t) -1)
- {
- if (!__builtin_constant_p (__buflen))
- return __ptsname_r_chk (__fd, __buf, __buflen, __bos (__buf));
- if (__buflen > __bos (__buf))
- return __ptsname_r_chk_warn (__fd, __buf, __buflen, __bos (__buf));
- }
- return __ptsname_r_alias (__fd, __buf, __buflen);
-}
-
-
-extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen)
- __THROW __wur;
-extern int __REDIRECT_NTH (__wctomb_alias, (char *__s, wchar_t __wchar),
- wctomb) __wur;
-
-__fortify_function __wur int
-__NTH (wctomb (char *__s, wchar_t __wchar))
-{
- /* We would have to include <limits.h> to get a definition of MB_LEN_MAX.
- But this would only disturb the namespace. So we define our own
- version here. */
-#define __STDLIB_MB_LEN_MAX 16
-#if defined MB_LEN_MAX && MB_LEN_MAX != __STDLIB_MB_LEN_MAX
-# error "Assumed value of MB_LEN_MAX wrong"
-#endif
- if (__bos (__s) != (size_t) -1 && __STDLIB_MB_LEN_MAX > __bos (__s))
- return __wctomb_chk (__s, __wchar, __bos (__s));
- return __wctomb_alias (__s, __wchar);
-}
-
-
-extern size_t __mbstowcs_chk (wchar_t *__restrict __dst,
- const char *__restrict __src,
- size_t __len, size_t __dstlen) __THROW;
-extern size_t __REDIRECT_NTH (__mbstowcs_alias,
- (wchar_t *__restrict __dst,
- const char *__restrict __src,
- size_t __len), mbstowcs);
-extern size_t __REDIRECT_NTH (__mbstowcs_chk_warn,
- (wchar_t *__restrict __dst,
- const char *__restrict __src,
- size_t __len, size_t __dstlen), __mbstowcs_chk)
- __warnattr ("mbstowcs called with dst buffer smaller than len "
- "* sizeof (wchar_t)");
-
-__fortify_function size_t
-__NTH (mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src,
- size_t __len))
-{
- if (__bos (__dst) != (size_t) -1)
- {
- if (!__builtin_constant_p (__len))
- return __mbstowcs_chk (__dst, __src, __len,
- __bos (__dst) / sizeof (wchar_t));
-
- if (__len > __bos (__dst) / sizeof (wchar_t))
- return __mbstowcs_chk_warn (__dst, __src, __len,
- __bos (__dst) / sizeof (wchar_t));
- }
- return __mbstowcs_alias (__dst, __src, __len);
-}
-
-
-extern size_t __wcstombs_chk (char *__restrict __dst,
- const wchar_t *__restrict __src,
- size_t __len, size_t __dstlen) __THROW;
-extern size_t __REDIRECT_NTH (__wcstombs_alias,
- (char *__restrict __dst,
- const wchar_t *__restrict __src,
- size_t __len), wcstombs);
-extern size_t __REDIRECT_NTH (__wcstombs_chk_warn,
- (char *__restrict __dst,
- const wchar_t *__restrict __src,
- size_t __len, size_t __dstlen), __wcstombs_chk)
- __warnattr ("wcstombs called with dst buffer smaller than len");
-
-__fortify_function size_t
-__NTH (wcstombs (char *__restrict __dst, const wchar_t *__restrict __src,
- size_t __len))
-{
- if (__bos (__dst) != (size_t) -1)
- {
- if (!__builtin_constant_p (__len))
- return __wcstombs_chk (__dst, __src, __len, __bos (__dst));
- if (__len > __bos (__dst))
- return __wcstombs_chk_warn (__dst, __src, __len, __bos (__dst));
- }
- return __wcstombs_alias (__dst, __src, __len);
-}
diff --git a/stdlib/bsearch.c b/stdlib/bsearch.c
deleted file mode 100644
index e6aa407491..0000000000
--- a/stdlib/bsearch.c
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-
-#undef __extern_inline
-#define __extern_inline /* Empty, so we get a normal definition. */
-#include <bits/stdlib-bsearch.h>
-libc_hidden_def (bsearch)
diff --git a/stdlib/bug-fmtmsg1.c b/stdlib/bug-fmtmsg1.c
deleted file mode 100644
index 04bfaea3ce..0000000000
--- a/stdlib/bug-fmtmsg1.c
+++ /dev/null
@@ -1,28 +0,0 @@
-#include <fmtmsg.h>
-#include <stdio.h>
-
-
-static int
-do_test (void)
-{
- /* Ugly, but fmtmsg would otherwise print to stderr which we do not
- want. */
- fclose (stderr);
- stderr = stdout;
-
- int e1;
- e1 = fmtmsg (MM_PRINT, "label:part", MM_WARNING, "text", "action", "tag");
-
- int e2;
- e2 = fmtmsg (MM_PRINT, "label2:part2", 11, "text2", "action2", "tag2");
-
- addseverity (10, "additional severity");
-
- int e3;
- e3 = fmtmsg (MM_PRINT, "label3:part3", 10, "text3", "action3", "tag3");
-
- return e1 != 0 || e2 != 0 || e3 != 0;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/bug-getcontext.c b/stdlib/bug-getcontext.c
deleted file mode 100644
index 163400acba..0000000000
--- a/stdlib/bug-getcontext.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* BZ 12420 */
-
-#include <errno.h>
-#include <fenv.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <ucontext.h>
-#include <libc-diag.h>
-
-static int
-do_test (void)
-{
- if (FE_ALL_EXCEPT == 0)
- {
- printf("Skipping test; no support for FP exceptions.\n");
- return 0;
- }
-
- int except_mask = 0;
-#ifdef FE_DIVBYZERO
- except_mask |= FE_DIVBYZERO;
-#endif
-#ifdef FE_INVALID
- except_mask |= FE_INVALID;
-#endif
-#ifdef FE_OVERFLOW
- except_mask |= FE_OVERFLOW;
-#endif
-#ifdef FE_UNDERFLOW
- except_mask |= FE_UNDERFLOW;
-#endif
- int status = feenableexcept (except_mask);
-
- except_mask = fegetexcept ();
- if (except_mask == -1)
- {
- printf("\nBefore getcontext(): fegetexcept returned: %d\n",
- except_mask);
- return 1;
- }
-
- ucontext_t ctx;
- status = getcontext(&ctx);
- if (status)
- {
- printf("\ngetcontext failed, errno: %d.\n", errno);
- return 1;
- }
-
- printf ("\nDone with getcontext()!\n");
- fflush (NULL);
-
- /* On nios2 and tilepro, GCC 5 warns that except_mask may be used
- uninitialized. Because it is always initialized and nothing in
- this test ever calls setcontext (a setcontext call could result
- in local variables being clobbered on the second return from
- getcontext), in fact an uninitialized use is not possible. */
- DIAG_PUSH_NEEDS_COMMENT;
- DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
- int mask = fegetexcept ();
- if (mask != except_mask)
- {
- printf("\nAfter getcontext(): fegetexcept returned: %d, expected: %d.\n",
- mask, except_mask);
- return 1;
- }
-
- printf("\nAt end fegetexcept() returned %d, expected: %d.\n",
- mask, except_mask);
- DIAG_POP_NEEDS_COMMENT;
-
- return 0;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/bug-strtod.c b/stdlib/bug-strtod.c
deleted file mode 100644
index b91f739104..0000000000
--- a/stdlib/bug-strtod.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Test to strtod etc for numbers like x000...0000.000e-nn.
- This file is part of the GNU C Library.
- Copyright (C) 2001-2017 Free Software Foundation, Inc.
- 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 <stdlib.h>
-#include <string.h>
-
-#include "tst-strtod.h"
-
-#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
-static int \
-test_strto ## FSUF (void) \
-{ \
- char buf[300]; \
- int cnt; \
- int result = 0; \
- \
- for (cnt = 0; cnt < 200; ++cnt) \
- { \
- ssize_t n; \
- FTYPE f; \
- \
- n = sprintf (buf, "%d", cnt); \
- memset (buf + n, '0', cnt); \
- sprintf (buf + n + cnt, ".000e-%d", cnt); \
- f = strto ## FSUF (buf, NULL); \
- \
- if (f != (FTYPE) cnt) \
- { \
- char fstr[FSTRLENMAX]; \
- char fcntstr[FSTRLENMAX]; \
- FTOSTR (fstr, sizeof (fstr), "%g", f); \
- FTOSTR (fcntstr, sizeof (fstr), "%g", (FTYPE) cnt); \
- printf ("strto" #FSUF "(\"%s\") " \
- "failed for cnt == %d (%s instead of %s)\n", \
- buf, cnt, fstr, fcntstr); \
- result = 1; \
- } \
- else \
- printf ( "strto" #FSUF "() fine for cnt == %d\n", cnt); \
- } \
- return result; \
-}
-
-GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
-
-int
-main (void)
-{
- return STRTOD_TEST_FOREACH (test_strto);
-}
diff --git a/stdlib/bug-strtod2.c b/stdlib/bug-strtod2.c
deleted file mode 100644
index 6128f2dd56..0000000000
--- a/stdlib/bug-strtod2.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include <locale.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "tst-strtod.h"
-
-static const char *tests[] =
- {
- "inf", "Inf", "iNf", "inF", "INf", "iNF", "INF", "InF",
- "infinity", "Infinity", "InfInity", "INFINITY"
- };
-#define ntests (sizeof (tests) / sizeof (tests[0]))
-
-#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
-static int \
-test_strto ## FSUF (void) \
-{ \
- int res = 0; \
- for (int i = 0; i < ntests; ++i) \
- { \
- char *endp; \
- FTYPE d = strto ## FSUF (tests[i], &endp); \
- if (*endp != '\0') \
- { \
- printf ("did not consume all of '%s'\n", tests[i]); \
- res = 1; \
- } \
- if (!isinf (d)) \
- { \
- printf ("'%s' does not pass isinf\n", tests[i]); \
- res = 1; \
- } \
- } \
- \
- return res; \
-}
-
-GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
-
-static int
-do_test (void)
-{
- /* The Turkish locale is notorious because tolower() maps 'I' to the
- dotless lowercase 'i' and toupper() maps 'i' to an 'I' with a dot
- above. */
- if (setlocale (LC_ALL, "tr_TR.UTF-8") == NULL)
- {
- puts ("cannot set locale");
- return 0;
- }
-
- return STRTOD_TEST_FOREACH (test_strto);
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/canonicalize.c b/stdlib/canonicalize.c
deleted file mode 100644
index c3d892c862..0000000000
--- a/stdlib/canonicalize.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/* Return the canonical absolute name of a given file.
- Copyright (C) 1996-2017 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 <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <limits.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <stddef.h>
-
-#include <eloop-threshold.h>
-#include <shlib-compat.h>
-
-/* Return the canonical absolute name of file NAME. A canonical name
- does not contain any `.', `..' components nor any repeated path
- separators ('/') or symlinks. All path components must exist. If
- RESOLVED is null, the result is malloc'd; otherwise, if the
- canonical name is PATH_MAX chars or more, returns null with `errno'
- set to ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars,
- returns the name in RESOLVED. If the name cannot be resolved and
- RESOLVED is non-NULL, it contains the path of the first component
- that cannot be resolved. If the path can be resolved, RESOLVED
- holds the same value as the value returned. */
-
-char *
-__realpath (const char *name, char *resolved)
-{
- char *rpath, *dest, *extra_buf = NULL;
- const char *start, *end, *rpath_limit;
- long int path_max;
- int num_links = 0;
-
- if (name == NULL)
- {
- /* As per Single Unix Specification V2 we must return an error if
- either parameter is a null pointer. We extend this to allow
- the RESOLVED parameter to be NULL in case the we are expected to
- allocate the room for the return value. */
- __set_errno (EINVAL);
- return NULL;
- }
-
- if (name[0] == '\0')
- {
- /* As per Single Unix Specification V2 we must return an error if
- the name argument points to an empty string. */
- __set_errno (ENOENT);
- return NULL;
- }
-
-#ifdef PATH_MAX
- path_max = PATH_MAX;
-#else
- path_max = pathconf (name, _PC_PATH_MAX);
- if (path_max <= 0)
- path_max = 1024;
-#endif
-
- if (resolved == NULL)
- {
- rpath = malloc (path_max);
- if (rpath == NULL)
- return NULL;
- }
- else
- rpath = resolved;
- rpath_limit = rpath + path_max;
-
- if (name[0] != '/')
- {
- if (!__getcwd (rpath, path_max))
- {
- rpath[0] = '\0';
- goto error;
- }
- dest = __rawmemchr (rpath, '\0');
- }
- else
- {
- rpath[0] = '/';
- dest = rpath + 1;
- }
-
- for (start = end = name; *start; start = end)
- {
- struct stat64 st;
- int n;
-
- /* Skip sequence of multiple path-separators. */
- while (*start == '/')
- ++start;
-
- /* Find end of path component. */
- for (end = start; *end && *end != '/'; ++end)
- /* Nothing. */;
-
- if (end - start == 0)
- break;
- else if (end - start == 1 && start[0] == '.')
- /* nothing */;
- else if (end - start == 2 && start[0] == '.' && start[1] == '.')
- {
- /* Back up to previous component, ignore if at root already. */
- if (dest > rpath + 1)
- while ((--dest)[-1] != '/');
- }
- else
- {
- size_t new_size;
-
- if (dest[-1] != '/')
- *dest++ = '/';
-
- if (dest + (end - start) >= rpath_limit)
- {
- ptrdiff_t dest_offset = dest - rpath;
- char *new_rpath;
-
- if (resolved)
- {
- __set_errno (ENAMETOOLONG);
- if (dest > rpath + 1)
- dest--;
- *dest = '\0';
- goto error;
- }
- new_size = rpath_limit - rpath;
- if (end - start + 1 > path_max)
- new_size += end - start + 1;
- else
- new_size += path_max;
- new_rpath = (char *) realloc (rpath, new_size);
- if (new_rpath == NULL)
- goto error;
- rpath = new_rpath;
- rpath_limit = rpath + new_size;
-
- dest = rpath + dest_offset;
- }
-
- dest = __mempcpy (dest, start, end - start);
- *dest = '\0';
-
- if (__lxstat64 (_STAT_VER, rpath, &st) < 0)
- goto error;
-
- if (S_ISLNK (st.st_mode))
- {
- char *buf = __alloca (path_max);
- size_t len;
-
- if (++num_links > __eloop_threshold ())
- {
- __set_errno (ELOOP);
- goto error;
- }
-
- n = __readlink (rpath, buf, path_max - 1);
- if (n < 0)
- goto error;
- buf[n] = '\0';
-
- if (!extra_buf)
- extra_buf = __alloca (path_max);
-
- len = strlen (end);
- if ((long int) (n + len) >= path_max)
- {
- __set_errno (ENAMETOOLONG);
- goto error;
- }
-
- /* Careful here, end may be a pointer into extra_buf... */
- memmove (&extra_buf[n], end, len + 1);
- name = end = memcpy (extra_buf, buf, n);
-
- if (buf[0] == '/')
- dest = rpath + 1; /* It's an absolute symlink */
- else
- /* Back up to previous component, ignore if at root already: */
- if (dest > rpath + 1)
- while ((--dest)[-1] != '/');
- }
- else if (!S_ISDIR (st.st_mode) && *end != '\0')
- {
- __set_errno (ENOTDIR);
- goto error;
- }
- }
- }
- if (dest > rpath + 1 && dest[-1] == '/')
- --dest;
- *dest = '\0';
-
- assert (resolved == NULL || resolved == rpath);
- return rpath;
-
-error:
- assert (resolved == NULL || resolved == rpath);
- if (resolved == NULL)
- free (rpath);
- return NULL;
-}
-versioned_symbol (libc, __realpath, realpath, GLIBC_2_3);
-
-
-#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_3)
-char *
-attribute_compat_text_section
-__old_realpath (const char *name, char *resolved)
-{
- if (resolved == NULL)
- {
- __set_errno (EINVAL);
- return NULL;
- }
-
- return __realpath (name, resolved);
-}
-compat_symbol (libc, __old_realpath, realpath, GLIBC_2_0);
-#endif
-
-
-char *
-__canonicalize_file_name (const char *name)
-{
- return __realpath (name, NULL);
-}
-weak_alias (__canonicalize_file_name, canonicalize_file_name)
diff --git a/stdlib/cmp.c b/stdlib/cmp.c
deleted file mode 100644
index 1480a9b165..0000000000
--- a/stdlib/cmp.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* mpn_cmp -- Compare two low-level natural-number integers.
-
-Copyright (C) 1991-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-
-/* Compare OP1_PTR/OP1_SIZE with OP2_PTR/OP2_SIZE.
- There are no restrictions on the relative sizes of
- the two arguments.
- Return 1 if OP1 > OP2, 0 if they are equal, and -1 if OP1 < OP2. */
-
-int
-mpn_cmp (mp_srcptr op1_ptr, mp_srcptr op2_ptr, mp_size_t size)
-{
- mp_size_t i;
- mp_limb_t op1_word, op2_word;
-
- for (i = size - 1; i >= 0; i--)
- {
- op1_word = op1_ptr[i];
- op2_word = op2_ptr[i];
- if (op1_word != op2_word)
- goto diff;
- }
- return 0;
- diff:
- /* This can *not* be simplified to
- op2_word - op2_word
- since that expression might give signed overflow. */
- return (op1_word > op2_word) ? 1 : -1;
-}
diff --git a/stdlib/cxa_at_quick_exit.c b/stdlib/cxa_at_quick_exit.c
deleted file mode 100644
index ebebaf4bd7..0000000000
--- a/stdlib/cxa_at_quick_exit.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2009-2017 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 <stdlib.h>
-#include "exit.h"
-
-
-static struct exit_function_list initial_quick;
-struct exit_function_list *__quick_exit_funcs = &initial_quick;
-
-/* Register a function to be called by quick_exit. */
-int
-__cxa_at_quick_exit (void (*func) (void *), void *d)
-{
- return __internal_atexit (func, NULL, d, &__quick_exit_funcs);
-}
diff --git a/stdlib/cxa_atexit.c b/stdlib/cxa_atexit.c
deleted file mode 100644
index ce5d9f22b4..0000000000
--- a/stdlib/cxa_atexit.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/* Copyright (C) 1999-2017 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 <stdlib.h>
-#include <stdint.h>
-
-#include <libc-lock.h>
-#include "exit.h"
-#include <atomic.h>
-#include <sysdep.h>
-
-#undef __cxa_atexit
-
-
-int
-attribute_hidden
-__internal_atexit (void (*func) (void *), void *arg, void *d,
- struct exit_function_list **listp)
-{
- struct exit_function *new = __new_exitfn (listp);
-
- if (new == NULL)
- return -1;
-
-#ifdef PTR_MANGLE
- PTR_MANGLE (func);
-#endif
- new->func.cxa.fn = (void (*) (void *, int)) func;
- new->func.cxa.arg = arg;
- new->func.cxa.dso_handle = d;
- atomic_write_barrier ();
- new->flavor = ef_cxa;
- return 0;
-}
-
-
-/* Register a function to be called by exit or when a shared library
- is unloaded. This function is only called from code generated by
- the C++ compiler. */
-int
-__cxa_atexit (void (*func) (void *), void *arg, void *d)
-{
- return __internal_atexit (func, arg, d, &__exit_funcs);
-}
-libc_hidden_def (__cxa_atexit)
-
-
-/* We change global data, so we need locking. */
-__libc_lock_define_initialized (static, lock)
-
-
-static struct exit_function_list initial;
-struct exit_function_list *__exit_funcs = &initial;
-uint64_t __new_exitfn_called;
-
-struct exit_function *
-__new_exitfn (struct exit_function_list **listp)
-{
- struct exit_function_list *p = NULL;
- struct exit_function_list *l;
- struct exit_function *r = NULL;
- size_t i = 0;
-
- __libc_lock_lock (lock);
-
- for (l = *listp; l != NULL; p = l, l = l->next)
- {
- for (i = l->idx; i > 0; --i)
- if (l->fns[i - 1].flavor != ef_free)
- break;
-
- if (i > 0)
- break;
-
- /* This block is completely unused. */
- l->idx = 0;
- }
-
- if (l == NULL || i == sizeof (l->fns) / sizeof (l->fns[0]))
- {
- /* The last entry in a block is used. Use the first entry in
- the previous block if it exists. Otherwise create a new one. */
- if (p == NULL)
- {
- assert (l != NULL);
- p = (struct exit_function_list *)
- calloc (1, sizeof (struct exit_function_list));
- if (p != NULL)
- {
- p->next = *listp;
- *listp = p;
- }
- }
-
- if (p != NULL)
- {
- r = &p->fns[0];
- p->idx = 1;
- }
- }
- else
- {
- /* There is more room in the block. */
- r = &l->fns[i];
- l->idx = i + 1;
- }
-
- /* Mark entry as used, but we don't know the flavor now. */
- if (r != NULL)
- {
- r->flavor = ef_us;
- ++__new_exitfn_called;
- }
-
- __libc_lock_unlock (lock);
-
- return r;
-}
diff --git a/stdlib/cxa_finalize.c b/stdlib/cxa_finalize.c
deleted file mode 100644
index aa0a70cb58..0000000000
--- a/stdlib/cxa_finalize.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/* Copyright (C) 1999-2017 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 <stdlib.h>
-#include <atomic.h>
-#include "exit.h"
-#include <fork.h>
-#include <sysdep.h>
-#include <stdint.h>
-
-/* If D is non-NULL, call all functions registered with `__cxa_atexit'
- with the same dso handle. Otherwise, if D is NULL, call all of the
- registered handlers. */
-void
-__cxa_finalize (void *d)
-{
- struct exit_function_list *funcs;
-
- restart:
- for (funcs = __exit_funcs; funcs; funcs = funcs->next)
- {
- struct exit_function *f;
-
- for (f = &funcs->fns[funcs->idx - 1]; f >= &funcs->fns[0]; --f)
- {
- void (*cxafn) (void *arg, int status);
- void *cxaarg;
-
- if ((d == NULL || d == f->func.cxa.dso_handle)
- /* We don't want to run this cleanup more than once. */
- && (cxafn = f->func.cxa.fn,
- cxaarg = f->func.cxa.arg,
- ! catomic_compare_and_exchange_bool_acq (&f->flavor, ef_free,
- ef_cxa)))
- {
- uint64_t check = __new_exitfn_called;
-
-#ifdef PTR_DEMANGLE
- PTR_DEMANGLE (cxafn);
-#endif
- cxafn (cxaarg, 0);
-
- /* It is possible that that last exit function registered
- more exit functions. Start the loop over. */
- if (__glibc_unlikely (check != __new_exitfn_called))
- goto restart;
- }
- }
- }
-
- /* Also remove the quick_exit handlers, but do not call them. */
- for (funcs = __quick_exit_funcs; funcs; funcs = funcs->next)
- {
- struct exit_function *f;
-
- for (f = &funcs->fns[funcs->idx - 1]; f >= &funcs->fns[0]; --f)
- if (d == NULL || d == f->func.cxa.dso_handle)
- f->flavor = ef_free;
- }
-
- /* Remove the registered fork handlers. We do not have to
- unregister anything if the program is going to terminate anyway. */
-#ifdef UNREGISTER_ATFORK
- if (d != NULL)
- UNREGISTER_ATFORK (d);
-#endif
-}
diff --git a/stdlib/cxa_thread_atexit_impl.c b/stdlib/cxa_thread_atexit_impl.c
deleted file mode 100644
index f9942255a3..0000000000
--- a/stdlib/cxa_thread_atexit_impl.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/* Register destructors for C++ TLS variables declared with thread_local.
- Copyright (C) 2013-2017 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/>. */
-
-/* CONCURRENCY NOTES:
-
- This documents concurrency for the non-POD TLS destructor registration,
- calling and destruction. The functions __cxa_thread_atexit_impl,
- _dl_close_worker and __call_tls_dtors are the three main routines that may
- run concurrently and access shared data. The shared data in all possible
- combinations of all three functions are the link map list, a link map for a
- DSO and the link map member l_tls_dtor_count.
-
- __cxa_thread_atexit_impl acquires the dl_load_lock before accessing any
- shared state and hence multiple of its instances can safely execute
- concurrently.
-
- _dl_close_worker acquires the dl_load_lock before accessing any shared state
- as well and hence can concurrently execute multiple of its own instances as
- well as those of __cxa_thread_atexit_impl safely. Not all accesses to
- l_tls_dtor_count are protected by the dl_load_lock, so we need to
- synchronize using atomics.
-
- __call_tls_dtors accesses the l_tls_dtor_count without taking the lock; it
- decrements the value by one. It does not need the big lock because it does
- not access any other shared state except for the current DSO link map and
- its member l_tls_dtor_count.
-
- Correspondingly, _dl_close_worker loads l_tls_dtor_count and if it is zero,
- unloads the DSO, thus deallocating the current link map. This is the goal
- of maintaining l_tls_dtor_count - to unload the DSO and free resources if
- there are no pending destructors to be called.
-
- We want to eliminate the inconsistent state where the DSO is unloaded in
- _dl_close_worker before it is used in __call_tls_dtors. This could happen
- if __call_tls_dtors uses the link map after it sets l_tls_dtor_count to 0,
- since _dl_close_worker will conclude from the 0 l_tls_dtor_count value that
- it is safe to unload the DSO. Hence, to ensure that this does not happen,
- the following conditions must be met:
-
- 1. In _dl_close_worker, the l_tls_dtor_count load happens before the DSO is
- unloaded and its link map is freed
- 2. The link map dereference in __call_tls_dtors happens before the
- l_tls_dtor_count dereference.
-
- To ensure this, the l_tls_dtor_count decrement in __call_tls_dtors should
- have release semantics and the load in _dl_close_worker should have acquire
- semantics.
-
- Concurrent executions of __call_tls_dtors should only ensure that the value
- is accessed atomically; no reordering constraints need to be considered.
- Likewise for the increment of l_tls_dtor_count in __cxa_thread_atexit_impl.
-
- There is still a possibility on concurrent execution of _dl_close_worker and
- __call_tls_dtors where _dl_close_worker reads the value of l_tls_dtor_count
- as 1, __call_tls_dtors decrements the value of l_tls_dtor_count but
- _dl_close_worker does not unload the DSO, having read the old value. This
- is not very different from a case where __call_tls_dtors is called after
- _dl_close_worker on the DSO and hence is an accepted execution. */
-
-#include <stdlib.h>
-#include <ldsodefs.h>
-
-typedef void (*dtor_func) (void *);
-
-struct dtor_list
-{
- dtor_func func;
- void *obj;
- struct link_map *map;
- struct dtor_list *next;
-};
-
-static __thread struct dtor_list *tls_dtor_list;
-static __thread void *dso_symbol_cache;
-static __thread struct link_map *lm_cache;
-
-/* Register a destructor for TLS variables declared with the 'thread_local'
- keyword. This function is only called from code generated by the C++
- compiler. FUNC is the destructor function and OBJ is the object to be
- passed to the destructor. DSO_SYMBOL is the __dso_handle symbol that each
- DSO has at a unique address in its map, added from crtbegin.o during the
- linking phase. */
-int
-__cxa_thread_atexit_impl (dtor_func func, void *obj, void *dso_symbol)
-{
-#ifdef PTR_MANGLE
- PTR_MANGLE (func);
-#endif
-
- /* Prepend. */
- struct dtor_list *new = calloc (1, sizeof (struct dtor_list));
- new->func = func;
- new->obj = obj;
- new->next = tls_dtor_list;
- tls_dtor_list = new;
-
- /* We have to acquire the big lock to prevent a racing dlclose from pulling
- our DSO from underneath us while we're setting up our destructor. */
- __rtld_lock_lock_recursive (GL(dl_load_lock));
-
- /* See if we already encountered the DSO. */
- if (__glibc_unlikely (dso_symbol_cache != dso_symbol))
- {
- ElfW(Addr) caller = (ElfW(Addr)) dso_symbol;
-
- struct link_map *l = _dl_find_dso_for_object (caller);
-
- /* If the address is not recognized the call comes from the main
- program (we hope). */
- lm_cache = l ? l : GL(dl_ns)[LM_ID_BASE]._ns_loaded;
- }
-
- /* This increment may only be concurrently observed either by the decrement
- in __call_tls_dtors since the other l_tls_dtor_count access in
- _dl_close_worker is protected by the dl_load_lock. The execution in
- __call_tls_dtors does not really depend on this value beyond the fact that
- it should be atomic, so Relaxed MO should be sufficient. */
- atomic_fetch_add_relaxed (&lm_cache->l_tls_dtor_count, 1);
- __rtld_lock_unlock_recursive (GL(dl_load_lock));
-
- new->map = lm_cache;
-
- return 0;
-}
-
-/* Call the destructors. This is called either when a thread returns from the
- initial function or when the process exits via the exit function. */
-void
-__call_tls_dtors (void)
-{
- while (tls_dtor_list)
- {
- struct dtor_list *cur = tls_dtor_list;
- dtor_func func = cur->func;
-#ifdef PTR_DEMANGLE
- PTR_DEMANGLE (func);
-#endif
-
- tls_dtor_list = tls_dtor_list->next;
- func (cur->obj);
-
- /* Ensure that the MAP dereference happens before
- l_tls_dtor_count decrement. That way, we protect this access from a
- potential DSO unload in _dl_close_worker, which happens when
- l_tls_dtor_count is 0. See CONCURRENCY NOTES for more detail. */
- atomic_fetch_add_release (&cur->map->l_tls_dtor_count, -1);
- free (cur);
- }
-}
-libc_hidden_def (__call_tls_dtors)
diff --git a/stdlib/dbl2mpn.c b/stdlib/dbl2mpn.c
deleted file mode 100644
index 3872db5c41..0000000000
--- a/stdlib/dbl2mpn.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 1993-2017 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 <gmp.h>
-#include "gmp-impl.h"
-
-/* Convert a `double' to a multi-precision integer representing the
- significand scaled up by the highest possible number of significant bits
- of fraction (DBL_MANT_DIG), and an integral power of two (MPN frexp). */
-
-mp_size_t
-__mpn_extract_double (mp_ptr res_ptr, mp_size_t size,
- int *expt, int *is_neg,
- double value)
-{
-#error "__mpn_extract_double is not implemented for this floating point format"
-}
diff --git a/stdlib/div.c b/stdlib/div.c
deleted file mode 100644
index d525afa1ac..0000000000
--- a/stdlib/div.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Copyright (C) 1992-2017 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/>. */
-
-/*
- * Copyright (c) 1990 Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Chris Torek.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <stdlib.h>
-
-/* Return the `div_t' representation of NUMER over DENOM. */
-div_t
-div (int numer, int denom)
-{
- div_t result;
-
- result.quot = numer / denom;
- result.rem = numer % denom;
-
- return result;
-}
diff --git a/stdlib/divmod_1.c b/stdlib/divmod_1.c
deleted file mode 100644
index 1ef15d6a1e..0000000000
--- a/stdlib/divmod_1.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/* mpn_divmod_1(quot_ptr, dividend_ptr, dividend_size, divisor_limb) --
- Divide (DIVIDEND_PTR,,DIVIDEND_SIZE) by DIVISOR_LIMB.
- Write DIVIDEND_SIZE limbs of quotient at QUOT_PTR.
- Return the single-limb remainder.
- There are no constraints on the value of the divisor.
-
- QUOT_PTR and DIVIDEND_PTR might point to the same limb.
-
-Copyright (C) 1991-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef UMUL_TIME
-#define UMUL_TIME 1
-#endif
-
-#ifndef UDIV_TIME
-#define UDIV_TIME UMUL_TIME
-#endif
-
-/* FIXME: We should be using invert_limb (or invert_normalized_limb)
- here (not udiv_qrnnd). */
-
-mp_limb_t
-mpn_divmod_1 (mp_ptr quot_ptr,
- mp_srcptr dividend_ptr, mp_size_t dividend_size,
- mp_limb_t divisor_limb)
-{
- mp_size_t i;
- mp_limb_t n1, n0, r;
- mp_limb_t dummy __attribute__ ((unused));
-
- /* ??? Should this be handled at all? Rely on callers? */
- if (dividend_size == 0)
- return 0;
-
- /* If multiplication is much faster than division, and the
- dividend is large, pre-invert the divisor, and use
- only multiplications in the inner loop. */
-
- /* This test should be read:
- Does it ever help to use udiv_qrnnd_preinv?
- && Does what we save compensate for the inversion overhead? */
- if (UDIV_TIME > (2 * UMUL_TIME + 6)
- && (UDIV_TIME - (2 * UMUL_TIME + 6)) * dividend_size > UDIV_TIME)
- {
- int normalization_steps;
-
- count_leading_zeros (normalization_steps, divisor_limb);
- if (normalization_steps != 0)
- {
- mp_limb_t divisor_limb_inverted;
-
- divisor_limb <<= normalization_steps;
-
- /* Compute (2**2N - 2**N * DIVISOR_LIMB) / DIVISOR_LIMB. The
- result is a (N+1)-bit approximation to 1/DIVISOR_LIMB, with the
- most significant bit (with weight 2**N) implicit. */
-
- /* Special case for DIVISOR_LIMB == 100...000. */
- if (divisor_limb << 1 == 0)
- divisor_limb_inverted = ~(mp_limb_t) 0;
- else
- udiv_qrnnd (divisor_limb_inverted, dummy,
- -divisor_limb, 0, divisor_limb);
-
- n1 = dividend_ptr[dividend_size - 1];
- r = n1 >> (BITS_PER_MP_LIMB - normalization_steps);
-
- /* Possible optimization:
- if (r == 0
- && divisor_limb > ((n1 << normalization_steps)
- | (dividend_ptr[dividend_size - 2] >> ...)))
- ...one division less... */
-
- for (i = dividend_size - 2; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd_preinv (quot_ptr[i + 1], r, r,
- ((n1 << normalization_steps)
- | (n0 >> (BITS_PER_MP_LIMB - normalization_steps))),
- divisor_limb, divisor_limb_inverted);
- n1 = n0;
- }
- udiv_qrnnd_preinv (quot_ptr[0], r, r,
- n1 << normalization_steps,
- divisor_limb, divisor_limb_inverted);
- return r >> normalization_steps;
- }
- else
- {
- mp_limb_t divisor_limb_inverted;
-
- /* Compute (2**2N - 2**N * DIVISOR_LIMB) / DIVISOR_LIMB. The
- result is a (N+1)-bit approximation to 1/DIVISOR_LIMB, with the
- most significant bit (with weight 2**N) implicit. */
-
- /* Special case for DIVISOR_LIMB == 100...000. */
- if (divisor_limb << 1 == 0)
- divisor_limb_inverted = ~(mp_limb_t) 0;
- else
- udiv_qrnnd (divisor_limb_inverted, dummy,
- -divisor_limb, 0, divisor_limb);
-
- i = dividend_size - 1;
- r = dividend_ptr[i];
-
- if (r >= divisor_limb)
- r = 0;
- else
- {
- quot_ptr[i] = 0;
- i--;
- }
-
- for (; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd_preinv (quot_ptr[i], r, r,
- n0, divisor_limb, divisor_limb_inverted);
- }
- return r;
- }
- }
- else
- {
- if (UDIV_NEEDS_NORMALIZATION)
- {
- int normalization_steps;
-
- count_leading_zeros (normalization_steps, divisor_limb);
- if (normalization_steps != 0)
- {
- divisor_limb <<= normalization_steps;
-
- n1 = dividend_ptr[dividend_size - 1];
- r = n1 >> (BITS_PER_MP_LIMB - normalization_steps);
-
- /* Possible optimization:
- if (r == 0
- && divisor_limb > ((n1 << normalization_steps)
- | (dividend_ptr[dividend_size - 2] >> ...)))
- ...one division less... */
-
- for (i = dividend_size - 2; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd (quot_ptr[i + 1], r, r,
- ((n1 << normalization_steps)
- | (n0 >> (BITS_PER_MP_LIMB - normalization_steps))),
- divisor_limb);
- n1 = n0;
- }
- udiv_qrnnd (quot_ptr[0], r, r,
- n1 << normalization_steps,
- divisor_limb);
- return r >> normalization_steps;
- }
- }
- /* No normalization needed, either because udiv_qrnnd doesn't require
- it, or because DIVISOR_LIMB is already normalized. */
-
- i = dividend_size - 1;
- r = dividend_ptr[i];
-
- if (r >= divisor_limb)
- r = 0;
- else
- {
- quot_ptr[i] = 0;
- i--;
- }
-
- for (; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd (quot_ptr[i], r, r, n0, divisor_limb);
- }
- return r;
- }
-}
diff --git a/stdlib/divrem.c b/stdlib/divrem.c
deleted file mode 100644
index 984d945dee..0000000000
--- a/stdlib/divrem.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/* mpn_divrem -- Divide natural numbers, producing both remainder and
- quotient.
-
-Copyright (C) 1993-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-#include "longlong.h"
-
-/* Divide num (NP/NSIZE) by den (DP/DSIZE) and write
- the NSIZE-DSIZE least significant quotient limbs at QP
- and the DSIZE long remainder at NP. If QEXTRA_LIMBS is
- non-zero, generate that many fraction bits and append them after the
- other quotient limbs.
- Return the most significant limb of the quotient, this is always 0 or 1.
-
- Preconditions:
- 0. NSIZE >= DSIZE.
- 1. The most significant bit of the divisor must be set.
- 2. QP must either not overlap with the input operands at all, or
- QP + DSIZE >= NP must hold true. (This means that it's
- possible to put the quotient in the high part of NUM, right after the
- remainder in NUM.
- 3. NSIZE >= DSIZE, even if QEXTRA_LIMBS is non-zero. */
-
-mp_limb_t
-mpn_divrem (mp_ptr qp, mp_size_t qextra_limbs,
- mp_ptr np, mp_size_t nsize,
- mp_srcptr dp, mp_size_t dsize)
-{
- mp_limb_t most_significant_q_limb = 0;
-
- switch (dsize)
- {
- case 0:
- /* We are asked to divide by zero, so go ahead and do it! (To make
- the compiler not remove this statement, return the value.) */
- return 1 / dsize;
-
- case 1:
- {
- mp_size_t i;
- mp_limb_t n1;
- mp_limb_t d;
-
- d = dp[0];
- n1 = np[nsize - 1];
-
- if (n1 >= d)
- {
- n1 -= d;
- most_significant_q_limb = 1;
- }
-
- qp += qextra_limbs;
- for (i = nsize - 2; i >= 0; i--)
- udiv_qrnnd (qp[i], n1, n1, np[i], d);
- qp -= qextra_limbs;
-
- for (i = qextra_limbs - 1; i >= 0; i--)
- udiv_qrnnd (qp[i], n1, n1, 0, d);
-
- np[0] = n1;
- }
- break;
-
- case 2:
- {
- mp_size_t i;
- mp_limb_t n1, n0, n2;
- mp_limb_t d1, d0;
-
- np += nsize - 2;
- d1 = dp[1];
- d0 = dp[0];
- n1 = np[1];
- n0 = np[0];
-
- if (n1 >= d1 && (n1 > d1 || n0 >= d0))
- {
- sub_ddmmss (n1, n0, n1, n0, d1, d0);
- most_significant_q_limb = 1;
- }
-
- for (i = qextra_limbs + nsize - 2 - 1; i >= 0; i--)
- {
- mp_limb_t q;
- mp_limb_t r;
-
- if (i >= qextra_limbs)
- np--;
- else
- np[0] = 0;
-
- if (n1 == d1)
- {
- /* Q should be either 111..111 or 111..110. Need special
- treatment of this rare case as normal division would
- give overflow. */
- q = ~(mp_limb_t) 0;
-
- r = n0 + d1;
- if (r < d1) /* Carry in the addition? */
- {
- add_ssaaaa (n1, n0, r - d0, np[0], 0, d0);
- qp[i] = q;
- continue;
- }
- n1 = d0 - (d0 != 0);
- n0 = -d0;
- }
- else
- {
- udiv_qrnnd (q, r, n1, n0, d1);
- umul_ppmm (n1, n0, d0, q);
- }
-
- n2 = np[0];
- q_test:
- if (n1 > r || (n1 == r && n0 > n2))
- {
- /* The estimated Q was too large. */
- q--;
-
- sub_ddmmss (n1, n0, n1, n0, 0, d0);
- r += d1;
- if (r >= d1) /* If not carry, test Q again. */
- goto q_test;
- }
-
- qp[i] = q;
- sub_ddmmss (n1, n0, r, n2, n1, n0);
- }
- np[1] = n1;
- np[0] = n0;
- }
- break;
-
- default:
- {
- mp_size_t i;
- mp_limb_t dX, d1, n0;
-
- np += nsize - dsize;
- dX = dp[dsize - 1];
- d1 = dp[dsize - 2];
- n0 = np[dsize - 1];
-
- if (n0 >= dX)
- {
- if (n0 > dX || mpn_cmp (np, dp, dsize - 1) >= 0)
- {
- mpn_sub_n (np, np, dp, dsize);
- n0 = np[dsize - 1];
- most_significant_q_limb = 1;
- }
- }
-
- for (i = qextra_limbs + nsize - dsize - 1; i >= 0; i--)
- {
- mp_limb_t q;
- mp_limb_t n1, n2;
- mp_limb_t cy_limb;
-
- if (i >= qextra_limbs)
- {
- np--;
- n2 = np[dsize];
- }
- else
- {
- n2 = np[dsize - 1];
- MPN_COPY_DECR (np + 1, np, dsize);
- np[0] = 0;
- }
-
- if (n0 == dX)
- /* This might over-estimate q, but it's probably not worth
- the extra code here to find out. */
- q = ~(mp_limb_t) 0;
- else
- {
- mp_limb_t r;
-
- udiv_qrnnd (q, r, n0, np[dsize - 1], dX);
- umul_ppmm (n1, n0, d1, q);
-
- while (n1 > r || (n1 == r && n0 > np[dsize - 2]))
- {
- q--;
- r += dX;
- if (r < dX) /* I.e. "carry in previous addition?" */
- break;
- n1 -= n0 < d1;
- n0 -= d1;
- }
- }
-
- /* Possible optimization: We already have (q * n0) and (1 * n1)
- after the calculation of q. Taking advantage of that, we
- could make this loop make two iterations less. */
-
- cy_limb = mpn_submul_1 (np, dp, dsize, q);
-
- if (n2 != cy_limb)
- {
- mpn_add_n (np, np, dp, dsize);
- q--;
- }
-
- qp[i] = q;
- n0 = np[dsize - 1];
- }
- }
- }
-
- return most_significant_q_limb;
-}
diff --git a/stdlib/drand48-iter.c b/stdlib/drand48-iter.c
deleted file mode 100644
index f59c803138..0000000000
--- a/stdlib/drand48-iter.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <stdint.h>
-#include <sys/types.h>
-
-/* Global state for non-reentrant functions. */
-struct drand48_data __libc_drand48_data;
-
-
-int
-__drand48_iterate (unsigned short int xsubi[3], struct drand48_data *buffer)
-{
- uint64_t X;
- uint64_t result;
-
- /* Initialize buffer, if not yet done. */
- if (__glibc_unlikely (!buffer->__init))
- {
- buffer->__a = 0x5deece66dull;
- buffer->__c = 0xb;
- buffer->__init = 1;
- }
-
- /* Do the real work. We choose a data type which contains at least
- 48 bits. Because we compute the modulus it does not care how
- many bits really are computed. */
-
- X = (uint64_t) xsubi[2] << 32 | (uint32_t) xsubi[1] << 16 | xsubi[0];
-
- result = X * buffer->__a + buffer->__c;
-
- xsubi[0] = result & 0xffff;
- xsubi[1] = (result >> 16) & 0xffff;
- xsubi[2] = (result >> 32) & 0xffff;
-
- return 0;
-}
diff --git a/stdlib/drand48.c b/stdlib/drand48.c
deleted file mode 100644
index b98759a32e..0000000000
--- a/stdlib/drand48.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-
-double
-drand48 (void)
-{
- double result;
-
- (void) __erand48_r (__libc_drand48_data.__x, &__libc_drand48_data, &result);
-
- return result;
-}
diff --git a/stdlib/drand48_r.c b/stdlib/drand48_r.c
deleted file mode 100644
index 801edf43a0..0000000000
--- a/stdlib/drand48_r.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <errno.h>
-#include <math.h>
-#include <stdlib.h>
-
-int
-drand48_r (struct drand48_data *buffer, double *result)
-{
- return __erand48_r (buffer->__x, buffer, result);
-}
diff --git a/stdlib/erand48.c b/stdlib/erand48.c
deleted file mode 100644
index b209189ba3..0000000000
--- a/stdlib/erand48.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-
-double
-erand48 (unsigned short int xsubi[3])
-{
- double result;
-
- (void) __erand48_r (xsubi, &__libc_drand48_data, &result);
-
- return result;
-}
diff --git a/stdlib/erand48_r.c b/stdlib/erand48_r.c
deleted file mode 100644
index 8f6d3fad61..0000000000
--- a/stdlib/erand48_r.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <ieee754.h>
-#include <stdlib.h>
-#include <limits.h>
-
-
-int
-__erand48_r (unsigned short int xsubi[3], struct drand48_data *buffer,
- double *result)
-{
- union ieee754_double temp;
-
- /* Compute next state. */
- if (__drand48_iterate (xsubi, buffer) < 0)
- return -1;
-
- /* Construct a positive double with the 48 random bits distributed over
- its fractional part so the resulting FP number is [0.0,1.0). */
-
- temp.ieee.negative = 0;
- temp.ieee.exponent = IEEE754_DOUBLE_BIAS;
- temp.ieee.mantissa0 = (xsubi[2] << 4) | (xsubi[1] >> 12);
- temp.ieee.mantissa1 = ((xsubi[1] & 0xfff) << 20) | (xsubi[0] << 4);
-
- /* Please note the lower 4 bits of mantissa1 are always 0. */
- *result = temp.d - 1.0;
-
- return 0;
-}
-weak_alias (__erand48_r, erand48_r)
diff --git a/stdlib/errno.h b/stdlib/errno.h
deleted file mode 100644
index 65f2f4570c..0000000000
--- a/stdlib/errno.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (C) 1991-2017 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/>. */
-
-/*
- * ISO C99 Standard: 7.5 Errors <errno.h>
- */
-
-#ifndef _ERRNO_H
-
-/* The includer defined __need_Emath if he wants only the definitions
- of EDOM and ERANGE, and not everything else. */
-#ifndef __need_Emath
-# define _ERRNO_H 1
-# include <features.h>
-#endif
-
-__BEGIN_DECLS
-
-/* Get the error number constants from the system-specific file.
- This file will test __need_Emath and _ERRNO_H. */
-#include <bits/errno.h>
-#undef __need_Emath
-
-#ifdef _ERRNO_H
-
-/* Declare the `errno' variable, unless it's defined as a macro by
- bits/errno.h. This is the case in GNU, where it is a per-thread
- variable. This redeclaration using the macro still works, but it
- will be a function declaration without a prototype and may trigger
- a -Wstrict-prototypes warning. */
-#ifndef errno
-extern int errno;
-#endif
-
-#ifdef __USE_GNU
-
-/* The full and simple forms of the name with which the program was
- invoked. These variables are set up automatically at startup based on
- the value of ARGV[0] (this works only if you use GNU ld). */
-extern char *program_invocation_name, *program_invocation_short_name;
-#endif /* __USE_GNU */
-#endif /* _ERRNO_H */
-
-__END_DECLS
-
-#endif /* _ERRNO_H */
-
-/* The Hurd <bits/errno.h> defines `error_t' as an enumerated type so
- that printing `error_t' values in the debugger shows the names. We
- might need this definition sometimes even if this file was included
- before. */
-#if defined __USE_GNU || defined __need_error_t
-# ifndef __error_t_defined
-typedef int error_t;
-# define __error_t_defined 1
-# endif
-# undef __need_error_t
-#endif
diff --git a/stdlib/exit.c b/stdlib/exit.c
deleted file mode 100644
index c0b6d666c7..0000000000
--- a/stdlib/exit.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Copyright (C) 1991-2017 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>
-#include <sysdep.h>
-#include "exit.h"
-
-#include "set-hooks.h"
-DEFINE_HOOK (__libc_atexit, (void))
-
-
-/* Call all functions registered with `atexit' and `on_exit',
- in the reverse of the order in which they were registered
- perform stdio cleanup, and terminate program execution with STATUS. */
-void
-attribute_hidden
-__run_exit_handlers (int status, struct exit_function_list **listp,
- bool run_list_atexit, bool run_dtors)
-{
- /* First, call the TLS destructors. */
-#ifndef SHARED
- if (&__call_tls_dtors != NULL)
-#endif
- if (run_dtors)
- __call_tls_dtors ();
-
- /* We do it this way to handle recursive calls to exit () made by
- the functions registered with `atexit' and `on_exit'. We call
- everyone on the list and use the status value in the last
- exit (). */
- while (*listp != NULL)
- {
- struct exit_function_list *cur = *listp;
-
- while (cur->idx > 0)
- {
- const struct exit_function *const f =
- &cur->fns[--cur->idx];
- switch (f->flavor)
- {
- void (*atfct) (void);
- void (*onfct) (int status, void *arg);
- void (*cxafct) (void *arg, int status);
-
- case ef_free:
- case ef_us:
- break;
- case ef_on:
- onfct = f->func.on.fn;
-#ifdef PTR_DEMANGLE
- PTR_DEMANGLE (onfct);
-#endif
- onfct (status, f->func.on.arg);
- break;
- case ef_at:
- atfct = f->func.at;
-#ifdef PTR_DEMANGLE
- PTR_DEMANGLE (atfct);
-#endif
- atfct ();
- break;
- case ef_cxa:
- cxafct = f->func.cxa.fn;
-#ifdef PTR_DEMANGLE
- PTR_DEMANGLE (cxafct);
-#endif
- cxafct (f->func.cxa.arg, status);
- break;
- }
- }
-
- *listp = cur->next;
- if (*listp != NULL)
- /* Don't free the last element in the chain, this is the statically
- allocate element. */
- free (cur);
- }
-
- if (run_list_atexit)
- RUN_HOOK (__libc_atexit, ());
-
- _exit (status);
-}
-
-
-void
-exit (int status)
-{
- __run_exit_handlers (status, &__exit_funcs, true, true);
-}
-libc_hidden_def (exit)
diff --git a/stdlib/exit.h b/stdlib/exit.h
deleted file mode 100644
index 7f2e679246..0000000000
--- a/stdlib/exit.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Copyright (C) 1991-2017 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 _EXIT_H
-#define _EXIT_H 1
-
-#include <stdbool.h>
-#include <stdint.h>
-
-enum
-{
- ef_free, /* `ef_free' MUST be zero! */
- ef_us,
- ef_on,
- ef_at,
- ef_cxa
-};
-
-struct exit_function
- {
- /* `flavour' should be of type of the `enum' above but since we need
- this element in an atomic operation we have to use `long int'. */
- long int flavor;
- union
- {
- void (*at) (void);
- struct
- {
- void (*fn) (int status, void *arg);
- void *arg;
- } on;
- struct
- {
- void (*fn) (void *arg, int status);
- void *arg;
- void *dso_handle;
- } cxa;
- } func;
- };
-struct exit_function_list
- {
- struct exit_function_list *next;
- size_t idx;
- struct exit_function fns[32];
- };
-extern struct exit_function_list *__exit_funcs attribute_hidden;
-extern struct exit_function_list *__quick_exit_funcs attribute_hidden;
-
-extern struct exit_function *__new_exitfn (struct exit_function_list **listp);
-extern uint64_t __new_exitfn_called attribute_hidden;
-
-extern void __run_exit_handlers (int status,
- struct exit_function_list **listp,
- bool run_list_atexit, bool run_dtors)
- attribute_hidden __attribute__ ((__noreturn__));
-
-extern int __internal_atexit (void (*func) (void *), void *arg, void *d,
- struct exit_function_list **listp)
- attribute_hidden;
-extern int __cxa_at_quick_exit (void (*func) (void *), void *d);
-
-
-#endif /* exit.h */
diff --git a/stdlib/fmtmsg.c b/stdlib/fmtmsg.c
deleted file mode 100644
index ac0c3aa28a..0000000000
--- a/stdlib/fmtmsg.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/* Copyright (C) 1997-2017 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 <fmtmsg.h>
-#include <libc-lock.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/syslog.h>
-#include <wchar.h>
-
-
-/* We have global data, protect the modification. */
-__libc_lock_define_initialized (static, lock)
-
-
-enum
-{
- label_mask = 0x01,
- severity_mask = 0x02,
- text_mask = 0x04,
- action_mask = 0x08,
- tag_mask = 0x10,
- all_mask = label_mask | severity_mask | text_mask | action_mask | tag_mask
-};
-
-static const struct
-{
- uint32_t len;
- /* Adjust the size if new elements are added. */
- const char name[12];
-} keywords[] =
- {
- { 5, "label" },
- { 8, "severity" },
- { 4, "text" },
- { 6, "action"},
- { 3, "tag" }
- };
-#define NKEYWORDS (sizeof( keywords) / sizeof (keywords[0]))
-
-
-struct severity_info
-{
- int severity;
- const char *string;
- struct severity_info *next;
-};
-
-
-/* List of known severities. */
-static const struct severity_info nosev =
-{
- MM_NOSEV, "", NULL
-};
-static const struct severity_info haltsev =
-{
- MM_HALT, "HALT", (struct severity_info *) &nosev
-};
-static const struct severity_info errorsev =
-{
- MM_ERROR, "ERROR", (struct severity_info *) &haltsev
-};
-static const struct severity_info warningsev =
-{
- MM_WARNING, "WARNING", (struct severity_info *) &errorsev
-};
-static const struct severity_info infosev =
-{
- MM_INFO, "INFO", (struct severity_info *) &warningsev
-};
-
-/* Start of the list. */
-static struct severity_info *severity_list = (struct severity_info *) &infosev;
-
-/* Mask of values we will print. */
-static int print;
-
-/* Prototypes for local functions. */
-static void init (void);
-static int internal_addseverity (int severity, const char *string)
- internal_function;
-
-
-int
-fmtmsg (long int classification, const char *label, int severity,
- const char *text, const char *action, const char *tag)
-{
- __libc_once_define (static, once);
- struct severity_info *severity_rec;
-
- /* Make sure everything is initialized. */
- __libc_once (once, init);
-
- /* Start the real work. First check whether the input is ok. */
- if (label != MM_NULLLBL)
- {
- /* Must be two fields, separated by a colon. */
- const char *cp = strchr (label, ':');
- if (cp == NULL)
- return MM_NOTOK;
-
- /* The first field must not contain more than 10 bytes. */
- if (cp - label > 10
- /* The second field must not have more than 14 bytes. */
- || strlen (cp + 1) > 14)
- return MM_NOTOK;
- }
-
-#ifdef __libc_ptf_call
- /* We do not want this call to be cut short by a thread
- cancellation. Therefore disable cancellation for now. */
- int state = PTHREAD_CANCEL_ENABLE;
- __libc_ptf_call (__pthread_setcancelstate,
- (PTHREAD_CANCEL_DISABLE, &state), 0);
-#endif
-
- __libc_lock_lock (lock);
-
- for (severity_rec = severity_list; severity_rec != NULL;
- severity_rec = severity_rec->next)
- if (severity == severity_rec->severity)
- /* Bingo. */
- break;
-
- /* If we don't know anything about the severity level return an error. */
- int result = MM_NOTOK;
- if (severity_rec != NULL)
- {
- result = MM_OK;
-
- /* Now we can print. */
- if (classification & MM_PRINT)
- {
- int do_label = (print & label_mask) && label != MM_NULLLBL;
- int do_severity = (print & severity_mask) && severity != MM_NULLSEV;
- int do_text = (print & text_mask) && text != MM_NULLTXT;
- int do_action = (print & action_mask) && action != MM_NULLACT;
- int do_tag = (print & tag_mask) && tag != MM_NULLTAG;
- int need_colon = (do_label
- && (do_severity | do_text | do_action | do_tag));
-
- if (__fxprintf (stderr, "%s%s%s%s%s%s%s%s%s%s\n",
- do_label ? label : "",
- need_colon ? ": " : "",
- do_severity ? severity_rec->string : "",
- do_severity && (do_text | do_action | do_tag)
- ? ": " : "",
- do_text ? text : "",
- do_text && (do_action | do_tag) ? "\n" : "",
- do_action ? "TO FIX: " : "",
- do_action ? action : "",
- do_action && do_tag ? " " : "",
- do_tag ? tag : "") < 0)
- /* Oh, oh. An error occurred during the output. */
- result = MM_NOMSG;
- }
-
- if (classification & MM_CONSOLE)
- {
- int do_label = label != MM_NULLLBL;
- int do_severity = severity != MM_NULLSEV;
- int do_text = text != MM_NULLTXT;
- int do_action = action != MM_NULLACT;
- int do_tag = tag != MM_NULLTAG;
- int need_colon = (do_label
- && (do_severity | do_text | do_action | do_tag));
-
- syslog (LOG_ERR, "%s%s%s%s%s%s%s%s%s%s\n",
- do_label ? label : "",
- need_colon ? ": " : "",
- do_severity ? severity_rec->string : "",
- do_severity && (do_text | do_action | do_tag) ? ": " : "",
- do_text ? text : "",
- do_text && (do_action | do_tag) ? "\n" : "",
- do_action ? "TO FIX: " : "",
- do_action ? action : "",
- do_action && do_tag ? " " : "",
- do_tag ? tag : "");
- }
- }
-
- __libc_lock_unlock (lock);
-
-#ifdef __libc_ptf_call
- __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0);
-#endif
-
- return result;
-}
-
-
-/* Initialize from environment variable content. */
-static void
-init (void)
-{
- const char *msgverb_var = getenv ("MSGVERB");
- const char *sevlevel_var = getenv ("SEV_LEVEL");
-
- if (msgverb_var != NULL && msgverb_var[0] != '\0')
- {
- /* Using this extra variable allows us to work without locking. */
- do
- {
- size_t cnt;
-
- for (cnt = 0; cnt < NKEYWORDS; ++cnt)
- if (memcmp (msgverb_var,
- keywords[cnt].name, keywords[cnt].len) == 0
- && (msgverb_var[keywords[cnt].len] == ':'
- || msgverb_var[keywords[cnt].len] == '\0'))
- break;
-
- if (cnt < NKEYWORDS)
- {
- print |= 1 << cnt;
-
- msgverb_var += keywords[cnt].len;
- if (msgverb_var[0] == ':')
- ++msgverb_var;
- }
- else
- {
- /* We found an illegal keyword in the environment
- variable. The specifications say that we print all
- fields. */
- print = all_mask;
- break;
- }
- }
- while (msgverb_var[0] != '\0');
- }
- else
- print = all_mask;
-
-
- if (sevlevel_var != NULL)
- {
- __libc_lock_lock (lock);
-
- while (sevlevel_var[0] != '\0')
- {
- const char *end = __strchrnul (sevlevel_var, ':');
- int level;
-
- /* First field: keyword. This is not used here but it must be
- present. */
- while (sevlevel_var < end)
- if (*sevlevel_var++ == ',')
- break;
-
- if (sevlevel_var < end)
- {
- /* Second field: severity level, a number. */
- char *cp;
-
- level = strtol (sevlevel_var, &cp, 0);
- if (cp != sevlevel_var && cp < end && *cp++ == ','
- && level > MM_INFO)
- {
- const char *new_string;
-
- new_string = __strndup (cp, end - cp);
-
- if (new_string != NULL
- && (internal_addseverity (level, new_string)
- != MM_OK))
- free ((char *) new_string);
- }
- }
-
- sevlevel_var = end + (*end == ':' ? 1 : 0);
- }
-
- __libc_lock_unlock (lock);
- }
-}
-
-
-/* Add the new entry to the list. */
-static int
-internal_function
-internal_addseverity (int severity, const char *string)
-{
- struct severity_info *runp, *lastp;
- int result = MM_OK;
-
- /* First see if there is already a record for the severity level. */
- for (runp = severity_list, lastp = NULL; runp != NULL; runp = runp->next)
- if (runp->severity == severity)
- break;
- else
- lastp = runp;
-
- if (runp != NULL)
- {
- if (string != NULL)
- /* Change the string. */
- runp->string = string;
- else
- {
- /* Remove the severity class. */
- if (lastp == NULL)
- severity_list = runp->next;
- else
- lastp->next = runp->next;
-
- free (runp);
- }
- }
- else if (string != NULL)
- {
- runp = malloc (sizeof (*runp));
- if (runp == NULL)
- result = MM_NOTOK;
- else
- {
- runp->severity = severity;
- runp->next = severity_list;
- runp->string = string;
- severity_list = runp;
- }
- }
- else
- /* We tried to remove a non-existing severity class. */
- result = MM_NOTOK;
-
- return result;
-}
-
-
-/* Add new severity level or remove old one. */
-int
-__addseverity (int severity, const char *string)
-{
- int result;
-
- /* Prevent illegal SEVERITY values. */
- if (severity <= MM_INFO)
- return MM_NOTOK;
-
- /* Protect the global data. */
- __libc_lock_lock (lock);
-
- /* Do the real work. */
- result = internal_addseverity (severity, string);
-
- /* Release the lock. */
- __libc_lock_unlock (lock);
-
- return result;
-}
-weak_alias (__addseverity, addseverity)
-
-
-libc_freeres_fn (free_mem)
-{
- struct severity_info *runp = severity_list;
-
- while (runp != NULL)
- if (runp->severity > MM_INFO)
- {
- /* This is data we have to release. */
- struct severity_info *here = runp;
- runp = runp->next;
- free (here);
- }
- else
- runp = runp->next;
-}
diff --git a/stdlib/fmtmsg.h b/stdlib/fmtmsg.h
deleted file mode 100644
index 0b9069ca10..0000000000
--- a/stdlib/fmtmsg.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/* Message display handling.
- Copyright (C) 1997-2017 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 __FMTMSG_H
-#define __FMTMSG_H 1
-
-#include <features.h>
-
-
-__BEGIN_DECLS
-
-/* Values to control `fmtmsg' function. */
-enum
-{
- MM_HARD = 0x001, /* Source of the condition is hardware. */
-#define MM_HARD MM_HARD
- MM_SOFT = 0x002, /* Source of the condition is software. */
-#define MM_SOFT MM_SOFT
- MM_FIRM = 0x004, /* Source of the condition is firmware. */
-#define MM_FIRM MM_FIRM
- MM_APPL = 0x008, /* Condition detected by application. */
-#define MM_APPL MM_APPL
- MM_UTIL = 0x010, /* Condition detected by utility. */
-#define MM_UTIL MM_UTIL
- MM_OPSYS = 0x020, /* Condition detected by operating system. */
-#define MM_OPSYS MM_OPSYS
- MM_RECOVER = 0x040, /* Recoverable error. */
-#define MM_RECOVER MM_RECOVER
- MM_NRECOV = 0x080, /* Non-recoverable error. */
-#define MM_NRECOV MM_NRECOV
- MM_PRINT = 0x100, /* Display message in standard error. */
-#define MM_PRINT MM_PRINT
- MM_CONSOLE = 0x200 /* Display message on system console. */
-#define MM_CONSOLE MM_CONSOLE
-};
-
-/* Values to be for SEVERITY parameter of `fmtmsg'. */
-enum
-{
- MM_NOSEV = 0, /* No severity level provided for the message. */
-#define MM_NOSEV MM_NOSEV
- MM_HALT, /* Error causing application to halt. */
-#define MM_HALT MM_HALT
- MM_ERROR, /* Application has encountered a non-fatal fault. */
-#define MM_ERROR MM_ERROR
- MM_WARNING, /* Application has detected unusual non-error
- condition. */
-#define MM_WARNING MM_WARNING
- MM_INFO /* Informative message. */
-#define MM_INFO MM_INFO
-};
-
-
-/* Macros which can be used as null values for the arguments of `fmtmsg'. */
-#define MM_NULLLBL ((char *) 0)
-#define MM_NULLSEV 0
-#define MM_NULLMC ((long int) 0)
-#define MM_NULLTXT ((char *) 0)
-#define MM_NULLACT ((char *) 0)
-#define MM_NULLTAG ((char *) 0)
-
-
-/* Possible return values of `fmtmsg'. */
-enum
-{
- MM_NOTOK = -1,
-#define MM_NOTOK MM_NOTOK
- MM_OK = 0,
-#define MM_OK MM_OK
- MM_NOMSG = 1,
-#define MM_NOMSG MM_NOMSG
- MM_NOCON = 4
-#define MM_NOCON MM_NOCON
-};
-
-
-/* Print message with given CLASSIFICATION, LABEL, SEVERITY, TEXT, ACTION
- and TAG to console or standard error. */
-extern int fmtmsg (long int __classification, const char *__label,
- int __severity, const char *__text,
- const char *__action, const char *__tag);
-
-#ifdef __USE_MISC
-/* Add or remove severity level. */
-extern int addseverity (int __severity, const char *__string) __THROW;
-#endif
-
-__END_DECLS
-
-#endif /* fmtmsg.h */
diff --git a/stdlib/fpioconst.c b/stdlib/fpioconst.c
deleted file mode 100644
index a0563b9676..0000000000
--- a/stdlib/fpioconst.c
+++ /dev/null
@@ -1,1329 +0,0 @@
-/* Table of MP integer constants 10^(2^i), used for floating point <-> decimal.
- Copyright (C) 1995-2017 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 "fpioconst.h"
-#include <gmp-mparam.h> /* This defines BITS_PER_MP_LIMB. */
-
-/* First page : 32-bit limbs
- Second page : 64-bit limbs
- Last page : table of pointers
-
- The tables (apart from internal #if conditions) may be generated
- with gen-fpioconst.c.
- */
-
-#if BITS_PER_MP_LIMB == 32
-
-/* Table with constants of 10^(2^i), i=0..12 for 32-bit limbs. */
-
-const mp_limb_t __tens[] =
-{
-#define TENS_P0_IDX 0
-#define TENS_P0_SIZE 3
- [TENS_P0_IDX] = 0x00000000, 0x00000000, 0x0000000a,
-
-#define TENS_P1_IDX (TENS_P0_IDX + TENS_P0_SIZE)
-#define TENS_P1_SIZE 3
- [TENS_P1_IDX] = 0x00000000, 0x00000000, 0x00000064,
-
-#define TENS_P2_IDX (TENS_P1_IDX + TENS_P1_SIZE)
-#define TENS_P2_SIZE 3
- [TENS_P2_IDX] = 0x00000000, 0x00000000, 0x00002710,
-
-#define TENS_P3_IDX (TENS_P2_IDX + TENS_P2_SIZE)
-#define TENS_P3_SIZE 3
- [TENS_P3_IDX] = 0x00000000, 0x00000000, 0x05f5e100,
-
-#define TENS_P4_IDX (TENS_P3_IDX + TENS_P3_SIZE)
-#define TENS_P4_SIZE 4
- [TENS_P4_IDX] = 0x00000000, 0x00000000, 0x6fc10000, 0x002386f2,
-
-#define TENS_P5_IDX (TENS_P4_IDX + TENS_P4_SIZE)
-#define TENS_P5_SIZE 6
- [TENS_P5_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x85acef81, 0x2d6d415b,
- 0x000004ee,
-
-#define TENS_P6_IDX (TENS_P5_IDX + TENS_P5_SIZE)
-#define TENS_P6_SIZE 9
- [TENS_P6_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xbf6a1f01,
- 0x6e38ed64, 0xdaa797ed, 0xe93ff9f4, 0x00184f03,
-
-#define TENS_P7_IDX (TENS_P6_IDX + TENS_P6_SIZE)
-#define TENS_P7_SIZE 16
- [TENS_P7_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x2e953e01, 0x03df9909, 0x0f1538fd, 0x2374e42f, 0xd3cff5ec,
- 0xc404dc08, 0xbccdb0da, 0xa6337f19, 0xe91f2603, 0x0000024e,
-
-#define TENS_P8_IDX (TENS_P7_IDX + TENS_P7_SIZE)
-#define TENS_P8_SIZE 29
- [TENS_P8_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x982e7c01,
- 0xbed3875b, 0xd8d99f72, 0x12152f87, 0x6bde50c6, 0xcf4a6e70, 0xd595d80f,
- 0x26b2716e, 0xadc666b0, 0x1d153624, 0x3c42d35a, 0x63ff540e, 0xcc5573c0,
- 0x65f9ef17, 0x55bc28f2, 0x80dcc7f7, 0xf46eeddc, 0x5fdcefce, 0x000553f7,
-
-#define TENS_P9_IDX (TENS_P8_IDX + TENS_P8_SIZE)
-#define TENS_P9_SIZE 56
- [TENS_P9_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0xfc6cf801, 0x77f27267, 0x8f9546dc, 0x5d96976f, 0xb83a8a97,
- 0xc31e1ad9, 0x46c40513, 0x94e65747, 0xc88976c1, 0x4475b579, 0x28f8733b,
- 0xaa1da1bf, 0x703ed321, 0x1e25cfea, 0xb21a2f22, 0xbc51fb2e, 0x96e14f5d,
- 0xbfa3edac, 0x329c57ae, 0xe7fc7153, 0xc3fc0695, 0x85a91924, 0xf95f635e,
- 0xb2908ee0, 0x93abade4, 0x1366732a, 0x9449775c, 0x69be5b0e, 0x7343afac,
- 0xb099bc81, 0x45a71d46, 0xa2699748, 0x8cb07303, 0x8a0b1f13, 0x8cab8a97,
- 0xc1d238d9, 0x633415d4, 0x0000001c,
-
-#define TENS_P10_IDX (TENS_P9_IDX + TENS_P9_SIZE)
-#define TENS_P10_SIZE 109
- [TENS_P10_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2919f001,
- 0xf55b2b72, 0x6e7c215b, 0x1ec29f86, 0x991c4e87, 0x15c51a88, 0x140ac535,
- 0x4c7d1e1a, 0xcc2cd819, 0x0ed1440e, 0x896634ee, 0x7de16cfb, 0x1e43f61f,
- 0x9fce837d, 0x231d2b9c, 0x233e55c7, 0x65dc60d7, 0xf451218b, 0x1c5cd134,
- 0xc9635986, 0x922bbb9f, 0xa7e89431, 0x9f9f2a07, 0x62be695a, 0x8e1042c4,
- 0x045b7a74, 0x1abe1de3, 0x8ad822a5, 0xba34c411, 0xd814b505, 0xbf3fdeb3,
- 0x8fc51a16, 0xb1b896bc, 0xf56deeec, 0x31fb6bfd, 0xb6f4654b, 0x101a3616,
- 0x6b7595fb, 0xdc1a47fe, 0x80d98089, 0x80bda5a5, 0x9a202882, 0x31eb0f66,
- 0xfc8f1f90, 0x976a3310, 0xe26a7b7e, 0xdf68368a, 0x3ce3a0b8, 0x8e4262ce,
- 0x75a351a2, 0x6cb0b6c9, 0x44597583, 0x31b5653f, 0xc356e38a, 0x35faaba6,
- 0x0190fba0, 0x9fc4ed52, 0x88bc491b, 0x1640114a, 0x005b8041, 0xf4f3235e,
- 0x1e8d4649, 0x36a8de06, 0x73c55349, 0xa7e6bd2a, 0xc1a6970c, 0x47187094,
- 0xd2db49ef, 0x926c3f5b, 0xae6209d4, 0x2d433949, 0x34f4a3c6, 0xd4305d94,
- 0xd9d61a05, 0x00000325,
-
-#if FPIOCONST_HAVE_EXTENDED_RANGE
-# define TENS_P11_IDX (TENS_P10_IDX + TENS_P10_SIZE)
-# define TENS_P11_SIZE 215
- [TENS_P11_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x1333e001, 0xe3096865, 0xb27d4d3f, 0x49e28dcf, 0xec2e4721,
- 0xee87e354, 0xb6067584, 0x368b8abb, 0xa5e5a191, 0x2ed56d55, 0xfd827773,
- 0xea50d142, 0x51b78db2, 0x98342c9e, 0xc850dabc, 0x866ed6f1, 0x19342c12,
- 0x92794987, 0xd2f869c2, 0x66912e4a, 0x71c7fd8f, 0x57a7842d, 0x235552eb,
- 0xfb7fedcc, 0xf3861ce0, 0x38209ce1, 0x9713b449, 0x34c10134, 0x8c6c54de,
- 0xa7a8289c, 0x2dbb6643, 0xe3cb64f3, 0x8074ff01, 0xe3892ee9, 0x10c17f94,
- 0xa8f16f92, 0xa8281ed6, 0x967abbb3, 0x5a151440, 0x9952fbed, 0x13b41e44,
- 0xafe609c3, 0xa2bca416, 0xf111821f, 0xfb1264b4, 0x91bac974, 0xd6c7d6ab,
- 0x8e48ff35, 0x4419bd43, 0xc4a65665, 0x685e5510, 0x33554c36, 0xab498697,
- 0x0dbd21fe, 0x3cfe491d, 0x982da466, 0xcbea4ca7, 0x9e110c7b, 0x79c56b8a,
- 0x5fc5a047, 0x84d80e2e, 0x1aa9f444, 0x730f203c, 0x6a57b1ab, 0xd752f7a6,
- 0x87a7dc62, 0x944545ff, 0x40660460, 0x77c1a42f, 0xc9ac375d, 0xe866d7ef,
- 0x744695f0, 0x81428c85, 0xa1fc6b96, 0xd7917c7b, 0x7bf03c19, 0x5b33eb41,
- 0x5715f791, 0x8f6cae5f, 0xdb0708fd, 0xb125ac8e, 0x785ce6b7, 0x56c6815b,
- 0x6f46eadb, 0x4eeebeee, 0x195355d8, 0xa244de3c, 0x9d7389c0, 0x53761abd,
- 0xcf99d019, 0xde9ec24b, 0x0d76ce39, 0x70beb181, 0x2e55ecee, 0xd5f86079,
- 0xf56d9d4b, 0xfb8886fb, 0x13ef5a83, 0x408f43c5, 0x3f3389a4, 0xfad37943,
- 0x58ccf45c, 0xf82df846, 0x415c7f3e, 0x2915e818, 0x8b3d5cf4, 0x6a445f27,
- 0xf8dbb57a, 0xca8f0070, 0x8ad803ec, 0xb2e87c34, 0x038f9245, 0xbedd8a6c,
- 0xc7c9dee0, 0x0eac7d56, 0x2ad3fa14, 0xe0de0840, 0xf775677c, 0xf1bd0ad5,
- 0x92be221e, 0x87fa1fb9, 0xce9d04a4, 0xd2c36fa9, 0x3f6f7024, 0xb028af62,
- 0x907855ee, 0xd83e49d6, 0x4efac5dc, 0xe7151aab, 0x77cd8c6b, 0x0a753b7d,
- 0x0af908b4, 0x8c983623, 0xe50f3027, 0x94222771, 0x1d08e2d6, 0xf7e928e6,
- 0xf2ee5ca6, 0x1b61b93c, 0x11eb962b, 0x9648b21c, 0xce2bcba1, 0x34f77154,
- 0x7bbebe30, 0xe526a319, 0x8ce329ac, 0xde4a74d2, 0xb5dc53d5, 0x0009e8b3,
-
-# define TENS_P12_IDX (TENS_P11_IDX + TENS_P11_SIZE)
-# define TENS_P12_SIZE 428
- [TENS_P12_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2a67c001,
- 0xd4724e8d, 0x8efe7ae7, 0xf89a1e90, 0xef084117, 0x54e05154, 0x13b1bb51,
- 0x506be829, 0xfb29b172, 0xe599574e, 0xf0da6146, 0x806c0ed3, 0xb86ae5be,
- 0x45155e93, 0xc0591cc2, 0x7e1e7c34, 0x7c4823da, 0x1d1f4cce, 0x9b8ba1e8,
- 0xd6bfdf75, 0xe341be10, 0xc2dfae78, 0x016b67b2, 0x0f237f1a, 0x3dbeabcd,
- 0xaf6a2574, 0xcab3e6d7, 0x142e0e80, 0x61959127, 0x2c234811, 0x87009701,
- 0xcb4bf982, 0xf8169c84, 0x88052f8c, 0x68dde6d4, 0xbc131761, 0xff0b0905,
- 0x54ab9c41, 0x7613b224, 0x1a1c304e, 0x3bfe167b, 0x441c2d47, 0x4f6cea9c,
- 0x78f06181, 0xeb659fb8, 0x30c7ae41, 0x947e0d0e, 0xa1ebcad7, 0xd97d9556,
- 0x2130504d, 0x1a8309cb, 0xf2acd507, 0x3f8ec72a, 0xfd82373a, 0x95a842bc,
- 0x280f4d32, 0xf3618ac0, 0x811a4f04, 0x6dc3a5b4, 0xd3967a1b, 0x15b8c898,
- 0xdcfe388f, 0x454eb2a0, 0x8738b909, 0x10c4e996, 0x2bd9cc11, 0x3297cd0c,
- 0x655fec30, 0xae0725b1, 0xf4090ee8, 0x037d19ee, 0x398c6fed, 0x3b9af26b,
- 0xc994a450, 0xb5341743, 0x75a697b2, 0xac50b9c1, 0x3ccb5b92, 0xffe06205,
- 0xa8329761, 0xdfea5242, 0xeb83cadb, 0xe79dadf7, 0x3c20ee69, 0x1e0a6817,
- 0x7021b97a, 0x743074fa, 0x176ca776, 0x77fb8af6, 0xeca19beb, 0x92baf1de,
- 0xaf63b712, 0xde35c88b, 0xa4eb8f8c, 0xe137d5e9, 0x40b464a0, 0x87d1cde8,
- 0x42923bbd, 0xcd8f62ff, 0x2e2690f3, 0x095edc16, 0x59c89f1b, 0x1fa8fd5d,
- 0x5138753d, 0x390a2b29, 0x80152f18, 0x2dd8d925, 0xf984d83e, 0x7a872e74,
- 0xc19e1faf, 0xed4d542d, 0xecf9b5d0, 0x9462ea75, 0xc53c0adf, 0x0caea134,
- 0x37a2d439, 0xc8fa2e8a, 0x2181327e, 0x6e7bb827, 0x2d240820, 0x50be10e0,
- 0x5893d4b8, 0xab312bb9, 0x1f2b2322, 0x440b3f25, 0xbf627ede, 0x72dac789,
- 0xb608b895, 0x78787e2a, 0x86deb3f0, 0x6fee7aab, 0xbb9373f4, 0x27ecf57b,
- 0xf7d8b57e, 0xfca26a9f, 0x3d04e8d2, 0xc9df13cb, 0x3172826a, 0xcd9e8d7c,
- 0xa8fcd8e0, 0xb2c39497, 0x307641d9, 0x1cc939c1, 0x2608c4cf, 0xb6d1c7bf,
- 0x3d326a7e, 0xeeaf19e6, 0x8e13e25f, 0xee63302b, 0x2dfe6d97, 0x25971d58,
- 0xe41d3cc4, 0x0a80627c, 0xab8db59a, 0x9eea37c8, 0xe90afb77, 0x90ca19cf,
- 0x9ee3352c, 0x3613c850, 0xfe78d682, 0x788f6e50, 0x5b060904, 0xb71bd1a4,
- 0x3fecb534, 0xb32c450c, 0x20c33857, 0xa6e9cfda, 0x0239f4ce, 0x48497187,
- 0xa19adb95, 0xb492ed8a, 0x95aca6a8, 0x4dcd6cd9, 0xcf1b2350, 0xfbe8b12a,
- 0x1a67778c, 0x38eb3acc, 0xc32da383, 0xfb126ab1, 0xa03f40a8, 0xed5bf546,
- 0xe9ce4724, 0x4c4a74fd, 0x73a130d8, 0xd9960e2d, 0xa2ebd6c1, 0x94ab6feb,
- 0x6f233b7c, 0x49126080, 0x8e7b9a73, 0x4b8c9091, 0xd298f999, 0x35e836b5,
- 0xa96ddeff, 0x96119b31, 0x6b0dd9bc, 0xc6cc3f8d, 0x282566fb, 0x72b882e7,
- 0xd6769f3b, 0xa674343d, 0x00fc509b, 0xdcbf7789, 0xd6266a3f, 0xae9641fd,
- 0x4e89541b, 0x11953407, 0x53400d03, 0x8e0dd75a, 0xe5b53345, 0x108f19ad,
- 0x108b89bc, 0x41a4c954, 0xe03b2b63, 0x437b3d7f, 0x97aced8e, 0xcbd66670,
- 0x2c5508c2, 0x650ebc69, 0x5c4f2ef0, 0x904ff6bf, 0x9985a2df, 0x9faddd9e,
- 0x5ed8d239, 0x25585832, 0xe3e51cb9, 0x0ff4f1d4, 0x56c02d9a, 0x8c4ef804,
- 0xc1a08a13, 0x13fd01c8, 0xe6d27671, 0xa7c234f4, 0x9d0176cc, 0xd0d73df2,
- 0x4d8bfa89, 0x544f10cd, 0x2b17e0b2, 0xb70a5c7d, 0xfd86fe49, 0xdf373f41,
- 0x214495bb, 0x84e857fd, 0x00d313d5, 0x0496fcbe, 0xa4ba4744, 0xe8cac982,
- 0xaec29e6e, 0x87ec7038, 0x7000a519, 0xaeee333b, 0xff66e42c, 0x8afd6b25,
- 0x03b4f63b, 0xbd7991dc, 0x5ab8d9c7, 0x2ed4684e, 0x48741a6c, 0xaf06940d,
- 0x2fdc6349, 0xb03d7ecd, 0xe974996f, 0xac7867f9, 0x52ec8721, 0xbcdd9d4a,
- 0x8edd2d00, 0x3557de06, 0x41c759f8, 0x3956d4b9, 0xa75409f2, 0x123cd8a1,
- 0xb6100fab, 0x3e7b21e2, 0x2e8d623b, 0x92959da2, 0xbca35f77, 0x200c03a5,
- 0x35fcb457, 0x1bb6c6e4, 0xf74eb928, 0x3d5d0b54, 0x87cc1d21, 0x4964046f,
- 0x18ae4240, 0xd868b275, 0x8bd2b496, 0x1c5563f4, 0xc234d8f5, 0xf868e970,
- 0xf9151fff, 0xae7be4a2, 0x271133ee, 0xbb0fd922, 0x25254932, 0xa60a9fc0,
- 0x104bcd64, 0x30290145, 0x00000062,
-
-# define TENS_P13_IDX (TENS_P12_IDX + TENS_P12_SIZE)
-# define TENS_P13_SIZE 853
- [TENS_P13_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x64cf8001, 0x9f345226, 0x644963e5, 0x7b8d5053, 0x49f0aa29,
- 0xb945c82f, 0x430ff478, 0x933b6bb8, 0x5ff82d0a, 0x64c501d4, 0x73bbf174,
- 0x9ec1e1b3, 0x3bfbe803, 0xe9010689, 0xf7390d8e, 0x3fef8d80, 0xf31d1325,
- 0x2c73446b, 0xf5ca7a92, 0x1c19e379, 0x270af2be, 0xf52d9d9c, 0xeb2bed48,
- 0x3abf72e1, 0x4ac4ffc2, 0x7ecf3508, 0x22019a82, 0x38597a5a, 0xbe6a7b3c,
- 0x9a51ff6e, 0xa2d28437, 0x0c0abe9d, 0x7c9ec6ea, 0xc79887ff, 0x5851c899,
- 0x436420d0, 0xefead581, 0x72b5547f, 0x99b1d2b5, 0x077ad8f8, 0x5cddbf5b,
- 0x3b4305ed, 0xe3861ac7, 0x2d88f3fd, 0x3d6b43be, 0x393220aa, 0xe5382405,
- 0x1cd62095, 0x61a10c96, 0x87a0d1e1, 0xca95a55d, 0x68c933e6, 0x9ee082e2,
- 0x778089bb, 0x41429ee9, 0xfbb6d8d4, 0xc529500d, 0x26cf5471, 0x68b9be29,
- 0xd6c9b140, 0x07be635a, 0x84151852, 0xb5572182, 0x83730335, 0xeb2300b4,
- 0xdd312d31, 0x05d6dd9b, 0x488da59c, 0x37784d25, 0xda2c2e40, 0x6a8d92fa,
- 0x6a57d720, 0x950b41ac, 0xf07a8632, 0xcd55f062, 0x2ecad06a, 0xe6a3dfe7,
- 0x34c98bb0, 0x9c767d8f, 0xb60521b1, 0x752aafd1, 0xe87d16be, 0x9de1d728,
- 0xe58a8b0c, 0xc6013830, 0x2fa2c119, 0x3c4f9156, 0x519b40c8, 0x5058fc8f,
- 0xab78701b, 0xadc59c47, 0xc502a554, 0x0fb3286f, 0x6647f04c, 0x9db4076e,
- 0x5ea495c8, 0x9c74fab1, 0xb4f00f8b, 0x897c7a3c, 0xd092b4c6, 0x283e0340,
- 0x32f31fa8, 0xeeb708cc, 0x67b63de2, 0x4f7b3c8b, 0xef2bc02b, 0xda14bfe3,
- 0xc49344c0, 0xaabc85be, 0xb6c4e69e, 0x2ece8aa6, 0x63a11016, 0x19cfba4d,
- 0x726ae4d9, 0x0fc90b42, 0xee6ae707, 0x4290b04a, 0x4d9aabc5, 0xfb2b070e,
- 0xf34906cd, 0x1ff54b0a, 0x52ca9709, 0x0b42bfe1, 0x16431570, 0x980f3076,
- 0x6b5565bb, 0xeb8c4c4a, 0x9ce63c76, 0xb9e4c771, 0x3da24c53, 0x6f0266fa,
- 0xb50e3c66, 0x76e34f79, 0x01bb4b96, 0x9948cf3e, 0x0fbea124, 0x86bead12,
- 0xa1fa4edc, 0xd11e901c, 0xc3b97bf9, 0x71730e03, 0x370ca58e, 0x48b19715,
- 0x886467e2, 0xdb237497, 0x3c727e24, 0x2116ccd2, 0x8e67d76e, 0xf973aecf,
- 0x34bdedd3, 0x31d680ec, 0xb042ab05, 0x770e96a0, 0xfc5c3c17, 0xab6f1874,
- 0xb8204ece, 0x5843f3a5, 0x416c0ced, 0x11dd112f, 0x95780183, 0xb1c74bd8,
- 0x7e0e8613, 0x96c6453b, 0xa79ffc10, 0xb2157651, 0xfcd6da0a, 0x836a34a7,
- 0x3dd0ccac, 0x316e5a36, 0x496049ed, 0x0322bcb2, 0xdea1a97d, 0xcdf2aa5a,
- 0x39578d53, 0x1d1aa931, 0x030565c9, 0xd198cbed, 0x324e0a27, 0x5db83e8a,
- 0x28432534, 0x90bf23e8, 0x5cb134c0, 0xdd0adab6, 0x009e5051, 0xf8ad61da,
- 0x7e36a6d7, 0x84c75e57, 0xbdffe6aa, 0xb5d5532e, 0x138d680e, 0xbd84ddac,
- 0x4a5f74a1, 0xccff00d1, 0x55538cfa, 0xb0948b8c, 0x48528011, 0xe345f82e,
- 0x9e047ad7, 0x6ee770ff, 0xea77bef0, 0x0fc13669, 0x2f162567, 0x869426ac,
- 0x0614686c, 0x3a3ff464, 0x4263ed82, 0xb3589b47, 0x57205a7a, 0x213f24ad,
- 0xae6fc46b, 0x3de03e4e, 0xd92b133f, 0x315a589b, 0x1b49c24a, 0x73381bcb,
- 0x1641c138, 0x7bc99425, 0xbc680ada, 0xa5cfbc9a, 0x962e9884, 0x0a960d70,
- 0xfc8d12f6, 0xed18ef4c, 0x60acc868, 0x9aea5d14, 0x13113036, 0xc747c87e,
- 0x2d99a5b0, 0x3a369bb3, 0x006b3658, 0x118a5135, 0xe43fa6e6, 0xb4947190,
- 0xa13dc05e, 0xd7733db8, 0x0dbd7170, 0xc3fb67d1, 0x117ed7e7, 0xe2d72a49,
- 0xc05fe99e, 0x9638db40, 0xd971a25b, 0x4239d468, 0x1a159559, 0x850a223c,
- 0xc1117392, 0x22d2dbd8, 0x567b5fc0, 0x92c5b4eb, 0xc051007a, 0x11cc0099,
- 0xfb355720, 0x6907810d, 0x39848161, 0x5e8534f4, 0x61d19ef2, 0x2ee8c466,
- 0x8a0ab03c, 0xc234af76, 0x879aa514, 0x9774a235, 0x59e5da57, 0x9bc466b3,
- 0xf339bd5a, 0x44ab026d, 0xbbb5fd67, 0x2b977202, 0x3685c9f2, 0x03e5dc00,
- 0x7054359e, 0x5239cfb0, 0x9ba11f08, 0xf8237562, 0x9c258687, 0xa3b510dd,
- 0x52c7bf8f, 0xb31ed0cf, 0x3245e079, 0xff9ff8d3, 0xbaee38c7, 0xf17d5562,
- 0xf702b3b9, 0xcc4c8563, 0xcbca275d, 0xe005d9d1, 0xe817dbac, 0x05c6920a,
- 0x62cee350, 0x0f1deac0, 0x19e049b9, 0x59599f74, 0xb2a27a16, 0xf0911d5a,
- 0x7dcef00d, 0x3603dd66, 0x37552251, 0x97813735, 0x5fa022da, 0x0d849416,
- 0xefbe57c2, 0x30a0e592, 0x57619296, 0xc953cc47, 0x11735043, 0xa83526ad,
- 0xc0444be0, 0xb5f8463c, 0x16ff5136, 0x2a0a6631, 0xf037572c, 0xd30464da,
- 0xb1bf8daa, 0x7f5718f7, 0x0f3e9e7e, 0xe5a4cfe7, 0xc26f2624, 0x8c9b5ae4,
- 0xdfe8f485, 0xf6fa82e3, 0xc64a1509, 0xacb24aea, 0x3024b220, 0xddb02ac0,
- 0xddcdfedd, 0xd834c574, 0x384c86c3, 0xd904e099, 0xdd48a571, 0x4550a05f,
- 0x77b35c74, 0x81e85f71, 0xaaebdc6d, 0x0f9bb0b1, 0xd4cdc054, 0x7af4df85,
- 0x845786af, 0xe5e53887, 0xdf2a91ca, 0xf6a58211, 0x5689a3c4, 0x8cf6aa15,
- 0xa705983a, 0x9fbf2f52, 0x2ce7fef0, 0x48e84a62, 0x4a3b5365, 0xf8281a47,
- 0xd48a0872, 0x8423dcf6, 0xf0929c3e, 0x044a5049, 0xe9ec071b, 0x17decc36,
- 0x20e30c1b, 0x45fc2813, 0x3342196a, 0x46afb7f9, 0x6601e337, 0x30754439,
- 0xf18094d1, 0xd38b4112, 0x61410dd1, 0xd8796b36, 0xd97d4dd8, 0x47e9bc0b,
- 0x80805191, 0x1584e2da, 0xcde438c1, 0x955d24f1, 0x409659a1, 0x1b0950b1,
- 0x5a09635f, 0x65b1febe, 0x615472b9, 0x525dc00a, 0x6308e067, 0x4089e2d4,
- 0xd4e705a4, 0x43fc9209, 0x32c18b26, 0x4447a5fa, 0xaf271153, 0x3617cadc,
- 0x4dc4f0d2, 0x692eb386, 0x6aa116ef, 0x655991bc, 0x0641dc0b, 0x54469597,
- 0xc6559664, 0x749c0fe8, 0x4bdc0d1a, 0xa7d3381e, 0xc5292a61, 0x4eb65fdc,
- 0x42474cc2, 0xf2c6b173, 0x19dfc9ee, 0x0a19a199, 0xbece2ee3, 0xc68b778d,
- 0xaa03aa7c, 0xc8db86f0, 0xae54d2be, 0xb92a01e0, 0xdee3f48f, 0x6023c0a9,
- 0xf6ae2852, 0xa233763b, 0xa441cb9e, 0x3246dddd, 0x3a8bb4b7, 0x44faa3c3,
- 0x308ef2c8, 0xfd1c8516, 0xd2862534, 0x3b25ebe7, 0x62336f6f, 0x0c336a45,
- 0x0b8e2ce6, 0xe867f171, 0x11eea1f2, 0x523972ec, 0x68df4903, 0x50c05824,
- 0x51ef4cb7, 0xcb4df2a8, 0x3ffae115, 0xb51aca2f, 0x3ed1635f, 0xd6ff1cc6,
- 0x0a5ac09f, 0xde8ed9d6, 0x0a3dc76f, 0x5dc2d8dd, 0x37991dde, 0xf95bacb2,
- 0x80ad6e13, 0x163005ee, 0xd4f8c7a6, 0x3225d180, 0xa4760f08, 0x5fff004d,
- 0x9b2b1a87, 0xe7ea8576, 0x5cd00b66, 0xec478452, 0x285dd80d, 0x20112439,
- 0x4301b3a1, 0xff879fc8, 0xfacbb68c, 0xaf6af6b8, 0xb17fdf84, 0xc208d9f1,
- 0xf4489576, 0x8794a6e9, 0xadcc862c, 0x0e83e54c, 0x931685a4, 0xab01c580,
- 0x1e40293b, 0xcad784fa, 0x1f1ddf7f, 0x6b856084, 0xcee722b2, 0x1c39938b,
- 0x74254eb4, 0xc7ccebf4, 0xb9c26d9a, 0x6b08dfb9, 0x2e3ece24, 0x981455ec,
- 0xdff60410, 0xbc804e2b, 0xe06fa38b, 0xb534540c, 0x72e53c52, 0x02dfb2ef,
- 0xb2a5c05a, 0x5002a2a5, 0x97313338, 0x597c53ff, 0xd61df455, 0x34e5261a,
- 0x39ac2ec5, 0xc6bc0cab, 0x388b7539, 0x3f732fc0, 0x00eac704, 0x92fb21d9,
- 0xc089971e, 0xb4ffa503, 0x7af93f8f, 0x72e353b6, 0xa8311b23, 0x8266c9af,
- 0x1de496ca, 0xdbdb16b0, 0xd6fa0b51, 0x9991a5ef, 0xbd563089, 0x168cbe0f,
- 0x0954a1e3, 0x537b9245, 0x53d09723, 0x2867272d, 0x86558cb9, 0x0b83f026,
- 0xfac85d10, 0xf8562951, 0x1e5ddb95, 0xad3668c8, 0x48d27b92, 0xc930b7e6,
- 0x19b58a99, 0xa3de74e3, 0xa9cda917, 0xcb6e35ee, 0x7a4dd16e, 0x4c80e9d5,
- 0x4d84073f, 0x74a95ba8, 0x9cffcfc0, 0xd28485eb, 0x15796372, 0x5717e9cd,
- 0x77eda8df, 0xab473c4e, 0xadb965e1, 0xffad6959, 0x5bc05659, 0x6ed63880,
- 0xfb240227, 0x2014850b, 0xd15fdddf, 0xfdd74592, 0xb538f37d, 0x3a8e2e82,
- 0x1473396f, 0xf6a5edf8, 0x3ce41a21, 0x0cc4351a, 0x754e8264, 0xaab95e73,
- 0xc7821b96, 0xf42ff463, 0xc242faaa, 0xdd00ac65, 0x087e260e, 0x17d193f5,
- 0x0dbe0328, 0x844a63c9, 0xf9d10f96, 0x85aa91dd, 0xbaf127ec, 0x0ab6dabb,
- 0xce85e6a5, 0x1af5d24f, 0xe7b56a16, 0xcd6c5a19, 0x57d1d79f, 0x5dfc2b28,
- 0xec4dd2f0, 0x18fe64a1, 0x8d72216a, 0x5f222077, 0x72f14a08, 0xd8b09b11,
- 0x3bf038ab, 0xc6cf1f44, 0xc4265d7c, 0xdab1b0e7, 0x46398d2c, 0x7dcfdc68,
- 0xb6e705d3, 0x4aafd1e6, 0x362c1183, 0xd8701107, 0xf6ac98b7, 0xad114d7e,
- 0xd6649424, 0xc40ab551, 0xddd1c6e4, 0xa132030f, 0xc9d284c8, 0xdb1f662a,
- 0x824069ee, 0x4157904b, 0xc846b3ad, 0xd38481ca, 0x0a248c17, 0xc846831f,
- 0xe8745feb, 0x000025a8,
-
-# define TENS_P14_IDX (TENS_P13_IDX + TENS_P13_SIZE)
-# define TENS_P14_SIZE 1703
- [TENS_P14_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x099f0001,
- 0x41b5687d, 0xcbfd1b6e, 0x8c75ee63, 0x4b191cea, 0xd75296ad, 0x2394d80a,
- 0x1eb5da9b, 0x18a004ed, 0x5c79fed9, 0x37e3b01c, 0xed67a1b8, 0x78d9a714,
- 0x2a1a34d5, 0x8fbe7f0d, 0x6b1d3516, 0xe57c43ea, 0xa7825681, 0xc81d32e8,
- 0xd3e716e1, 0x58860b00, 0xa6d93d65, 0x83159c97, 0x0113232f, 0xd6122269,
- 0x7321c3a0, 0xbe6a92f3, 0xca4ca9d3, 0xd1e276a5, 0xc0e55163, 0xb05915d6,
- 0x7b7a78c1, 0x0fae0ca4, 0x62a3df4b, 0x08abec6f, 0x13030d11, 0xd446338a,
- 0x60dcc8f2, 0x5f05d1d5, 0x25e1f9f6, 0x04a40bee, 0x7f8c7113, 0x88f47ec0,
- 0x589ff59a, 0x308c3661, 0xea5068a1, 0x95fb108f, 0x06e87dff, 0x1559e741,
- 0xd4d4abdc, 0x01e092e4, 0xee16907c, 0x5a7b78e6, 0xe73aabcb, 0x146bb7e0,
- 0xad372889, 0x4f6b43c5, 0xfd49fc1d, 0x0f29f589, 0xd3739253, 0xc4745a56,
- 0xe2acfcc2, 0xd75ccbc7, 0xedd016cd, 0xac5a63e0, 0xef82ccd3, 0xb352496e,
- 0x2bdabfc4, 0x5b3d0401, 0x01b0197f, 0xade96d3c, 0x29d9253d, 0x19bebdba,
- 0x73c56b1b, 0x255e7b25, 0x1f2b7f1e, 0xa56a457e, 0x6299c836, 0x5c63cc78,
- 0xa2ca74c6, 0x5c85fe93, 0xee571bea, 0x508e2561, 0x2db5f1d0, 0xb1fde6a9,
- 0xa9b87b99, 0x4fb90a37, 0xf7260f07, 0xff58c5fd, 0x56ee7e97, 0xbab9fa46,
- 0x42e6f9ce, 0x78816f73, 0x1b76d267, 0xfdb2c728, 0x4566519c, 0xae17dd8d,
- 0xb9f6a95f, 0x1cd533a1, 0x67160dea, 0x14534bac, 0xfcd8f8f9, 0xf3f2901d,
- 0x708b1f0a, 0x8829063b, 0x9457a1df, 0x8f872aa1, 0x36bb9335, 0xb5672c0e,
- 0xd889d109, 0x7ec63a6a, 0x93306672, 0x39b6d457, 0x8239ab68, 0xef2e2506,
- 0xbe0d7a1f, 0x4251b635, 0x05f65522, 0x0ef0bd55, 0x03286891, 0x2c42b664,
- 0x9815fbac, 0x471fd611, 0x814e379c, 0x7dd8349d, 0xa4a25bda, 0x9886b84c,
- 0x01b9e39d, 0x5a7ce1a2, 0xae31cbc9, 0x86d07f32, 0x83ef8faf, 0xb66b5b76,
- 0x58470fdf, 0x96d59b73, 0x51618889, 0xdc400cf7, 0xfc8e0fc6, 0xaf693670,
- 0x09a08e56, 0x91737de6, 0x74f682e1, 0x0e03923f, 0x7f8ac56d, 0x7400cfd4,
- 0x8e05e49a, 0x4cebea3c, 0x384e1164, 0xb2e43d8c, 0xb50ae05e, 0x0f0b3ed9,
- 0xa4006123, 0x64137137, 0x4e9a1934, 0x05404100, 0xd9621be6, 0x9329a255,
- 0x5c347ebb, 0x75cbeb1b, 0xe684346b, 0x840fee55, 0xba6a9753, 0xf43836f6,
- 0x60505b7b, 0x334a9278, 0xfd6d475d, 0x5db94761, 0x267375aa, 0xc110e160,
- 0x024f6d63, 0x2ec96610, 0xa99b4c19, 0xb915c9f4, 0x338cfd90, 0xf02ea846,
- 0xb9e51a09, 0xae928fb1, 0xfae31d88, 0x1a3db721, 0x8475dd26, 0x5769489d,
- 0x7ad4c407, 0x0a49e9f0, 0x34e275c8, 0x3d075d83, 0x1d63114a, 0x72a96415,
- 0x6b98e947, 0x1d500b5f, 0xd50fdc36, 0x141e5085, 0x87751275, 0xe7843834,
- 0x2278809e, 0xb15c52ee, 0x947aead2, 0xfedb7b02, 0x5197b744, 0x64e09ba8,
- 0x8849d0a6, 0x23beaa85, 0x11ecb913, 0x0f7ed667, 0x5d984848, 0x9f6331ea,
- 0x588290e9, 0xa24d64d1, 0x7e09e9e5, 0x32592033, 0x03a501df, 0x27c270a6,
- 0xbb3df738, 0x3c7c5a70, 0x4190833c, 0x7d4bf9f4, 0x80e5d89b, 0xa7fc6194,
- 0xfaefb663, 0x62e52b49, 0xd3b6adcd, 0x809646fc, 0x1f2cf73a, 0xb765ed4f,
- 0x531e4bfb, 0x92cd05f2, 0xaf12d1a6, 0x22ee30f3, 0x38da1074, 0xed6447bb,
- 0x1a725608, 0xaff222d3, 0x7a3c6f54, 0xbca79a56, 0x7b0e8d12, 0x1c4660c5,
- 0x6e34d6fb, 0x6f481a9f, 0xfe9dc99c, 0xf888db82, 0xd8489ea0, 0x84b4c0fa,
- 0xc0dea281, 0x977a8583, 0xae30e887, 0x8c1cbcec, 0x1d4848cb, 0x0ee0d137,
- 0xd011b0fc, 0x94b5fd49, 0x478d7dd4, 0x3d67f2e7, 0xacab62ad, 0x0ab4e62a,
- 0x1dfc7df5, 0xd22e4553, 0x870b0e75, 0x49b7b001, 0x1b73bf6d, 0x12807ffd,
- 0xdc9f0737, 0x6f3e5852, 0xc0e2f250, 0x93e62e4a, 0x4d96a55a, 0xc1d0e185,
- 0x83a126db, 0x190b917b, 0xefbfd043, 0xc7df1669, 0x8f25b6dd, 0x2062eac9,
- 0x476c17a6, 0xcb60f278, 0x25460383, 0x0e85e996, 0xda8c05be, 0x6f678a34,
- 0x69206234, 0xf59be929, 0x1947b69a, 0x0ebfa11b, 0x90fd8322, 0x15c1e9bf,
- 0xd699b1ec, 0xb2f0343f, 0x7001d002, 0xcf76eaaa, 0xc0778ab5, 0x5173eda8,
- 0xb7b008e2, 0x4e00e4c6, 0x505d3f4d, 0x99dd341a, 0x1c9d4e12, 0x4ffb6978,
- 0x474c5e95, 0x6e9ca6dd, 0xda19f938, 0xe2dda6e0, 0x98dc318e, 0xda455e54,
- 0x3f67b836, 0x21e4181c, 0xa97e9a64, 0x1e17f655, 0x527a08bb, 0x1712dc21,
- 0x682972ad, 0x0042d256, 0xccbeadf1, 0xca497b96, 0x861e99e0, 0x0d8aa585,
- 0xeeb0f650, 0xdcc3c3da, 0x506af77e, 0x5deb9768, 0x7c9d60be, 0xe9d978b7,
- 0x37b37e95, 0x77ad0b94, 0x42747f75, 0x07be42c4, 0x6d5fd2fe, 0x4c8c5da9,
- 0x0d8fc27d, 0x0f2fd50f, 0x0ccf6023, 0x5b56053f, 0x3b1101bd, 0x56d34906,
- 0xc0feca27, 0x7602a150, 0xc4888da4, 0x419abe54, 0x56d10633, 0xc76120ed,
- 0x8db14123, 0xb656e675, 0x741e8f76, 0xd297b94e, 0x96be6f21, 0x3662439d,
- 0x9b409e27, 0x6626574d, 0x35fff92a, 0xbf558205, 0x69e02439, 0xbe6838b7,
- 0x6400fd4c, 0xa00f64ca, 0x1f4b158a, 0x9e2052ae, 0x04cca558, 0xfb5ee69e,
- 0x58da644c, 0x96f26e1f, 0x8ab19401, 0xbee1e16b, 0xed8bf908, 0x2f2809a4,
- 0xd50babab, 0x6e57f7e6, 0x6b0a8929, 0xf7356431, 0xb54a4cfc, 0x9a1d0ac4,
- 0x6f9fd6cb, 0x836bfbf8, 0x3b42f469, 0x8bd32129, 0x40111b6b, 0x7c278fb1,
- 0xb345d955, 0xff1fd188, 0xd32cd13c, 0xf7ec3aa0, 0x3789f792, 0xab707fa4,
- 0x4d79a4bf, 0xb3a28ceb, 0xd9c24d8e, 0x7134dadc, 0x06e2eb3e, 0xd7c04f76,
- 0xb379d811, 0x2b3b0ebc, 0x8c94fc33, 0xa28b53ab, 0xc06c5d01, 0xd900432a,
- 0x7fea91ca, 0x6d30b008, 0x64845f08, 0x796f5349, 0xfde4687d, 0xf888fe67,
- 0xe0046c56, 0xae482177, 0xce98cb11, 0x84590c46, 0x1feb4400, 0x6e1ba29b,
- 0xff2f1611, 0xf73f3e9c, 0x3159ca8c, 0x34845918, 0x56f0ed46, 0xb7d10c32,
- 0xd9a16a01, 0x405b9e91, 0x3cee3e24, 0x8739e4a6, 0x2ab396b4, 0x3f1b7871,
- 0x09835dfd, 0x8c7a489f, 0x1592b74a, 0x05df7c81, 0x0e8d3f37, 0xa61ff273,
- 0x68b29622, 0x259cd337, 0x43ff84a6, 0x81cf8fe9, 0x566ed883, 0x48427fc6,
- 0x35c79428, 0xcfd2fb59, 0xa97e8c8b, 0x750aaed8, 0x32ddca23, 0xaa8108ef,
- 0x96fbfff9, 0xa1d039aa, 0xe3cdf588, 0x47e77e00, 0xcd6b3fdb, 0xe72a9a80,
- 0x9a522152, 0xeda06283, 0xef175610, 0xa670cfa1, 0x339fe6c4, 0x2dfbf3ee,
- 0xc2d7f53b, 0x92a44e27, 0xcc47e4b0, 0xdfa212bc, 0xd64f83c9, 0x997e5475,
- 0xb51319bf, 0x9fffe599, 0x1fc2c7b6, 0xef5605e7, 0x832169dd, 0xfeb6be4e,
- 0xbf921dc8, 0x60bdfb1d, 0x72759f8d, 0x3546efa0, 0x020eebed, 0xcaab3d64,
- 0xdb20a2fe, 0xba1218f6, 0xb2b62bdd, 0x3101eff0, 0x8fde5cfa, 0x2e319213,
- 0xa52114d2, 0x87eead3f, 0xdf08b1dd, 0xa5387642, 0x746f34d0, 0xd76c4844,
- 0x4cc40317, 0xe4f689c9, 0xb7d76071, 0x5fe0b4a2, 0x6e1c7915, 0xc7d43f53,
- 0x3efb7d71, 0x068dd906, 0x35a75f5f, 0x652d7770, 0x750f4607, 0x64a1656c,
- 0x36c2cf8e, 0x214d758b, 0x9348ef93, 0xe4058978, 0x9674b7f3, 0x10570b0b,
- 0xbdfaba8f, 0xcef09dd7, 0xa92b261f, 0x071c21b6, 0xcbebb81f, 0xf427ed6c,
- 0x44228cd6, 0x65e56fcf, 0x5036c460, 0xad919def, 0xccfd848b, 0x61d158a6,
- 0x7527dca3, 0x4cf30459, 0x50855075, 0xa70dfd09, 0x3540f5aa, 0x35577adb,
- 0xb5ba3d4e, 0x35736c4f, 0xcdfb689f, 0xefe8fa82, 0x97ab0dca, 0x51bd2ff3,
- 0x77a7fe9c, 0x3107846c, 0x3d618b81, 0xbca797a4, 0xfc5e9651, 0xe2e08fbc,
- 0xf7e8791f, 0x772f1cc0, 0x7c426f9d, 0x08d56f88, 0x0080c3ab, 0x0deea663,
- 0xe6d46ec6, 0x7dca4eb7, 0x6b681d9d, 0xda06730b, 0x4af0e0f2, 0x038bf468,
- 0x52097463, 0xca19d302, 0xbc09bb9a, 0xaa55aeb1, 0x3ded4433, 0xf27938ba,
- 0x3e4b7865, 0x28296be7, 0x7ef96314, 0x7a1d55cc, 0xdf0b6b47, 0xcde11852,
- 0xcedda5bd, 0xf00a0eb3, 0x72ca1a8b, 0x5241b572, 0xb002fdcc, 0xff8898b3,
- 0xc4878862, 0xb3e85372, 0xbf4bca29, 0x7e1fef45, 0xf2d83189, 0x0f5427af,
- 0x3cdf9e05, 0x75bae885, 0xf65c06ac, 0x9c71a700, 0xa3145eac, 0xde63bab2,
- 0x76255bbf, 0x6e817be6, 0x4c6ad3d0, 0x25ab9935, 0xe95ef2f8, 0x11cd095a,
- 0xd54f78de, 0xa001ae7e, 0xb3829dcb, 0x5abd18bd, 0x18eb9c9e, 0xada3c504,
- 0xe3e3556c, 0xd35479aa, 0x5191ac5f, 0x221821ac, 0xc8d1d9d3, 0x313a8c51,
- 0x088c3fc8, 0xc146a264, 0xb154abed, 0x92755bc5, 0x349ec093, 0xf94aba57,
- 0x41d5886c, 0x0a5ad8b2, 0x36aba94b, 0x883a6758, 0xa9ad229f, 0x5d64069a,
- 0x0546172f, 0x0366da16, 0xc3808ea4, 0x0b172403, 0x70f0a235, 0xfa816e66,
- 0x4fceb827, 0xa65fcfea, 0x167b56d5, 0xfe2b9fb2, 0xfec36bcd, 0xa84c4cc9,
- 0xcd96320f, 0x3e128584, 0x09eda8b8, 0x91eca525, 0x7ec7e17b, 0xbc45bedc,
- 0xc14032f4, 0x9be689a7, 0x2eb20bc0, 0xffdf1efc, 0x14ef835f, 0xc6966c59,
- 0xcd778dd8, 0x5feb0f3b, 0x23d47715, 0xd64b87c8, 0x5722a550, 0x62883198,
- 0x315a1a8b, 0x648e17e6, 0x4b7e9d7a, 0x2ba43d28, 0x67caca84, 0x741f0398,
- 0x6e660159, 0x3e16e1a9, 0x3dde3c45, 0xa53e56ae, 0xc7eb0aef, 0x3f39f33e,
- 0x78751d73, 0x45816df8, 0x626770f7, 0xcb17d28d, 0x909e87f4, 0x93a86aba,
- 0xc1dcf328, 0x1a1e4ce2, 0xd895d042, 0xb9f6dd69, 0xbb00eaf5, 0xacc37687,
- 0xca609578, 0x5b490d39, 0xf8b86d4c, 0xf2737ef0, 0x39419f6d, 0x69267bc0,
- 0x72524a03, 0x6eb060c4, 0xdbc01e93, 0x291035b1, 0x83984d54, 0xf673ad85,
- 0xe08cbc20, 0x1fb24915, 0x584803a6, 0xe15bbcd7, 0x4088ddb5, 0xd4c22542,
- 0x2c18041a, 0xa51372d1, 0xb2ba69b4, 0x2299283f, 0xcd11c296, 0x25dcd6f3,
- 0xac54df23, 0x24a3a55e, 0x77e16e1d, 0xb3cd415b, 0xb99d85c0, 0x497befc7,
- 0xe91154e3, 0x7365cd8b, 0xb55100aa, 0x0ee699eb, 0xfc0927a6, 0xefb374de,
- 0x8acaa910, 0x83b40e3d, 0xda3f0006, 0x8590a089, 0xc6ce1b75, 0x54f6ff20,
- 0xfda2f7f3, 0xd2ab58f6, 0xd0763b6d, 0x6caf2515, 0x2519622d, 0xc3714057,
- 0x9863638f, 0xea00bb4f, 0x09ea4a4d, 0xe69de96d, 0x6b01fe5f, 0x960161a5,
- 0x529e32ec, 0xf8260ae9, 0x01a37eea, 0x69710577, 0x5aa0716f, 0xcb3fb1da,
- 0x4260feda, 0xa33fb790, 0x76012f75, 0x24c0e5be, 0x130f09ae, 0x2e8323dc,
- 0x5c8ecb76, 0x17cb8f12, 0x401b5f5c, 0x5f0a63e0, 0x47e1560a, 0xdc57a786,
- 0xee1377d4, 0x228e7ee5, 0x0aa294b9, 0xaea6c534, 0x55b0fe2f, 0x922d318a,
- 0xf108b772, 0xf15bddf6, 0xdfb69702, 0xcd438a4e, 0x90e1db66, 0x584ce4a1,
- 0x568ef6cb, 0x69e55f9d, 0x6da376ba, 0x5ca6c109, 0x45c7e294, 0xc977b3e9,
- 0xcf5b6c0c, 0x1d694499, 0x11b487ae, 0xcf8339ac, 0xbcb3cc6e, 0x50b828e0,
- 0x046b1071, 0x5703ed0d, 0x2c615946, 0x720d1610, 0xa908dbd0, 0x742bbe33,
- 0x22c076e2, 0x48966a66, 0x1d0cefa4, 0x1dde819f, 0x601352bf, 0xb9370c39,
- 0xa585cc4a, 0xeb857f94, 0x5a2f7206, 0x3fae6b58, 0x49cd0f1f, 0x78e5fb3d,
- 0x1b89d476, 0x74e9e65b, 0xed82945b, 0xb74e6483, 0x2941c4d9, 0x7e087acc,
- 0x565c18dc, 0x1a09f2e5, 0xbf4ccd3d, 0xd304e977, 0xa522631d, 0x6123378e,
- 0x4517109b, 0xb7e4285a, 0x4bf1a506, 0x625803c2, 0x683172f8, 0xc84e7354,
- 0x3f8a2b11, 0x7dd12b89, 0xed420491, 0x8c698b0b, 0x9853fb97, 0x9631777b,
- 0xb697e1c9, 0x5f028f05, 0x51038110, 0x9055f055, 0x30e255e3, 0xe2d0c1b6,
- 0xb990321e, 0xa8fdf4d1, 0xff4dc144, 0x521a3056, 0x148999e0, 0xa8111c66,
- 0xa9c96852, 0x8157f508, 0x4b394a94, 0xa0dc4df1, 0x94ec2e93, 0x6e6afa56,
- 0x8fc28377, 0xf72ffa04, 0xc435186f, 0xf91488b7, 0x8d037f6f, 0xa899ec1e,
- 0x48757727, 0x4101b612, 0xb8cf377d, 0xa5a54e68, 0xb4570569, 0x2ac5a0a0,
- 0x063d9cfd, 0x7c504c74, 0xf1a5884c, 0x0a9b1955, 0x8d0b91bf, 0xe5f6862f,
- 0x79ff5361, 0x0ed3d38f, 0xc6fd31fb, 0x9fe131c7, 0x85b9c648, 0x8febf2b4,
- 0x8e77e86b, 0x992ba80e, 0x56429986, 0x6848879a, 0x608cdda5, 0x3e0d106e,
- 0x754b300e, 0x25200576, 0xafd5195b, 0x5d37aad9, 0xe81f0939, 0xe00a390e,
- 0xdeeea20a, 0xf5fef0be, 0xb5d51155, 0x6e27d173, 0x9e72ebcf, 0xb776e978,
- 0xb966f7ba, 0x09520238, 0x726c8408, 0x3347ebc5, 0x65dce5a2, 0x3ec78337,
- 0x8c92d740, 0x3cdde3fe, 0x32caec93, 0xd20379ae, 0x411be811, 0x41756580,
- 0x72fa1bbd, 0xa92125b3, 0x84c42f04, 0xdd4ee5fe, 0x3a25922c, 0x96446853,
- 0x49ad3be0, 0x2880366d, 0x1c841afe, 0xf1e09019, 0xfb905fe1, 0xa451ad59,
- 0x3ba9d0c9, 0x56db2e9c, 0xa42419f2, 0xe921e7a0, 0x3c9a3ca5, 0xad8ea375,
- 0xcec7d091, 0x99bdb940, 0x477ef58f, 0x8a4933c7, 0xb2598b8d, 0xf5659df7,
- 0xcfac1e1c, 0x339f8748, 0xe2a04aab, 0xe122b03f, 0x45bc6f37, 0xc9feeb30,
- 0x9c75aaa0, 0xc13c174e, 0x0ea0585d, 0xdc58bbb4, 0x3a96bd5a, 0x20251482,
- 0x3c7a714d, 0x696897eb, 0x6cb83b6b, 0xa37de406, 0x3b496b5f, 0x37e75d6a,
- 0x380dd382, 0x0e1a513c, 0xda26fac9, 0xf2458364, 0x12b5c6ea, 0x79ce9e47,
- 0x1ff1fcbf, 0xbe7c6e86, 0x59a6a7ba, 0x8d70f515, 0x94761453, 0x6b04e425,
- 0x8768ffb2, 0x1ca5f425, 0x3f9e8407, 0x3b641184, 0x5f8f6756, 0x62b1a5a5,
- 0x56bc2120, 0xd1e5da68, 0x17f2fa18, 0x8cce5e2d, 0xa1bc9c06, 0x8e290fb1,
- 0x892df1af, 0xad10b8c8, 0xb43e5517, 0xd0597409, 0x4407c38f, 0x4a020d81,
- 0xfea9c9b6, 0xd8e0e7d6, 0xd5b2aaf9, 0xde5e9b40, 0xda44ed4a, 0x45d6bf41,
- 0x87aa3ca0, 0xc62d12fc, 0x4708acc8, 0x10212e26, 0x0d1227ff, 0xfeeb5742,
- 0x5da02550, 0xd66668e7, 0x1d56e5e1, 0x32c215ec, 0xae1e0bef, 0x7f048b7e,
- 0x58c0e922, 0x2aea8619, 0x58251aac, 0xbbe10425, 0xa1fea536, 0x2e1d9667,
- 0xd233eb7d, 0xcf435c0b, 0xb0693c67, 0x61d918ea, 0x903ec9f0, 0xd6c4e8ac,
- 0x0efb1788, 0xb0098f5b, 0x1709d878, 0x3c12b35e, 0x3f6ce1b7, 0xa1b3ff54,
- 0x8a8f7dbb, 0x37608d6a, 0x73e8563e, 0xa3330540, 0x64e00749, 0xebbfcab9,
- 0x8d5caaf9, 0x3bc87c7e, 0xedb2bd94, 0x22f8f62d, 0xe656dec3, 0xc5683222,
- 0x670c1626, 0x94089e7f, 0x4237542f, 0x47d29440, 0x2fc4e530, 0x8419441e,
- 0x8b288dac, 0x7f9245f9, 0xa7afb4e9, 0x8a15650d, 0x082adef7, 0x3104ef19,
- 0x043c62de, 0x0aff3dc5, 0x7ecd0635, 0xe7e80a8b, 0xe0600fad, 0x4d8e81cc,
- 0x81ebf4e0, 0xf587e30f, 0x7b372af7, 0x2d8f8ca0, 0xdee11c6f, 0xd3624b1c,
- 0xf8adc426, 0xca9debed, 0x5c22de4f, 0x3634f778, 0xfae3186b, 0xacf8b595,
- 0xd7bfa75f, 0x003cd316, 0xbbfe3cf6, 0xb023cb50, 0xc51055a1, 0x0063cffd,
- 0x93869a77, 0x51e022d4, 0xfbceeb10, 0x5187457e, 0x109defc9, 0x673892d8,
- 0xe13cfde2, 0xd4aa3272, 0xc09c8134, 0xbf89ad5b, 0x0327181b, 0x09511ec7,
- 0xaa21b632, 0xd7e72186, 0xe41885b5, 0x46713f9c, 0x493d2789, 0x1386c526,
- 0xd5d22a5c, 0xcefddfc4, 0xcf59281c, 0x92973ea6, 0x4ebe43f6, 0xeac5c6ad,
- 0x6cf4897d, 0xd95082a0, 0x82ce562a, 0x28e5e9bd, 0x28d8f0db, 0xddf06e81,
- 0x707b0166, 0x7dae3f00, 0xfbf5756a, 0x035a4680, 0x4f114102, 0xe7ba4b33,
- 0x5190fedf, 0x106a7594, 0xe5f1bc49, 0xaae3ad67, 0xd7a1a766, 0x040ee971,
- 0x9120a214, 0xf415b374, 0x1edc87ea, 0x17aab43c, 0xc6ad637d, 0x885858c1,
- 0xd90303c7, 0xbfd4b70b, 0x3ff4eb0e, 0x344a9a88, 0xd81eea30, 0x95925446,
- 0x5adef0ec, 0xabb5f5e7, 0x20bbd8c3, 0xc1c22cce, 0xe6944262, 0xc5acdb23,
- 0x80024021, 0x2232c635, 0x94b30c81, 0x55f07648, 0x78569acd, 0x9696ea39,
- 0x4dd6b528, 0x1c3e1b40, 0xde5853b3, 0x8a2c3679, 0x6eb5a7d8, 0x56bda89a,
- 0x8f9cf096, 0xfda86d5b, 0x6481c7e7, 0x50a6a7d5, 0x15bfb45d, 0x4f9a5381,
- 0xc057d45d, 0x4fb10024, 0xa0009f00, 0x5e1ca0dd, 0xac420f74, 0xcfbb38bd,
- 0xf0d4a615, 0x19bf0318, 0x0e3aef84, 0xcb3d7b20, 0x166c1e3e, 0x58272fdd,
- 0x3bfacf9f, 0xc0f5ce46, 0x63a13528, 0xea59e333, 0xa020ca8c, 0xaadd116b,
- 0x3dbb5a3d, 0xe5523f47, 0x747f55ea, 0x0922171e, 0x64d520fb, 0x6c709e84,
- 0x07ce951b, 0x35fdc402, 0x7508eb6d, 0xc495a8fa, 0xb0d11c39, 0x81313d65,
- 0x57447ef0, 0xa7b61e26, 0xf72301f3, 0xbb096315, 0x45a3a7c5, 0xa903a44b,
- 0x00432f88, 0x19081987, 0xeb4e1b66, 0xbb7b66bd, 0x6d245171, 0xde4182f5,
- 0x0d89bd0b, 0x87f4de6c, 0xf70d8a60, 0x9a87855b, 0x08a27449, 0x4ac7720a,
- 0xd4964017, 0xb0d9ddac, 0x4db3488c, 0xfe397d44, 0xd07b745b, 0x197dcb7b,
- 0x6e9d567d, 0xe3b90812, 0x9143fef1, 0xb9e002ac, 0x115ff96d, 0xf60a2201,
- 0x5b61c9c8, 0x09abab2f, 0xb14a44a7, 0x0ca19c73, 0x843c7997, 0xe3a9bbe6,
- 0x5e3fc18c, 0x0c0404ee, 0x764df59d, 0x990ec2c2, 0x4ad0ba3c, 0x05e8be0f,
- 0xe599647d, 0xc19d365d, 0x4d0c2990, 0xe5a9d9ac, 0xb680a72d, 0x4ce2e5dd,
- 0x6d6c0267, 0x06f9c25b, 0xbd6078e0, 0xb5fcdc81, 0xd742fa41, 0xcccc2399,
- 0xc691adc0, 0x215ad82c, 0xea73b0c3, 0xa511e5b0, 0xf499e0a6, 0x53e27ab0,
- 0xd94440a2, 0x47752521, 0x9a6e3644, 0xab113708, 0x8f8b301d, 0x058a42a3,
-#endif /* FPIOCONST_HAVE_EXTENDED_RANGE */
-};
-
-#elif BITS_PER_MP_LIMB == 64
-
-/* Table with constants of 10^(2^i), i=0..12 for 64-bit limbs. */
-
-const mp_limb_t __tens[] =
-{
-#define TENS_P0_IDX 0
-#define TENS_P0_SIZE 2
- [TENS_P0_IDX] = 0x0000000000000000ull, 0x000000000000000aull,
-
-#define TENS_P1_IDX (TENS_P0_IDX + TENS_P0_SIZE)
-#define TENS_P1_SIZE 2
- [TENS_P1_IDX] = 0x0000000000000000ull, 0x0000000000000064ull,
-
-#define TENS_P2_IDX (TENS_P1_IDX + TENS_P1_SIZE)
-#define TENS_P2_SIZE 2
- [TENS_P2_IDX] = 0x0000000000000000ull, 0x0000000000002710ull,
-
-#define TENS_P3_IDX (TENS_P2_IDX + TENS_P2_SIZE)
-#define TENS_P3_SIZE 2
- [TENS_P3_IDX] = 0x0000000000000000ull, 0x0000000005f5e100ull,
-
-#define TENS_P4_IDX (TENS_P3_IDX + TENS_P3_SIZE)
-#define TENS_P4_SIZE 2
- [TENS_P4_IDX] = 0x0000000000000000ull, 0x002386f26fc10000ull,
-
-#define TENS_P5_IDX (TENS_P4_IDX + TENS_P4_SIZE)
-#define TENS_P5_SIZE 3
- [TENS_P5_IDX] = 0x0000000000000000ull, 0x85acef8100000000ull,
- 0x000004ee2d6d415bull,
-
-#define TENS_P6_IDX (TENS_P5_IDX + TENS_P5_SIZE)
-#define TENS_P6_SIZE 5
- [TENS_P6_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
- 0x6e38ed64bf6a1f01ull, 0xe93ff9f4daa797edull, 0x0000000000184f03ull,
-
-#define TENS_P7_IDX (TENS_P6_IDX + TENS_P6_SIZE)
-#define TENS_P7_SIZE 8
- [TENS_P7_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x03df99092e953e01ull, 0x2374e42f0f1538fdull,
- 0xc404dc08d3cff5ecull, 0xa6337f19bccdb0daull, 0x0000024ee91f2603ull,
-
-#define TENS_P8_IDX (TENS_P7_IDX + TENS_P7_SIZE)
-#define TENS_P8_SIZE 15
- [TENS_P8_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0xbed3875b982e7c01ull, 0x12152f87d8d99f72ull, 0xcf4a6e706bde50c6ull,
- 0x26b2716ed595d80full, 0x1d153624adc666b0ull, 0x63ff540e3c42d35aull,
- 0x65f9ef17cc5573c0ull, 0x80dcc7f755bc28f2ull, 0x5fdcefcef46eeddcull,
- 0x00000000000553f7ull,
-
-#define TENS_P9_IDX (TENS_P8_IDX + TENS_P8_SIZE)
-#define TENS_P9_SIZE 28
- [TENS_P9_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x77f27267fc6cf801ull, 0x5d96976f8f9546dcull,
- 0xc31e1ad9b83a8a97ull, 0x94e6574746c40513ull, 0x4475b579c88976c1ull,
- 0xaa1da1bf28f8733bull, 0x1e25cfea703ed321ull, 0xbc51fb2eb21a2f22ull,
- 0xbfa3edac96e14f5dull, 0xe7fc7153329c57aeull, 0x85a91924c3fc0695ull,
- 0xb2908ee0f95f635eull, 0x1366732a93abade4ull, 0x69be5b0e9449775cull,
- 0xb099bc817343afacull, 0xa269974845a71d46ull, 0x8a0b1f138cb07303ull,
- 0xc1d238d98cab8a97ull, 0x0000001c633415d4ull,
-
-#define TENS_P10_IDX (TENS_P9_IDX + TENS_P9_SIZE)
-#define TENS_P10_SIZE 55
- [TENS_P10_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0xf55b2b722919f001ull, 0x1ec29f866e7c215bull, 0x15c51a88991c4e87ull,
- 0x4c7d1e1a140ac535ull, 0x0ed1440ecc2cd819ull, 0x7de16cfb896634eeull,
- 0x9fce837d1e43f61full, 0x233e55c7231d2b9cull, 0xf451218b65dc60d7ull,
- 0xc96359861c5cd134ull, 0xa7e89431922bbb9full, 0x62be695a9f9f2a07ull,
- 0x045b7a748e1042c4ull, 0x8ad822a51abe1de3ull, 0xd814b505ba34c411ull,
- 0x8fc51a16bf3fdeb3ull, 0xf56deeecb1b896bcull, 0xb6f4654b31fb6bfdull,
- 0x6b7595fb101a3616ull, 0x80d98089dc1a47feull, 0x9a20288280bda5a5ull,
- 0xfc8f1f9031eb0f66ull, 0xe26a7b7e976a3310ull, 0x3ce3a0b8df68368aull,
- 0x75a351a28e4262ceull, 0x445975836cb0b6c9ull, 0xc356e38a31b5653full,
- 0x0190fba035faaba6ull, 0x88bc491b9fc4ed52ull, 0x005b80411640114aull,
- 0x1e8d4649f4f3235eull, 0x73c5534936a8de06ull, 0xc1a6970ca7e6bd2aull,
- 0xd2db49ef47187094ull, 0xae6209d4926c3f5bull, 0x34f4a3c62d433949ull,
- 0xd9d61a05d4305d94ull, 0x0000000000000325ull,
-
-#if FPIOCONST_HAVE_EXTENDED_RANGE
-# define TENS_P11_IDX (TENS_P10_IDX + TENS_P10_SIZE)
-# define TENS_P11_SIZE 108
- [TENS_P11_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0xe30968651333e001ull, 0x49e28dcfb27d4d3full,
- 0xee87e354ec2e4721ull, 0x368b8abbb6067584ull, 0x2ed56d55a5e5a191ull,
- 0xea50d142fd827773ull, 0x98342c9e51b78db2ull, 0x866ed6f1c850dabcull,
- 0x9279498719342c12ull, 0x66912e4ad2f869c2ull, 0x57a7842d71c7fd8full,
- 0xfb7fedcc235552ebull, 0x38209ce1f3861ce0ull, 0x34c101349713b449ull,
- 0xa7a8289c8c6c54deull, 0xe3cb64f32dbb6643ull, 0xe3892ee98074ff01ull,
- 0xa8f16f9210c17f94ull, 0x967abbb3a8281ed6ull, 0x9952fbed5a151440ull,
- 0xafe609c313b41e44ull, 0xf111821fa2bca416ull, 0x91bac974fb1264b4ull,
- 0x8e48ff35d6c7d6abull, 0xc4a656654419bd43ull, 0x33554c36685e5510ull,
- 0x0dbd21feab498697ull, 0x982da4663cfe491dull, 0x9e110c7bcbea4ca7ull,
- 0x5fc5a04779c56b8aull, 0x1aa9f44484d80e2eull, 0x6a57b1ab730f203cull,
- 0x87a7dc62d752f7a6ull, 0x40660460944545ffull, 0xc9ac375d77c1a42full,
- 0x744695f0e866d7efull, 0xa1fc6b9681428c85ull, 0x7bf03c19d7917c7bull,
- 0x5715f7915b33eb41ull, 0xdb0708fd8f6cae5full, 0x785ce6b7b125ac8eull,
- 0x6f46eadb56c6815bull, 0x195355d84eeebeeeull, 0x9d7389c0a244de3cull,
- 0xcf99d01953761abdull, 0x0d76ce39de9ec24bull, 0x2e55ecee70beb181ull,
- 0xf56d9d4bd5f86079ull, 0x13ef5a83fb8886fbull, 0x3f3389a4408f43c5ull,
- 0x58ccf45cfad37943ull, 0x415c7f3ef82df846ull, 0x8b3d5cf42915e818ull,
- 0xf8dbb57a6a445f27ull, 0x8ad803ecca8f0070ull, 0x038f9245b2e87c34ull,
- 0xc7c9dee0bedd8a6cull, 0x2ad3fa140eac7d56ull, 0xf775677ce0de0840ull,
- 0x92be221ef1bd0ad5ull, 0xce9d04a487fa1fb9ull, 0x3f6f7024d2c36fa9ull,
- 0x907855eeb028af62ull, 0x4efac5dcd83e49d6ull, 0x77cd8c6be7151aabull,
- 0x0af908b40a753b7dull, 0xe50f30278c983623ull, 0x1d08e2d694222771ull,
- 0xf2ee5ca6f7e928e6ull, 0x11eb962b1b61b93cull, 0xce2bcba19648b21cull,
- 0x7bbebe3034f77154ull, 0x8ce329ace526a319ull, 0xb5dc53d5de4a74d2ull,
- 0x000000000009e8b3ull,
-
-# define TENS_P12_IDX (TENS_P11_IDX + TENS_P11_SIZE)
-# define TENS_P12_SIZE 214
- [TENS_P12_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0xd4724e8d2a67c001ull, 0xf89a1e908efe7ae7ull, 0x54e05154ef084117ull,
- 0x506be82913b1bb51ull, 0xe599574efb29b172ull, 0x806c0ed3f0da6146ull,
- 0x45155e93b86ae5beull, 0x7e1e7c34c0591cc2ull, 0x1d1f4cce7c4823daull,
- 0xd6bfdf759b8ba1e8ull, 0xc2dfae78e341be10ull, 0x0f237f1a016b67b2ull,
- 0xaf6a25743dbeabcdull, 0x142e0e80cab3e6d7ull, 0x2c23481161959127ull,
- 0xcb4bf98287009701ull, 0x88052f8cf8169c84ull, 0xbc13176168dde6d4ull,
- 0x54ab9c41ff0b0905ull, 0x1a1c304e7613b224ull, 0x441c2d473bfe167bull,
- 0x78f061814f6cea9cull, 0x30c7ae41eb659fb8ull, 0xa1ebcad7947e0d0eull,
- 0x2130504dd97d9556ull, 0xf2acd5071a8309cbull, 0xfd82373a3f8ec72aull,
- 0x280f4d3295a842bcull, 0x811a4f04f3618ac0ull, 0xd3967a1b6dc3a5b4ull,
- 0xdcfe388f15b8c898ull, 0x8738b909454eb2a0ull, 0x2bd9cc1110c4e996ull,
- 0x655fec303297cd0cull, 0xf4090ee8ae0725b1ull, 0x398c6fed037d19eeull,
- 0xc994a4503b9af26bull, 0x75a697b2b5341743ull, 0x3ccb5b92ac50b9c1ull,
- 0xa8329761ffe06205ull, 0xeb83cadbdfea5242ull, 0x3c20ee69e79dadf7ull,
- 0x7021b97a1e0a6817ull, 0x176ca776743074faull, 0xeca19beb77fb8af6ull,
- 0xaf63b71292baf1deull, 0xa4eb8f8cde35c88bull, 0x40b464a0e137d5e9ull,
- 0x42923bbd87d1cde8ull, 0x2e2690f3cd8f62ffull, 0x59c89f1b095edc16ull,
- 0x5138753d1fa8fd5dull, 0x80152f18390a2b29ull, 0xf984d83e2dd8d925ull,
- 0xc19e1faf7a872e74ull, 0xecf9b5d0ed4d542dull, 0xc53c0adf9462ea75ull,
- 0x37a2d4390caea134ull, 0x2181327ec8fa2e8aull, 0x2d2408206e7bb827ull,
- 0x5893d4b850be10e0ull, 0x1f2b2322ab312bb9ull, 0xbf627ede440b3f25ull,
- 0xb608b89572dac789ull, 0x86deb3f078787e2aull, 0xbb9373f46fee7aabull,
- 0xf7d8b57e27ecf57bull, 0x3d04e8d2fca26a9full, 0x3172826ac9df13cbull,
- 0xa8fcd8e0cd9e8d7cull, 0x307641d9b2c39497ull, 0x2608c4cf1cc939c1ull,
- 0x3d326a7eb6d1c7bfull, 0x8e13e25feeaf19e6ull, 0x2dfe6d97ee63302bull,
- 0xe41d3cc425971d58ull, 0xab8db59a0a80627cull, 0xe90afb779eea37c8ull,
- 0x9ee3352c90ca19cfull, 0xfe78d6823613c850ull, 0x5b060904788f6e50ull,
- 0x3fecb534b71bd1a4ull, 0x20c33857b32c450cull, 0x0239f4cea6e9cfdaull,
- 0xa19adb9548497187ull, 0x95aca6a8b492ed8aull, 0xcf1b23504dcd6cd9ull,
- 0x1a67778cfbe8b12aull, 0xc32da38338eb3accull, 0xa03f40a8fb126ab1ull,
- 0xe9ce4724ed5bf546ull, 0x73a130d84c4a74fdull, 0xa2ebd6c1d9960e2dull,
- 0x6f233b7c94ab6febull, 0x8e7b9a7349126080ull, 0xd298f9994b8c9091ull,
- 0xa96ddeff35e836b5ull, 0x6b0dd9bc96119b31ull, 0x282566fbc6cc3f8dull,
- 0xd6769f3b72b882e7ull, 0x00fc509ba674343dull, 0xd6266a3fdcbf7789ull,
- 0x4e89541bae9641fdull, 0x53400d0311953407ull, 0xe5b533458e0dd75aull,
- 0x108b89bc108f19adull, 0xe03b2b6341a4c954ull, 0x97aced8e437b3d7full,
- 0x2c5508c2cbd66670ull, 0x5c4f2ef0650ebc69ull, 0x9985a2df904ff6bfull,
- 0x5ed8d2399faddd9eull, 0xe3e51cb925585832ull, 0x56c02d9a0ff4f1d4ull,
- 0xc1a08a138c4ef804ull, 0xe6d2767113fd01c8ull, 0x9d0176cca7c234f4ull,
- 0x4d8bfa89d0d73df2ull, 0x2b17e0b2544f10cdull, 0xfd86fe49b70a5c7dull,
- 0x214495bbdf373f41ull, 0x00d313d584e857fdull, 0xa4ba47440496fcbeull,
- 0xaec29e6ee8cac982ull, 0x7000a51987ec7038ull, 0xff66e42caeee333bull,
- 0x03b4f63b8afd6b25ull, 0x5ab8d9c7bd7991dcull, 0x48741a6c2ed4684eull,
- 0x2fdc6349af06940dull, 0xe974996fb03d7ecdull, 0x52ec8721ac7867f9ull,
- 0x8edd2d00bcdd9d4aull, 0x41c759f83557de06ull, 0xa75409f23956d4b9ull,
- 0xb6100fab123cd8a1ull, 0x2e8d623b3e7b21e2ull, 0xbca35f7792959da2ull,
- 0x35fcb457200c03a5ull, 0xf74eb9281bb6c6e4ull, 0x87cc1d213d5d0b54ull,
- 0x18ae42404964046full, 0x8bd2b496d868b275ull, 0xc234d8f51c5563f4ull,
- 0xf9151ffff868e970ull, 0x271133eeae7be4a2ull, 0x25254932bb0fd922ull,
- 0x104bcd64a60a9fc0ull, 0x0000006230290145ull,
-
-# define TENS_P13_IDX (TENS_P12_IDX + TENS_P12_SIZE)
-# define TENS_P13_SIZE 427
- [TENS_P13_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x9f34522664cf8001ull, 0x7b8d5053644963e5ull,
- 0xb945c82f49f0aa29ull, 0x933b6bb8430ff478ull, 0x64c501d45ff82d0aull,
- 0x9ec1e1b373bbf174ull, 0xe90106893bfbe803ull, 0x3fef8d80f7390d8eull,
- 0x2c73446bf31d1325ull, 0x1c19e379f5ca7a92ull, 0xf52d9d9c270af2beull,
- 0x3abf72e1eb2bed48ull, 0x7ecf35084ac4ffc2ull, 0x38597a5a22019a82ull,
- 0x9a51ff6ebe6a7b3cull, 0x0c0abe9da2d28437ull, 0xc79887ff7c9ec6eaull,
- 0x436420d05851c899ull, 0x72b5547fefead581ull, 0x077ad8f899b1d2b5ull,
- 0x3b4305ed5cddbf5bull, 0x2d88f3fde3861ac7ull, 0x393220aa3d6b43beull,
- 0x1cd62095e5382405ull, 0x87a0d1e161a10c96ull, 0x68c933e6ca95a55dull,
- 0x778089bb9ee082e2ull, 0xfbb6d8d441429ee9ull, 0x26cf5471c529500dull,
- 0xd6c9b14068b9be29ull, 0x8415185207be635aull, 0x83730335b5572182ull,
- 0xdd312d31eb2300b4ull, 0x488da59c05d6dd9bull, 0xda2c2e4037784d25ull,
- 0x6a57d7206a8d92faull, 0xf07a8632950b41acull, 0x2ecad06acd55f062ull,
- 0x34c98bb0e6a3dfe7ull, 0xb60521b19c767d8full, 0xe87d16be752aafd1ull,
- 0xe58a8b0c9de1d728ull, 0x2fa2c119c6013830ull, 0x519b40c83c4f9156ull,
- 0xab78701b5058fc8full, 0xc502a554adc59c47ull, 0x6647f04c0fb3286full,
- 0x5ea495c89db4076eull, 0xb4f00f8b9c74fab1ull, 0xd092b4c6897c7a3cull,
- 0x32f31fa8283e0340ull, 0x67b63de2eeb708ccull, 0xef2bc02b4f7b3c8bull,
- 0xc49344c0da14bfe3ull, 0xb6c4e69eaabc85beull, 0x63a110162ece8aa6ull,
- 0x726ae4d919cfba4dull, 0xee6ae7070fc90b42ull, 0x4d9aabc54290b04aull,
- 0xf34906cdfb2b070eull, 0x52ca97091ff54b0aull, 0x164315700b42bfe1ull,
- 0x6b5565bb980f3076ull, 0x9ce63c76eb8c4c4aull, 0x3da24c53b9e4c771ull,
- 0xb50e3c666f0266faull, 0x01bb4b9676e34f79ull, 0x0fbea1249948cf3eull,
- 0xa1fa4edc86bead12ull, 0xc3b97bf9d11e901cull, 0x370ca58e71730e03ull,
- 0x886467e248b19715ull, 0x3c727e24db237497ull, 0x8e67d76e2116ccd2ull,
- 0x34bdedd3f973aecfull, 0xb042ab0531d680ecull, 0xfc5c3c17770e96a0ull,
- 0xb8204eceab6f1874ull, 0x416c0ced5843f3a5ull, 0x9578018311dd112full,
- 0x7e0e8613b1c74bd8ull, 0xa79ffc1096c6453bull, 0xfcd6da0ab2157651ull,
- 0x3dd0ccac836a34a7ull, 0x496049ed316e5a36ull, 0xdea1a97d0322bcb2ull,
- 0x39578d53cdf2aa5aull, 0x030565c91d1aa931ull, 0x324e0a27d198cbedull,
- 0x284325345db83e8aull, 0x5cb134c090bf23e8ull, 0x009e5051dd0adab6ull,
- 0x7e36a6d7f8ad61daull, 0xbdffe6aa84c75e57ull, 0x138d680eb5d5532eull,
- 0x4a5f74a1bd84ddacull, 0x55538cfaccff00d1ull, 0x48528011b0948b8cull,
- 0x9e047ad7e345f82eull, 0xea77bef06ee770ffull, 0x2f1625670fc13669ull,
- 0x0614686c869426acull, 0x4263ed823a3ff464ull, 0x57205a7ab3589b47ull,
- 0xae6fc46b213f24adull, 0xd92b133f3de03e4eull, 0x1b49c24a315a589bull,
- 0x1641c13873381bcbull, 0xbc680ada7bc99425ull, 0x962e9884a5cfbc9aull,
- 0xfc8d12f60a960d70ull, 0x60acc868ed18ef4cull, 0x131130369aea5d14ull,
- 0x2d99a5b0c747c87eull, 0x006b36583a369bb3ull, 0xe43fa6e6118a5135ull,
- 0xa13dc05eb4947190ull, 0x0dbd7170d7733db8ull, 0x117ed7e7c3fb67d1ull,
- 0xc05fe99ee2d72a49ull, 0xd971a25b9638db40ull, 0x1a1595594239d468ull,
- 0xc1117392850a223cull, 0x567b5fc022d2dbd8ull, 0xc051007a92c5b4ebull,
- 0xfb35572011cc0099ull, 0x398481616907810dull, 0x61d19ef25e8534f4ull,
- 0x8a0ab03c2ee8c466ull, 0x879aa514c234af76ull, 0x59e5da579774a235ull,
- 0xf339bd5a9bc466b3ull, 0xbbb5fd6744ab026dull, 0x3685c9f22b977202ull,
- 0x7054359e03e5dc00ull, 0x9ba11f085239cfb0ull, 0x9c258687f8237562ull,
- 0x52c7bf8fa3b510ddull, 0x3245e079b31ed0cfull, 0xbaee38c7ff9ff8d3ull,
- 0xf702b3b9f17d5562ull, 0xcbca275dcc4c8563ull, 0xe817dbace005d9d1ull,
- 0x62cee35005c6920aull, 0x19e049b90f1deac0ull, 0xb2a27a1659599f74ull,
- 0x7dcef00df0911d5aull, 0x375522513603dd66ull, 0x5fa022da97813735ull,
- 0xefbe57c20d849416ull, 0x5761929630a0e592ull, 0x11735043c953cc47ull,
- 0xc0444be0a83526adull, 0x16ff5136b5f8463cull, 0xf037572c2a0a6631ull,
- 0xb1bf8daad30464daull, 0x0f3e9e7e7f5718f7ull, 0xc26f2624e5a4cfe7ull,
- 0xdfe8f4858c9b5ae4ull, 0xc64a1509f6fa82e3ull, 0x3024b220acb24aeaull,
- 0xddcdfeddddb02ac0ull, 0x384c86c3d834c574ull, 0xdd48a571d904e099ull,
- 0x77b35c744550a05full, 0xaaebdc6d81e85f71ull, 0xd4cdc0540f9bb0b1ull,
- 0x845786af7af4df85ull, 0xdf2a91cae5e53887ull, 0x5689a3c4f6a58211ull,
- 0xa705983a8cf6aa15ull, 0x2ce7fef09fbf2f52ull, 0x4a3b536548e84a62ull,
- 0xd48a0872f8281a47ull, 0xf0929c3e8423dcf6ull, 0xe9ec071b044a5049ull,
- 0x20e30c1b17decc36ull, 0x3342196a45fc2813ull, 0x6601e33746afb7f9ull,
- 0xf18094d130754439ull, 0x61410dd1d38b4112ull, 0xd97d4dd8d8796b36ull,
- 0x8080519147e9bc0bull, 0xcde438c11584e2daull, 0x409659a1955d24f1ull,
- 0x5a09635f1b0950b1ull, 0x615472b965b1febeull, 0x6308e067525dc00aull,
- 0xd4e705a44089e2d4ull, 0x32c18b2643fc9209ull, 0xaf2711534447a5faull,
- 0x4dc4f0d23617cadcull, 0x6aa116ef692eb386ull, 0x0641dc0b655991bcull,
- 0xc655966454469597ull, 0x4bdc0d1a749c0fe8ull, 0xc5292a61a7d3381eull,
- 0x42474cc24eb65fdcull, 0x19dfc9eef2c6b173ull, 0xbece2ee30a19a199ull,
- 0xaa03aa7cc68b778dull, 0xae54d2bec8db86f0ull, 0xdee3f48fb92a01e0ull,
- 0xf6ae28526023c0a9ull, 0xa441cb9ea233763bull, 0x3a8bb4b73246ddddull,
- 0x308ef2c844faa3c3ull, 0xd2862534fd1c8516ull, 0x62336f6f3b25ebe7ull,
- 0x0b8e2ce60c336a45ull, 0x11eea1f2e867f171ull, 0x68df4903523972ecull,
- 0x51ef4cb750c05824ull, 0x3ffae115cb4df2a8ull, 0x3ed1635fb51aca2full,
- 0x0a5ac09fd6ff1cc6ull, 0x0a3dc76fde8ed9d6ull, 0x37991dde5dc2d8ddull,
- 0x80ad6e13f95bacb2ull, 0xd4f8c7a6163005eeull, 0xa4760f083225d180ull,
- 0x9b2b1a875fff004dull, 0x5cd00b66e7ea8576ull, 0x285dd80dec478452ull,
- 0x4301b3a120112439ull, 0xfacbb68cff879fc8ull, 0xb17fdf84af6af6b8ull,
- 0xf4489576c208d9f1ull, 0xadcc862c8794a6e9ull, 0x931685a40e83e54cull,
- 0x1e40293bab01c580ull, 0x1f1ddf7fcad784faull, 0xcee722b26b856084ull,
- 0x74254eb41c39938bull, 0xb9c26d9ac7ccebf4ull, 0x2e3ece246b08dfb9ull,
- 0xdff60410981455ecull, 0xe06fa38bbc804e2bull, 0x72e53c52b534540cull,
- 0xb2a5c05a02dfb2efull, 0x973133385002a2a5ull, 0xd61df455597c53ffull,
- 0x39ac2ec534e5261aull, 0x388b7539c6bc0cabull, 0x00eac7043f732fc0ull,
- 0xc089971e92fb21d9ull, 0x7af93f8fb4ffa503ull, 0xa8311b2372e353b6ull,
- 0x1de496ca8266c9afull, 0xd6fa0b51dbdb16b0ull, 0xbd5630899991a5efull,
- 0x0954a1e3168cbe0full, 0x53d09723537b9245ull, 0x86558cb92867272dull,
- 0xfac85d100b83f026ull, 0x1e5ddb95f8562951ull, 0x48d27b92ad3668c8ull,
- 0x19b58a99c930b7e6ull, 0xa9cda917a3de74e3ull, 0x7a4dd16ecb6e35eeull,
- 0x4d84073f4c80e9d5ull, 0x9cffcfc074a95ba8ull, 0x15796372d28485ebull,
- 0x77eda8df5717e9cdull, 0xadb965e1ab473c4eull, 0x5bc05659ffad6959ull,
- 0xfb2402276ed63880ull, 0xd15fdddf2014850bull, 0xb538f37dfdd74592ull,
- 0x1473396f3a8e2e82ull, 0x3ce41a21f6a5edf8ull, 0x754e82640cc4351aull,
- 0xc7821b96aab95e73ull, 0xc242faaaf42ff463ull, 0x087e260edd00ac65ull,
- 0x0dbe032817d193f5ull, 0xf9d10f96844a63c9ull, 0xbaf127ec85aa91ddull,
- 0xce85e6a50ab6dabbull, 0xe7b56a161af5d24full, 0x57d1d79fcd6c5a19ull,
- 0xec4dd2f05dfc2b28ull, 0x8d72216a18fe64a1ull, 0x72f14a085f222077ull,
- 0x3bf038abd8b09b11ull, 0xc4265d7cc6cf1f44ull, 0x46398d2cdab1b0e7ull,
- 0xb6e705d37dcfdc68ull, 0x362c11834aafd1e6ull, 0xf6ac98b7d8701107ull,
- 0xd6649424ad114d7eull, 0xddd1c6e4c40ab551ull, 0xc9d284c8a132030full,
- 0x824069eedb1f662aull, 0xc846b3ad4157904bull, 0x0a248c17d38481caull,
- 0xe8745febc846831full, 0x00000000000025a8ull,
-
-# define TENS_P14_IDX (TENS_P13_IDX + TENS_P13_SIZE)
-# define TENS_P14_SIZE 852
- [TENS_P14_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
- 0x41b5687d099f0001ull, 0x8c75ee63cbfd1b6eull, 0xd75296ad4b191ceaull,
- 0x1eb5da9b2394d80aull, 0x5c79fed918a004edull, 0xed67a1b837e3b01cull,
- 0x2a1a34d578d9a714ull, 0x6b1d35168fbe7f0dull, 0xa7825681e57c43eaull,
- 0xd3e716e1c81d32e8ull, 0xa6d93d6558860b00ull, 0x0113232f83159c97ull,
- 0x7321c3a0d6122269ull, 0xca4ca9d3be6a92f3ull, 0xc0e55163d1e276a5ull,
- 0x7b7a78c1b05915d6ull, 0x62a3df4b0fae0ca4ull, 0x13030d1108abec6full,
- 0x60dcc8f2d446338aull, 0x25e1f9f65f05d1d5ull, 0x7f8c711304a40beeull,
- 0x589ff59a88f47ec0ull, 0xea5068a1308c3661ull, 0x06e87dff95fb108full,
- 0xd4d4abdc1559e741ull, 0xee16907c01e092e4ull, 0xe73aabcb5a7b78e6ull,
- 0xad372889146bb7e0ull, 0xfd49fc1d4f6b43c5ull, 0xd37392530f29f589ull,
- 0xe2acfcc2c4745a56ull, 0xedd016cdd75ccbc7ull, 0xef82ccd3ac5a63e0ull,
- 0x2bdabfc4b352496eull, 0x01b0197f5b3d0401ull, 0x29d9253dade96d3cull,
- 0x73c56b1b19bebdbaull, 0x1f2b7f1e255e7b25ull, 0x6299c836a56a457eull,
- 0xa2ca74c65c63cc78ull, 0xee571bea5c85fe93ull, 0x2db5f1d0508e2561ull,
- 0xa9b87b99b1fde6a9ull, 0xf7260f074fb90a37ull, 0x56ee7e97ff58c5fdull,
- 0x42e6f9cebab9fa46ull, 0x1b76d26778816f73ull, 0x4566519cfdb2c728ull,
- 0xb9f6a95fae17dd8dull, 0x67160dea1cd533a1ull, 0xfcd8f8f914534bacull,
- 0x708b1f0af3f2901dull, 0x9457a1df8829063bull, 0x36bb93358f872aa1ull,
- 0xd889d109b5672c0eull, 0x933066727ec63a6aull, 0x8239ab6839b6d457ull,
- 0xbe0d7a1fef2e2506ull, 0x05f655224251b635ull, 0x032868910ef0bd55ull,
- 0x9815fbac2c42b664ull, 0x814e379c471fd611ull, 0xa4a25bda7dd8349dull,
- 0x01b9e39d9886b84cull, 0xae31cbc95a7ce1a2ull, 0x83ef8faf86d07f32ull,
- 0x58470fdfb66b5b76ull, 0x5161888996d59b73ull, 0xfc8e0fc6dc400cf7ull,
- 0x09a08e56af693670ull, 0x74f682e191737de6ull, 0x7f8ac56d0e03923full,
- 0x8e05e49a7400cfd4ull, 0x384e11644cebea3cull, 0xb50ae05eb2e43d8cull,
- 0xa40061230f0b3ed9ull, 0x4e9a193464137137ull, 0xd9621be605404100ull,
- 0x5c347ebb9329a255ull, 0xe684346b75cbeb1bull, 0xba6a9753840fee55ull,
- 0x60505b7bf43836f6ull, 0xfd6d475d334a9278ull, 0x267375aa5db94761ull,
- 0x024f6d63c110e160ull, 0xa99b4c192ec96610ull, 0x338cfd90b915c9f4ull,
- 0xb9e51a09f02ea846ull, 0xfae31d88ae928fb1ull, 0x8475dd261a3db721ull,
- 0x7ad4c4075769489dull, 0x34e275c80a49e9f0ull, 0x1d63114a3d075d83ull,
- 0x6b98e94772a96415ull, 0xd50fdc361d500b5full, 0x87751275141e5085ull,
- 0x2278809ee7843834ull, 0x947aead2b15c52eeull, 0x5197b744fedb7b02ull,
- 0x8849d0a664e09ba8ull, 0x11ecb91323beaa85ull, 0x5d9848480f7ed667ull,
- 0x588290e99f6331eaull, 0x7e09e9e5a24d64d1ull, 0x03a501df32592033ull,
- 0xbb3df73827c270a6ull, 0x4190833c3c7c5a70ull, 0x80e5d89b7d4bf9f4ull,
- 0xfaefb663a7fc6194ull, 0xd3b6adcd62e52b49ull, 0x1f2cf73a809646fcull,
- 0x531e4bfbb765ed4full, 0xaf12d1a692cd05f2ull, 0x38da107422ee30f3ull,
- 0x1a725608ed6447bbull, 0x7a3c6f54aff222d3ull, 0x7b0e8d12bca79a56ull,
- 0x6e34d6fb1c4660c5ull, 0xfe9dc99c6f481a9full, 0xd8489ea0f888db82ull,
- 0xc0dea28184b4c0faull, 0xae30e887977a8583ull, 0x1d4848cb8c1cbcecull,
- 0xd011b0fc0ee0d137ull, 0x478d7dd494b5fd49ull, 0xacab62ad3d67f2e7ull,
- 0x1dfc7df50ab4e62aull, 0x870b0e75d22e4553ull, 0x1b73bf6d49b7b001ull,
- 0xdc9f073712807ffdull, 0xc0e2f2506f3e5852ull, 0x4d96a55a93e62e4aull,
- 0x83a126dbc1d0e185ull, 0xefbfd043190b917bull, 0x8f25b6ddc7df1669ull,
- 0x476c17a62062eac9ull, 0x25460383cb60f278ull, 0xda8c05be0e85e996ull,
- 0x692062346f678a34ull, 0x1947b69af59be929ull, 0x90fd83220ebfa11bull,
- 0xd699b1ec15c1e9bfull, 0x7001d002b2f0343full, 0xc0778ab5cf76eaaaull,
- 0xb7b008e25173eda8ull, 0x505d3f4d4e00e4c6ull, 0x1c9d4e1299dd341aull,
- 0x474c5e954ffb6978ull, 0xda19f9386e9ca6ddull, 0x98dc318ee2dda6e0ull,
- 0x3f67b836da455e54ull, 0xa97e9a6421e4181cull, 0x527a08bb1e17f655ull,
- 0x682972ad1712dc21ull, 0xccbeadf10042d256ull, 0x861e99e0ca497b96ull,
- 0xeeb0f6500d8aa585ull, 0x506af77edcc3c3daull, 0x7c9d60be5deb9768ull,
- 0x37b37e95e9d978b7ull, 0x42747f7577ad0b94ull, 0x6d5fd2fe07be42c4ull,
- 0x0d8fc27d4c8c5da9ull, 0x0ccf60230f2fd50full, 0x3b1101bd5b56053full,
- 0xc0feca2756d34906ull, 0xc4888da47602a150ull, 0x56d10633419abe54ull,
- 0x8db14123c76120edull, 0x741e8f76b656e675ull, 0x96be6f21d297b94eull,
- 0x9b409e273662439dull, 0x35fff92a6626574dull, 0x69e02439bf558205ull,
- 0x6400fd4cbe6838b7ull, 0x1f4b158aa00f64caull, 0x04cca5589e2052aeull,
- 0x58da644cfb5ee69eull, 0x8ab1940196f26e1full, 0xed8bf908bee1e16bull,
- 0xd50babab2f2809a4ull, 0x6b0a89296e57f7e6ull, 0xb54a4cfcf7356431ull,
- 0x6f9fd6cb9a1d0ac4ull, 0x3b42f469836bfbf8ull, 0x40111b6b8bd32129ull,
- 0xb345d9557c278fb1ull, 0xd32cd13cff1fd188ull, 0x3789f792f7ec3aa0ull,
- 0x4d79a4bfab707fa4ull, 0xd9c24d8eb3a28cebull, 0x06e2eb3e7134dadcull,
- 0xb379d811d7c04f76ull, 0x8c94fc332b3b0ebcull, 0xc06c5d01a28b53abull,
- 0x7fea91cad900432aull, 0x64845f086d30b008ull, 0xfde4687d796f5349ull,
- 0xe0046c56f888fe67ull, 0xce98cb11ae482177ull, 0x1feb440084590c46ull,
- 0xff2f16116e1ba29bull, 0x3159ca8cf73f3e9cull, 0x56f0ed4634845918ull,
- 0xd9a16a01b7d10c32ull, 0x3cee3e24405b9e91ull, 0x2ab396b48739e4a6ull,
- 0x09835dfd3f1b7871ull, 0x1592b74a8c7a489full, 0x0e8d3f3705df7c81ull,
- 0x68b29622a61ff273ull, 0x43ff84a6259cd337ull, 0x566ed88381cf8fe9ull,
- 0x35c7942848427fc6ull, 0xa97e8c8bcfd2fb59ull, 0x32ddca23750aaed8ull,
- 0x96fbfff9aa8108efull, 0xe3cdf588a1d039aaull, 0xcd6b3fdb47e77e00ull,
- 0x9a522152e72a9a80ull, 0xef175610eda06283ull, 0x339fe6c4a670cfa1ull,
- 0xc2d7f53b2dfbf3eeull, 0xcc47e4b092a44e27ull, 0xd64f83c9dfa212bcull,
- 0xb51319bf997e5475ull, 0x1fc2c7b69fffe599ull, 0x832169ddef5605e7ull,
- 0xbf921dc8feb6be4eull, 0x72759f8d60bdfb1dull, 0x020eebed3546efa0ull,
- 0xdb20a2fecaab3d64ull, 0xb2b62bddba1218f6ull, 0x8fde5cfa3101eff0ull,
- 0xa52114d22e319213ull, 0xdf08b1dd87eead3full, 0x746f34d0a5387642ull,
- 0x4cc40317d76c4844ull, 0xb7d76071e4f689c9ull, 0x6e1c79155fe0b4a2ull,
- 0x3efb7d71c7d43f53ull, 0x35a75f5f068dd906ull, 0x750f4607652d7770ull,
- 0x36c2cf8e64a1656cull, 0x9348ef93214d758bull, 0x9674b7f3e4058978ull,
- 0xbdfaba8f10570b0bull, 0xa92b261fcef09dd7ull, 0xcbebb81f071c21b6ull,
- 0x44228cd6f427ed6cull, 0x5036c46065e56fcfull, 0xccfd848bad919defull,
- 0x7527dca361d158a6ull, 0x508550754cf30459ull, 0x3540f5aaa70dfd09ull,
- 0xb5ba3d4e35577adbull, 0xcdfb689f35736c4full, 0x97ab0dcaefe8fa82ull,
- 0x77a7fe9c51bd2ff3ull, 0x3d618b813107846cull, 0xfc5e9651bca797a4ull,
- 0xf7e8791fe2e08fbcull, 0x7c426f9d772f1cc0ull, 0x0080c3ab08d56f88ull,
- 0xe6d46ec60deea663ull, 0x6b681d9d7dca4eb7ull, 0x4af0e0f2da06730bull,
- 0x52097463038bf468ull, 0xbc09bb9aca19d302ull, 0x3ded4433aa55aeb1ull,
- 0x3e4b7865f27938baull, 0x7ef9631428296be7ull, 0xdf0b6b477a1d55ccull,
- 0xcedda5bdcde11852ull, 0x72ca1a8bf00a0eb3ull, 0xb002fdcc5241b572ull,
- 0xc4878862ff8898b3ull, 0xbf4bca29b3e85372ull, 0xf2d831897e1fef45ull,
- 0x3cdf9e050f5427afull, 0xf65c06ac75bae885ull, 0xa3145eac9c71a700ull,
- 0x76255bbfde63bab2ull, 0x4c6ad3d06e817be6ull, 0xe95ef2f825ab9935ull,
- 0xd54f78de11cd095aull, 0xb3829dcba001ae7eull, 0x18eb9c9e5abd18bdull,
- 0xe3e3556cada3c504ull, 0x5191ac5fd35479aaull, 0xc8d1d9d3221821acull,
- 0x088c3fc8313a8c51ull, 0xb154abedc146a264ull, 0x349ec09392755bc5ull,
- 0x41d5886cf94aba57ull, 0x36aba94b0a5ad8b2ull, 0xa9ad229f883a6758ull,
- 0x0546172f5d64069aull, 0xc3808ea40366da16ull, 0x70f0a2350b172403ull,
- 0x4fceb827fa816e66ull, 0x167b56d5a65fcfeaull, 0xfec36bcdfe2b9fb2ull,
- 0xcd96320fa84c4cc9ull, 0x09eda8b83e128584ull, 0x7ec7e17b91eca525ull,
- 0xc14032f4bc45bedcull, 0x2eb20bc09be689a7ull, 0x14ef835fffdf1efcull,
- 0xcd778dd8c6966c59ull, 0x23d477155feb0f3bull, 0x5722a550d64b87c8ull,
- 0x315a1a8b62883198ull, 0x4b7e9d7a648e17e6ull, 0x67caca842ba43d28ull,
- 0x6e660159741f0398ull, 0x3dde3c453e16e1a9ull, 0xc7eb0aefa53e56aeull,
- 0x78751d733f39f33eull, 0x626770f745816df8ull, 0x909e87f4cb17d28dull,
- 0xc1dcf32893a86abaull, 0xd895d0421a1e4ce2ull, 0xbb00eaf5b9f6dd69ull,
- 0xca609578acc37687ull, 0xf8b86d4c5b490d39ull, 0x39419f6df2737ef0ull,
- 0x72524a0369267bc0ull, 0xdbc01e936eb060c4ull, 0x83984d54291035b1ull,
- 0xe08cbc20f673ad85ull, 0x584803a61fb24915ull, 0x4088ddb5e15bbcd7ull,
- 0x2c18041ad4c22542ull, 0xb2ba69b4a51372d1ull, 0xcd11c2962299283full,
- 0xac54df2325dcd6f3ull, 0x77e16e1d24a3a55eull, 0xb99d85c0b3cd415bull,
- 0xe91154e3497befc7ull, 0xb55100aa7365cd8bull, 0xfc0927a60ee699ebull,
- 0x8acaa910efb374deull, 0xda3f000683b40e3dull, 0xc6ce1b758590a089ull,
- 0xfda2f7f354f6ff20ull, 0xd0763b6dd2ab58f6ull, 0x2519622d6caf2515ull,
- 0x9863638fc3714057ull, 0x09ea4a4dea00bb4full, 0x6b01fe5fe69de96dull,
- 0x529e32ec960161a5ull, 0x01a37eeaf8260ae9ull, 0x5aa0716f69710577ull,
- 0x4260fedacb3fb1daull, 0x76012f75a33fb790ull, 0x130f09ae24c0e5beull,
- 0x5c8ecb762e8323dcull, 0x401b5f5c17cb8f12ull, 0x47e1560a5f0a63e0ull,
- 0xee1377d4dc57a786ull, 0x0aa294b9228e7ee5ull, 0x55b0fe2faea6c534ull,
- 0xf108b772922d318aull, 0xdfb69702f15bddf6ull, 0x90e1db66cd438a4eull,
- 0x568ef6cb584ce4a1ull, 0x6da376ba69e55f9dull, 0x45c7e2945ca6c109ull,
- 0xcf5b6c0cc977b3e9ull, 0x11b487ae1d694499ull, 0xbcb3cc6ecf8339acull,
- 0x046b107150b828e0ull, 0x2c6159465703ed0dull, 0xa908dbd0720d1610ull,
- 0x22c076e2742bbe33ull, 0x1d0cefa448966a66ull, 0x601352bf1dde819full,
- 0xa585cc4ab9370c39ull, 0x5a2f7206eb857f94ull, 0x49cd0f1f3fae6b58ull,
- 0x1b89d47678e5fb3dull, 0xed82945b74e9e65bull, 0x2941c4d9b74e6483ull,
- 0x565c18dc7e087accull, 0xbf4ccd3d1a09f2e5ull, 0xa522631dd304e977ull,
- 0x4517109b6123378eull, 0x4bf1a506b7e4285aull, 0x683172f8625803c2ull,
- 0x3f8a2b11c84e7354ull, 0xed4204917dd12b89ull, 0x9853fb978c698b0bull,
- 0xb697e1c99631777bull, 0x510381105f028f05ull, 0x30e255e39055f055ull,
- 0xb990321ee2d0c1b6ull, 0xff4dc144a8fdf4d1ull, 0x148999e0521a3056ull,
- 0xa9c96852a8111c66ull, 0x4b394a948157f508ull, 0x94ec2e93a0dc4df1ull,
- 0x8fc283776e6afa56ull, 0xc435186ff72ffa04ull, 0x8d037f6ff91488b7ull,
- 0x48757727a899ec1eull, 0xb8cf377d4101b612ull, 0xb4570569a5a54e68ull,
- 0x063d9cfd2ac5a0a0ull, 0xf1a5884c7c504c74ull, 0x8d0b91bf0a9b1955ull,
- 0x79ff5361e5f6862full, 0xc6fd31fb0ed3d38full, 0x85b9c6489fe131c7ull,
- 0x8e77e86b8febf2b4ull, 0x56429986992ba80eull, 0x608cdda56848879aull,
- 0x754b300e3e0d106eull, 0xafd5195b25200576ull, 0xe81f09395d37aad9ull,
- 0xdeeea20ae00a390eull, 0xb5d51155f5fef0beull, 0x9e72ebcf6e27d173ull,
- 0xb966f7bab776e978ull, 0x726c840809520238ull, 0x65dce5a23347ebc5ull,
- 0x8c92d7403ec78337ull, 0x32caec933cdde3feull, 0x411be811d20379aeull,
- 0x72fa1bbd41756580ull, 0x84c42f04a92125b3ull, 0x3a25922cdd4ee5feull,
- 0x49ad3be096446853ull, 0x1c841afe2880366dull, 0xfb905fe1f1e09019ull,
- 0x3ba9d0c9a451ad59ull, 0xa42419f256db2e9cull, 0x3c9a3ca5e921e7a0ull,
- 0xcec7d091ad8ea375ull, 0x477ef58f99bdb940ull, 0xb2598b8d8a4933c7ull,
- 0xcfac1e1cf5659df7ull, 0xe2a04aab339f8748ull, 0x45bc6f37e122b03full,
- 0x9c75aaa0c9feeb30ull, 0x0ea0585dc13c174eull, 0x3a96bd5adc58bbb4ull,
- 0x3c7a714d20251482ull, 0x6cb83b6b696897ebull, 0x3b496b5fa37de406ull,
- 0x380dd38237e75d6aull, 0xda26fac90e1a513cull, 0x12b5c6eaf2458364ull,
- 0x1ff1fcbf79ce9e47ull, 0x59a6a7babe7c6e86ull, 0x947614538d70f515ull,
- 0x8768ffb26b04e425ull, 0x3f9e84071ca5f425ull, 0x5f8f67563b641184ull,
- 0x56bc212062b1a5a5ull, 0x17f2fa18d1e5da68ull, 0xa1bc9c068cce5e2dull,
- 0x892df1af8e290fb1ull, 0xb43e5517ad10b8c8ull, 0x4407c38fd0597409ull,
- 0xfea9c9b64a020d81ull, 0xd5b2aaf9d8e0e7d6ull, 0xda44ed4ade5e9b40ull,
- 0x87aa3ca045d6bf41ull, 0x4708acc8c62d12fcull, 0x0d1227ff10212e26ull,
- 0x5da02550feeb5742ull, 0x1d56e5e1d66668e7ull, 0xae1e0bef32c215ecull,
- 0x58c0e9227f048b7eull, 0x58251aac2aea8619ull, 0xa1fea536bbe10425ull,
- 0xd233eb7d2e1d9667ull, 0xb0693c67cf435c0bull, 0x903ec9f061d918eaull,
- 0x0efb1788d6c4e8acull, 0x1709d878b0098f5bull, 0x3f6ce1b73c12b35eull,
- 0x8a8f7dbba1b3ff54ull, 0x73e8563e37608d6aull, 0x64e00749a3330540ull,
- 0x8d5caaf9ebbfcab9ull, 0xedb2bd943bc87c7eull, 0xe656dec322f8f62dull,
- 0x670c1626c5683222ull, 0x4237542f94089e7full, 0x2fc4e53047d29440ull,
- 0x8b288dac8419441eull, 0xa7afb4e97f9245f9ull, 0x082adef78a15650dull,
- 0x043c62de3104ef19ull, 0x7ecd06350aff3dc5ull, 0xe0600fade7e80a8bull,
- 0x81ebf4e04d8e81ccull, 0x7b372af7f587e30full, 0xdee11c6f2d8f8ca0ull,
- 0xf8adc426d3624b1cull, 0x5c22de4fca9debedull, 0xfae3186b3634f778ull,
- 0xd7bfa75facf8b595ull, 0xbbfe3cf6003cd316ull, 0xc51055a1b023cb50ull,
- 0x93869a770063cffdull, 0xfbceeb1051e022d4ull, 0x109defc95187457eull,
- 0xe13cfde2673892d8ull, 0xc09c8134d4aa3272ull, 0x0327181bbf89ad5bull,
- 0xaa21b63209511ec7ull, 0xe41885b5d7e72186ull, 0x493d278946713f9cull,
- 0xd5d22a5c1386c526ull, 0xcf59281ccefddfc4ull, 0x4ebe43f692973ea6ull,
- 0x6cf4897deac5c6adull, 0x82ce562ad95082a0ull, 0x28d8f0db28e5e9bdull,
- 0x707b0166ddf06e81ull, 0xfbf5756a7dae3f00ull, 0x4f114102035a4680ull,
- 0x5190fedfe7ba4b33ull, 0xe5f1bc49106a7594ull, 0xd7a1a766aae3ad67ull,
- 0x9120a214040ee971ull, 0x1edc87eaf415b374ull, 0xc6ad637d17aab43cull,
- 0xd90303c7885858c1ull, 0x3ff4eb0ebfd4b70bull, 0xd81eea30344a9a88ull,
- 0x5adef0ec95925446ull, 0x20bbd8c3abb5f5e7ull, 0xe6944262c1c22cceull,
- 0x80024021c5acdb23ull, 0x94b30c812232c635ull, 0x78569acd55f07648ull,
- 0x4dd6b5289696ea39ull, 0xde5853b31c3e1b40ull, 0x6eb5a7d88a2c3679ull,
- 0x8f9cf09656bda89aull, 0x6481c7e7fda86d5bull, 0x15bfb45d50a6a7d5ull,
- 0xc057d45d4f9a5381ull, 0xa0009f004fb10024ull, 0xac420f745e1ca0ddull,
- 0xf0d4a615cfbb38bdull, 0x0e3aef8419bf0318ull, 0x166c1e3ecb3d7b20ull,
- 0x3bfacf9f58272fddull, 0x63a13528c0f5ce46ull, 0xa020ca8cea59e333ull,
- 0x3dbb5a3daadd116bull, 0x747f55eae5523f47ull, 0x64d520fb0922171eull,
- 0x07ce951b6c709e84ull, 0x7508eb6d35fdc402ull, 0xb0d11c39c495a8faull,
- 0x57447ef081313d65ull, 0xf72301f3a7b61e26ull, 0x45a3a7c5bb096315ull,
- 0x00432f88a903a44bull, 0xeb4e1b6619081987ull, 0x6d245171bb7b66bdull,
- 0x0d89bd0bde4182f5ull, 0xf70d8a6087f4de6cull, 0x08a274499a87855bull,
- 0xd49640174ac7720aull, 0x4db3488cb0d9ddacull, 0xd07b745bfe397d44ull,
- 0x6e9d567d197dcb7bull, 0x9143fef1e3b90812ull, 0x115ff96db9e002acull,
- 0x5b61c9c8f60a2201ull, 0xb14a44a709abab2full, 0x843c79970ca19c73ull,
- 0x5e3fc18ce3a9bbe6ull, 0x764df59d0c0404eeull, 0x4ad0ba3c990ec2c2ull,
- 0xe599647d05e8be0full, 0x4d0c2990c19d365dull, 0xb680a72de5a9d9acull,
- 0x6d6c02674ce2e5ddull, 0xbd6078e006f9c25bull, 0xd742fa41b5fcdc81ull,
- 0xc691adc0cccc2399ull, 0xea73b0c3215ad82cull, 0xf499e0a6a511e5b0ull,
- 0xd94440a253e27ab0ull, 0x9a6e364447752521ull, 0x8f8b301dab113708ull,
- 0x00000000058a42a3ull,
-#endif
-};
-
-#else
-# error "mp_limb_t size " BITS_PER_MP_LIMB "not accounted for"
-#endif
-
-/* Each of array variable above defines one mpn integer which is a power of 10.
- This table points to those variables, indexed by the exponent. */
-
-const struct mp_power _fpioconst_pow10[FPIOCONST_POW10_ARRAY_SIZE] =
-{
- { TENS_P0_IDX, TENS_P0_SIZE, 4, },
- { TENS_P1_IDX, TENS_P1_SIZE, 7, 4 },
- { TENS_P2_IDX, TENS_P2_SIZE, 14, 10 },
- { TENS_P3_IDX, TENS_P3_SIZE, 27, 24 },
- { TENS_P4_IDX, TENS_P4_SIZE, 54, 50 },
- { TENS_P5_IDX, TENS_P5_SIZE, 107, 103 },
- { TENS_P6_IDX, TENS_P6_SIZE, 213, 210 },
- { TENS_P7_IDX, TENS_P7_SIZE, 426, 422 },
- { TENS_P8_IDX, TENS_P8_SIZE, 851, 848 },
- { TENS_P9_IDX, TENS_P9_SIZE, 1701, 1698 },
- { TENS_P10_IDX, TENS_P10_SIZE, 3402, 3399 },
-#if FPIOCONST_HAVE_EXTENDED_RANGE
- { TENS_P11_IDX, TENS_P11_SIZE, 6804, 6800 },
- { TENS_P12_IDX, TENS_P12_SIZE, 13607, 13604 },
- { TENS_P13_IDX, TENS_P13_SIZE, 27214, 27210 },
- { TENS_P14_IDX, TENS_P14_SIZE, 54427, 54424 },
-#endif
-};
diff --git a/stdlib/fpioconst.h b/stdlib/fpioconst.h
deleted file mode 100644
index c05f8e7bac..0000000000
--- a/stdlib/fpioconst.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Header file for constants used in floating point <-> decimal conversions.
- Copyright (C) 1995-2017 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 _FPIOCONST_H
-#define _FPIOCONST_H
-
-#include <float.h>
-#include <math.h>
-#include <gmp.h>
-
-
-/* These values are used by __printf_fp, where they are noncritical (if the
- value is not large enough, it will just be slower); and by
- strtof/strtod/strtold, where it is critical (it's used for overflow
- detection).
-
- XXX These should be defined in <float.h>. For the time being, we have the
- IEEE754 values here. */
-
-#if !defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024
-# define LDBL_MAX_10_EXP_LOG 12 /* = floor(log_2(LDBL_MAX_10_EXP)) */
-#else
-# define LDBL_MAX_10_EXP_LOG 8 /* = floor(log_2(LDBL_MAX_10_EXP)) */
-#endif
-#define DBL_MAX_10_EXP_LOG 8 /* = floor(log_2(DBL_MAX_10_EXP)) */
-#define FLT_MAX_10_EXP_LOG 5 /* = floor(log_2(FLT_MAX_10_EXP)) */
-
-/* On some machines, _Float128 may be ABI-distinct from long double (e.g
- IBM extended precision). */
-#include <bits/floatn.h>
-
-#if __HAVE_DISTINCT_FLOAT128
-# define FLT128_MAX_10_EXP_LOG 12 /* = floor(log_2(FLT128_MAX_10_EXP)) */
-#endif
-
-/* For strtold, we need powers of 10 up to floor (log_2 (LDBL_MANT_DIG
- - LDBL_MIN_EXP + 2)). When _Float128 is enabled in libm and it is
- ABI-distinct from long double (e.g. on powerpc64le), we also need powers
- of 10 up to floor (log_2 (FLT128_MANT_DIG - FLT128_MIN_EXP + 2)). */
-#define FPIOCONST_HAVE_EXTENDED_RANGE \
- ((!defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024) \
- || __HAVE_DISTINCT_FLOAT128)
-
-#if FPIOCONST_HAVE_EXTENDED_RANGE
-# define FPIOCONST_POW10_ARRAY_SIZE 15
-#else
-# define FPIOCONST_POW10_ARRAY_SIZE 11
-#endif
-
-/* The array with the number representation. */
-extern const mp_limb_t __tens[] attribute_hidden;
-
-/* Table of powers of ten. This is used by __printf_fp and by
- strtof/strtod/strtold. */
-struct mp_power
- {
- size_t arrayoff; /* Offset in `__tens'. */
- mp_size_t arraysize; /* Size of the array. */
- int p_expo; /* Exponent of the number 10^(2^i). */
- int m_expo; /* Exponent of the number 10^-(2^i-1). */
- };
-extern const struct mp_power _fpioconst_pow10[FPIOCONST_POW10_ARRAY_SIZE]
- attribute_hidden;
-
-/* The constants in the array `_fpioconst_pow10' have an offset. */
-#if BITS_PER_MP_LIMB == 32
-# define _FPIO_CONST_OFFSET 2
-#else
-# define _FPIO_CONST_OFFSET 1
-#endif
-
-
-#endif /* fpioconst.h */
diff --git a/stdlib/gen-fpioconst.c b/stdlib/gen-fpioconst.c
deleted file mode 100644
index e8b3258d1b..0000000000
--- a/stdlib/gen-fpioconst.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Generate data for fpioconst.c.
- Copyright (C) 2012-2017 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 <inttypes.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <gmp.h>
-#include <stdint.h>
-
-int
-main (void)
-{
- FILE *out32 = fopen ("fpioconst-32", "w");
- if (out32 == NULL)
- abort ();
- FILE *out64 = fopen ("fpioconst-64", "w");
- if (out64 == NULL)
- abort ();
- FILE *outtable = fopen ("fpioconst-table", "w");
- if (outtable == NULL)
- abort ();
- mpz_t p;
- mpz_init (p);
- for (int i = 0; i <= 14; i++)
- {
- int j = 1 << i;
- mpz_ui_pow_ui (p, 10, j - 1);
- int exp_m = mpz_sizeinbase (p, 2);
- mpz_ui_pow_ui (p, 10, j);
- int exp_p = mpz_sizeinbase (p, 2);
- int size32 = 2 + (exp_p + 31) / 32;
- int size64 = 1 + (exp_p + 63) / 64;
- uint32_t data32[size32];
- uint64_t data64[size64];
- memset (data32, 0, sizeof data32);
- memset (data64, 0, sizeof data64);
- mpz_export (data32 + 2, NULL, -1, 4, 0, 0, p);
- mpz_export (data64 + 1, NULL, -1, 8, 0, 0, p);
- if (i == 0)
- {
- fprintf (out32, "#define TENS_P%d_IDX\t0\n", i);
- fprintf (out64, "#define TENS_P%d_IDX\t0\n", i);
- }
- else
- {
- fprintf (out32, "#define TENS_P%d_IDX\t"
- "(TENS_P%d_IDX + TENS_P%d_SIZE)\n",
- i, i - 1, i - 1);
- fprintf (out64, "#define TENS_P%d_IDX\t"
- "(TENS_P%d_IDX + TENS_P%d_SIZE)\n",
- i, i - 1, i - 1);
- }
- fprintf (out32, "#define TENS_P%d_SIZE\t%d\n", i, size32);
- fprintf (out64, "#define TENS_P%d_SIZE\t%d\n", i, size64);
- for (int k = 0; k < size32; k++)
- {
- if (k == 0)
- fprintf (out32, " [TENS_P%d_IDX] = ", i);
- else if (k % 6 == 5)
- fprintf (out32, "\n ");
- else
- fprintf (out32, " ");
- fprintf (out32, "0x%08"PRIx32",", data32[k]);
- }
- for (int k = 0; k < size64; k++)
- {
- if (k == 0)
- fprintf (out64, " [TENS_P%d_IDX] = ", i);
- else if (k % 3 == 2)
- fprintf (out64, "\n ");
- else
- fprintf (out64, " ");
- fprintf (out64, "0x%016"PRIx64"ull,", data64[k]);
- }
- fprintf (out32, "\n\n");
- fprintf (out64, "\n\n");
- const char *t = (i >= 10 ? "\t" : "\t\t");
- if (i == 0)
- fprintf (outtable, " { TENS_P%d_IDX, TENS_P%d_SIZE,%s%d,\t },\n",
- i, i, t, exp_p);
- else
- fprintf (outtable, " { TENS_P%d_IDX, TENS_P%d_SIZE,%s%d,\t%5d },\n",
- i, i, t, exp_p, exp_m);
- }
- if (fclose (out32) != 0)
- abort ();
- if (fclose (out64) != 0)
- abort ();
- if (fclose (outtable) != 0)
- abort ();
- return 0;
-}
diff --git a/stdlib/gen-tst-strtod-round.c b/stdlib/gen-tst-strtod-round.c
deleted file mode 100644
index d792a245be..0000000000
--- a/stdlib/gen-tst-strtod-round.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/* Generate table of tests in tst-strtod-round.c from
- tst-strtod-round-data.
- Copyright (C) 2012-2017 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/>. */
-
-/* Compile this program as:
-
- gcc -std=gnu11 -O2 -Wall -Wextra gen-tst-strtod-round.c -lmpfr \
- -o gen-tst-strtod-round
-
- (use of current MPFR version recommended) and run it as:
-
- gen-tst-strtod-round tst-strtod-round-data tst-strtod-round-data.h
-
- The output file will be generated as tst-strtod-round-data.h
-*/
-
-
-#define _GNU_SOURCE
-#include <assert.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <mpfr.h>
-
-/* Work around incorrect ternary value from mpfr_strtofr
- <https://sympa.inria.fr/sympa/arc/mpfr/2012-08/msg00005.html>. */
-#define WORKAROUND
-
-static int
-string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd)
-{
-#ifdef WORKAROUND
- mpfr_t f2;
- mpfr_init2 (f2, 100000);
- int r0 = mpfr_strtofr (f2, s, NULL, 0, rnd);
- int r = mpfr_set (f, f2, rnd);
- r |= mpfr_subnormalize (f, r, rnd);
- mpfr_clear (f2);
- return r0 | r;
-#else
- int r = mpfr_strtofr (f, s, NULL, 0, rnd);
- r |= mpfr_subnormalize (f, r, rnd);
- return r;
-#endif
-}
-
-void
-print_fp (FILE *fout, mpfr_t f, const char *suffix)
-{
- if (mpfr_inf_p (f))
- mpfr_fprintf (fout, "\t%sINF%s", mpfr_signbit (f) ? "-" : "", suffix);
- else
- mpfr_fprintf (fout, "\t%Ra%s", f, suffix);
-}
-
-static void
-round_str (FILE *fout, const char *s, int prec, int emin, int emax,
- bool ibm_ld)
-{
- mpfr_t f;
- mpfr_set_default_prec (prec);
- mpfr_set_emin (emin);
- mpfr_set_emax (emax);
- mpfr_init (f);
- int r = string_to_fp (f, s, MPFR_RNDD);
- if (ibm_ld)
- {
- assert (prec == 106 && emin == -1073 && emax == 1024);
- /* The maximum value in IBM long double has discontiguous
- mantissa bits. */
- mpfr_t max_value;
- mpfr_init2 (max_value, 107);
- mpfr_set_str (max_value, "0x1.fffffffffffff7ffffffffffffcp+1023", 0,
- MPFR_RNDN);
- if (mpfr_cmpabs (f, max_value) > 0)
- r = 1;
- mpfr_clear (max_value);
- }
- mpfr_fprintf (fout, "\t%s,\n", r ? "false" : "true");
- print_fp (fout, f, ",\n");
- string_to_fp (f, s, MPFR_RNDN);
- print_fp (fout, f, ",\n");
- string_to_fp (f, s, MPFR_RNDZ);
- print_fp (fout, f, ",\n");
- string_to_fp (f, s, MPFR_RNDU);
- print_fp (fout, f, "");
- mpfr_clear (f);
-}
-
-static void
-round_for_all (FILE *fout, const char *s)
-{
- static const struct fmt {
- int prec;
- int emin;
- int emax;
- bool ibm_ld;
- } formats[] = {
- { 24, -148, 128, false },
- { 53, -1073, 1024, false },
- /* This is the Intel extended float format. */
- { 64, -16444, 16384, false },
- /* This is the Motorola extended float format. */
- { 64, -16445, 16384, false },
- { 106, -1073, 1024, true },
- { 113, -16493, 16384, false },
- };
- mpfr_fprintf (fout, " TEST (\"");
- const char *p;
- for (p = s; *p; p++)
- {
- fputc (*p, fout);
- if ((p - s) % 60 == 59 && p[1])
- mpfr_fprintf (fout, "\"\n\t\"");
- }
- mpfr_fprintf (fout, "\",\n");
- int i;
- int n_formats = sizeof (formats) / sizeof (formats[0]);
- for (i = 0; i < n_formats; i++)
- {
- round_str (fout, s, formats[i].prec, formats[i].emin,
- formats[i].emax, formats[i].ibm_ld);
- if (i < n_formats - 1)
- mpfr_fprintf (fout, ",\n");
- }
- mpfr_fprintf (fout, "),\n");
-}
-
-int
-main (int argc, char **argv)
-{
- char *p = NULL;
- size_t len;
- ssize_t nbytes;
- FILE *fin, *fout;
- char *fin_name, *fout_name;
-
- if (argc < 3)
- {
- fprintf (stderr, "Usage: %s <input> <output>\n", basename (argv[0]));
- return EXIT_FAILURE;
- }
-
- fin_name = argv[1];
- fout_name = argv[2];
-
- fin = fopen (fin_name, "r");
- if (fin == NULL)
- {
- perror ("Could not open input for reading");
- return EXIT_FAILURE;
- }
-
- fout = fopen (fout_name, "w");
- if (fout == NULL)
- {
- perror ("Could not open output for writing");
- return EXIT_FAILURE;
- }
-
- fprintf (fout, "/* This file was generated by %s from %s. */\n",
- __FILE__, fin_name);
- fputs ("static const struct test tests[] = {\n", fout);
- while ((nbytes = getline (&p, &len, fin)) != -1)
- {
- if (p[nbytes - 1] == '\n')
- p[nbytes - 1] = 0;
- round_for_all (fout, p);
- free (p);
- p = NULL;
- }
- fputs ("};\n", fout);
-
- return EXIT_SUCCESS;
-}
diff --git a/stdlib/getcontext.c b/stdlib/getcontext.c
deleted file mode 100644
index 07560033a6..0000000000
--- a/stdlib/getcontext.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 1998-2017 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 <ucontext.h>
-
-int
-getcontext (ucontext_t *ucp)
-{
- __set_errno (ENOSYS);
- return -1;
-}
-
-
-stub_warning (getcontext)
diff --git a/stdlib/getentropy.c b/stdlib/getentropy.c
deleted file mode 100644
index a71d4cd8f5..0000000000
--- a/stdlib/getentropy.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Stub for getentropy.
- Copyright (C) 2016-2017 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 <sys/random.h>
-#include <errno.h>
-
-/* Write LENGTH bytes of randomness starting at BUFFER. Return 0 on
- success and -1 on failure. */
-ssize_t
-getentropy (void *buffer, size_t length)
-{
- __set_errno (ENOSYS);
- return -1;
-}
-
-stub_warning (getentropy)
diff --git a/stdlib/getenv.c b/stdlib/getenv.c
deleted file mode 100644
index b6fb1abeaa..0000000000
--- a/stdlib/getenv.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright (C) 1991-2017 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 <endian.h>
-#include <errno.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-
-/* Return the value of the environment variable NAME. This implementation
- is tuned a bit in that it assumes no environment variable has an empty
- name which of course should always be true. We have a special case for
- one character names so that for the general case we can assume at least
- two characters which we can access. By doing this we can avoid using the
- `strncmp' most of the time. */
-char *
-getenv (const char *name)
-{
- size_t len = strlen (name);
- char **ep;
- uint16_t name_start;
-
- if (__environ == NULL || name[0] == '\0')
- return NULL;
-
- if (name[1] == '\0')
- {
- /* The name of the variable consists of only one character. Therefore
- the first two characters of the environment entry are this character
- and a '=' character. */
-#if __BYTE_ORDER == __LITTLE_ENDIAN || !_STRING_ARCH_unaligned
- name_start = ('=' << 8) | *(const unsigned char *) name;
-#else
- name_start = '=' | ((*(const unsigned char *) name) << 8);
-#endif
- for (ep = __environ; *ep != NULL; ++ep)
- {
-#if _STRING_ARCH_unaligned
- uint16_t ep_start = *(uint16_t *) *ep;
-#else
- uint16_t ep_start = (((unsigned char *) *ep)[0]
- | (((unsigned char *) *ep)[1] << 8));
-#endif
- if (name_start == ep_start)
- return &(*ep)[2];
- }
- }
- else
- {
-#if _STRING_ARCH_unaligned
- name_start = *(const uint16_t *) name;
-#else
- name_start = (((const unsigned char *) name)[0]
- | (((const unsigned char *) name)[1] << 8));
-#endif
- len -= 2;
- name += 2;
-
- for (ep = __environ; *ep != NULL; ++ep)
- {
-#if _STRING_ARCH_unaligned
- uint16_t ep_start = *(uint16_t *) *ep;
-#else
- uint16_t ep_start = (((unsigned char *) *ep)[0]
- | (((unsigned char *) *ep)[1] << 8));
-#endif
-
- if (name_start == ep_start && !strncmp (*ep + 2, name, len)
- && (*ep)[len + 2] == '=')
- return &(*ep)[len + 3];
- }
- }
-
- return NULL;
-}
-libc_hidden_def (getenv)
diff --git a/stdlib/getrandom.c b/stdlib/getrandom.c
deleted file mode 100644
index b2a83c2db7..0000000000
--- a/stdlib/getrandom.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Stub for getrandom.
- Copyright (C) 2016-2017 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 <sys/random.h>
-#include <errno.h>
-
-/* Write LENGTH bytes of randomness starting at BUFFER. Return the
- number of bytes written, or -1 on error. */
-ssize_t
-getrandom (void *buffer, size_t length, unsigned int flags)
-{
- __set_errno (ENOSYS);
- return -1;
-}
-
-stub_warning (getrandom)
diff --git a/stdlib/getsubopt.c b/stdlib/getsubopt.c
deleted file mode 100644
index 7d6772dc1f..0000000000
--- a/stdlib/getsubopt.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Parse comma separate list into words.
- Copyright (C) 1996-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
- 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 <string.h>
-
-#if !_LIBC
-/* This code is written for inclusion in gnu-libc, and uses names in
- the namespace reserved for libc. If we're compiling in gnulib,
- define those names to be the normal ones instead. */
-# include "strchrnul.h"
-# undef __strchrnul
-# define __strchrnul strchrnul
-#endif
-
-/* Parse comma separated suboption from *OPTIONP and match against
- strings in TOKENS. If found return index and set *VALUEP to
- optional value introduced by an equal sign. If the suboption is
- not part of TOKENS return in *VALUEP beginning of unknown
- suboption. On exit *OPTIONP is set to the beginning of the next
- token or at the terminating NUL character. */
-int
-getsubopt (char **optionp, char *const *tokens, char **valuep)
-{
- char *endp, *vstart;
- int cnt;
-
- if (**optionp == '\0')
- return -1;
-
- /* Find end of next token. */
- endp = __strchrnul (*optionp, ',');
-
- /* Find start of value. */
- vstart = memchr (*optionp, '=', endp - *optionp);
- if (vstart == NULL)
- vstart = endp;
-
- /* Try to match the characters between *OPTIONP and VSTART against
- one of the TOKENS. */
- for (cnt = 0; tokens[cnt] != NULL; ++cnt)
- if (strncmp (*optionp, tokens[cnt], vstart - *optionp) == 0
- && tokens[cnt][vstart - *optionp] == '\0')
- {
- /* We found the current option in TOKENS. */
- *valuep = vstart != endp ? vstart + 1 : NULL;
-
- if (*endp != '\0')
- *endp++ = '\0';
- *optionp = endp;
-
- return cnt;
- }
-
- /* The current suboption does not match any option. */
- *valuep = *optionp;
-
- if (*endp != '\0')
- *endp++ = '\0';
- *optionp = endp;
-
- return -1;
-}
diff --git a/stdlib/gmp-impl.h b/stdlib/gmp-impl.h
deleted file mode 100644
index 42d3e4afac..0000000000
--- a/stdlib/gmp-impl.h
+++ /dev/null
@@ -1,367 +0,0 @@
-/* Include file for internal GNU MP types and definitions.
-
-Copyright (C) 1991-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* When using gcc, make sure to use its builtin alloca. */
-#if ! defined (alloca) && defined (__GNUC__)
-#define alloca __builtin_alloca
-#define HAVE_ALLOCA
-#endif
-
-/* When using cc, do whatever necessary to allow use of alloca. For many
- machines, this means including alloca.h. IBM's compilers need a #pragma
- in "each module that needs to use alloca". */
-#if ! defined (alloca)
-/* We need lots of variants for MIPS, to cover all versions and perversions
- of OSes for MIPS. */
-#if defined (__mips) || defined (MIPSEL) || defined (MIPSEB) \
- || defined (_MIPSEL) || defined (_MIPSEB) || defined (__sgi) \
- || defined (__alpha) || defined (__sparc) || defined (sparc) \
- || defined (__ksr__)
-#include <alloca.h>
-#define HAVE_ALLOCA
-#endif
-#if defined (_IBMR2)
-#pragma alloca
-#define HAVE_ALLOCA
-#endif
-#if defined (__DECC)
-#define alloca(x) __ALLOCA(x)
-#define HAVE_ALLOCA
-#endif
-#endif
-
-#if (! defined (alloca) && ! defined (HAVE_ALLOCA)) \
- || defined (USE_STACK_ALLOC)
-#include "stack-alloc.h"
-#else
-#define TMP_DECL(m)
-#define TMP_ALLOC(x) alloca(x)
-#define TMP_MARK(m)
-#define TMP_FREE(m)
-#endif
-
-#ifndef NULL
-#define NULL ((void *) 0)
-#endif
-
-#if ! defined (__GNUC__)
-#define inline /* Empty */
-#endif
-
-/* Get MAX/MIN macros. */
-#include <sys/param.h>
-
-/* Field access macros. */
-#define SIZ(x) ((x)->_mp_size)
-#define PTR(x) ((x)->_mp_d)
-#define EXP(x) ((x)->_mp_exp)
-#define PREC(x) ((x)->_mp_prec)
-#define ALLOC(x) ((x)->_mp_alloc)
-
-#include "gmp-mparam.h"
-/* #include "longlong.h" */
-
-#if defined (__STDC__) || defined (__cplusplus)
-void *malloc (size_t);
-void *realloc (void *, size_t);
-void free (void *);
-
-extern void * (*_mp_allocate_func) (size_t);
-extern void * (*_mp_reallocate_func) (void *, size_t, size_t);
-extern void (*_mp_free_func) (void *, size_t);
-
-void *_mp_default_allocate (size_t);
-void *_mp_default_reallocate (void *, size_t, size_t);
-void _mp_default_free (void *, size_t);
-
-#else
-
-#define const /* Empty */
-#define signed /* Empty */
-
-void *malloc ();
-void *realloc ();
-void free ();
-
-extern void * (*_mp_allocate_func) ();
-extern void * (*_mp_reallocate_func) ();
-extern void (*_mp_free_func) ();
-
-void *_mp_default_allocate ();
-void *_mp_default_reallocate ();
-void _mp_default_free ();
-#endif
-
-/* Copy NLIMBS *limbs* from SRC to DST. */
-#define MPN_COPY_INCR(DST, SRC, NLIMBS) \
- do { \
- mp_size_t __i; \
- for (__i = 0; __i < (NLIMBS); __i++) \
- (DST)[__i] = (SRC)[__i]; \
- } while (0)
-#define MPN_COPY_DECR(DST, SRC, NLIMBS) \
- do { \
- mp_size_t __i; \
- for (__i = (NLIMBS) - 1; __i >= 0; __i--) \
- (DST)[__i] = (SRC)[__i]; \
- } while (0)
-#define MPN_COPY MPN_COPY_INCR
-
-/* Zero NLIMBS *limbs* AT DST. */
-#define MPN_ZERO(DST, NLIMBS) \
- do { \
- mp_size_t __i; \
- for (__i = 0; __i < (NLIMBS); __i++) \
- (DST)[__i] = 0; \
- } while (0)
-
-#define MPN_NORMALIZE(DST, NLIMBS) \
- do { \
- while (NLIMBS > 0) \
- { \
- if ((DST)[(NLIMBS) - 1] != 0) \
- break; \
- NLIMBS--; \
- } \
- } while (0)
-#define MPN_NORMALIZE_NOT_ZERO(DST, NLIMBS) \
- do { \
- while (1) \
- { \
- if ((DST)[(NLIMBS) - 1] != 0) \
- break; \
- NLIMBS--; \
- } \
- } while (0)
-
-/* Initialize the MP_INT X with space for NLIMBS limbs.
- X should be a temporary variable, and it will be automatically
- cleared out when the running function returns.
- We use __x here to make it possible to accept both mpz_ptr and mpz_t
- arguments. */
-#define MPZ_TMP_INIT(X, NLIMBS) \
- do { \
- mpz_ptr __x = (X); \
- __x->_mp_alloc = (NLIMBS); \
- __x->_mp_d = (mp_ptr) TMP_ALLOC ((NLIMBS) * BYTES_PER_MP_LIMB); \
- } while (0)
-
-#define MPN_MUL_N_RECURSE(prodp, up, vp, size, tspace) \
- do { \
- if ((size) < KARATSUBA_THRESHOLD) \
- impn_mul_n_basecase (prodp, up, vp, size); \
- else \
- impn_mul_n (prodp, up, vp, size, tspace); \
- } while (0);
-#define MPN_SQR_N_RECURSE(prodp, up, size, tspace) \
- do { \
- if ((size) < KARATSUBA_THRESHOLD) \
- impn_sqr_n_basecase (prodp, up, size); \
- else \
- impn_sqr_n (prodp, up, size, tspace); \
- } while (0);
-
-/* Structure for conversion between internal binary format and
- strings in base 2..36. */
-struct bases
-{
- /* Number of digits in the conversion base that always fits in an mp_limb_t.
- For example, for base 10 on a machine where a mp_limb_t has 32 bits this
- is 9, since 10**9 is the largest number that fits into a mp_limb_t. */
- int chars_per_limb;
-
- /* log(2)/log(conversion_base) */
- float chars_per_bit_exactly;
-
- /* base**chars_per_limb, i.e. the biggest number that fits a word, built by
- factors of base. Exception: For 2, 4, 8, etc, big_base is log2(base),
- i.e. the number of bits used to represent each digit in the base. */
- mp_limb_t big_base;
-
- /* A BITS_PER_MP_LIMB bit approximation to 1/big_base, represented as a
- fixed-point number. Instead of dividing by big_base an application can
- choose to multiply by big_base_inverted. */
- mp_limb_t big_base_inverted;
-};
-
-extern const struct bases __mp_bases[];
-extern mp_size_t __gmp_default_fp_limb_precision;
-
-/* Divide the two-limb number in (NH,,NL) by D, with DI being the largest
- limb not larger than (2**(2*BITS_PER_MP_LIMB))/D - (2**BITS_PER_MP_LIMB).
- If this would yield overflow, DI should be the largest possible number
- (i.e., only ones). For correct operation, the most significant bit of D
- has to be set. Put the quotient in Q and the remainder in R. */
-#define udiv_qrnnd_preinv(q, r, nh, nl, d, di) \
- do { \
- mp_limb_t _ql __attribute__ ((unused)); \
- mp_limb_t _q, _r; \
- mp_limb_t _xh, _xl; \
- umul_ppmm (_q, _ql, (nh), (di)); \
- _q += (nh); /* DI is 2**BITS_PER_MP_LIMB too small */\
- umul_ppmm (_xh, _xl, _q, (d)); \
- sub_ddmmss (_xh, _r, (nh), (nl), _xh, _xl); \
- if (_xh != 0) \
- { \
- sub_ddmmss (_xh, _r, _xh, _r, 0, (d)); \
- _q += 1; \
- if (_xh != 0) \
- { \
- sub_ddmmss (_xh, _r, _xh, _r, 0, (d)); \
- _q += 1; \
- } \
- } \
- if (_r >= (d)) \
- { \
- _r -= (d); \
- _q += 1; \
- } \
- (r) = _r; \
- (q) = _q; \
- } while (0)
-/* Like udiv_qrnnd_preinv, but for any value D. DNORM is D shifted left
- so that its most significant bit is set. LGUP is ceil(log2(D)). */
-#define udiv_qrnnd_preinv2gen(q, r, nh, nl, d, di, dnorm, lgup) \
- do { \
- mp_limb_t n2, n10, n1, nadj, q1; \
- mp_limb_t _xh, _xl; \
- n2 = ((nh) << (BITS_PER_MP_LIMB - (lgup))) + ((nl) >> 1 >> (l - 1));\
- n10 = (nl) << (BITS_PER_MP_LIMB - (lgup)); \
- n1 = ((mp_limb_signed_t) n10 >> (BITS_PER_MP_LIMB - 1)); \
- nadj = n10 + (n1 & (dnorm)); \
- umul_ppmm (_xh, _xl, di, n2 - n1); \
- add_ssaaaa (_xh, _xl, _xh, _xl, 0, nadj); \
- q1 = ~(n2 + _xh); \
- umul_ppmm (_xh, _xl, q1, d); \
- add_ssaaaa (_xh, _xl, _xh, _xl, nh, nl); \
- _xh -= (d); \
- (r) = _xl + ((d) & _xh); \
- (q) = _xh - q1; \
- } while (0)
-/* Exactly like udiv_qrnnd_preinv, but branch-free. It is not clear which
- version to use. */
-#define udiv_qrnnd_preinv2norm(q, r, nh, nl, d, di) \
- do { \
- mp_limb_t n2, n10, n1, nadj, q1; \
- mp_limb_t _xh, _xl; \
- n2 = (nh); \
- n10 = (nl); \
- n1 = ((mp_limb_signed_t) n10 >> (BITS_PER_MP_LIMB - 1)); \
- nadj = n10 + (n1 & (d)); \
- umul_ppmm (_xh, _xl, di, n2 - n1); \
- add_ssaaaa (_xh, _xl, _xh, _xl, 0, nadj); \
- q1 = ~(n2 + _xh); \
- umul_ppmm (_xh, _xl, q1, d); \
- add_ssaaaa (_xh, _xl, _xh, _xl, nh, nl); \
- _xh -= (d); \
- (r) = _xl + ((d) & _xh); \
- (q) = _xh - q1; \
- } while (0)
-
-#if defined (__GNUC__)
-/* Define stuff for longlong.h. */
-typedef unsigned int UQItype __attribute__ ((mode (QI)));
-typedef int SItype __attribute__ ((mode (SI)));
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-typedef int DItype __attribute__ ((mode (DI)));
-typedef unsigned int UDItype __attribute__ ((mode (DI)));
-#else
-typedef unsigned char UQItype;
-typedef long SItype;
-typedef unsigned long USItype;
-#endif
-
-typedef mp_limb_t UWtype;
-typedef unsigned int UHWtype;
-#define W_TYPE_SIZE BITS_PER_MP_LIMB
-
-/* Internal mpn calls */
-#define impn_mul_n_basecase __MPN(impn_mul_n_basecase)
-#define impn_mul_n __MPN(impn_mul_n)
-#define impn_sqr_n_basecase __MPN(impn_sqr_n_basecase)
-#define impn_sqr_n __MPN(impn_sqr_n)
-
-#ifndef _PROTO
-#if defined (__STDC__) || defined (__cplusplus)
-#define _PROTO(x) x
-#else
-#define _PROTO(x) ()
-#endif
-#endif
-
-/* Prototypes for internal mpn calls. */
-extern void impn_mul_n_basecase _PROTO ((mp_ptr prodp, mp_srcptr up,
- mp_srcptr vp, mp_size_t size));
-extern void impn_mul_n _PROTO ((mp_ptr prodp, mp_srcptr up, mp_srcptr vp,
- mp_size_t size, mp_ptr tspace));
-extern void impn_sqr_n_basecase _PROTO ((mp_ptr prodp, mp_srcptr up,
- mp_size_t size));
-extern void impn_sqr_n _PROTO ((mp_ptr prodp, mp_srcptr up, mp_size_t size,
- mp_ptr tspace));
-
-
-
-#ifndef IEEE_DOUBLE_BIG_ENDIAN
-#define IEEE_DOUBLE_BIG_ENDIAN 1
-#endif
-
-#ifndef IEEE_DOUBLE_MIXED_ENDIAN
-#define IEEE_DOUBLE_MIXED_ENDIAN 0
-#endif
-
-#if IEEE_DOUBLE_MIXED_ENDIAN
-union ieee_double_extract
-{
- struct
- {
- unsigned int manh:20;
- unsigned int exp:11;
- unsigned int sig:1;
- unsigned int manl:32;
- } s;
- double d;
-};
-#else
-#if IEEE_DOUBLE_BIG_ENDIAN
-union ieee_double_extract
-{
- struct
- {
- unsigned int sig:1;
- unsigned int exp:11;
- unsigned int manh:20;
- unsigned int manl:32;
- } s;
- double d;
-};
-#else
-union ieee_double_extract
-{
- struct
- {
- unsigned int manl:32;
- unsigned int manh:20;
- unsigned int exp:11;
- unsigned int sig:1;
- } s;
- double d;
-};
-#endif
-#endif
diff --git a/stdlib/gmp.h b/stdlib/gmp.h
deleted file mode 100644
index 821e3affd0..0000000000
--- a/stdlib/gmp.h
+++ /dev/null
@@ -1,623 +0,0 @@
-/* gmp.h -- Definitions for GNU multiple precision functions.
-
-Copyright (C) 1991-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#ifndef __GMP_H__
-
-#include <features.h>
-
-#ifndef __GNU_MP__
-#define __GNU_MP__ 2
-#define __need_size_t
-#include <stddef.h>
-#undef __need_size_t
-
-#if defined (__STDC__) || defined (__cplusplus)
-#define __gmp_const const
-#else
-#define __gmp_const
-#endif
-
-#if defined (__GNUC__)
-#define __gmp_inline __inline__
-#else
-#define __gmp_inline
-#endif
-
-#ifndef _EXTERN_INLINE
-#ifdef __GNUC__
-#define _EXTERN_INLINE __extern_inline
-#else
-#define _EXTERN_INLINE static
-#endif
-#endif
-
-#ifdef _SHORT_LIMB
-typedef unsigned int mp_limb_t;
-typedef int mp_limb_signed_t;
-#else
-#ifdef _LONG_LONG_LIMB
-typedef unsigned long long int mp_limb_t;
-typedef long long int mp_limb_signed_t;
-#else
-typedef unsigned long int mp_limb_t;
-typedef long int mp_limb_signed_t;
-#endif
-#endif
-
-typedef mp_limb_t * mp_ptr;
-typedef __gmp_const mp_limb_t * mp_srcptr;
-typedef long int mp_size_t;
-typedef long int mp_exp_t;
-
-#ifndef __MP_SMALL__
-typedef struct
-{
- int _mp_alloc; /* Number of *limbs* allocated and pointed
- to by the D field. */
- int _mp_size; /* abs(SIZE) is the number of limbs
- the last field points to. If SIZE
- is negative this is a negative
- number. */
- mp_limb_t *_mp_d; /* Pointer to the limbs. */
-} __mpz_struct;
-#else
-typedef struct
-{
- short int _mp_alloc; /* Number of *limbs* allocated and pointed
- to by the D field. */
- short int _mp_size; /* abs(SIZE) is the number of limbs
- the last field points to. If SIZE
- is negative this is a negative
- number. */
- mp_limb_t *_mp_d; /* Pointer to the limbs. */
-} __mpz_struct;
-#endif
-#endif /* __GNU_MP__ */
-
-/* User-visible types. */
-typedef __mpz_struct MP_INT;
-typedef __mpz_struct mpz_t[1];
-
-/* Structure for rational numbers. Zero is represented as 0/any, i.e.
- the denominator is ignored. Negative numbers have the sign in
- the numerator. */
-typedef struct
-{
- __mpz_struct _mp_num;
- __mpz_struct _mp_den;
-#if 0
- int _mp_num_alloc; /* Number of limbs allocated
- for the numerator. */
- int _mp_num_size; /* The absolute value of this field is the
- length of the numerator; the sign is the
- sign of the entire rational number. */
- mp_ptr _mp_num; /* Pointer to the numerator limbs. */
- int _mp_den_alloc; /* Number of limbs allocated
- for the denominator. */
- int _mp_den_size; /* Length of the denominator. (This field
- should always be positive.) */
- mp_ptr _mp_den; /* Pointer to the denominator limbs. */
-#endif
-} __mpq_struct;
-
-typedef __mpq_struct MP_RAT;
-typedef __mpq_struct mpq_t[1];
-
-typedef struct
-{
- int _mp_prec; /* Max precision, in number of `mp_limb_t's.
- Set by mpf_init and modified by
- mpf_set_prec. The area pointed to
- by the `d' field contains `prec' + 1
- limbs. */
- int _mp_size; /* abs(SIZE) is the number of limbs
- the last field points to. If SIZE
- is negative this is a negative
- number. */
- mp_exp_t _mp_exp; /* Exponent, in the base of `mp_limb_t'. */
- mp_limb_t *_mp_d; /* Pointer to the limbs. */
-} __mpf_struct;
-
-/* typedef __mpf_struct MP_FLOAT; */
-typedef __mpf_struct mpf_t[1];
-
-/* Types for function declarations in gmp files. */
-/* ??? Should not pollute user name space with these ??? */
-typedef __gmp_const __mpz_struct *mpz_srcptr;
-typedef __mpz_struct *mpz_ptr;
-typedef __gmp_const __mpf_struct *mpf_srcptr;
-typedef __mpf_struct *mpf_ptr;
-typedef __gmp_const __mpq_struct *mpq_srcptr;
-typedef __mpq_struct *mpq_ptr;
-
-#ifndef _PROTO
-#if defined (__STDC__) || defined (__cplusplus)
-#define _PROTO(x) x
-#else
-#define _PROTO(x) ()
-#endif
-#endif
-
-#ifndef __MPN
-#if defined (__STDC__) || defined (__cplusplus)
-#define __MPN(x) __mpn_##x
-#else
-#define __MPN(x) __mpn_/**/x
-#endif
-#endif
-
-#if defined (FILE) || defined (_STDIO_H_) || defined (__STDIO_H__) || defined (H_STDIO)
-#define _GMP_H_HAVE_FILE 1
-#endif
-
-void mp_set_memory_functions _PROTO ((void *(*) (size_t),
- void *(*) (void *, size_t, size_t),
- void (*) (void *, size_t)));
-extern const int mp_bits_per_limb;
-
-/**************** Integer (i.e. Z) routines. ****************/
-
-#if defined (__cplusplus)
-extern "C" {
-#endif
-void *_mpz_realloc _PROTO ((mpz_ptr, mp_size_t));
-
-void mpz_abs _PROTO ((mpz_ptr, mpz_srcptr));
-void mpz_add _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_add_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_and _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_array_init _PROTO ((mpz_ptr, mp_size_t, mp_size_t));
-void mpz_cdiv_q _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-unsigned long int mpz_cdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_cdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-unsigned long int mpz_cdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_cdiv_r _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-unsigned long int mpz_cdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-unsigned long int mpz_cdiv_ui _PROTO ((mpz_srcptr, unsigned long int));
-void mpz_clear _PROTO ((mpz_ptr));
-void mpz_clrbit _PROTO ((mpz_ptr, unsigned long int));
-int mpz_cmp _PROTO ((mpz_srcptr, mpz_srcptr));
-int mpz_cmp_si _PROTO ((mpz_srcptr, signed long int));
-int mpz_cmp_ui _PROTO ((mpz_srcptr, unsigned long int));
-void mpz_com _PROTO ((mpz_ptr, mpz_srcptr));
-void mpz_divexact _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_fac_ui _PROTO ((mpz_ptr, unsigned long int));
-void mpz_fdiv_q _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_fdiv_q_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-unsigned long int mpz_fdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_fdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-unsigned long int mpz_fdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_fdiv_r _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_fdiv_r_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-unsigned long int mpz_fdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-unsigned long int mpz_fdiv_ui _PROTO ((mpz_srcptr, unsigned long int));
-void mpz_gcd _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-unsigned long int mpz_gcd_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_gcdext _PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-/* signed */ long int mpz_get_si _PROTO ((mpz_srcptr));
-char *mpz_get_str _PROTO ((char *, int, mpz_srcptr));
-unsigned long int mpz_get_ui _PROTO ((mpz_srcptr));
-mp_limb_t mpz_getlimbn _PROTO ((mpz_srcptr, mp_size_t));
-unsigned long int mpz_hamdist _PROTO ((mpz_srcptr, mpz_srcptr));
-void mpz_init _PROTO ((mpz_ptr));
-#ifdef _GMP_H_HAVE_FILE
-size_t mpz_inp_binary _PROTO ((mpz_ptr, FILE *));
-size_t mpz_inp_raw _PROTO ((mpz_ptr, FILE *));
-size_t mpz_inp_str _PROTO ((mpz_ptr, FILE *, int));
-#endif
-void mpz_init_set _PROTO ((mpz_ptr, mpz_srcptr));
-void mpz_init_set_d _PROTO ((mpz_ptr, double));
-void mpz_init_set_si _PROTO ((mpz_ptr, signed long int));
-int mpz_init_set_str _PROTO ((mpz_ptr, const char *, int));
-void mpz_init_set_ui _PROTO ((mpz_ptr, unsigned long int));
-int mpz_invert _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_ior _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-int mpz_jacobi _PROTO ((mpz_srcptr, mpz_srcptr));
-int mpz_legendre _PROTO ((mpz_srcptr, mpz_srcptr));
-void mpz_mod _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_mul _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_mul_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_mul_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_neg _PROTO ((mpz_ptr, mpz_srcptr));
-#ifdef _GMP_H_HAVE_FILE
-size_t mpz_out_binary _PROTO ((FILE *, mpz_srcptr));
-size_t mpz_out_raw _PROTO ((FILE *, mpz_srcptr));
-size_t mpz_out_str _PROTO ((FILE *, int, mpz_srcptr));
-#endif
-int mpz_perfect_square_p _PROTO ((mpz_srcptr));
-unsigned long int mpz_popcount _PROTO ((mpz_srcptr));
-void mpz_pow_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_powm _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr));
-void mpz_powm_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr));
-int mpz_probab_prime_p _PROTO ((mpz_srcptr, int));
-void mpz_random _PROTO ((mpz_ptr, mp_size_t));
-void mpz_random2 _PROTO ((mpz_ptr, mp_size_t));
-unsigned long int mpz_scan0 _PROTO ((mpz_srcptr, unsigned long int));
-unsigned long int mpz_scan1 _PROTO ((mpz_srcptr, unsigned long int));
-void mpz_set _PROTO ((mpz_ptr, mpz_srcptr));
-void mpz_set_d _PROTO ((mpz_ptr, double));
-void mpz_set_si _PROTO ((mpz_ptr, signed long int));
-int mpz_set_str _PROTO ((mpz_ptr, const char *, int));
-void mpz_set_ui _PROTO ((mpz_ptr, unsigned long int));
-void mpz_setbit _PROTO ((mpz_ptr, unsigned long int));
-size_t mpz_size _PROTO ((mpz_srcptr));
-size_t mpz_sizeinbase _PROTO ((mpz_srcptr, int));
-void mpz_sqrt _PROTO ((mpz_ptr, mpz_srcptr));
-void mpz_sqrtrem _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr));
-void mpz_sub _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_sub_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_tdiv_q _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_tdiv_q_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_tdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_tdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_tdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_tdiv_r _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_tdiv_r_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_tdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_ui_pow_ui _PROTO ((mpz_ptr, unsigned long int, unsigned long int));
-
-/**************** Rational (i.e. Q) routines. ****************/
-
-void mpq_init _PROTO ((mpq_ptr));
-void mpq_clear _PROTO ((mpq_ptr));
-void mpq_set _PROTO ((mpq_ptr, mpq_srcptr));
-void mpq_set_ui _PROTO ((mpq_ptr, unsigned long int, unsigned long int));
-void mpq_set_si _PROTO ((mpq_ptr, signed long int, unsigned long int));
-void mpq_add _PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-void mpq_sub _PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-void mpq_mul _PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-void mpq_div _PROTO ((mpq_ptr, mpq_srcptr, mpq_srcptr));
-void mpq_neg _PROTO ((mpq_ptr, mpq_srcptr));
-int mpq_cmp _PROTO ((mpq_srcptr, mpq_srcptr));
-int mpq_cmp_ui _PROTO ((mpq_srcptr, unsigned long int, unsigned long int));
-void mpq_inv _PROTO ((mpq_ptr, mpq_srcptr));
-void mpq_set_num _PROTO ((mpq_ptr, mpz_srcptr));
-void mpq_set_den _PROTO ((mpq_ptr, mpz_srcptr));
-void mpq_get_num _PROTO ((mpz_ptr, mpq_srcptr));
-void mpq_get_den _PROTO ((mpz_ptr, mpq_srcptr));
-double mpq_get_d _PROTO ((mpq_srcptr));
-void mpq_canonicalize _PROTO ((mpq_ptr));
-
-/**************** Float (i.e. F) routines. ****************/
-
-void mpf_abs _PROTO ((mpf_ptr, mpf_srcptr));
-void mpf_add _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-void mpf_add_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-void mpf_clear _PROTO ((mpf_ptr));
-int mpf_cmp _PROTO ((mpf_srcptr, mpf_srcptr));
-int mpf_cmp_si _PROTO ((mpf_srcptr, signed long int));
-int mpf_cmp_ui _PROTO ((mpf_srcptr, unsigned long int));
-void mpf_div _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-void mpf_div_2exp _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-void mpf_div_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-void mpf_dump _PROTO ((mpf_srcptr));
-int mpf_eq _PROTO ((mpf_srcptr, mpf_srcptr, unsigned long int));
-unsigned long int mpf_get_prec _PROTO ((mpf_srcptr));
-char *mpf_get_str _PROTO ((char *, mp_exp_t *, int, size_t, mpf_srcptr));
-void mpf_init _PROTO ((mpf_ptr));
-void mpf_init2 _PROTO ((mpf_ptr, unsigned long int));
-#ifdef _GMP_H_HAVE_FILE
-size_t mpf_inp_str _PROTO ((mpf_ptr, FILE *, int));
-#endif
-void mpf_init_set _PROTO ((mpf_ptr, mpf_srcptr));
-void mpf_init_set_d _PROTO ((mpf_ptr, double));
-void mpf_init_set_si _PROTO ((mpf_ptr, signed long int));
-int mpf_init_set_str _PROTO ((mpf_ptr, char *, int));
-void mpf_init_set_ui _PROTO ((mpf_ptr, unsigned long int));
-void mpf_mul _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-void mpf_mul_2exp _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-void mpf_mul_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-void mpf_neg _PROTO ((mpf_ptr, mpf_srcptr));
-#ifdef _GMP_H_HAVE_FILE
-size_t mpf_out_str _PROTO ((FILE *, int, size_t, mpf_srcptr));
-#endif
-void mpf_random2 _PROTO ((mpf_ptr, mp_size_t, mp_exp_t));
-void mpf_reldiff _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-void mpf_set _PROTO ((mpf_ptr, mpf_srcptr));
-void mpf_set_d _PROTO ((mpf_ptr, double));
-void mpf_set_default_prec _PROTO ((unsigned long int));
-void mpf_set_prec _PROTO ((mpf_ptr, unsigned long int));
-void mpf_set_prec_raw _PROTO ((mpf_ptr, unsigned long int));
-void mpf_set_si _PROTO ((mpf_ptr, signed long int));
-int mpf_set_str _PROTO ((mpf_ptr, const char *, int));
-void mpf_set_ui _PROTO ((mpf_ptr, unsigned long int));
-size_t mpf_size _PROTO ((mpf_srcptr));
-void mpf_sqrt _PROTO ((mpf_ptr, mpf_srcptr));
-void mpf_sqrt_ui _PROTO ((mpf_ptr, unsigned long int));
-void mpf_sub _PROTO ((mpf_ptr, mpf_srcptr, mpf_srcptr));
-void mpf_sub_ui _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-void mpf_ui_div _PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));
-void mpf_ui_sub _PROTO ((mpf_ptr, unsigned long int, mpf_srcptr));
-#if defined (__cplusplus)
-}
-#endif
-/************ Low level positive-integer (i.e. N) routines. ************/
-
-/* This is ugly, but we need to make usr calls reach the prefixed function. */
-#define mpn_add __MPN(add)
-#define mpn_add_1 __MPN(add_1)
-#define mpn_add_n __MPN(add_n)
-#define mpn_addmul_1 __MPN(addmul_1)
-#define mpn_bdivmod __MPN(bdivmod)
-#define mpn_cmp __MPN(cmp)
-#define mpn_divmod_1 __MPN(divmod_1)
-#define mpn_divrem __MPN(divrem)
-#define mpn_divrem_1 __MPN(divrem_1)
-#define mpn_dump __MPN(dump)
-#define mpn_gcd __MPN(gcd)
-#define mpn_gcd_1 __MPN(gcd_1)
-#define mpn_gcdext __MPN(gcdext)
-#define mpn_get_str __MPN(get_str)
-#define mpn_hamdist __MPN(hamdist)
-#define mpn_lshift __MPN(lshift)
-#define mpn_mod_1 __MPN(mod_1)
-#define mpn_mul __MPN(mul)
-#define mpn_mul_1 __MPN(mul_1)
-#define mpn_mul_n __MPN(mul_n)
-#define mpn_perfect_square_p __MPN(perfect_square_p)
-#define mpn_popcount __MPN(popcount)
-#define mpn_preinv_mod_1 __MPN(preinv_mod_1)
-#define mpn_random2 __MPN(random2)
-#define mpn_rshift __MPN(rshift)
-#define mpn_scan0 __MPN(scan0)
-#define mpn_scan1 __MPN(scan1)
-#define mpn_set_str __MPN(set_str)
-#define mpn_sqrtrem __MPN(sqrtrem)
-#define mpn_sub __MPN(sub)
-#define mpn_sub_1 __MPN(sub_1)
-#define mpn_sub_n __MPN(sub_n)
-#define mpn_submul_1 __MPN(submul_1)
-#define mpn_udiv_w_sdiv __MPN(udiv_w_sdiv)
-
-#if defined (__cplusplus)
-extern "C" {
-#endif
-mp_limb_t mpn_add _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t));
-mp_limb_t mpn_add_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-mp_limb_t mpn_add_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-mp_limb_t mpn_addmul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-mp_limb_t mpn_bdivmod _PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, unsigned long int));
-int mpn_cmp _PROTO ((mp_srcptr, mp_srcptr, mp_size_t));
-mp_limb_t mpn_divmod_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-mp_limb_t mpn_divrem _PROTO ((mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t));
-mp_limb_t mpn_divrem_1 _PROTO ((mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t));
-void mpn_dump _PROTO ((mp_srcptr, mp_size_t));
-mp_size_t mpn_gcd _PROTO ((mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t));
-mp_limb_t mpn_gcd_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb_t));
-mp_size_t mpn_gcdext _PROTO ((mp_ptr, mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t));
-size_t mpn_get_str _PROTO ((unsigned char *, int, mp_ptr, mp_size_t));
-unsigned long int mpn_hamdist _PROTO ((mp_srcptr, mp_srcptr, mp_size_t));
-mp_limb_t mpn_lshift _PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));
-mp_limb_t mpn_mod_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb_t));
-mp_limb_t mpn_mul _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t));
-mp_limb_t mpn_mul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-void mpn_mul_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-int mpn_perfect_square_p _PROTO ((mp_srcptr, mp_size_t));
-unsigned long int mpn_popcount _PROTO ((mp_srcptr, mp_size_t));
-mp_limb_t mpn_preinv_mod_1 _PROTO ((mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t));
-void mpn_random2 _PROTO ((mp_ptr, mp_size_t));
-mp_limb_t mpn_rshift _PROTO ((mp_ptr, mp_srcptr, mp_size_t, unsigned int));
-unsigned long int mpn_scan0 _PROTO ((mp_srcptr, unsigned long int));
-unsigned long int mpn_scan1 _PROTO ((mp_srcptr, unsigned long int));
-mp_size_t mpn_set_str _PROTO ((mp_ptr, const unsigned char *, size_t, int));
-mp_size_t mpn_sqrtrem _PROTO ((mp_ptr, mp_ptr, mp_srcptr, mp_size_t));
-mp_limb_t mpn_sub _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t));
-mp_limb_t mpn_sub_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-mp_limb_t mpn_sub_n _PROTO ((mp_ptr, mp_srcptr, mp_srcptr, mp_size_t));
-mp_limb_t mpn_submul_1 _PROTO ((mp_ptr, mp_srcptr, mp_size_t, mp_limb_t));
-#if defined (__cplusplus)
-}
-#endif
-
-#if defined (__GNUC__) || defined (_FORCE_INLINES)
-_EXTERN_INLINE mp_limb_t
-#if defined (__STDC__) || defined (__cplusplus)
-mpn_add_1 (register mp_ptr res_ptr,
- register mp_srcptr s1_ptr,
- register mp_size_t s1_size,
- register mp_limb_t s2_limb)
-#else
-mpn_add_1 (res_ptr, s1_ptr, s1_size, s2_limb)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- register mp_size_t s1_size;
- register mp_limb_t s2_limb;
-#endif
-{
- register mp_limb_t x;
-
- x = *s1_ptr++;
- s2_limb = x + s2_limb;
- *res_ptr++ = s2_limb;
- if (s2_limb < x)
- {
- while (--s1_size != 0)
- {
- x = *s1_ptr++ + 1;
- *res_ptr++ = x;
- if (x != 0)
- goto fin;
- }
-
- return 1;
- }
-
- fin:
- if (res_ptr != s1_ptr)
- {
- mp_size_t i;
- for (i = 0; i < s1_size - 1; i++)
- res_ptr[i] = s1_ptr[i];
- }
- return 0;
-}
-
-_EXTERN_INLINE mp_limb_t
-#if defined (__STDC__) || defined (__cplusplus)
-mpn_add (register mp_ptr res_ptr,
- register mp_srcptr s1_ptr,
- register mp_size_t s1_size,
- register mp_srcptr s2_ptr,
- register mp_size_t s2_size)
-#else
-mpn_add (res_ptr, s1_ptr, s1_size, s2_ptr, s2_size)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- register mp_size_t s1_size;
- register mp_srcptr s2_ptr;
- register mp_size_t s2_size;
-#endif
-{
- mp_limb_t cy_limb = 0;
-
- if (s2_size != 0)
- cy_limb = mpn_add_n (res_ptr, s1_ptr, s2_ptr, s2_size);
-
- if (s1_size - s2_size != 0)
- cy_limb = mpn_add_1 (res_ptr + s2_size,
- s1_ptr + s2_size,
- s1_size - s2_size,
- cy_limb);
- return cy_limb;
-}
-
-_EXTERN_INLINE mp_limb_t
-#if defined (__STDC__) || defined (__cplusplus)
-mpn_sub_1 (register mp_ptr res_ptr,
- register mp_srcptr s1_ptr,
- register mp_size_t s1_size,
- register mp_limb_t s2_limb)
-#else
-mpn_sub_1 (res_ptr, s1_ptr, s1_size, s2_limb)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- register mp_size_t s1_size;
- register mp_limb_t s2_limb;
-#endif
-{
- register mp_limb_t x;
-
- x = *s1_ptr++;
- s2_limb = x - s2_limb;
- *res_ptr++ = s2_limb;
- if (s2_limb > x)
- {
- while (--s1_size != 0)
- {
- x = *s1_ptr++;
- *res_ptr++ = x - 1;
- if (x != 0)
- goto fin;
- }
-
- return 1;
- }
-
- fin:
- if (res_ptr != s1_ptr)
- {
- mp_size_t i;
- for (i = 0; i < s1_size - 1; i++)
- res_ptr[i] = s1_ptr[i];
- }
- return 0;
-}
-
-_EXTERN_INLINE mp_limb_t
-#if defined (__STDC__) || defined (__cplusplus)
-mpn_sub (register mp_ptr res_ptr,
- register mp_srcptr s1_ptr,
- register mp_size_t s1_size,
- register mp_srcptr s2_ptr,
- register mp_size_t s2_size)
-#else
-mpn_sub (res_ptr, s1_ptr, s1_size, s2_ptr, s2_size)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- register mp_size_t s1_size;
- register mp_srcptr s2_ptr;
- register mp_size_t s2_size;
-#endif
-{
- mp_limb_t cy_limb = 0;
-
- if (s2_size != 0)
- cy_limb = mpn_sub_n (res_ptr, s1_ptr, s2_ptr, s2_size);
-
- if (s1_size - s2_size != 0)
- cy_limb = mpn_sub_1 (res_ptr + s2_size,
- s1_ptr + s2_size,
- s1_size - s2_size,
- cy_limb);
- return cy_limb;
-}
-#endif /* __GNUC__ */
-
-/* Allow faster testing for negative, zero, and positive. */
-#define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0)
-#define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0)
-#define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0)
-
-/* Allow direct user access to numerator and denominator of a mpq_t object. */
-#define mpq_numref(Q) (&((Q)->_mp_num))
-#define mpq_denref(Q) (&((Q)->_mp_den))
-
-/* When using GCC, optimize certain common comparisons. */
-#if defined (__GNUC__)
-#define mpz_cmp_ui(Z,UI) \
- (__builtin_constant_p (UI) && (UI) == 0 \
- ? mpz_sgn (Z) : mpz_cmp_ui (Z,UI))
-#define mpz_cmp_si(Z,UI) \
- (__builtin_constant_p (UI) && (UI) == 0 ? mpz_sgn (Z) \
- : __builtin_constant_p (UI) && (UI) > 0 ? mpz_cmp_ui (Z,UI) \
- : mpz_cmp_si (Z,UI))
-#define mpq_cmp_ui(Q,NUI,DUI) \
- (__builtin_constant_p (NUI) && (NUI) == 0 \
- ? mpq_sgn (Q) : mpq_cmp_ui (Q,NUI,DUI))
-#endif
-
-#define mpn_divmod(qp,np,nsize,dp,dsize) mpn_divrem (qp,0,np,nsize,dp,dsize)
-#if 0
-#define mpn_divmod_1(qp,np,nsize,dlimb) mpn_divrem_1 (qp,0,np,nsize,dlimb)
-#endif
-
-/* Compatibility with GMP 1. */
-#define mpz_mdiv mpz_fdiv_q
-#define mpz_mdivmod mpz_fdiv_qr
-#define mpz_mmod mpz_fdiv_r
-#define mpz_mdiv_ui mpz_fdiv_q_ui
-#define mpz_mdivmod_ui(q,r,n,d) \
- ((r == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d))
-#define mpz_mmod_ui(r,n,d) \
- ((r == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d))
-
-/* Useful synonyms, but not quite compatible with GMP 1. */
-#define mpz_div mpz_fdiv_q
-#define mpz_divmod mpz_fdiv_qr
-#define mpz_div_ui mpz_fdiv_q_ui
-#define mpz_divmod_ui mpz_fdiv_qr_ui
-#define mpz_mod_ui mpz_fdiv_r_ui
-#define mpz_div_2exp mpz_fdiv_q_2exp
-#define mpz_mod_2exp mpz_fdiv_r_2exp
-
-#define __GNU_MP_VERSION 2
-#define __GNU_MP_VERSION_MINOR 0
-#define __GMP_H__
-#endif /* __GMP_H__ */
diff --git a/stdlib/grouping.c b/stdlib/grouping.c
deleted file mode 100644
index 63ef4c1644..0000000000
--- a/stdlib/grouping.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/* Internal header for proving correct grouping in strings of numbers.
- Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed 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/>. */
-
-#include <limits.h>
-#include <stddef.h>
-#include <string.h>
-
-#ifndef MAX
-#define MAX(a,b) ({ typeof(a) _a = (a); typeof(b) _b = (b); \
- _a > _b ? _a : _b; })
-#endif
-
-#ifdef USE_WIDE_CHAR
-# include <wctype.h>
-# define L_(Ch) L##Ch
-# define UCHAR_TYPE wint_t
-# define STRING_TYPE wchar_t
-#else
-# define L_(Ch) Ch
-# define UCHAR_TYPE unsigned char
-# define STRING_TYPE char
-#endif
-
-#include "grouping.h"
-
-/* Find the maximum prefix of the string between BEGIN and END which
- satisfies the grouping rules. It is assumed that at least one digit
- follows BEGIN directly. */
-
-const STRING_TYPE *
-#ifdef USE_WIDE_CHAR
-__correctly_grouped_prefixwc (const STRING_TYPE *begin, const STRING_TYPE *end,
- wchar_t thousands,
-#else
-__correctly_grouped_prefixmb (const STRING_TYPE *begin, const STRING_TYPE *end,
- const char *thousands,
-#endif
- const char *grouping)
-{
-#ifndef USE_WIDE_CHAR
- size_t thousands_len;
- int cnt;
-#endif
-
- if (grouping == NULL)
- return end;
-
-#ifndef USE_WIDE_CHAR
- thousands_len = strlen (thousands);
-#endif
-
- while (end > begin)
- {
- const STRING_TYPE *cp = end - 1;
- const char *gp = grouping;
-
- /* Check first group. */
- while (cp >= begin)
- {
-#ifdef USE_WIDE_CHAR
- if (*cp == thousands)
- break;
-#else
- if (cp[thousands_len - 1] == *thousands)
- {
- for (cnt = 1; thousands[cnt] != '\0'; ++cnt)
- if (thousands[cnt] != cp[thousands_len - 1 - cnt])
- break;
- if (thousands[cnt] == '\0')
- break;
- }
-#endif
- --cp;
- }
-
- /* We allow the representation to contain no grouping at all even if
- the locale specifies we can have grouping. */
- if (cp < begin)
- return end;
-
- if (end - cp == (int) *gp + 1)
- {
- /* This group matches the specification. */
-
- const STRING_TYPE *new_end;
-
- if (cp < begin)
- /* There is just one complete group. We are done. */
- return end;
-
- /* CP points to a thousands separator character. The preceding
- remainder of the string from BEGIN to NEW_END is the part we
- will consider if there is a grouping error in this trailing
- portion from CP to END. */
- new_end = cp - 1;
-
- /* Loop while the grouping is correct. */
- while (1)
- {
- /* Get the next grouping rule. */
- ++gp;
- if (*gp == 0)
- /* If end is reached use last rule. */
- --gp;
-
- /* Skip the thousands separator. */
- --cp;
-
- if (*gp == CHAR_MAX
-#if CHAR_MIN < 0
- || *gp < 0
-#endif
- )
- {
- /* No more thousands separators are allowed to follow. */
- while (cp >= begin)
- {
-#ifdef USE_WIDE_CHAR
- if (*cp == thousands)
- break;
-#else
- for (cnt = 0; thousands[cnt] != '\0'; ++cnt)
- if (thousands[cnt] != cp[thousands_len - cnt - 1])
- break;
- if (thousands[cnt] == '\0')
- break;
-#endif
- --cp;
- }
-
- if (cp < begin)
- /* OK, only digits followed. */
- return end;
- }
- else
- {
- /* Check the next group. */
- const STRING_TYPE *group_end = cp;
-
- while (cp >= begin)
- {
-#ifdef USE_WIDE_CHAR
- if (*cp == thousands)
- break;
-#else
- for (cnt = 0; thousands[cnt] != '\0'; ++cnt)
- if (thousands[cnt] != cp[thousands_len - cnt - 1])
- break;
- if (thousands[cnt] == '\0')
- break;
-#endif
- --cp;
- }
-
- if (cp < begin && group_end - cp <= (int) *gp)
- /* Final group is correct. */
- return end;
-
- if (cp < begin || group_end - cp != (int) *gp)
- /* Incorrect group. Punt. */
- break;
- }
- }
-
- /* The trailing portion of the string starting at NEW_END
- contains a grouping error. So we will look for a correctly
- grouped number in the preceding portion instead. */
- end = new_end;
- }
- else
- {
- /* Even the first group was wrong; determine maximum shift. */
- if (end - cp > (int) *gp + 1)
- end = cp + (int) *gp + 1;
- else if (cp < begin)
- /* This number does not fill the first group, but is correct. */
- return end;
- else
- /* CP points to a thousands separator character. */
- end = cp;
- }
- }
-
- return MAX (begin, end);
-}
diff --git a/stdlib/grouping.h b/stdlib/grouping.h
deleted file mode 100644
index d77b6e1105..0000000000
--- a/stdlib/grouping.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Internal header for proving correct grouping in strings of numbers.
- Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed 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/>. */
-
-/* Find the maximum prefix of the string between BEGIN and END which
- satisfies the grouping rules. It is assumed that at least one digit
- follows BEGIN directly. */
-extern const wchar_t *__correctly_grouped_prefixwc (const wchar_t *begin,
- const wchar_t *end,
- wchar_t thousands,
- const char *grouping)
- attribute_hidden;
-
-extern const char *__correctly_grouped_prefixmb (const char *begin,
- const char *end,
- const char *thousands,
- const char *grouping)
- attribute_hidden;
diff --git a/stdlib/groupingwc.c b/stdlib/groupingwc.c
deleted file mode 100644
index cd9675ee58..0000000000
--- a/stdlib/groupingwc.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define USE_WIDE_CHAR 1
-#include "grouping.c"
diff --git a/stdlib/inlines.c b/stdlib/inlines.c
deleted file mode 100644
index 5f1065ea13..0000000000
--- a/stdlib/inlines.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#define _FORCE_INLINES
-#define _EXTERN_INLINE /* empty */
-#include <gmp.h>
diff --git a/stdlib/isomac.c b/stdlib/isomac.c
deleted file mode 100644
index d12d1ff661..0000000000
--- a/stdlib/isomac.c
+++ /dev/null
@@ -1,447 +0,0 @@
-/* Check system header files for ISO 9899:1990 (ISO C) compliance.
- Copyright (C) 1996-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jens Schweikhardt <schweikh@noc.dfn.de>, 1996.
-
- 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 is a simple minded program that tries to find illegal macro
- definitions in system header files. Illegal macro definitions are
- those not from the implementation namespace (i.e. not starting with
- an underscore) or not matching any identifier mandated by The
- Standard. Some common macro names are considered okay, e.g. all those
- beginning with E (which may be defined in <errno.h>) or ending in
- _MAX. See the arrays prefix[] and suffix[] below for details.
-
- In a compliant implementation no other macros can be defined, because
- you could write strictly conforming programs that may fail to compile
- due to syntax errors: suppose <stdio.h> defines PIPE_BUF, then the
- conforming
-
- #include <assert.h>
- #include <stdio.h> <- or where the bogus macro is defined
- #include <string.h>
- #define STR(x) #x
- #define XSTR(x) STR(x)
- int main (void)
- {
- int PIPE_BUF = 0;
- assert (strcmp ("PIPE_BUF", XSTR (PIPE_BUF)) == 0);
- return 0;
- }
-
- is expected to compile and meet the assertion. If it does not, your
- compiler compiles some other language than Standard C.
-
- REQUIREMENTS:
- This program calls gcc to get the list of defined macros. If you
- don't have gcc you're probably out of luck unless your compiler or
- preprocessor has something similar to gcc's -dM option. Tune
- PRINT_MACROS in this case. This program assumes headers are found
- under /usr/include and that there is a writable /tmp directory.
- Tune SYSTEM_INCLUDE if your system differs.
- #define BROKEN_SYSTEM if system(NULL) bombs -- one more violation
- of ISO C, by the way.
-
- OUTPUT:
- Each header file name is printed, followed by illegal macro names
- and their definition. For the above example, you would see
- ...
- /usr/include/stdio.h
- #define PIPE_BUF 5120
- ...
- If your implementation does not yet incorporate Amendment 1 you
- will see messages about iso646.h, wctype.h and wchar.h not being
- found. */
-
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define HEADER_MAX 256
-
-static const char *macrofile;
-
-/* ISO C header names including Amendment 1 (without ".h" suffix). */
-static char *header[] =
-{
- "assert", "ctype", "errno", "float", "iso646", "limits", "locale",
- "math", "setjmp", "signal", "stdarg", "stddef", "stdio", "stdlib",
- "string", "time", "wchar", "wctype"
-};
-
-/* Macros with these prefixes are considered okay. */
-static char *prefix[] =
-{
- "_", "E", "is", "str", "mem", "SIG", "FLT_", "DBL_", "LDBL_",
- "LC_", "wmem", "wcs"
-};
-
-/* Macros with these suffixes are considered okay. Will not work for
- parametrized macros with arguments. */
-static char *suffix[] =
-{
- "_MAX", "_MIN"
-};
-
-/* These macros are considered okay. In fact, these are just more prefixes. */
-static char *macros[] =
-{
- "BUFSIZ", "CHAR_BIT", "CHAR_MAX", "CHAR_MIN", "CLOCKS_PER_SEC",
- "DBL_DIG", "DBL_EPSILON", "DBL_MANT_DIG", "DBL_MAX",
- "DBL_MAX_10_EXP", "DBL_MAX_EXP", "DBL_MIN", "DBL_MIN_10_EXP",
- "DBL_MIN_EXP", "EDOM", "EILSEQ", "EOF", "ERANGE", "EXIT_FAILURE",
- "EXIT_SUCCESS", "FILENAME_MAX", "FLT_DIG", "FLT_EPSILON",
- "FLT_MANT_DIG", "FLT_MAX", "FLT_MAX_10_EXP", "FLT_MAX_EXP",
- "FLT_MIN", "FLT_MIN_10_EXP", "FLT_MIN_EXP", "FLT_RADIX",
- "FLT_ROUNDS", "FOPEN_MAX", "HUGE_VAL", "INT_MAX", "INT_MIN",
- "LC_ALL", "LC_COLLATE", "LC_CTYPE", "LC_MONETARY", "LC_NUMERIC",
- "LC_TIME", "LDBL_DIG", "LDBL_EPSILON", "LDBL_MANT_DIG", "LDBL_MAX",
- "LDBL_MAX_10_EXP", "LDBL_MAX_EXP", "LDBL_MIN", "LDBL_MIN_10_EXP",
- "LDBL_MIN_EXP", "LONG_MAX", "LONG_MIN", "L_tmpnam", "MB_CUR_MAX",
- "MB_LEN_MAX", "NDEBUG", "NULL", "RAND_MAX", "SCHAR_MAX",
- "SCHAR_MIN", "SEEK_CUR", "SEEK_END", "SEEK_SET", "SHRT_MAX",
- "SHRT_MIN", "SIGABRT", "SIGFPE", "SIGILL", "SIGINT", "SIGSEGV",
- "SIGTERM", "SIG_DFL", "SIG_ERR", "SIG_IGN", "TMP_MAX", "UCHAR_MAX",
- "UINT_MAX", "ULONG_MAX", "USHRT_MAX", "WCHAR_MAX", "WCHAR_MIN",
- "WEOF", "_IOFBF", "_IOLBF", "_IONBF", "abort", "abs", "acos",
- "acosf", "acosl", "and", "and_eq", "asctime", "asin", "asinf",
- "asinl", "assert", "atan", "atan2", "atan2f", "atan2l", "atanf",
- "atanl", "atexit", "atof", "atoi", "atol", "bitand", "bitor",
- "bsearch", "btowc", "calloc", "ceil", "ceilf", "ceill", "clearerr",
- "clock", "clock_t", "compl", "cos", "cosf", "cosh", "coshf",
- "coshl", "cosl", "ctime", "difftime", "div", "div_t", "errno",
- "exit", "exp", "expf", "expl", "fabs", "fabsf", "fabsl", "fclose",
- "feof", "ferror", "fflush", "fgetc", "fgetpos", "fgets", "fgetwc",
- "fgetws", "floor", "floorf", "floorl", "fmod", "fmodf", "fmodl",
- "fopen", "fprintf", "fputc", "fputs", "fputwc", "fputws", "fread",
- "free", "freopen", "frexp", "frexpf", "frexpl", "fscanf", "fseek",
- "fsetpos", "ftell", "fwide", "fwprintf", "fwrite", "fwscanf",
- "getc", "getchar", "getenv", "gets", "getwc", "getwchar", "gmtime",
- "isalnum", "isalpha", "iscntrl", "isdigit", "isgraph", "islower",
- "isprint", "ispunct", "isspace", "isupper", "iswalnum", "iswalpha",
- "iswcntrl", "iswctype", "iswdigit", "iswgraph", "iswlower",
- "iswprint", "iswpunct", "iswspace", "iswupper", "iswxdigit",
- "isxdigit", "labs", "ldexp", "ldexpf", "ldexpl", "ldiv", "ldiv_t",
- "localeconv", "localtime", "log", "log10", "log10f", "log10l",
- "logf", "logl", "longjmp", "malloc", "mblen", "mbrlen", "mbrtowc",
- "mbsinit", "mbsrtowcs", "mbstate_t", "mbstowcs", "mbtowc", "memchr",
- "memcmp", "memcpy", "memmove", "memset", "mktime", "modf", "modff",
- "modfl", "not", "not_eq", "offsetof", "or", "or_eq", "perror",
- "pow", "powf", "powl", "printf", "ptrdiff_t", "putc", "putchar",
- "puts", "putwc", "putwchar", "qsort", "raise", "rand", "realloc",
- "remove", "rename", "rewind", "scanf", "setbuf", "setjmp",
- "setlocale", "setvbuf", "sig_atomic_t", "signal", "sin", "sinf",
- "sinh", "sinhf", "sinhl", "sinl", "size_t", "sprintf", "sqrt",
- "sqrtf", "sqrtl", "srand", "sscanf", "stderr", "stdin", "stdout",
- "strcat", "strchr", "strcmp", "strcoll", "strcpy", "strcspn",
- "strerror", "strftime", "strlen", "strncat", "strncmp", "strncpy",
- "strpbrk", "strrchr", "strspn", "strstr", "strtod", "strtok",
- "strtol", "strtoul", "strxfrm", "swprintf", "swscanf", "system",
- "tan", "tanf", "tanh", "tanhf", "tanhl", "tanl", "time", "time_t",
- "tmpfile", "tmpnam", "tolower", "toupper", "towctrans", "towlower",
- "towupper", "ungetc", "ungetwc", "va_arg", "va_copy", "va_end", "va_start",
- "vfprintf", "vfwprintf", "vprintf", "vsprintf", "vswprintf",
- "vwprintf", "wchar_t", "wcrtomb", "wcscat", "wcschr", "wcscmp",
- "wcscoll", "wcscpy", "wcscspn", "wcsftime", "wcslen", "wcsncat",
- "wcsncmp", "wcsncpy", "wcspbrk", "wcsrchr", "wcsrtombs", "wcsspn",
- "wcsstr", "wcstod", "wcstok", "wcstol", "wcstombs", "wcstoul",
- "wcsxfrm", "wctob", "wctomb", "wctrans", "wctrans_t", "wctype",
- "wctype_t", "wint_t", "wmemchr", "wmemcmp", "wmemcpy", "wmemmove",
- "wmemset", "wprintf", "wscanf", "xor", "xor_eq"
-};
-
-#define NUMBER_OF_HEADERS (sizeof header / sizeof *header)
-#define NUMBER_OF_PREFIXES (sizeof prefix / sizeof *prefix)
-#define NUMBER_OF_SUFFIXES (sizeof suffix / sizeof *suffix)
-#define NUMBER_OF_MACROS (sizeof macros / sizeof *macros)
-
-
-/* Format string to build command to invoke compiler. */
-static const char fmt[] = "\
-echo \"#include <%s>\" |\
-%s -E -dM -ansi -pedantic %s -D_LIBC -D_ISOMAC \
--DIN_MODULE=MODULE_extramodules -I. \
--isystem `%s --print-prog-name=include` - 2> /dev/null > %s";
-
-
-/* The compiler we use (given on the command line). */
-char *CC;
-/* The -I parameters for CC to find all headers. */
-char *INC;
-
-static char *xstrndup (const char *, size_t);
-static const char **get_null_defines (void);
-static int check_header (const char *, const char **);
-
-int
-main (int argc, char *argv[])
-{
- int h;
- int result = 0;
- const char **ignore_list;
-
- CC = argc > 1 ? argv[1] : "gcc";
- INC = argc > 2 ? argv[2] : "";
-
- if (system (NULL) == 0)
- {
- puts ("Sorry, no command processor.");
- return EXIT_FAILURE;
- }
-
- /* First get list of symbols which are defined by the compiler. */
- ignore_list = get_null_defines ();
-
- fputs ("Tested files:\n", stdout);
-
- for (h = 0; h < NUMBER_OF_HEADERS; ++h)
- {
- char file_name[HEADER_MAX];
- sprintf (file_name, "%s.h", header[h]);
- result |= check_header (file_name, ignore_list);
- }
-
- /* The test suite should return errors but for now this is not
- practical. Give a warning and ask the user to correct the bugs. */
- return result;
-}
-
-
-static char *
-xstrndup (const char *s, size_t n)
-{
- size_t len = n;
- char *new = malloc (len + 1);
-
- if (new == NULL)
- return NULL;
-
- new[len] = '\0';
- return memcpy (new, s, len);
-}
-
-
-static const char **
-get_null_defines (void)
-{
- char line[BUFSIZ], *command;
- char **result = NULL;
- size_t result_len = 0;
- size_t result_max = 0;
- FILE *input;
- int first = 1;
-
- macrofile = tmpnam (NULL);
-
- command = malloc (sizeof fmt + sizeof "/dev/null" + 2 * strlen (CC)
- + strlen (INC) + strlen (macrofile));
-
- if (command == NULL)
- {
- puts ("No more memory.");
- exit (1);
- }
-
- sprintf (command, fmt, "/dev/null", CC, INC, CC, macrofile);
-
- if (system (command))
- {
- puts ("system() returned nonzero");
- free (command);
- return NULL;
- }
- free (command);
- input = fopen (macrofile, "r");
-
- if (input == NULL)
- {
- printf ("Could not read %s: ", macrofile);
- perror (NULL);
- return NULL;
- }
-
- while (fgets (line, sizeof line, input) != NULL)
- {
- int i, okay = 0;
- size_t endmac;
- char *start, *end;
- if (strlen (line) < 9 || line[7] != ' ')
- { /* "#define A" */
- printf ("Malformed input, expected '#define MACRO'\ngot '%s'\n",
- line);
- continue;
- }
- if (line[8] == '_')
- /* It's a safe identifier. */
- continue;
- if (result_len == result_max)
- {
- result_max += 10;
- result = realloc (result, result_max * sizeof (char **));
- if (result == NULL)
- {
- puts ("No more memory.");
- exit (1);
- }
- }
- start = &line[8];
- for (end = start + 1; !isspace (*end) && *end != '\0'; ++end)
- ;
- result[result_len] = xstrndup (start, end - start);
-
- if (strcmp (result[result_len], "IN_MODULE") != 0)
- {
- if (first)
- {
- fputs ("The following identifiers will be ignored since the compiler defines them\nby default:\n", stdout);
- first = 0;
- }
- puts (result[result_len]);
- }
- ++result_len;
- }
- if (result_len == result_max)
- {
- result_max += 1;
- result = realloc (result, result_max * sizeof (char **));
- if (result == NULL)
- {
- puts ("No more memory.");
- exit (1);
- }
- }
- result[result_len] = NULL;
- fclose (input);
- remove (macrofile);
-
- return (const char **) result;
-}
-
-
-static int
-check_header (const char *file_name, const char **except)
-{
- char line[BUFSIZ], *command;
- FILE *input;
- int result = 0;
-
- command = malloc (sizeof fmt + strlen (file_name) + 2 * strlen (CC)
- + strlen (INC) + strlen (macrofile));
-
- if (command == NULL)
- {
- puts ("No more memory.");
- exit (1);
- }
-
- puts (file_name);
- sprintf (command, fmt, file_name, CC, INC, CC, macrofile);
-
- if (system (command))
- {
- puts ("system() returned nonzero");
- result = 1;
- }
- free (command);
- input = fopen (macrofile, "r");
-
- if (input == NULL)
- {
- printf ("Could not read %s: ", macrofile);
- perror (NULL);
- return 1;
- }
-
- while (fgets (line, sizeof line, input) != NULL)
- {
- int i, okay = 0;
- size_t endmac;
- const char **cpp;
- if (strlen (line) < 9 || line[7] != ' ')
- { /* "#define A" */
- printf ("Malformed input, expected '#define MACRO'\ngot '%s'\n",
- line);
- result = 1;
- continue;
- }
- for (i = 0; i < NUMBER_OF_PREFIXES; ++i)
- {
- if (!strncmp (line+8, prefix[i], strlen (prefix[i]))) {
- ++okay;
- break;
- }
- }
- if (okay)
- continue;
- for (i = 0; i < NUMBER_OF_MACROS; ++i)
- {
- if (!strncmp (line + 8, macros[i], strlen (macros[i])))
- {
- ++okay;
- break;
- }
- }
- if (okay)
- continue;
- /* Find next char after the macro identifier; this can be either
- a space or an open parenthesis. */
- endmac = strcspn (line + 8, " (");
- if (line[8+endmac] == '\0')
- {
- printf ("malformed input, expected '#define MACRO VALUE'\n"
- "got '%s'\n", line);
- result = 1;
- continue;
- }
- for (i = 0; i < NUMBER_OF_SUFFIXES; ++i)
- {
- size_t len = strlen (suffix[i]);
- if (!strncmp (line + 8 + endmac - len, suffix[i], len))
- {
- ++okay;
- break;
- }
- }
- if (okay)
- continue;
- if (except != NULL)
- for (cpp = except; *cpp != NULL; ++cpp)
- {
- size_t len = strlen (*cpp);
- if (!strncmp (line + 8, *cpp, len) && isspace (line[8 + len]))
- {
- ++okay;
- break;
- }
- }
- if (!okay)
- {
- fputs (line, stdout);
- result = 2;
- }
- }
- fclose (input);
- remove (macrofile);
-
- return result;
-}
-
-/* EOF */
diff --git a/stdlib/jrand48.c b/stdlib/jrand48.c
deleted file mode 100644
index 4a551ed1f3..0000000000
--- a/stdlib/jrand48.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-
-long int
-jrand48 (unsigned short int xsubi[3])
-{
- long int result;
-
- (void) __jrand48_r (xsubi, &__libc_drand48_data, &result);
-
- return result;
-}
diff --git a/stdlib/jrand48_r.c b/stdlib/jrand48_r.c
deleted file mode 100644
index 40e6a1cb2c..0000000000
--- a/stdlib/jrand48_r.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-int
-__jrand48_r (unsigned short int xsubi[3], struct drand48_data *buffer,
- long int *result)
-{
- /* Compute next state. */
- if (__drand48_iterate (xsubi, buffer) < 0)
- return -1;
-
- /* Store the result. */
- *result = (int32_t) ((xsubi[2] << 16) | xsubi[1]);
-
- return 0;
-}
-weak_alias (__jrand48_r, jrand48_r)
diff --git a/stdlib/l64a.c b/stdlib/l64a.c
deleted file mode 100644
index fc125844ce..0000000000
--- a/stdlib/l64a.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-/* Conversion table. */
-static const char conv_table[64] =
-{
- '.', '/', '0', '1', '2', '3', '4', '5',
- '6', '7', '8', '9', 'A', 'B', 'C', 'D',
- 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
- 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
- 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b',
- 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
- 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
- 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
-};
-
-char *
-l64a (long int n)
-{
- unsigned long int m = (unsigned long int) n;
- static char result[7];
- int cnt;
-
- /* The standard says that only 32 bits are used. */
- m &= 0xffffffff;
-
- if (m == 0ul)
- /* The value for N == 0 is defined to be the empty string. */
- return (char *) "";
-
- for (cnt = 0; m > 0ul; ++cnt)
- {
- result[cnt] = conv_table[m & 0x3f];
- m >>= 6;
- }
- result[cnt] = '\0';
-
- return result;
-}
diff --git a/stdlib/labs.c b/stdlib/labs.c
deleted file mode 100644
index 506c4bb21e..0000000000
--- a/stdlib/labs.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-
-#undef labs
-
-
-/* Return the absolute value of I. */
-long int
-labs (long int i)
-{
- return i < 0 ? -i : i;
-}
diff --git a/stdlib/lcong48.c b/stdlib/lcong48.c
deleted file mode 100644
index b90ae1c5c2..0000000000
--- a/stdlib/lcong48.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-
-void
-lcong48 (unsigned short int param[7])
-{
- (void) __lcong48_r (param, &__libc_drand48_data);
-}
diff --git a/stdlib/lcong48_r.c b/stdlib/lcong48_r.c
deleted file mode 100644
index d5228af8f5..0000000000
--- a/stdlib/lcong48_r.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-
-int
-__lcong48_r (unsigned short int param[7], struct drand48_data *buffer)
-{
- /* Store the given values. */
- memcpy (buffer->__x, &param[0], sizeof (buffer->__x));
- buffer->__a = ((uint64_t) param[5] << 32 | (uint32_t) param[4] << 16
- | param[3]);
- buffer->__c = param[6];
- buffer->__init = 1;
-
- return 0;
-}
-weak_alias (__lcong48_r, lcong48_r)
diff --git a/stdlib/ldbl2mpn.c b/stdlib/ldbl2mpn.c
deleted file mode 100644
index 450f9381cc..0000000000
--- a/stdlib/ldbl2mpn.c
+++ /dev/null
@@ -1 +0,0 @@
-/* Empty. Not needed unless ldbl support is in. */
diff --git a/stdlib/ldiv.c b/stdlib/ldiv.c
deleted file mode 100644
index 3951eb05f0..0000000000
--- a/stdlib/ldiv.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 1992-2017 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 <stdlib.h>
-
-
-/* Return the `ldiv_t' representation of NUMER over DENOM. */
-ldiv_t
-ldiv (long int numer, long int denom)
-{
- ldiv_t result;
-
- result.quot = numer / denom;
- result.rem = numer % denom;
-
- return result;
-}
diff --git a/stdlib/llabs.c b/stdlib/llabs.c
deleted file mode 100644
index 39d0561c0d..0000000000
--- a/stdlib/llabs.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* `long long int' absolute value.
- Copyright (C) 1991-2017 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 <stdlib.h>
-
-#undef llabs
-
-
-/* Return the absolute value of I. */
-long long int
-llabs (long long int i)
-{
- return i < 0 ? -i : i;
-}
diff --git a/stdlib/lldiv.c b/stdlib/lldiv.c
deleted file mode 100644
index 7109f35063..0000000000
--- a/stdlib/lldiv.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* `long long int' divison with remainder.
- Copyright (C) 1992-2017 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 <stdlib.h>
-
-
-/* Return the `lldiv_t' representation of NUMER over DENOM. */
-lldiv_t
-lldiv (long long int numer, long long int denom)
-{
- lldiv_t result;
-
- result.quot = numer / denom;
- result.rem = numer % denom;
-
- return result;
-}
diff --git a/stdlib/longlong.h b/stdlib/longlong.h
deleted file mode 100644
index 0ec11c5056..0000000000
--- a/stdlib/longlong.h
+++ /dev/null
@@ -1,1773 +0,0 @@
-/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
- Copyright (C) 1991-2017 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- 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/>. */
-
-/* You have to define the following before including this file:
-
- UWtype -- An unsigned type, default type for operations (typically a "word")
- UHWtype -- An unsigned type, at least half the size of UWtype.
- UDWtype -- An unsigned type, at least twice as large a UWtype
- W_TYPE_SIZE -- size in bits of UWtype
-
- UQItype -- Unsigned 8 bit type.
- SItype, USItype -- Signed and unsigned 32 bit types.
- DItype, UDItype -- Signed and unsigned 64 bit types.
-
- On a 32 bit machine UWtype should typically be USItype;
- on a 64 bit machine, UWtype should typically be UDItype. */
-
-#define __BITS4 (W_TYPE_SIZE / 4)
-#define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2))
-#define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1))
-#define __ll_highpart(t) ((UWtype) (t) >> (W_TYPE_SIZE / 2))
-
-#ifndef W_TYPE_SIZE
-#define W_TYPE_SIZE 32
-#define UWtype USItype
-#define UHWtype USItype
-#define UDWtype UDItype
-#endif
-
-/* Used in glibc only. */
-#ifndef attribute_hidden
-#define attribute_hidden
-#endif
-
-extern const UQItype __clz_tab[256] attribute_hidden;
-
-/* Define auxiliary asm macros.
-
- 1) umul_ppmm(high_prod, low_prod, multiplier, multiplicand) multiplies two
- UWtype integers MULTIPLIER and MULTIPLICAND, and generates a two UWtype
- word product in HIGH_PROD and LOW_PROD.
-
- 2) __umulsidi3(a,b) multiplies two UWtype integers A and B, and returns a
- UDWtype product. This is just a variant of umul_ppmm.
-
- 3) udiv_qrnnd(quotient, remainder, high_numerator, low_numerator,
- denominator) divides a UDWtype, composed by the UWtype integers
- HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and places the quotient
- in QUOTIENT and the remainder in REMAINDER. HIGH_NUMERATOR must be less
- than DENOMINATOR for correct operation. If, in addition, the most
- significant bit of DENOMINATOR must be 1, then the pre-processor symbol
- UDIV_NEEDS_NORMALIZATION is defined to 1.
-
- 4) sdiv_qrnnd(quotient, remainder, high_numerator, low_numerator,
- denominator). Like udiv_qrnnd but the numbers are signed. The quotient
- is rounded towards 0.
-
- 5) count_leading_zeros(count, x) counts the number of zero-bits from the
- msb to the first nonzero bit in the UWtype X. This is the number of
- steps X needs to be shifted left to set the msb. Undefined for X == 0,
- unless the symbol COUNT_LEADING_ZEROS_0 is defined to some value.
-
- 6) count_trailing_zeros(count, x) like count_leading_zeros, but counts
- from the least significant end.
-
- 7) add_ssaaaa(high_sum, low_sum, high_addend_1, low_addend_1,
- high_addend_2, low_addend_2) adds two UWtype integers, composed by
- HIGH_ADDEND_1 and LOW_ADDEND_1, and HIGH_ADDEND_2 and LOW_ADDEND_2
- respectively. The result is placed in HIGH_SUM and LOW_SUM. Overflow
- (i.e. carry out) is not stored anywhere, and is lost.
-
- 8) sub_ddmmss(high_difference, low_difference, high_minuend, low_minuend,
- high_subtrahend, low_subtrahend) subtracts two two-word UWtype integers,
- composed by HIGH_MINUEND_1 and LOW_MINUEND_1, and HIGH_SUBTRAHEND_2 and
- LOW_SUBTRAHEND_2 respectively. The result is placed in HIGH_DIFFERENCE
- and LOW_DIFFERENCE. Overflow (i.e. carry out) is not stored anywhere,
- and is lost.
-
- If any of these macros are left undefined for a particular CPU,
- C macros are used. */
-
-/* The CPUs come in alphabetical order below.
-
- Please add support for more CPUs here, or improve the current support
- for the CPUs below!
- (E.g. WE32100, IBM360.) */
-
-#if defined (__GNUC__) && !defined (NO_ASM)
-
-/* We sometimes need to clobber "cc" with gcc2, but that would not be
- understood by gcc1. Use cpp to avoid major code duplication. */
-#if __GNUC__ < 2
-#define __CLOBBER_CC
-#define __AND_CLOBBER_CC
-#else /* __GNUC__ >= 2 */
-#define __CLOBBER_CC : "cc"
-#define __AND_CLOBBER_CC , "cc"
-#endif /* __GNUC__ < 2 */
-
-#if defined (__aarch64__)
-
-#if W_TYPE_SIZE == 32
-#define count_leading_zeros(COUNT, X) ((COUNT) = __builtin_clz (X))
-#define count_trailing_zeros(COUNT, X) ((COUNT) = __builtin_ctz (X))
-#define COUNT_LEADING_ZEROS_0 32
-#endif /* W_TYPE_SIZE == 32 */
-
-#if W_TYPE_SIZE == 64
-#define count_leading_zeros(COUNT, X) ((COUNT) = __builtin_clzll (X))
-#define count_trailing_zeros(COUNT, X) ((COUNT) = __builtin_ctzll (X))
-#define COUNT_LEADING_ZEROS_0 64
-#endif /* W_TYPE_SIZE == 64 */
-
-#endif /* __aarch64__ */
-
-#if defined (__alpha) && W_TYPE_SIZE == 64
-/* There is a bug in g++ before version 5 that
- errors on __builtin_alpha_umulh. */
-#if !defined(__cplusplus) || __GNUC__ >= 5
-#define umul_ppmm(ph, pl, m0, m1) \
- do { \
- UDItype __m0 = (m0), __m1 = (m1); \
- (ph) = __builtin_alpha_umulh (__m0, __m1); \
- (pl) = __m0 * __m1; \
- } while (0)
-#define UMUL_TIME 46
-#endif /* !c++ */
-#ifndef LONGLONG_STANDALONE
-#define udiv_qrnnd(q, r, n1, n0, d) \
- do { UDItype __r; \
- (q) = __udiv_qrnnd (&__r, (n1), (n0), (d)); \
- (r) = __r; \
- } while (0)
-extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, UDItype);
-#define UDIV_TIME 220
-#endif /* LONGLONG_STANDALONE */
-#ifdef __alpha_cix__
-#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clzl (X))
-#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctzl (X))
-#define COUNT_LEADING_ZEROS_0 64
-#else
-#define count_leading_zeros(COUNT,X) \
- do { \
- UDItype __xr = (X), __t, __a; \
- __t = __builtin_alpha_cmpbge (0, __xr); \
- __a = __clz_tab[__t ^ 0xff] - 1; \
- __t = __builtin_alpha_extbl (__xr, __a); \
- (COUNT) = 64 - (__clz_tab[__t] + __a*8); \
- } while (0)
-#define count_trailing_zeros(COUNT,X) \
- do { \
- UDItype __xr = (X), __t, __a; \
- __t = __builtin_alpha_cmpbge (0, __xr); \
- __t = ~__t & -~__t; \
- __a = ((__t & 0xCC) != 0) * 2; \
- __a += ((__t & 0xF0) != 0) * 4; \
- __a += ((__t & 0xAA) != 0); \
- __t = __builtin_alpha_extbl (__xr, __a); \
- __a <<= 3; \
- __t &= -__t; \
- __a += ((__t & 0xCC) != 0) * 2; \
- __a += ((__t & 0xF0) != 0) * 4; \
- __a += ((__t & 0xAA) != 0); \
- (COUNT) = __a; \
- } while (0)
-#endif /* __alpha_cix__ */
-#endif /* __alpha */
-
-#if defined (__arc__) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("add.f %1, %4, %5\n\tadc %0, %2, %3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%r" ((USItype) (ah)), \
- "rIJ" ((USItype) (bh)), \
- "%r" ((USItype) (al)), \
- "rIJ" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("sub.f %1, %4, %5\n\tsbc %0, %2, %3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "r" ((USItype) (ah)), \
- "rIJ" ((USItype) (bh)), \
- "r" ((USItype) (al)), \
- "rIJ" ((USItype) (bl)))
-
-#define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
-#ifdef __ARC_NORM__
-#define count_leading_zeros(count, x) \
- do \
- { \
- SItype c_; \
- \
- __asm__ ("norm.f\t%0,%1\n\tmov.mi\t%0,-1" : "=r" (c_) : "r" (x) : "cc");\
- (count) = c_ + 1; \
- } \
- while (0)
-#define COUNT_LEADING_ZEROS_0 32
-#endif
-#endif
-
-#if defined (__arm__) && (defined (__thumb2__) || !defined (__thumb__)) \
- && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("adds %1, %4, %5\n\tadc %0, %2, %3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%r" ((USItype) (ah)), \
- "rI" ((USItype) (bh)), \
- "%r" ((USItype) (al)), \
- "rI" ((USItype) (bl)) __CLOBBER_CC)
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("subs %1, %4, %5\n\tsbc %0, %2, %3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "r" ((USItype) (ah)), \
- "rI" ((USItype) (bh)), \
- "r" ((USItype) (al)), \
- "rI" ((USItype) (bl)) __CLOBBER_CC)
-# if defined(__ARM_ARCH_2__) || defined(__ARM_ARCH_2A__) \
- || defined(__ARM_ARCH_3__)
-# define umul_ppmm(xh, xl, a, b) \
- do { \
- register USItype __t0, __t1, __t2; \
- __asm__ ("%@ Inlined umul_ppmm\n" \
- " mov %2, %5, lsr #16\n" \
- " mov %0, %6, lsr #16\n" \
- " bic %3, %5, %2, lsl #16\n" \
- " bic %4, %6, %0, lsl #16\n" \
- " mul %1, %3, %4\n" \
- " mul %4, %2, %4\n" \
- " mul %3, %0, %3\n" \
- " mul %0, %2, %0\n" \
- " adds %3, %4, %3\n" \
- " addcs %0, %0, #65536\n" \
- " adds %1, %1, %3, lsl #16\n" \
- " adc %0, %0, %3, lsr #16" \
- : "=&r" ((USItype) (xh)), \
- "=r" ((USItype) (xl)), \
- "=&r" (__t0), "=&r" (__t1), "=r" (__t2) \
- : "r" ((USItype) (a)), \
- "r" ((USItype) (b)) __CLOBBER_CC ); \
- } while (0)
-# define UMUL_TIME 20
-# else
-# define umul_ppmm(xh, xl, a, b) \
- do { \
- /* Generate umull, under compiler control. */ \
- register UDItype __t0 = (UDItype)(USItype)(a) * (USItype)(b); \
- (xl) = (USItype)__t0; \
- (xh) = (USItype)(__t0 >> 32); \
- } while (0)
-# define UMUL_TIME 3
-# endif
-# define UDIV_TIME 100
-#endif /* __arm__ */
-
-#if defined(__arm__)
-/* Let gcc decide how best to implement count_leading_zeros. */
-#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctz (X))
-#define COUNT_LEADING_ZEROS_0 32
-#endif
-
-#if defined (__AVR__)
-
-#if W_TYPE_SIZE == 16
-#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctz (X))
-#define COUNT_LEADING_ZEROS_0 16
-#endif /* W_TYPE_SIZE == 16 */
-
-#if W_TYPE_SIZE == 32
-#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clzl (X))
-#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctzl (X))
-#define COUNT_LEADING_ZEROS_0 32
-#endif /* W_TYPE_SIZE == 32 */
-
-#if W_TYPE_SIZE == 64
-#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clzll (X))
-#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctzll (X))
-#define COUNT_LEADING_ZEROS_0 64
-#endif /* W_TYPE_SIZE == 64 */
-
-#endif /* defined (__AVR__) */
-
-#if defined (__CRIS__)
-
-#if __CRIS_arch_version >= 3
-#define count_leading_zeros(COUNT, X) ((COUNT) = __builtin_clz (X))
-#define COUNT_LEADING_ZEROS_0 32
-#endif /* __CRIS_arch_version >= 3 */
-
-#if __CRIS_arch_version >= 8
-#define count_trailing_zeros(COUNT, X) ((COUNT) = __builtin_ctz (X))
-#endif /* __CRIS_arch_version >= 8 */
-
-#if __CRIS_arch_version >= 10
-#define __umulsidi3(u,v) ((UDItype)(USItype) (u) * (UDItype)(USItype) (v))
-#else
-#define __umulsidi3 __umulsidi3
-extern UDItype __umulsidi3 (USItype, USItype);
-#endif /* __CRIS_arch_version >= 10 */
-
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- UDItype __x = __umulsidi3 (u, v); \
- (w0) = (USItype) (__x); \
- (w1) = (USItype) (__x >> 32); \
- } while (0)
-
-/* FIXME: defining add_ssaaaa and sub_ddmmss should be advantageous for
- DFmode ("double" intrinsics, avoiding two of the three insns handling
- carry), but defining them as open-code C composing and doing the
- operation in DImode (UDImode) shows that the DImode needs work:
- register pressure from requiring neighboring registers and the
- traffic to and from them come to dominate, in the 4.7 series. */
-
-#endif /* defined (__CRIS__) */
-
-#if defined (__hppa) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("add %4,%5,%1\n\taddc %2,%3,%0" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%rM" ((USItype) (ah)), \
- "rM" ((USItype) (bh)), \
- "%rM" ((USItype) (al)), \
- "rM" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("sub %4,%5,%1\n\tsubb %2,%3,%0" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "rM" ((USItype) (ah)), \
- "rM" ((USItype) (bh)), \
- "rM" ((USItype) (al)), \
- "rM" ((USItype) (bl)))
-#if defined (_PA_RISC1_1)
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- union \
- { \
- UDItype __f; \
- struct {USItype __w1, __w0;} __w1w0; \
- } __t; \
- __asm__ ("xmpyu %1,%2,%0" \
- : "=x" (__t.__f) \
- : "x" ((USItype) (u)), \
- "x" ((USItype) (v))); \
- (w1) = __t.__w1w0.__w1; \
- (w0) = __t.__w1w0.__w0; \
- } while (0)
-#define UMUL_TIME 8
-#else
-#define UMUL_TIME 30
-#endif
-#define UDIV_TIME 40
-#define count_leading_zeros(count, x) \
- do { \
- USItype __tmp; \
- __asm__ ( \
- "ldi 1,%0\n" \
-" extru,= %1,15,16,%%r0 ; Bits 31..16 zero?\n" \
-" extru,tr %1,15,16,%1 ; No. Shift down, skip add.\n"\
-" ldo 16(%0),%0 ; Yes. Perform add.\n" \
-" extru,= %1,23,8,%%r0 ; Bits 15..8 zero?\n" \
-" extru,tr %1,23,8,%1 ; No. Shift down, skip add.\n"\
-" ldo 8(%0),%0 ; Yes. Perform add.\n" \
-" extru,= %1,27,4,%%r0 ; Bits 7..4 zero?\n" \
-" extru,tr %1,27,4,%1 ; No. Shift down, skip add.\n"\
-" ldo 4(%0),%0 ; Yes. Perform add.\n" \
-" extru,= %1,29,2,%%r0 ; Bits 3..2 zero?\n" \
-" extru,tr %1,29,2,%1 ; No. Shift down, skip add.\n"\
-" ldo 2(%0),%0 ; Yes. Perform add.\n" \
-" extru %1,30,1,%1 ; Extract bit 1.\n" \
-" sub %0,%1,%0 ; Subtract it.\n" \
- : "=r" (count), "=r" (__tmp) : "1" (x)); \
- } while (0)
-#endif
-
-#if (defined (__i370__) || defined (__s390__) || defined (__mvs__)) && W_TYPE_SIZE == 32
-#if !defined (__zarch__)
-#define smul_ppmm(xh, xl, m0, m1) \
- do { \
- union {DItype __ll; \
- struct {USItype __h, __l;} __i; \
- } __x; \
- __asm__ ("lr %N0,%1\n\tmr %0,%2" \
- : "=&r" (__x.__ll) \
- : "r" (m0), "r" (m1)); \
- (xh) = __x.__i.__h; (xl) = __x.__i.__l; \
- } while (0)
-#define sdiv_qrnnd(q, r, n1, n0, d) \
- do { \
- union {DItype __ll; \
- struct {USItype __h, __l;} __i; \
- } __x; \
- __x.__i.__h = n1; __x.__i.__l = n0; \
- __asm__ ("dr %0,%2" \
- : "=r" (__x.__ll) \
- : "0" (__x.__ll), "r" (d)); \
- (q) = __x.__i.__l; (r) = __x.__i.__h; \
- } while (0)
-#else
-#define smul_ppmm(xh, xl, m0, m1) \
- do { \
- register SItype __r0 __asm__ ("0"); \
- register SItype __r1 __asm__ ("1") = (m0); \
- \
- __asm__ ("mr\t%%r0,%3" \
- : "=r" (__r0), "=r" (__r1) \
- : "r" (__r1), "r" (m1)); \
- (xh) = __r0; (xl) = __r1; \
- } while (0)
-
-#define sdiv_qrnnd(q, r, n1, n0, d) \
- do { \
- register SItype __r0 __asm__ ("0") = (n1); \
- register SItype __r1 __asm__ ("1") = (n0); \
- \
- __asm__ ("dr\t%%r0,%4" \
- : "=r" (__r0), "=r" (__r1) \
- : "r" (__r0), "r" (__r1), "r" (d)); \
- (q) = __r1; (r) = __r0; \
- } while (0)
-#endif /* __zarch__ */
-#endif
-
-#if (defined (__i386__) || defined (__i486__)) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("add{l} {%5,%1|%1,%5}\n\tadc{l} {%3,%0|%0,%3}" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%0" ((USItype) (ah)), \
- "g" ((USItype) (bh)), \
- "%1" ((USItype) (al)), \
- "g" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("sub{l} {%5,%1|%1,%5}\n\tsbb{l} {%3,%0|%0,%3}" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "g" ((USItype) (bh)), \
- "1" ((USItype) (al)), \
- "g" ((USItype) (bl)))
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("mul{l} %3" \
- : "=a" ((USItype) (w0)), \
- "=d" ((USItype) (w1)) \
- : "%0" ((USItype) (u)), \
- "rm" ((USItype) (v)))
-#define udiv_qrnnd(q, r, n1, n0, dv) \
- __asm__ ("div{l} %4" \
- : "=a" ((USItype) (q)), \
- "=d" ((USItype) (r)) \
- : "0" ((USItype) (n0)), \
- "1" ((USItype) (n1)), \
- "rm" ((USItype) (dv)))
-#define count_leading_zeros(count, x) ((count) = __builtin_clz (x))
-#define count_trailing_zeros(count, x) ((count) = __builtin_ctz (x))
-#define UMUL_TIME 40
-#define UDIV_TIME 40
-#endif /* 80x86 */
-
-#if defined (__x86_64__) && W_TYPE_SIZE == 64
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("add{q} {%5,%1|%1,%5}\n\tadc{q} {%3,%0|%0,%3}" \
- : "=r" ((UDItype) (sh)), \
- "=&r" ((UDItype) (sl)) \
- : "%0" ((UDItype) (ah)), \
- "rme" ((UDItype) (bh)), \
- "%1" ((UDItype) (al)), \
- "rme" ((UDItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("sub{q} {%5,%1|%1,%5}\n\tsbb{q} {%3,%0|%0,%3}" \
- : "=r" ((UDItype) (sh)), \
- "=&r" ((UDItype) (sl)) \
- : "0" ((UDItype) (ah)), \
- "rme" ((UDItype) (bh)), \
- "1" ((UDItype) (al)), \
- "rme" ((UDItype) (bl)))
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("mul{q} %3" \
- : "=a" ((UDItype) (w0)), \
- "=d" ((UDItype) (w1)) \
- : "%0" ((UDItype) (u)), \
- "rm" ((UDItype) (v)))
-#define udiv_qrnnd(q, r, n1, n0, dv) \
- __asm__ ("div{q} %4" \
- : "=a" ((UDItype) (q)), \
- "=d" ((UDItype) (r)) \
- : "0" ((UDItype) (n0)), \
- "1" ((UDItype) (n1)), \
- "rm" ((UDItype) (dv)))
-#define count_leading_zeros(count, x) ((count) = __builtin_clzll (x))
-#define count_trailing_zeros(count, x) ((count) = __builtin_ctzll (x))
-#define UMUL_TIME 40
-#define UDIV_TIME 40
-#endif /* x86_64 */
-
-#if defined (__i960__) && W_TYPE_SIZE == 32
-#define umul_ppmm(w1, w0, u, v) \
- ({union {UDItype __ll; \
- struct {USItype __l, __h;} __i; \
- } __xx; \
- __asm__ ("emul %2,%1,%0" \
- : "=d" (__xx.__ll) \
- : "%dI" ((USItype) (u)), \
- "dI" ((USItype) (v))); \
- (w1) = __xx.__i.__h; (w0) = __xx.__i.__l;})
-#define __umulsidi3(u, v) \
- ({UDItype __w; \
- __asm__ ("emul %2,%1,%0" \
- : "=d" (__w) \
- : "%dI" ((USItype) (u)), \
- "dI" ((USItype) (v))); \
- __w; })
-#endif /* __i960__ */
-
-#if defined (__ia64) && W_TYPE_SIZE == 64
-/* This form encourages gcc (pre-release 3.4 at least) to emit predicated
- "sub r=r,r" and "sub r=r,r,1", giving a 2 cycle latency. The generic
- code using "al<bl" arithmetically comes out making an actual 0 or 1 in a
- register, which takes an extra cycle. */
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- do { \
- UWtype __x; \
- __x = (al) - (bl); \
- if ((al) < (bl)) \
- (sh) = (ah) - (bh) - 1; \
- else \
- (sh) = (ah) - (bh); \
- (sl) = __x; \
- } while (0)
-
-/* Do both product parts in assembly, since that gives better code with
- all gcc versions. Some callers will just use the upper part, and in
- that situation we waste an instruction, but not any cycles. */
-#define umul_ppmm(ph, pl, m0, m1) \
- __asm__ ("xma.hu %0 = %2, %3, f0\n\txma.l %1 = %2, %3, f0" \
- : "=&f" (ph), "=f" (pl) \
- : "f" (m0), "f" (m1))
-#define count_leading_zeros(count, x) \
- do { \
- UWtype _x = (x), _y, _a, _c; \
- __asm__ ("mux1 %0 = %1, @rev" : "=r" (_y) : "r" (_x)); \
- __asm__ ("czx1.l %0 = %1" : "=r" (_a) : "r" (-_y | _y)); \
- _c = (_a - 1) << 3; \
- _x >>= _c; \
- if (_x >= 1 << 4) \
- _x >>= 4, _c += 4; \
- if (_x >= 1 << 2) \
- _x >>= 2, _c += 2; \
- _c += _x >> 1; \
- (count) = W_TYPE_SIZE - 1 - _c; \
- } while (0)
-/* similar to what gcc does for __builtin_ffs, but 0 based rather than 1
- based, and we don't need a special case for x==0 here */
-#define count_trailing_zeros(count, x) \
- do { \
- UWtype __ctz_x = (x); \
- __asm__ ("popcnt %0 = %1" \
- : "=r" (count) \
- : "r" ((__ctz_x-1) & ~__ctz_x)); \
- } while (0)
-#define UMUL_TIME 14
-#endif
-
-#if defined (__M32R__) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- /* The cmp clears the condition bit. */ \
- __asm__ ("cmp %0,%0\n\taddx %1,%5\n\taddx %0,%3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "r" ((USItype) (bh)), \
- "1" ((USItype) (al)), \
- "r" ((USItype) (bl)) \
- : "cbit")
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- /* The cmp clears the condition bit. */ \
- __asm__ ("cmp %0,%0\n\tsubx %1,%5\n\tsubx %0,%3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "r" ((USItype) (bh)), \
- "1" ((USItype) (al)), \
- "r" ((USItype) (bl)) \
- : "cbit")
-#endif /* __M32R__ */
-
-#if defined (__mc68000__) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("add%.l %5,%1\n\taddx%.l %3,%0" \
- : "=d" ((USItype) (sh)), \
- "=&d" ((USItype) (sl)) \
- : "%0" ((USItype) (ah)), \
- "d" ((USItype) (bh)), \
- "%1" ((USItype) (al)), \
- "g" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("sub%.l %5,%1\n\tsubx%.l %3,%0" \
- : "=d" ((USItype) (sh)), \
- "=&d" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "d" ((USItype) (bh)), \
- "1" ((USItype) (al)), \
- "g" ((USItype) (bl)))
-
-/* The '020, '030, '040, '060 and CPU32 have 32x32->64 and 64/32->32q-32r. */
-#if (defined (__mc68020__) && !defined (__mc68060__))
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("mulu%.l %3,%1:%0" \
- : "=d" ((USItype) (w0)), \
- "=d" ((USItype) (w1)) \
- : "%0" ((USItype) (u)), \
- "dmi" ((USItype) (v)))
-#define UMUL_TIME 45
-#define udiv_qrnnd(q, r, n1, n0, d) \
- __asm__ ("divu%.l %4,%1:%0" \
- : "=d" ((USItype) (q)), \
- "=d" ((USItype) (r)) \
- : "0" ((USItype) (n0)), \
- "1" ((USItype) (n1)), \
- "dmi" ((USItype) (d)))
-#define UDIV_TIME 90
-#define sdiv_qrnnd(q, r, n1, n0, d) \
- __asm__ ("divs%.l %4,%1:%0" \
- : "=d" ((USItype) (q)), \
- "=d" ((USItype) (r)) \
- : "0" ((USItype) (n0)), \
- "1" ((USItype) (n1)), \
- "dmi" ((USItype) (d)))
-
-#elif defined (__mcoldfire__) /* not mc68020 */
-
-#define umul_ppmm(xh, xl, a, b) \
- __asm__ ("| Inlined umul_ppmm\n" \
- " move%.l %2,%/d0\n" \
- " move%.l %3,%/d1\n" \
- " move%.l %/d0,%/d2\n" \
- " swap %/d0\n" \
- " move%.l %/d1,%/d3\n" \
- " swap %/d1\n" \
- " move%.w %/d2,%/d4\n" \
- " mulu %/d3,%/d4\n" \
- " mulu %/d1,%/d2\n" \
- " mulu %/d0,%/d3\n" \
- " mulu %/d0,%/d1\n" \
- " move%.l %/d4,%/d0\n" \
- " clr%.w %/d0\n" \
- " swap %/d0\n" \
- " add%.l %/d0,%/d2\n" \
- " add%.l %/d3,%/d2\n" \
- " jcc 1f\n" \
- " add%.l %#65536,%/d1\n" \
- "1: swap %/d2\n" \
- " moveq %#0,%/d0\n" \
- " move%.w %/d2,%/d0\n" \
- " move%.w %/d4,%/d2\n" \
- " move%.l %/d2,%1\n" \
- " add%.l %/d1,%/d0\n" \
- " move%.l %/d0,%0" \
- : "=g" ((USItype) (xh)), \
- "=g" ((USItype) (xl)) \
- : "g" ((USItype) (a)), \
- "g" ((USItype) (b)) \
- : "d0", "d1", "d2", "d3", "d4")
-#define UMUL_TIME 100
-#define UDIV_TIME 400
-#else /* not ColdFire */
-/* %/ inserts REGISTER_PREFIX, %# inserts IMMEDIATE_PREFIX. */
-#define umul_ppmm(xh, xl, a, b) \
- __asm__ ("| Inlined umul_ppmm\n" \
- " move%.l %2,%/d0\n" \
- " move%.l %3,%/d1\n" \
- " move%.l %/d0,%/d2\n" \
- " swap %/d0\n" \
- " move%.l %/d1,%/d3\n" \
- " swap %/d1\n" \
- " move%.w %/d2,%/d4\n" \
- " mulu %/d3,%/d4\n" \
- " mulu %/d1,%/d2\n" \
- " mulu %/d0,%/d3\n" \
- " mulu %/d0,%/d1\n" \
- " move%.l %/d4,%/d0\n" \
- " eor%.w %/d0,%/d0\n" \
- " swap %/d0\n" \
- " add%.l %/d0,%/d2\n" \
- " add%.l %/d3,%/d2\n" \
- " jcc 1f\n" \
- " add%.l %#65536,%/d1\n" \
- "1: swap %/d2\n" \
- " moveq %#0,%/d0\n" \
- " move%.w %/d2,%/d0\n" \
- " move%.w %/d4,%/d2\n" \
- " move%.l %/d2,%1\n" \
- " add%.l %/d1,%/d0\n" \
- " move%.l %/d0,%0" \
- : "=g" ((USItype) (xh)), \
- "=g" ((USItype) (xl)) \
- : "g" ((USItype) (a)), \
- "g" ((USItype) (b)) \
- : "d0", "d1", "d2", "d3", "d4")
-#define UMUL_TIME 100
-#define UDIV_TIME 400
-
-#endif /* not mc68020 */
-
-/* The '020, '030, '040 and '060 have bitfield insns.
- cpu32 disguises as a 68020, but lacks them. */
-#if defined (__mc68020__) && !defined (__mcpu32__)
-#define count_leading_zeros(count, x) \
- __asm__ ("bfffo %1{%b2:%b2},%0" \
- : "=d" ((USItype) (count)) \
- : "od" ((USItype) (x)), "n" (0))
-/* Some ColdFire architectures have a ff1 instruction supported via
- __builtin_clz. */
-#elif defined (__mcfisaaplus__) || defined (__mcfisac__)
-#define count_leading_zeros(count,x) ((count) = __builtin_clz (x))
-#define COUNT_LEADING_ZEROS_0 32
-#endif
-#endif /* mc68000 */
-
-#if defined (__m88000__) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("addu.co %1,%r4,%r5\n\taddu.ci %0,%r2,%r3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%rJ" ((USItype) (ah)), \
- "rJ" ((USItype) (bh)), \
- "%rJ" ((USItype) (al)), \
- "rJ" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("subu.co %1,%r4,%r5\n\tsubu.ci %0,%r2,%r3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "rJ" ((USItype) (ah)), \
- "rJ" ((USItype) (bh)), \
- "rJ" ((USItype) (al)), \
- "rJ" ((USItype) (bl)))
-#define count_leading_zeros(count, x) \
- do { \
- USItype __cbtmp; \
- __asm__ ("ff1 %0,%1" \
- : "=r" (__cbtmp) \
- : "r" ((USItype) (x))); \
- (count) = __cbtmp ^ 31; \
- } while (0)
-#define COUNT_LEADING_ZEROS_0 63 /* sic */
-#if defined (__mc88110__)
-#define umul_ppmm(wh, wl, u, v) \
- do { \
- union {UDItype __ll; \
- struct {USItype __h, __l;} __i; \
- } __xx; \
- __asm__ ("mulu.d %0,%1,%2" \
- : "=r" (__xx.__ll) \
- : "r" ((USItype) (u)), \
- "r" ((USItype) (v))); \
- (wh) = __xx.__i.__h; \
- (wl) = __xx.__i.__l; \
- } while (0)
-#define udiv_qrnnd(q, r, n1, n0, d) \
- ({union {UDItype __ll; \
- struct {USItype __h, __l;} __i; \
- } __xx; \
- USItype __q; \
- __xx.__i.__h = (n1); __xx.__i.__l = (n0); \
- __asm__ ("divu.d %0,%1,%2" \
- : "=r" (__q) \
- : "r" (__xx.__ll), \
- "r" ((USItype) (d))); \
- (r) = (n0) - __q * (d); (q) = __q; })
-#define UMUL_TIME 5
-#define UDIV_TIME 25
-#else
-#define UMUL_TIME 17
-#define UDIV_TIME 150
-#endif /* __mc88110__ */
-#endif /* __m88000__ */
-
-#if defined (__mn10300__)
-# if defined (__AM33__)
-# define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-# define umul_ppmm(w1, w0, u, v) \
- asm("mulu %3,%2,%1,%0" : "=r"(w0), "=r"(w1) : "r"(u), "r"(v))
-# define smul_ppmm(w1, w0, u, v) \
- asm("mul %3,%2,%1,%0" : "=r"(w0), "=r"(w1) : "r"(u), "r"(v))
-# else
-# define umul_ppmm(w1, w0, u, v) \
- asm("nop; nop; mulu %3,%0" : "=d"(w0), "=z"(w1) : "%0"(u), "d"(v))
-# define smul_ppmm(w1, w0, u, v) \
- asm("nop; nop; mul %3,%0" : "=d"(w0), "=z"(w1) : "%0"(u), "d"(v))
-# endif
-# define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- do { \
- DWunion __s, __a, __b; \
- __a.s.low = (al); __a.s.high = (ah); \
- __b.s.low = (bl); __b.s.high = (bh); \
- __s.ll = __a.ll + __b.ll; \
- (sl) = __s.s.low; (sh) = __s.s.high; \
- } while (0)
-# define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- do { \
- DWunion __s, __a, __b; \
- __a.s.low = (al); __a.s.high = (ah); \
- __b.s.low = (bl); __b.s.high = (bh); \
- __s.ll = __a.ll - __b.ll; \
- (sl) = __s.s.low; (sh) = __s.s.high; \
- } while (0)
-# define udiv_qrnnd(q, r, nh, nl, d) \
- asm("divu %2,%0" : "=D"(q), "=z"(r) : "D"(d), "0"(nl), "1"(nh))
-# define sdiv_qrnnd(q, r, nh, nl, d) \
- asm("div %2,%0" : "=D"(q), "=z"(r) : "D"(d), "0"(nl), "1"(nh))
-# define UMUL_TIME 3
-# define UDIV_TIME 38
-#endif
-
-#if defined (__mips__) && W_TYPE_SIZE == 32
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- UDItype __x = (UDItype) (USItype) (u) * (USItype) (v); \
- (w1) = (USItype) (__x >> 32); \
- (w0) = (USItype) (__x); \
- } while (0)
-#define UMUL_TIME 10
-#define UDIV_TIME 100
-
-#if (__mips == 32 || __mips == 64) && ! defined (__mips16)
-#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-#define COUNT_LEADING_ZEROS_0 32
-#endif
-#endif /* __mips__ */
-
-#if defined (__ns32000__) && W_TYPE_SIZE == 32
-#define umul_ppmm(w1, w0, u, v) \
- ({union {UDItype __ll; \
- struct {USItype __l, __h;} __i; \
- } __xx; \
- __asm__ ("meid %2,%0" \
- : "=g" (__xx.__ll) \
- : "%0" ((USItype) (u)), \
- "g" ((USItype) (v))); \
- (w1) = __xx.__i.__h; (w0) = __xx.__i.__l;})
-#define __umulsidi3(u, v) \
- ({UDItype __w; \
- __asm__ ("meid %2,%0" \
- : "=g" (__w) \
- : "%0" ((USItype) (u)), \
- "g" ((USItype) (v))); \
- __w; })
-#define udiv_qrnnd(q, r, n1, n0, d) \
- ({union {UDItype __ll; \
- struct {USItype __l, __h;} __i; \
- } __xx; \
- __xx.__i.__h = (n1); __xx.__i.__l = (n0); \
- __asm__ ("deid %2,%0" \
- : "=g" (__xx.__ll) \
- : "0" (__xx.__ll), \
- "g" ((USItype) (d))); \
- (r) = __xx.__i.__l; (q) = __xx.__i.__h; })
-#define count_trailing_zeros(count,x) \
- do { \
- __asm__ ("ffsd %2,%0" \
- : "=r" ((USItype) (count)) \
- : "0" ((USItype) 0), \
- "r" ((USItype) (x))); \
- } while (0)
-#endif /* __ns32000__ */
-
-/* FIXME: We should test _IBMR2 here when we add assembly support for the
- system vendor compilers.
- FIXME: What's needed for gcc PowerPC VxWorks? __vxworks__ is not good
- enough, since that hits ARM and m68k too. */
-#if (defined (_ARCH_PPC) /* AIX */ \
- || defined (__powerpc__) /* gcc */ \
- || defined (__POWERPC__) /* BEOS */ \
- || defined (__ppc__) /* Darwin */ \
- || (defined (PPC) && ! defined (CPU_FAMILY)) /* gcc 2.7.x GNU&SysV */ \
- || (defined (PPC) && defined (CPU_FAMILY) /* VxWorks */ \
- && CPU_FAMILY == PPC) \
- ) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- do { \
- if (__builtin_constant_p (bh) && (bh) == 0) \
- __asm__ ("add%I4c %1,%3,%4\n\taddze %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
- else if (__builtin_constant_p (bh) && (bh) == ~(USItype) 0) \
- __asm__ ("add%I4c %1,%3,%4\n\taddme %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
- else \
- __asm__ ("add%I5c %1,%4,%5\n\tadde %0,%2,%3" \
- : "=r" (sh), "=&r" (sl) \
- : "%r" (ah), "r" (bh), "%r" (al), "rI" (bl)); \
- } while (0)
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- do { \
- if (__builtin_constant_p (ah) && (ah) == 0) \
- __asm__ ("subf%I3c %1,%4,%3\n\tsubfze %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
- else if (__builtin_constant_p (ah) && (ah) == ~(USItype) 0) \
- __asm__ ("subf%I3c %1,%4,%3\n\tsubfme %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
- else if (__builtin_constant_p (bh) && (bh) == 0) \
- __asm__ ("subf%I3c %1,%4,%3\n\taddme %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
- else if (__builtin_constant_p (bh) && (bh) == ~(USItype) 0) \
- __asm__ ("subf%I3c %1,%4,%3\n\taddze %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
- else \
- __asm__ ("subf%I4c %1,%5,%4\n\tsubfe %0,%3,%2" \
- : "=r" (sh), "=&r" (sl) \
- : "r" (ah), "r" (bh), "rI" (al), "r" (bl)); \
- } while (0)
-#define count_leading_zeros(count, x) \
- __asm__ ("cntlzw %0,%1" : "=r" (count) : "r" (x))
-#define COUNT_LEADING_ZEROS_0 32
-#if defined (_ARCH_PPC) || defined (__powerpc__) || defined (__POWERPC__) \
- || defined (__ppc__) \
- || (defined (PPC) && ! defined (CPU_FAMILY)) /* gcc 2.7.x GNU&SysV */ \
- || (defined (PPC) && defined (CPU_FAMILY) /* VxWorks */ \
- && CPU_FAMILY == PPC)
-#define umul_ppmm(ph, pl, m0, m1) \
- do { \
- USItype __m0 = (m0), __m1 = (m1); \
- __asm__ ("mulhwu %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \
- (pl) = __m0 * __m1; \
- } while (0)
-#define UMUL_TIME 15
-#define smul_ppmm(ph, pl, m0, m1) \
- do { \
- SItype __m0 = (m0), __m1 = (m1); \
- __asm__ ("mulhw %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \
- (pl) = __m0 * __m1; \
- } while (0)
-#define SMUL_TIME 14
-#define UDIV_TIME 120
-#endif
-#endif /* 32-bit POWER architecture variants. */
-
-/* We should test _IBMR2 here when we add assembly support for the system
- vendor compilers. */
-#if (defined (_ARCH_PPC64) || defined (__powerpc64__)) && W_TYPE_SIZE == 64
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- do { \
- if (__builtin_constant_p (bh) && (bh) == 0) \
- __asm__ ("add%I4c %1,%3,%4\n\taddze %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
- else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \
- __asm__ ("add%I4c %1,%3,%4\n\taddme %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
- else \
- __asm__ ("add%I5c %1,%4,%5\n\tadde %0,%2,%3" \
- : "=r" (sh), "=&r" (sl) \
- : "%r" (ah), "r" (bh), "%r" (al), "rI" (bl)); \
- } while (0)
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- do { \
- if (__builtin_constant_p (ah) && (ah) == 0) \
- __asm__ ("subf%I3c %1,%4,%3\n\tsubfze %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
- else if (__builtin_constant_p (ah) && (ah) == ~(UDItype) 0) \
- __asm__ ("subf%I3c %1,%4,%3\n\tsubfme %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
- else if (__builtin_constant_p (bh) && (bh) == 0) \
- __asm__ ("subf%I3c %1,%4,%3\n\taddme %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
- else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \
- __asm__ ("subf%I3c %1,%4,%3\n\taddze %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
- else \
- __asm__ ("subf%I4c %1,%5,%4\n\tsubfe %0,%3,%2" \
- : "=r" (sh), "=&r" (sl) \
- : "r" (ah), "r" (bh), "rI" (al), "r" (bl)); \
- } while (0)
-#define count_leading_zeros(count, x) \
- __asm__ ("cntlzd %0,%1" : "=r" (count) : "r" (x))
-#define COUNT_LEADING_ZEROS_0 64
-#define umul_ppmm(ph, pl, m0, m1) \
- do { \
- UDItype __m0 = (m0), __m1 = (m1); \
- __asm__ ("mulhdu %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \
- (pl) = __m0 * __m1; \
- } while (0)
-#define UMUL_TIME 15
-#define smul_ppmm(ph, pl, m0, m1) \
- do { \
- DItype __m0 = (m0), __m1 = (m1); \
- __asm__ ("mulhd %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \
- (pl) = __m0 * __m1; \
- } while (0)
-#define SMUL_TIME 14 /* ??? */
-#define UDIV_TIME 120 /* ??? */
-#endif /* 64-bit PowerPC. */
-
-#if defined (__ibm032__) /* RT/ROMP */ && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("a %1,%5\n\tae %0,%3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%0" ((USItype) (ah)), \
- "r" ((USItype) (bh)), \
- "%1" ((USItype) (al)), \
- "r" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("s %1,%5\n\tse %0,%3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "r" ((USItype) (bh)), \
- "1" ((USItype) (al)), \
- "r" ((USItype) (bl)))
-#define umul_ppmm(ph, pl, m0, m1) \
- do { \
- USItype __m0 = (m0), __m1 = (m1); \
- __asm__ ( \
- "s r2,r2\n" \
-" mts r10,%2\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" cas %0,r2,r0\n" \
-" mfs r10,%1" \
- : "=r" ((USItype) (ph)), \
- "=r" ((USItype) (pl)) \
- : "%r" (__m0), \
- "r" (__m1) \
- : "r2"); \
- (ph) += ((((SItype) __m0 >> 31) & __m1) \
- + (((SItype) __m1 >> 31) & __m0)); \
- } while (0)
-#define UMUL_TIME 20
-#define UDIV_TIME 200
-#define count_leading_zeros(count, x) \
- do { \
- if ((x) >= 0x10000) \
- __asm__ ("clz %0,%1" \
- : "=r" ((USItype) (count)) \
- : "r" ((USItype) (x) >> 16)); \
- else \
- { \
- __asm__ ("clz %0,%1" \
- : "=r" ((USItype) (count)) \
- : "r" ((USItype) (x))); \
- (count) += 16; \
- } \
- } while (0)
-#endif
-
-#if defined(__sh__) && (!defined (__SHMEDIA__) || !__SHMEDIA__) && W_TYPE_SIZE == 32
-#ifndef __sh1__
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ( \
- "dmulu.l %2,%3\n\tsts%M1 macl,%1\n\tsts%M0 mach,%0" \
- : "=r<" ((USItype)(w1)), \
- "=r<" ((USItype)(w0)) \
- : "r" ((USItype)(u)), \
- "r" ((USItype)(v)) \
- : "macl", "mach")
-#define UMUL_TIME 5
-#endif
-
-/* This is the same algorithm as __udiv_qrnnd_c. */
-#define UDIV_NEEDS_NORMALIZATION 1
-
-#ifdef __FDPIC__
-/* FDPIC needs a special version of the asm fragment to extract the
- code address from the function descriptor. __udiv_qrnnd_16 is
- assumed to be local and not to use the GOT, so loading r12 is
- not needed. */
-#define udiv_qrnnd(q, r, n1, n0, d) \
- do { \
- extern UWtype __udiv_qrnnd_16 (UWtype, UWtype) \
- __attribute__ ((visibility ("hidden"))); \
- /* r0: rn r1: qn */ /* r0: n1 r4: n0 r5: d r6: d1 */ /* r2: __m */ \
- __asm__ ( \
- "mov%M4 %4,r5\n" \
-" swap.w %3,r4\n" \
-" swap.w r5,r6\n" \
-" mov.l @%5,r2\n" \
-" jsr @r2\n" \
-" shll16 r6\n" \
-" swap.w r4,r4\n" \
-" mov.l @%5,r2\n" \
-" jsr @r2\n" \
-" swap.w r1,%0\n" \
-" or r1,%0" \
- : "=r" (q), "=&z" (r) \
- : "1" (n1), "r" (n0), "rm" (d), "r" (&__udiv_qrnnd_16) \
- : "r1", "r2", "r4", "r5", "r6", "pr", "t"); \
- } while (0)
-#else
-#define udiv_qrnnd(q, r, n1, n0, d) \
- do { \
- extern UWtype __udiv_qrnnd_16 (UWtype, UWtype) \
- __attribute__ ((visibility ("hidden"))); \
- /* r0: rn r1: qn */ /* r0: n1 r4: n0 r5: d r6: d1 */ /* r2: __m */ \
- __asm__ ( \
- "mov%M4 %4,r5\n" \
-" swap.w %3,r4\n" \
-" swap.w r5,r6\n" \
-" jsr @%5\n" \
-" shll16 r6\n" \
-" swap.w r4,r4\n" \
-" jsr @%5\n" \
-" swap.w r1,%0\n" \
-" or r1,%0" \
- : "=r" (q), "=&z" (r) \
- : "1" (n1), "r" (n0), "rm" (d), "r" (&__udiv_qrnnd_16) \
- : "r1", "r2", "r4", "r5", "r6", "pr", "t"); \
- } while (0)
-#endif /* __FDPIC__ */
-
-#define UDIV_TIME 80
-
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("clrt;subc %5,%1; subc %4,%0" \
- : "=r" (sh), "=r" (sl) \
- : "0" (ah), "1" (al), "r" (bh), "r" (bl) : "t")
-
-#endif /* __sh__ */
-
-#if defined (__SH5__) && defined (__SHMEDIA__) && __SHMEDIA__ && W_TYPE_SIZE == 32
-#define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
-#define count_leading_zeros(count, x) \
- do \
- { \
- UDItype x_ = (USItype)(x); \
- SItype c_; \
- \
- __asm__ ("nsb %1, %0" : "=r" (c_) : "r" (x_)); \
- (count) = c_ - 31; \
- } \
- while (0)
-#define COUNT_LEADING_ZEROS_0 32
-#endif
-
-#if defined (__sparc__) && !defined (__arch64__) && !defined (__sparcv9) \
- && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("addcc %r4,%5,%1\n\taddx %r2,%3,%0" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%rJ" ((USItype) (ah)), \
- "rI" ((USItype) (bh)), \
- "%rJ" ((USItype) (al)), \
- "rI" ((USItype) (bl)) \
- __CLOBBER_CC)
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("subcc %r4,%5,%1\n\tsubx %r2,%3,%0" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "rJ" ((USItype) (ah)), \
- "rI" ((USItype) (bh)), \
- "rJ" ((USItype) (al)), \
- "rI" ((USItype) (bl)) \
- __CLOBBER_CC)
-#if defined (__sparc_v9__)
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- register USItype __g1 asm ("g1"); \
- __asm__ ("umul\t%2,%3,%1\n\t" \
- "srlx\t%1, 32, %0" \
- : "=r" ((USItype) (w1)), \
- "=r" (__g1) \
- : "r" ((USItype) (u)), \
- "r" ((USItype) (v))); \
- (w0) = __g1; \
- } while (0)
-#define udiv_qrnnd(__q, __r, __n1, __n0, __d) \
- __asm__ ("mov\t%2,%%y\n\t" \
- "udiv\t%3,%4,%0\n\t" \
- "umul\t%0,%4,%1\n\t" \
- "sub\t%3,%1,%1" \
- : "=&r" ((USItype) (__q)), \
- "=&r" ((USItype) (__r)) \
- : "r" ((USItype) (__n1)), \
- "r" ((USItype) (__n0)), \
- "r" ((USItype) (__d)))
-#else
-#if defined (__sparc_v8__)
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("umul %2,%3,%1;rd %%y,%0" \
- : "=r" ((USItype) (w1)), \
- "=r" ((USItype) (w0)) \
- : "r" ((USItype) (u)), \
- "r" ((USItype) (v)))
-#define udiv_qrnnd(__q, __r, __n1, __n0, __d) \
- __asm__ ("mov %2,%%y;nop;nop;nop;udiv %3,%4,%0;umul %0,%4,%1;sub %3,%1,%1"\
- : "=&r" ((USItype) (__q)), \
- "=&r" ((USItype) (__r)) \
- : "r" ((USItype) (__n1)), \
- "r" ((USItype) (__n0)), \
- "r" ((USItype) (__d)))
-#else
-#if defined (__sparclite__)
-/* This has hardware multiply but not divide. It also has two additional
- instructions scan (ffs from high bit) and divscc. */
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("umul %2,%3,%1;rd %%y,%0" \
- : "=r" ((USItype) (w1)), \
- "=r" ((USItype) (w0)) \
- : "r" ((USItype) (u)), \
- "r" ((USItype) (v)))
-#define udiv_qrnnd(q, r, n1, n0, d) \
- __asm__ ("! Inlined udiv_qrnnd\n" \
-" wr %%g0,%2,%%y ! Not a delayed write for sparclite\n" \
-" tst %%g0\n" \
-" divscc %3,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%0\n" \
-" rd %%y,%1\n" \
-" bl,a 1f\n" \
-" add %1,%4,%1\n" \
-"1: ! End of inline udiv_qrnnd" \
- : "=r" ((USItype) (q)), \
- "=r" ((USItype) (r)) \
- : "r" ((USItype) (n1)), \
- "r" ((USItype) (n0)), \
- "rI" ((USItype) (d)) \
- : "g1" __AND_CLOBBER_CC)
-#define UDIV_TIME 37
-#define count_leading_zeros(count, x) \
- do { \
- __asm__ ("scan %1,1,%0" \
- : "=r" ((USItype) (count)) \
- : "r" ((USItype) (x))); \
- } while (0)
-/* Early sparclites return 63 for an argument of 0, but they warn that future
- implementations might change this. Therefore, leave COUNT_LEADING_ZEROS_0
- undefined. */
-#else
-/* SPARC without integer multiplication and divide instructions.
- (i.e. at least Sun4/20,40,60,65,75,110,260,280,330,360,380,470,490) */
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("! Inlined umul_ppmm\n" \
-" wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr\n"\
-" sra %3,31,%%o5 ! Don't move this insn\n" \
-" and %2,%%o5,%%o5 ! Don't move this insn\n" \
-" andcc %%g0,0,%%g1 ! Don't move this insn\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,0,%%g1\n" \
-" add %%g1,%%o5,%0\n" \
-" rd %%y,%1" \
- : "=r" ((USItype) (w1)), \
- "=r" ((USItype) (w0)) \
- : "%rI" ((USItype) (u)), \
- "r" ((USItype) (v)) \
- : "g1", "o5" __AND_CLOBBER_CC)
-#define UMUL_TIME 39 /* 39 instructions */
-/* It's quite necessary to add this much assembler for the sparc.
- The default udiv_qrnnd (in C) is more than 10 times slower! */
-#define udiv_qrnnd(__q, __r, __n1, __n0, __d) \
- __asm__ ("! Inlined udiv_qrnnd\n" \
-" mov 32,%%g1\n" \
-" subcc %1,%2,%%g0\n" \
-"1: bcs 5f\n" \
-" addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb\n" \
-" sub %1,%2,%1 ! this kills msb of n\n" \
-" addx %1,%1,%1 ! so this can't give carry\n" \
-" subcc %%g1,1,%%g1\n" \
-"2: bne 1b\n" \
-" subcc %1,%2,%%g0\n" \
-" bcs 3f\n" \
-" addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb\n" \
-" b 3f\n" \
-" sub %1,%2,%1 ! this kills msb of n\n" \
-"4: sub %1,%2,%1\n" \
-"5: addxcc %1,%1,%1\n" \
-" bcc 2b\n" \
-" subcc %%g1,1,%%g1\n" \
-"! Got carry from n. Subtract next step to cancel this carry.\n" \
-" bne 4b\n" \
-" addcc %0,%0,%0 ! shift n1n0 and a 0-bit in lsb\n" \
-" sub %1,%2,%1\n" \
-"3: xnor %0,0,%0\n" \
-" ! End of inline udiv_qrnnd" \
- : "=&r" ((USItype) (__q)), \
- "=&r" ((USItype) (__r)) \
- : "r" ((USItype) (__d)), \
- "1" ((USItype) (__n1)), \
- "0" ((USItype) (__n0)) : "g1" __AND_CLOBBER_CC)
-#define UDIV_TIME (3+7*32) /* 7 instructions/iteration. 32 iterations. */
-#endif /* __sparclite__ */
-#endif /* __sparc_v8__ */
-#endif /* __sparc_v9__ */
-#endif /* sparc32 */
-
-#if ((defined (__sparc__) && defined (__arch64__)) || defined (__sparcv9)) \
- && W_TYPE_SIZE == 64
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- do { \
- UDItype __carry = 0; \
- __asm__ ("addcc\t%r5,%6,%1\n\t" \
- "add\t%r3,%4,%0\n\t" \
- "movcs\t%%xcc, 1, %2\n\t" \
- "add\t%0, %2, %0" \
- : "=r" ((UDItype)(sh)), \
- "=&r" ((UDItype)(sl)), \
- "+r" (__carry) \
- : "%rJ" ((UDItype)(ah)), \
- "rI" ((UDItype)(bh)), \
- "%rJ" ((UDItype)(al)), \
- "rI" ((UDItype)(bl)) \
- __CLOBBER_CC); \
- } while (0)
-
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- do { \
- UDItype __carry = 0; \
- __asm__ ("subcc\t%r5,%6,%1\n\t" \
- "sub\t%r3,%4,%0\n\t" \
- "movcs\t%%xcc, 1, %2\n\t" \
- "sub\t%0, %2, %0" \
- : "=r" ((UDItype)(sh)), \
- "=&r" ((UDItype)(sl)), \
- "+r" (__carry) \
- : "%rJ" ((UDItype)(ah)), \
- "rI" ((UDItype)(bh)), \
- "%rJ" ((UDItype)(al)), \
- "rI" ((UDItype)(bl)) \
- __CLOBBER_CC); \
- } while (0)
-
-#define umul_ppmm(wh, wl, u, v) \
- do { \
- UDItype tmp1, tmp2, tmp3, tmp4; \
- __asm__ __volatile__ ( \
- "srl %7,0,%3\n\t" \
- "mulx %3,%6,%1\n\t" \
- "srlx %6,32,%2\n\t" \
- "mulx %2,%3,%4\n\t" \
- "sllx %4,32,%5\n\t" \
- "srl %6,0,%3\n\t" \
- "sub %1,%5,%5\n\t" \
- "srlx %5,32,%5\n\t" \
- "addcc %4,%5,%4\n\t" \
- "srlx %7,32,%5\n\t" \
- "mulx %3,%5,%3\n\t" \
- "mulx %2,%5,%5\n\t" \
- "sethi %%hi(0x80000000),%2\n\t" \
- "addcc %4,%3,%4\n\t" \
- "srlx %4,32,%4\n\t" \
- "add %2,%2,%2\n\t" \
- "movcc %%xcc,%%g0,%2\n\t" \
- "addcc %5,%4,%5\n\t" \
- "sllx %3,32,%3\n\t" \
- "add %1,%3,%1\n\t" \
- "add %5,%2,%0" \
- : "=r" ((UDItype)(wh)), \
- "=&r" ((UDItype)(wl)), \
- "=&r" (tmp1), "=&r" (tmp2), "=&r" (tmp3), "=&r" (tmp4) \
- : "r" ((UDItype)(u)), \
- "r" ((UDItype)(v)) \
- __CLOBBER_CC); \
- } while (0)
-#define UMUL_TIME 96
-#define UDIV_TIME 230
-#endif /* sparc64 */
-
-#if defined (__vax__) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("addl2 %5,%1\n\tadwc %3,%0" \
- : "=g" ((USItype) (sh)), \
- "=&g" ((USItype) (sl)) \
- : "%0" ((USItype) (ah)), \
- "g" ((USItype) (bh)), \
- "%1" ((USItype) (al)), \
- "g" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("subl2 %5,%1\n\tsbwc %3,%0" \
- : "=g" ((USItype) (sh)), \
- "=&g" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "g" ((USItype) (bh)), \
- "1" ((USItype) (al)), \
- "g" ((USItype) (bl)))
-#define umul_ppmm(xh, xl, m0, m1) \
- do { \
- union { \
- UDItype __ll; \
- struct {USItype __l, __h;} __i; \
- } __xx; \
- USItype __m0 = (m0), __m1 = (m1); \
- __asm__ ("emul %1,%2,$0,%0" \
- : "=r" (__xx.__ll) \
- : "g" (__m0), \
- "g" (__m1)); \
- (xh) = __xx.__i.__h; \
- (xl) = __xx.__i.__l; \
- (xh) += ((((SItype) __m0 >> 31) & __m1) \
- + (((SItype) __m1 >> 31) & __m0)); \
- } while (0)
-#define sdiv_qrnnd(q, r, n1, n0, d) \
- do { \
- union {DItype __ll; \
- struct {SItype __l, __h;} __i; \
- } __xx; \
- __xx.__i.__h = n1; __xx.__i.__l = n0; \
- __asm__ ("ediv %3,%2,%0,%1" \
- : "=g" (q), "=g" (r) \
- : "g" (__xx.__ll), "g" (d)); \
- } while (0)
-#endif /* __vax__ */
-
-#ifdef _TMS320C6X
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- do \
- { \
- UDItype __ll; \
- __asm__ ("addu .l1 %1, %2, %0" \
- : "=a" (__ll) : "a" (al), "a" (bl)); \
- (sl) = (USItype)__ll; \
- (sh) = ((USItype)(__ll >> 32)) + (ah) + (bh); \
- } \
- while (0)
-
-#ifdef _TMS320C6400_PLUS
-#define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- UDItype __x = (UDItype) (USItype) (u) * (USItype) (v); \
- (w1) = (USItype) (__x >> 32); \
- (w0) = (USItype) (__x); \
- } while (0)
-#endif /* _TMS320C6400_PLUS */
-
-#define count_leading_zeros(count, x) ((count) = __builtin_clz (x))
-#ifdef _TMS320C6400
-#define count_trailing_zeros(count, x) ((count) = __builtin_ctz (x))
-#endif
-#define UMUL_TIME 4
-#define UDIV_TIME 40
-#endif /* _TMS320C6X */
-
-#if defined (__xtensa__) && W_TYPE_SIZE == 32
-/* This code is not Xtensa-configuration-specific, so rely on the compiler
- to expand builtin functions depending on what configuration features
- are available. This avoids library calls when the operation can be
- performed in-line. */
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- DWunion __w; \
- __w.ll = __builtin_umulsidi3 (u, v); \
- w1 = __w.s.high; \
- w0 = __w.s.low; \
- } while (0)
-#define __umulsidi3(u, v) __builtin_umulsidi3 (u, v)
-#define count_leading_zeros(COUNT, X) ((COUNT) = __builtin_clz (X))
-#define count_trailing_zeros(COUNT, X) ((COUNT) = __builtin_ctz (X))
-#endif /* __xtensa__ */
-
-#if defined xstormy16
-extern UHItype __stormy16_count_leading_zeros (UHItype);
-#define count_leading_zeros(count, x) \
- do \
- { \
- UHItype size; \
- \
- /* We assume that W_TYPE_SIZE is a multiple of 16... */ \
- for ((count) = 0, size = W_TYPE_SIZE; size; size -= 16) \
- { \
- UHItype c; \
- \
- c = __clzhi2 ((x) >> (size - 16)); \
- (count) += c; \
- if (c != 16) \
- break; \
- } \
- } \
- while (0)
-#define COUNT_LEADING_ZEROS_0 W_TYPE_SIZE
-#endif
-
-#if defined (__z8000__) && W_TYPE_SIZE == 16
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("add %H1,%H5\n\tadc %H0,%H3" \
- : "=r" ((unsigned int)(sh)), \
- "=&r" ((unsigned int)(sl)) \
- : "%0" ((unsigned int)(ah)), \
- "r" ((unsigned int)(bh)), \
- "%1" ((unsigned int)(al)), \
- "rQR" ((unsigned int)(bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("sub %H1,%H5\n\tsbc %H0,%H3" \
- : "=r" ((unsigned int)(sh)), \
- "=&r" ((unsigned int)(sl)) \
- : "0" ((unsigned int)(ah)), \
- "r" ((unsigned int)(bh)), \
- "1" ((unsigned int)(al)), \
- "rQR" ((unsigned int)(bl)))
-#define umul_ppmm(xh, xl, m0, m1) \
- do { \
- union {long int __ll; \
- struct {unsigned int __h, __l;} __i; \
- } __xx; \
- unsigned int __m0 = (m0), __m1 = (m1); \
- __asm__ ("mult %S0,%H3" \
- : "=r" (__xx.__i.__h), \
- "=r" (__xx.__i.__l) \
- : "%1" (__m0), \
- "rQR" (__m1)); \
- (xh) = __xx.__i.__h; (xl) = __xx.__i.__l; \
- (xh) += ((((signed int) __m0 >> 15) & __m1) \
- + (((signed int) __m1 >> 15) & __m0)); \
- } while (0)
-#endif /* __z8000__ */
-
-#endif /* __GNUC__ */
-
-/* If this machine has no inline assembler, use C macros. */
-
-#if !defined (add_ssaaaa)
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- do { \
- UWtype __x; \
- __x = (al) + (bl); \
- (sh) = (ah) + (bh) + (__x < (al)); \
- (sl) = __x; \
- } while (0)
-#endif
-
-#if !defined (sub_ddmmss)
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- do { \
- UWtype __x; \
- __x = (al) - (bl); \
- (sh) = (ah) - (bh) - (__x > (al)); \
- (sl) = __x; \
- } while (0)
-#endif
-
-/* If we lack umul_ppmm but have smul_ppmm, define umul_ppmm in terms of
- smul_ppmm. */
-#if !defined (umul_ppmm) && defined (smul_ppmm)
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- UWtype __w1; \
- UWtype __xm0 = (u), __xm1 = (v); \
- smul_ppmm (__w1, w0, __xm0, __xm1); \
- (w1) = __w1 + (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \
- + (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \
- } while (0)
-#endif
-
-/* If we still don't have umul_ppmm, define it using plain C. */
-#if !defined (umul_ppmm)
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- UWtype __x0, __x1, __x2, __x3; \
- UHWtype __ul, __vl, __uh, __vh; \
- \
- __ul = __ll_lowpart (u); \
- __uh = __ll_highpart (u); \
- __vl = __ll_lowpart (v); \
- __vh = __ll_highpart (v); \
- \
- __x0 = (UWtype) __ul * __vl; \
- __x1 = (UWtype) __ul * __vh; \
- __x2 = (UWtype) __uh * __vl; \
- __x3 = (UWtype) __uh * __vh; \
- \
- __x1 += __ll_highpart (__x0);/* this can't give carry */ \
- __x1 += __x2; /* but this indeed can */ \
- if (__x1 < __x2) /* did we get it? */ \
- __x3 += __ll_B; /* yes, add it in the proper pos. */ \
- \
- (w1) = __x3 + __ll_highpart (__x1); \
- (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0); \
- } while (0)
-#endif
-
-#if !defined (__umulsidi3)
-#define __umulsidi3(u, v) \
- ({DWunion __w; \
- umul_ppmm (__w.s.high, __w.s.low, u, v); \
- __w.ll; })
-#endif
-
-/* Define this unconditionally, so it can be used for debugging. */
-#define __udiv_qrnnd_c(q, r, n1, n0, d) \
- do { \
- UWtype __d1, __d0, __q1, __q0; \
- UWtype __r1, __r0, __m; \
- __d1 = __ll_highpart (d); \
- __d0 = __ll_lowpart (d); \
- \
- __r1 = (n1) % __d1; \
- __q1 = (n1) / __d1; \
- __m = (UWtype) __q1 * __d0; \
- __r1 = __r1 * __ll_B | __ll_highpart (n0); \
- if (__r1 < __m) \
- { \
- __q1--, __r1 += (d); \
- if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\
- if (__r1 < __m) \
- __q1--, __r1 += (d); \
- } \
- __r1 -= __m; \
- \
- __r0 = __r1 % __d1; \
- __q0 = __r1 / __d1; \
- __m = (UWtype) __q0 * __d0; \
- __r0 = __r0 * __ll_B | __ll_lowpart (n0); \
- if (__r0 < __m) \
- { \
- __q0--, __r0 += (d); \
- if (__r0 >= (d)) \
- if (__r0 < __m) \
- __q0--, __r0 += (d); \
- } \
- __r0 -= __m; \
- \
- (q) = (UWtype) __q1 * __ll_B | __q0; \
- (r) = __r0; \
- } while (0)
-
-/* If the processor has no udiv_qrnnd but sdiv_qrnnd, go through
- __udiv_w_sdiv (defined in libgcc or elsewhere). */
-#if !defined (udiv_qrnnd) && defined (sdiv_qrnnd)
-#define udiv_qrnnd(q, r, nh, nl, d) \
- do { \
- extern UWtype __udiv_w_sdiv (UWtype *, UWtype, UWtype, UWtype); \
- UWtype __r; \
- (q) = __udiv_w_sdiv (&__r, nh, nl, d); \
- (r) = __r; \
- } while (0)
-#endif
-
-/* If udiv_qrnnd was not defined for this processor, use __udiv_qrnnd_c. */
-#if !defined (udiv_qrnnd)
-#define UDIV_NEEDS_NORMALIZATION 1
-#define udiv_qrnnd __udiv_qrnnd_c
-#endif
-
-#if !defined (count_leading_zeros)
-#define count_leading_zeros(count, x) \
- do { \
- UWtype __xr = (x); \
- UWtype __a; \
- \
- if (W_TYPE_SIZE <= 32) \
- { \
- __a = __xr < ((UWtype)1<<2*__BITS4) \
- ? (__xr < ((UWtype)1<<__BITS4) ? 0 : __BITS4) \
- : (__xr < ((UWtype)1<<3*__BITS4) ? 2*__BITS4 : 3*__BITS4); \
- } \
- else \
- { \
- for (__a = W_TYPE_SIZE - 8; __a > 0; __a -= 8) \
- if (((__xr >> __a) & 0xff) != 0) \
- break; \
- } \
- \
- (count) = W_TYPE_SIZE - (__clz_tab[__xr >> __a] + __a); \
- } while (0)
-#define COUNT_LEADING_ZEROS_0 W_TYPE_SIZE
-#endif
-
-#if !defined (count_trailing_zeros)
-/* Define count_trailing_zeros using count_leading_zeros. The latter might be
- defined in asm, but if it is not, the C version above is good enough. */
-#define count_trailing_zeros(count, x) \
- do { \
- UWtype __ctz_x = (x); \
- UWtype __ctz_c; \
- count_leading_zeros (__ctz_c, __ctz_x & -__ctz_x); \
- (count) = W_TYPE_SIZE - 1 - __ctz_c; \
- } while (0)
-#endif
-
-#ifndef UDIV_NEEDS_NORMALIZATION
-#define UDIV_NEEDS_NORMALIZATION 0
-#endif
diff --git a/stdlib/lrand48.c b/stdlib/lrand48.c
deleted file mode 100644
index 645977bb96..0000000000
--- a/stdlib/lrand48.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-
-long int
-lrand48 (void)
-{
- long int result;
-
- (void) __nrand48_r (__libc_drand48_data.__x, &__libc_drand48_data, &result);
-
- return result;
-}
diff --git a/stdlib/lrand48_r.c b/stdlib/lrand48_r.c
deleted file mode 100644
index 445efe09b6..0000000000
--- a/stdlib/lrand48_r.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.org>, August 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/>. */
-
-#include <stdlib.h>
-
-int
-lrand48_r (struct drand48_data *buffer, long int *result)
-{
- /* Be generous for the arguments, detect some errors. */
- if (buffer == NULL)
- return -1;
-
- return __nrand48_r (buffer->__x, buffer, result);
-}
-libc_hidden_def (lrand48_r)
diff --git a/stdlib/lshift.c b/stdlib/lshift.c
deleted file mode 100644
index c8228f9aa6..0000000000
--- a/stdlib/lshift.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* mpn_lshift -- Shift left low level.
-
-Copyright (C) 1991-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-
-/* Shift U (pointed to by UP and USIZE digits long) CNT bits to the left
- and store the USIZE least significant digits of the result at WP.
- Return the bits shifted out from the most significant digit.
-
- Argument constraints:
- 1. 0 < CNT < BITS_PER_MP_LIMB
- 2. If the result is to be written over the input, WP must be >= UP.
-*/
-
-mp_limb_t
-mpn_lshift (register mp_ptr wp,
- register mp_srcptr up, mp_size_t usize,
- register unsigned int cnt)
-{
- register mp_limb_t high_limb, low_limb;
- register unsigned sh_1, sh_2;
- register mp_size_t i;
- mp_limb_t retval;
-
-#ifdef DEBUG
- if (usize == 0 || cnt == 0)
- abort ();
-#endif
-
- sh_1 = cnt;
-#if 0
- if (sh_1 == 0)
- {
- if (wp != up)
- {
- /* Copy from high end to low end, to allow specified input/output
- overlapping. */
- for (i = usize - 1; i >= 0; i--)
- wp[i] = up[i];
- }
- return 0;
- }
-#endif
-
- wp += 1;
- sh_2 = BITS_PER_MP_LIMB - sh_1;
- i = usize - 1;
- low_limb = up[i];
- retval = low_limb >> sh_2;
- high_limb = low_limb;
- while (--i >= 0)
- {
- low_limb = up[i];
- wp[i] = (high_limb << sh_1) | (low_limb >> sh_2);
- high_limb = low_limb;
- }
- wp[i] = high_limb << sh_1;
-
- return retval;
-}
diff --git a/stdlib/makecontext.c b/stdlib/makecontext.c
deleted file mode 100644
index b699bd8a56..0000000000
--- a/stdlib/makecontext.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (C) 1998-2017 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 <ucontext.h>
-
-void
-makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
-{
- __set_errno (ENOSYS);
-}
-
-
-stub_warning (makecontext)
diff --git a/stdlib/mblen.c b/stdlib/mblen.c
deleted file mode 100644
index b98bb915e4..0000000000
--- a/stdlib/mblen.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-#include <string.h>
-#include <wchar.h>
-#include <gconv.h>
-#include <wcsmbs/wcsmbsload.h>
-
-
-/* Internal state. */
-static mbstate_t state;
-
-/* Return the length of the multibyte character (if there is one)
- at S which is no longer than N characters.
- The ISO C standard says that the `mblen' function must not change
- the state of the `mbtowc' function. */
-int
-mblen (const char *s, size_t n)
-{
- int result;
-
- /* If S is NULL the function has to return null or not null
- depending on the encoding having a state depending encoding or
- not. */
- if (s == NULL)
- {
- const struct gconv_fcts *fcts;
-
- /* Get the conversion functions. */
- fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE));
-
- /* Reset the state. */
- memset (&state, '\0', sizeof state);
-
- result = fcts->towc->__stateful;
- }
- else if (*s == '\0')
- /* According to the ISO C 89 standard this is the expected behaviour. */
- result = 0;
- else
- {
- memset (&state, '\0', sizeof state);
-
- result = __mbrtowc (NULL, s, n, &state);
-
- /* The `mbrtowc' functions tell us more than we need. Fold the -1
- and -2 result into -1. */
- if (result < 0)
- result = -1;
- }
-
- return result;
-}
diff --git a/stdlib/mbstowcs.c b/stdlib/mbstowcs.c
deleted file mode 100644
index 8016208e76..0000000000
--- a/stdlib/mbstowcs.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-#include <string.h>
-#include <wchar.h>
-
-
-/* Convert the string of multibyte characters in S to `wchar_t's in
- PWCS, writing no more than N. Return the number written,
- or (size_t) -1 if an invalid multibyte character is encountered.
-
- Attention: this function should NEVER be intentionally used.
- The interface is completely stupid. The state is shared between
- all conversion functions. You should use instead the restartable
- version `mbsrtowcs'. */
-size_t
-mbstowcs (wchar_t *pwcs, const char *s, size_t n)
-{
- mbstate_t state;
-
- memset (&state, '\0', sizeof state);
- /* Return how many we wrote (or maybe an error). */
- return __mbsrtowcs (pwcs, &s, n, &state);
-}
diff --git a/stdlib/mbtowc.c b/stdlib/mbtowc.c
deleted file mode 100644
index c391726689..0000000000
--- a/stdlib/mbtowc.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-#include <string.h>
-#include <wchar.h>
-#include <gconv.h>
-#include <wcsmbs/wcsmbsload.h>
-
-
-/* Convert the multibyte character at S, which is no longer
- than N characters, to its `wchar_t' representation, placing
- this n *PWC and returning its length.
-
- Attention: this function should NEVER be intentionally used.
- The interface is completely stupid. The state is shared between
- all conversion functions. You should use instead the restartable
- version `mbrtowc'. */
-int
-mbtowc (wchar_t *pwc, const char *s, size_t n)
-{
- int result;
- static mbstate_t state;
-
- /* If S is NULL the function has to return null or not null
- depending on the encoding having a state depending encoding or
- not. */
- if (s == NULL)
- {
- const struct gconv_fcts *fcts;
-
- /* Get the conversion functions. */
- fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE));
-
- /* This is an extension in the Unix standard which does not directly
- violate ISO C. */
- memset (&state, '\0', sizeof state);
-
- result = fcts->towc->__stateful;
- }
- else if (*s == '\0')
- {
- if (pwc != NULL)
- *pwc = L'\0';
- result = 0;
- }
- else
- {
- result = __mbrtowc (pwc, s, n, &state);
-
- /* The `mbrtowc' functions tell us more than we need. Fold the -1
- and -2 result into -1. */
- if (result < 0)
- result = -1;
- }
-
- return result;
-}
diff --git a/stdlib/mod_1.c b/stdlib/mod_1.c
deleted file mode 100644
index 33ca193ce2..0000000000
--- a/stdlib/mod_1.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/* mpn_mod_1(dividend_ptr, dividend_size, divisor_limb) --
- Divide (DIVIDEND_PTR,,DIVIDEND_SIZE) by DIVISOR_LIMB.
- Return the single-limb remainder.
- There are no constraints on the value of the divisor.
-
-Copyright (C) 1991-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef UMUL_TIME
-#define UMUL_TIME 1
-#endif
-
-#ifndef UDIV_TIME
-#define UDIV_TIME UMUL_TIME
-#endif
-
-/* FIXME: We should be using invert_limb (or invert_normalized_limb)
- here (not udiv_qrnnd). */
-
-mp_limb_t
-mpn_mod_1 (mp_srcptr dividend_ptr, mp_size_t dividend_size,
- mp_limb_t divisor_limb)
-{
- mp_size_t i;
- mp_limb_t n1, n0, r;
- mp_limb_t dummy __attribute__ ((unused));
-
- /* Botch: Should this be handled at all? Rely on callers? */
- if (dividend_size == 0)
- return 0;
-
- /* If multiplication is much faster than division, and the
- dividend is large, pre-invert the divisor, and use
- only multiplications in the inner loop. */
-
- /* This test should be read:
- Does it ever help to use udiv_qrnnd_preinv?
- && Does what we save compensate for the inversion overhead? */
- if (UDIV_TIME > (2 * UMUL_TIME + 6)
- && (UDIV_TIME - (2 * UMUL_TIME + 6)) * dividend_size > UDIV_TIME)
- {
- int normalization_steps;
-
- count_leading_zeros (normalization_steps, divisor_limb);
- if (normalization_steps != 0)
- {
- mp_limb_t divisor_limb_inverted;
-
- divisor_limb <<= normalization_steps;
-
- /* Compute (2**2N - 2**N * DIVISOR_LIMB) / DIVISOR_LIMB. The
- result is a (N+1)-bit approximation to 1/DIVISOR_LIMB, with the
- most significant bit (with weight 2**N) implicit. */
-
- /* Special case for DIVISOR_LIMB == 100...000. */
- if (divisor_limb << 1 == 0)
- divisor_limb_inverted = ~(mp_limb_t) 0;
- else
- udiv_qrnnd (divisor_limb_inverted, dummy,
- -divisor_limb, 0, divisor_limb);
-
- n1 = dividend_ptr[dividend_size - 1];
- r = n1 >> (BITS_PER_MP_LIMB - normalization_steps);
-
- /* Possible optimization:
- if (r == 0
- && divisor_limb > ((n1 << normalization_steps)
- | (dividend_ptr[dividend_size - 2] >> ...)))
- ...one division less... */
-
- for (i = dividend_size - 2; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd_preinv (dummy, r, r,
- ((n1 << normalization_steps)
- | (n0 >> (BITS_PER_MP_LIMB - normalization_steps))),
- divisor_limb, divisor_limb_inverted);
- n1 = n0;
- }
- udiv_qrnnd_preinv (dummy, r, r,
- n1 << normalization_steps,
- divisor_limb, divisor_limb_inverted);
- return r >> normalization_steps;
- }
- else
- {
- mp_limb_t divisor_limb_inverted;
-
- /* Compute (2**2N - 2**N * DIVISOR_LIMB) / DIVISOR_LIMB. The
- result is a (N+1)-bit approximation to 1/DIVISOR_LIMB, with the
- most significant bit (with weight 2**N) implicit. */
-
- /* Special case for DIVISOR_LIMB == 100...000. */
- if (divisor_limb << 1 == 0)
- divisor_limb_inverted = ~(mp_limb_t) 0;
- else
- udiv_qrnnd (divisor_limb_inverted, dummy,
- -divisor_limb, 0, divisor_limb);
-
- i = dividend_size - 1;
- r = dividend_ptr[i];
-
- if (r >= divisor_limb)
- r = 0;
- else
- i--;
-
- for (; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd_preinv (dummy, r, r,
- n0, divisor_limb, divisor_limb_inverted);
- }
- return r;
- }
- }
- else
- {
- if (UDIV_NEEDS_NORMALIZATION)
- {
- int normalization_steps;
-
- count_leading_zeros (normalization_steps, divisor_limb);
- if (normalization_steps != 0)
- {
- divisor_limb <<= normalization_steps;
-
- n1 = dividend_ptr[dividend_size - 1];
- r = n1 >> (BITS_PER_MP_LIMB - normalization_steps);
-
- /* Possible optimization:
- if (r == 0
- && divisor_limb > ((n1 << normalization_steps)
- | (dividend_ptr[dividend_size - 2] >> ...)))
- ...one division less... */
-
- for (i = dividend_size - 2; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd (dummy, r, r,
- ((n1 << normalization_steps)
- | (n0 >> (BITS_PER_MP_LIMB - normalization_steps))),
- divisor_limb);
- n1 = n0;
- }
- udiv_qrnnd (dummy, r, r,
- n1 << normalization_steps,
- divisor_limb);
- return r >> normalization_steps;
- }
- }
- /* No normalization needed, either because udiv_qrnnd doesn't require
- it, or because DIVISOR_LIMB is already normalized. */
-
- i = dividend_size - 1;
- r = dividend_ptr[i];
-
- if (r >= divisor_limb)
- r = 0;
- else
- i--;
-
- for (; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd (dummy, r, r, n0, divisor_limb);
- }
- return r;
- }
-}
diff --git a/stdlib/monetary.h b/stdlib/monetary.h
deleted file mode 100644
index dcfbfc5262..0000000000
--- a/stdlib/monetary.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Header file for monetary value formatting functions.
- Copyright (C) 1996-2017 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 _MONETARY_H
-#define _MONETARY_H 1
-
-#include <features.h>
-
-/* Get needed types. */
-#define __need_size_t
-#include <stddef.h>
-#include <bits/types.h>
-
-#ifndef __ssize_t_defined
-typedef __ssize_t ssize_t;
-# define __ssize_t_defined
-#endif
-
-
-__BEGIN_DECLS
-
-/* Formatting a monetary value according to the current locale. */
-extern ssize_t strfmon (char *__restrict __s, size_t __maxsize,
- const char *__restrict __format, ...)
- __THROW __attribute_format_strfmon__ (3, 4);
-
-#ifdef __USE_XOPEN2K8
-# include <xlocale.h>
-
-/* Formatting a monetary value according to the given locale. */
-extern ssize_t strfmon_l (char *__restrict __s, size_t __maxsize,
- __locale_t __loc,
- const char *__restrict __format, ...)
- __THROW __attribute_format_strfmon__ (4, 5);
-#endif
-
-#ifdef __LDBL_COMPAT
-# include <bits/monetary-ldbl.h>
-#endif
-
-__END_DECLS
-
-#endif /* monetary.h */
diff --git a/stdlib/mp_clz_tab.c b/stdlib/mp_clz_tab.c
deleted file mode 100644
index 7759ce3abb..0000000000
--- a/stdlib/mp_clz_tab.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* __clz_tab -- support for longlong.h
- Copyright (C) 1991-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library. Its master source is NOT part of
- the C library, however. The master source lives in the GNU MP 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 0
-#include <gmp.h>
-#include "gmp-impl.h"
-#endif
-
-const
-unsigned char __clz_tab[] =
-{
- 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
- 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
- 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
- 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
- 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
- 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
- 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
- 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-};
diff --git a/stdlib/mpn2dbl.c b/stdlib/mpn2dbl.c
deleted file mode 100644
index 0196e50cad..0000000000
--- a/stdlib/mpn2dbl.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 1995-2017 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 <gmp.h>
-#include "gmp-impl.h"
-#include <float.h>
-
-/* Convert a multi-precision integer of the needed number of bits and an
- integral power of two to a `double'. */
-
-double
-__mpn_construct_double (mp_srcptr frac_ptr, int expt, int negative)
-{
-#error "__mpn_construct_double not implemented for this floating point format"
-}
diff --git a/stdlib/mpn2flt.c b/stdlib/mpn2flt.c
deleted file mode 100644
index 62a208d6c7..0000000000
--- a/stdlib/mpn2flt.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 1995-2017 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 "gmp.h"
-#include "gmp-impl.h"
-#include <float.h>
-
-/* Convert a multi-precision integer of the needed number of bits and an
- integral power of two to a `float'. */
-
-float
-__mpn_construct_float (mp_srcptr frac_ptr, int expt, int negative)
-{
-#error "__mpn_construct_float not implemented for this floating point format"
-}
diff --git a/stdlib/mpn2ldbl.c b/stdlib/mpn2ldbl.c
deleted file mode 100644
index 450f9381cc..0000000000
--- a/stdlib/mpn2ldbl.c
+++ /dev/null
@@ -1 +0,0 @@
-/* Empty. Not needed unless ldbl support is in. */
diff --git a/stdlib/mrand48.c b/stdlib/mrand48.c
deleted file mode 100644
index cbc8aaf786..0000000000
--- a/stdlib/mrand48.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-
-long int
-mrand48 (void)
-{
- long int result;
-
- (void) __jrand48_r (__libc_drand48_data.__x, &__libc_drand48_data, &result);
-
- return result;
-}
diff --git a/stdlib/mrand48_r.c b/stdlib/mrand48_r.c
deleted file mode 100644
index a674b5b26d..0000000000
--- a/stdlib/mrand48_r.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-int
-mrand48_r (struct drand48_data *buffer, long int *result)
-{
- /* Be generous for the arguments, detect some errors. */
- if (buffer == NULL)
- return -1;
-
- return __jrand48_r (buffer->__x, buffer, result);
-}
diff --git a/stdlib/msort.c b/stdlib/msort.c
deleted file mode 100644
index c00f389601..0000000000
--- a/stdlib/msort.c
+++ /dev/null
@@ -1,310 +0,0 @@
-/* An alternative to qsort, with an identical interface.
- This file is part of the GNU C Library.
- Copyright (C) 1992-2017 Free Software Foundation, Inc.
- Written by Mike Haertel, September 1988.
-
- 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 <alloca.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <memcopy.h>
-#include <errno.h>
-#include <atomic.h>
-
-struct msort_param
-{
- size_t s;
- size_t var;
- __compar_d_fn_t cmp;
- void *arg;
- char *t;
-};
-static void msort_with_tmp (const struct msort_param *p, void *b, size_t n);
-
-static void
-msort_with_tmp (const struct msort_param *p, void *b, size_t n)
-{
- char *b1, *b2;
- size_t n1, n2;
-
- if (n <= 1)
- return;
-
- n1 = n / 2;
- n2 = n - n1;
- b1 = b;
- b2 = (char *) b + (n1 * p->s);
-
- msort_with_tmp (p, b1, n1);
- msort_with_tmp (p, b2, n2);
-
- char *tmp = p->t;
- const size_t s = p->s;
- __compar_d_fn_t cmp = p->cmp;
- void *arg = p->arg;
- switch (p->var)
- {
- case 0:
- while (n1 > 0 && n2 > 0)
- {
- if ((*cmp) (b1, b2, arg) <= 0)
- {
- *(uint32_t *) tmp = *(uint32_t *) b1;
- b1 += sizeof (uint32_t);
- --n1;
- }
- else
- {
- *(uint32_t *) tmp = *(uint32_t *) b2;
- b2 += sizeof (uint32_t);
- --n2;
- }
- tmp += sizeof (uint32_t);
- }
- break;
- case 1:
- while (n1 > 0 && n2 > 0)
- {
- if ((*cmp) (b1, b2, arg) <= 0)
- {
- *(uint64_t *) tmp = *(uint64_t *) b1;
- b1 += sizeof (uint64_t);
- --n1;
- }
- else
- {
- *(uint64_t *) tmp = *(uint64_t *) b2;
- b2 += sizeof (uint64_t);
- --n2;
- }
- tmp += sizeof (uint64_t);
- }
- break;
- case 2:
- while (n1 > 0 && n2 > 0)
- {
- unsigned long *tmpl = (unsigned long *) tmp;
- unsigned long *bl;
-
- tmp += s;
- if ((*cmp) (b1, b2, arg) <= 0)
- {
- bl = (unsigned long *) b1;
- b1 += s;
- --n1;
- }
- else
- {
- bl = (unsigned long *) b2;
- b2 += s;
- --n2;
- }
- while (tmpl < (unsigned long *) tmp)
- *tmpl++ = *bl++;
- }
- break;
- case 3:
- while (n1 > 0 && n2 > 0)
- {
- if ((*cmp) (*(const void **) b1, *(const void **) b2, arg) <= 0)
- {
- *(void **) tmp = *(void **) b1;
- b1 += sizeof (void *);
- --n1;
- }
- else
- {
- *(void **) tmp = *(void **) b2;
- b2 += sizeof (void *);
- --n2;
- }
- tmp += sizeof (void *);
- }
- break;
- default:
- while (n1 > 0 && n2 > 0)
- {
- if ((*cmp) (b1, b2, arg) <= 0)
- {
- tmp = (char *) __mempcpy (tmp, b1, s);
- b1 += s;
- --n1;
- }
- else
- {
- tmp = (char *) __mempcpy (tmp, b2, s);
- b2 += s;
- --n2;
- }
- }
- break;
- }
-
- if (n1 > 0)
- memcpy (tmp, b1, n1 * s);
- memcpy (b, p->t, (n - n2) * s);
-}
-
-
-void
-__qsort_r (void *b, size_t n, size_t s, __compar_d_fn_t cmp, void *arg)
-{
- size_t size = n * s;
- char *tmp = NULL;
- struct msort_param p;
-
- /* For large object sizes use indirect sorting. */
- if (s > 32)
- size = 2 * n * sizeof (void *) + s;
-
- if (size < 1024)
- /* The temporary array is small, so put it on the stack. */
- p.t = __alloca (size);
- else
- {
- /* We should avoid allocating too much memory since this might
- have to be backed up by swap space. */
- static long int phys_pages;
- static int pagesize;
-
- if (pagesize == 0)
- {
- phys_pages = __sysconf (_SC_PHYS_PAGES);
-
- if (phys_pages == -1)
- /* Error while determining the memory size. So let's
- assume there is enough memory. Otherwise the
- implementer should provide a complete implementation of
- the `sysconf' function. */
- phys_pages = (long int) (~0ul >> 1);
-
- /* The following determines that we will never use more than
- a quarter of the physical memory. */
- phys_pages /= 4;
-
- /* Make sure phys_pages is written to memory. */
- atomic_write_barrier ();
-
- pagesize = __sysconf (_SC_PAGESIZE);
- }
-
- /* Just a comment here. We cannot compute
- phys_pages * pagesize
- and compare the needed amount of memory against this value.
- The problem is that some systems might have more physical
- memory then can be represented with a `size_t' value (when
- measured in bytes. */
-
- /* If the memory requirements are too high don't allocate memory. */
- if (size / pagesize > (size_t) phys_pages)
- {
- _quicksort (b, n, s, cmp, arg);
- return;
- }
-
- /* It's somewhat large, so malloc it. */
- int save = errno;
- tmp = malloc (size);
- __set_errno (save);
- if (tmp == NULL)
- {
- /* Couldn't get space, so use the slower algorithm
- that doesn't need a temporary array. */
- _quicksort (b, n, s, cmp, arg);
- return;
- }
- p.t = tmp;
- }
-
- p.s = s;
- p.var = 4;
- p.cmp = cmp;
- p.arg = arg;
-
- if (s > 32)
- {
- /* Indirect sorting. */
- char *ip = (char *) b;
- void **tp = (void **) (p.t + n * sizeof (void *));
- void **t = tp;
- void *tmp_storage = (void *) (tp + n);
-
- while ((void *) t < tmp_storage)
- {
- *t++ = ip;
- ip += s;
- }
- p.s = sizeof (void *);
- p.var = 3;
- msort_with_tmp (&p, p.t + n * sizeof (void *), n);
-
- /* tp[0] .. tp[n - 1] is now sorted, copy around entries of
- the original array. Knuth vol. 3 (2nd ed.) exercise 5.2-10. */
- char *kp;
- size_t i;
- for (i = 0, ip = (char *) b; i < n; i++, ip += s)
- if ((kp = tp[i]) != ip)
- {
- size_t j = i;
- char *jp = ip;
- memcpy (tmp_storage, ip, s);
-
- do
- {
- size_t k = (kp - (char *) b) / s;
- tp[j] = jp;
- memcpy (jp, kp, s);
- j = k;
- jp = kp;
- kp = tp[k];
- }
- while (kp != ip);
-
- tp[j] = jp;
- memcpy (jp, tmp_storage, s);
- }
- }
- else
- {
- if ((s & (sizeof (uint32_t) - 1)) == 0
- && ((char *) b - (char *) 0) % __alignof__ (uint32_t) == 0)
- {
- if (s == sizeof (uint32_t))
- p.var = 0;
- else if (s == sizeof (uint64_t)
- && ((char *) b - (char *) 0) % __alignof__ (uint64_t) == 0)
- p.var = 1;
- else if ((s & (sizeof (unsigned long) - 1)) == 0
- && ((char *) b - (char *) 0)
- % __alignof__ (unsigned long) == 0)
- p.var = 2;
- }
- msort_with_tmp (&p, b, n);
- }
- free (tmp);
-}
-libc_hidden_def (__qsort_r)
-weak_alias (__qsort_r, qsort_r)
-
-
-void
-qsort (void *b, size_t n, size_t s, __compar_fn_t cmp)
-{
- return __qsort_r (b, n, s, (__compar_d_fn_t) cmp, NULL);
-}
-libc_hidden_def (qsort)
diff --git a/stdlib/mul.c b/stdlib/mul.c
deleted file mode 100644
index 88ba1c5176..0000000000
--- a/stdlib/mul.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* mpn_mul -- Multiply two natural numbers.
-
-Copyright (C) 1991-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-
-/* Multiply the natural numbers u (pointed to by UP, with USIZE limbs)
- and v (pointed to by VP, with VSIZE limbs), and store the result at
- PRODP. USIZE + VSIZE limbs are always stored, but if the input
- operands are normalized. Return the most significant limb of the
- result.
-
- NOTE: The space pointed to by PRODP is overwritten before finished
- with U and V, so overlap is an error.
-
- Argument constraints:
- 1. USIZE >= VSIZE.
- 2. PRODP != UP and PRODP != VP, i.e. the destination
- must be distinct from the multiplier and the multiplicand. */
-
-/* If KARATSUBA_THRESHOLD is not already defined, define it to a
- value which is good on most machines. */
-#ifndef KARATSUBA_THRESHOLD
-#define KARATSUBA_THRESHOLD 32
-#endif
-
-mp_limb_t
-mpn_mul (mp_ptr prodp,
- mp_srcptr up, mp_size_t usize,
- mp_srcptr vp, mp_size_t vsize)
-{
- mp_ptr prod_endp = prodp + usize + vsize - 1;
- mp_limb_t cy;
- mp_ptr tspace;
- TMP_DECL (marker);
-
- if (vsize < KARATSUBA_THRESHOLD)
- {
- /* Handle simple cases with traditional multiplication.
-
- This is the most critical code of the entire function. All
- multiplies rely on this, both small and huge. Small ones arrive
- here immediately. Huge ones arrive here as this is the base case
- for Karatsuba's recursive algorithm below. */
- mp_size_t i;
- mp_limb_t cy_limb;
- mp_limb_t v_limb;
-
- if (vsize == 0)
- return 0;
-
- /* Multiply by the first limb in V separately, as the result can be
- stored (not added) to PROD. We also avoid a loop for zeroing. */
- v_limb = vp[0];
- if (v_limb <= 1)
- {
- if (v_limb == 1)
- MPN_COPY (prodp, up, usize);
- else
- MPN_ZERO (prodp, usize);
- cy_limb = 0;
- }
- else
- cy_limb = mpn_mul_1 (prodp, up, usize, v_limb);
-
- prodp[usize] = cy_limb;
- prodp++;
-
- /* For each iteration in the outer loop, multiply one limb from
- U with one limb from V, and add it to PROD. */
- for (i = 1; i < vsize; i++)
- {
- v_limb = vp[i];
- if (v_limb <= 1)
- {
- cy_limb = 0;
- if (v_limb == 1)
- cy_limb = mpn_add_n (prodp, prodp, up, usize);
- }
- else
- cy_limb = mpn_addmul_1 (prodp, up, usize, v_limb);
-
- prodp[usize] = cy_limb;
- prodp++;
- }
- return cy_limb;
- }
-
- TMP_MARK (marker);
-
- tspace = (mp_ptr) TMP_ALLOC (2 * vsize * BYTES_PER_MP_LIMB);
- MPN_MUL_N_RECURSE (prodp, up, vp, vsize, tspace);
-
- prodp += vsize;
- up += vsize;
- usize -= vsize;
- if (usize >= vsize)
- {
- mp_ptr tp = (mp_ptr) TMP_ALLOC (2 * vsize * BYTES_PER_MP_LIMB);
- do
- {
- MPN_MUL_N_RECURSE (tp, up, vp, vsize, tspace);
- cy = mpn_add_n (prodp, prodp, tp, vsize);
- mpn_add_1 (prodp + vsize, tp + vsize, vsize, cy);
- prodp += vsize;
- up += vsize;
- usize -= vsize;
- }
- while (usize >= vsize);
- }
-
- /* True: usize < vsize. */
-
- /* Make life simple: Recurse. */
-
- if (usize != 0)
- {
- mpn_mul (tspace, vp, vsize, up, usize);
- cy = mpn_add_n (prodp, prodp, tspace, vsize);
- mpn_add_1 (prodp + vsize, tspace + vsize, usize, cy);
- }
-
- TMP_FREE (marker);
- return *prod_endp;
-}
diff --git a/stdlib/mul_1.c b/stdlib/mul_1.c
deleted file mode 100644
index 2c590d2741..0000000000
--- a/stdlib/mul_1.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* mpn_mul_1 -- Multiply a limb vector with a single limb and
- store the product in a second limb vector.
-
-Copyright (C) 1991-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-#include "longlong.h"
-
-mp_limb_t
-mpn_mul_1 (register mp_ptr res_ptr, register mp_srcptr s1_ptr,
- mp_size_t s1_size, register mp_limb_t s2_limb)
-{
- register mp_limb_t cy_limb;
- register mp_size_t j;
- register mp_limb_t prod_high, prod_low;
-
- /* The loop counter and index J goes from -S1_SIZE to -1. This way
- the loop becomes faster. */
- j = -s1_size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- s1_ptr -= j;
- res_ptr -= j;
-
- cy_limb = 0;
- do
- {
- umul_ppmm (prod_high, prod_low, s1_ptr[j], s2_limb);
-
- prod_low += cy_limb;
- cy_limb = (prod_low < cy_limb) + prod_high;
-
- res_ptr[j] = prod_low;
- }
- while (++j != 0);
-
- return cy_limb;
-}
diff --git a/stdlib/mul_n.c b/stdlib/mul_n.c
deleted file mode 100644
index cf243242cc..0000000000
--- a/stdlib/mul_n.c
+++ /dev/null
@@ -1,360 +0,0 @@
-/* mpn_mul_n -- Multiply two natural numbers of length n.
-
-Copyright (C) 1991-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-
-/* Multiply the natural numbers u (pointed to by UP) and v (pointed to by VP),
- both with SIZE limbs, and store the result at PRODP. 2 * SIZE limbs are
- always stored. Return the most significant limb.
-
- Argument constraints:
- 1. PRODP != UP and PRODP != VP, i.e. the destination
- must be distinct from the multiplier and the multiplicand. */
-
-/* If KARATSUBA_THRESHOLD is not already defined, define it to a
- value which is good on most machines. */
-#ifndef KARATSUBA_THRESHOLD
-#define KARATSUBA_THRESHOLD 32
-#endif
-
-/* The code can't handle KARATSUBA_THRESHOLD smaller than 2. */
-#if KARATSUBA_THRESHOLD < 2
-#undef KARATSUBA_THRESHOLD
-#define KARATSUBA_THRESHOLD 2
-#endif
-
-/* Handle simple cases with traditional multiplication.
-
- This is the most critical code of multiplication. All multiplies rely
- on this, both small and huge. Small ones arrive here immediately. Huge
- ones arrive here as this is the base case for Karatsuba's recursive
- algorithm below. */
-
-void
-impn_mul_n_basecase (mp_ptr prodp, mp_srcptr up, mp_srcptr vp, mp_size_t size)
-{
- mp_size_t i;
- mp_limb_t cy_limb;
- mp_limb_t v_limb;
-
- /* Multiply by the first limb in V separately, as the result can be
- stored (not added) to PROD. We also avoid a loop for zeroing. */
- v_limb = vp[0];
- if (v_limb <= 1)
- {
- if (v_limb == 1)
- MPN_COPY (prodp, up, size);
- else
- MPN_ZERO (prodp, size);
- cy_limb = 0;
- }
- else
- cy_limb = mpn_mul_1 (prodp, up, size, v_limb);
-
- prodp[size] = cy_limb;
- prodp++;
-
- /* For each iteration in the outer loop, multiply one limb from
- U with one limb from V, and add it to PROD. */
- for (i = 1; i < size; i++)
- {
- v_limb = vp[i];
- if (v_limb <= 1)
- {
- cy_limb = 0;
- if (v_limb == 1)
- cy_limb = mpn_add_n (prodp, prodp, up, size);
- }
- else
- cy_limb = mpn_addmul_1 (prodp, up, size, v_limb);
-
- prodp[size] = cy_limb;
- prodp++;
- }
-}
-
-void
-impn_mul_n (mp_ptr prodp,
- mp_srcptr up, mp_srcptr vp, mp_size_t size, mp_ptr tspace)
-{
- if ((size & 1) != 0)
- {
- /* The size is odd, the code code below doesn't handle that.
- Multiply the least significant (size - 1) limbs with a recursive
- call, and handle the most significant limb of S1 and S2
- separately. */
- /* A slightly faster way to do this would be to make the Karatsuba
- code below behave as if the size were even, and let it check for
- odd size in the end. I.e., in essence move this code to the end.
- Doing so would save us a recursive call, and potentially make the
- stack grow a lot less. */
-
- mp_size_t esize = size - 1; /* even size */
- mp_limb_t cy_limb;
-
- MPN_MUL_N_RECURSE (prodp, up, vp, esize, tspace);
- cy_limb = mpn_addmul_1 (prodp + esize, up, esize, vp[esize]);
- prodp[esize + esize] = cy_limb;
- cy_limb = mpn_addmul_1 (prodp + esize, vp, size, up[esize]);
-
- prodp[esize + size] = cy_limb;
- }
- else
- {
- /* Anatolij Alekseevich Karatsuba's divide-and-conquer algorithm.
-
- Split U in two pieces, U1 and U0, such that
- U = U0 + U1*(B**n),
- and V in V1 and V0, such that
- V = V0 + V1*(B**n).
-
- UV is then computed recursively using the identity
-
- 2n n n n
- UV = (B + B )U V + B (U -U )(V -V ) + (B + 1)U V
- 1 1 1 0 0 1 0 0
-
- Where B = 2**BITS_PER_MP_LIMB. */
-
- mp_size_t hsize = size >> 1;
- mp_limb_t cy;
- int negflg;
-
- /*** Product H. ________________ ________________
- |_____U1 x V1____||____U0 x V0_____| */
- /* Put result in upper part of PROD and pass low part of TSPACE
- as new TSPACE. */
- MPN_MUL_N_RECURSE (prodp + size, up + hsize, vp + hsize, hsize, tspace);
-
- /*** Product M. ________________
- |_(U1-U0)(V0-V1)_| */
- if (mpn_cmp (up + hsize, up, hsize) >= 0)
- {
- mpn_sub_n (prodp, up + hsize, up, hsize);
- negflg = 0;
- }
- else
- {
- mpn_sub_n (prodp, up, up + hsize, hsize);
- negflg = 1;
- }
- if (mpn_cmp (vp + hsize, vp, hsize) >= 0)
- {
- mpn_sub_n (prodp + hsize, vp + hsize, vp, hsize);
- negflg ^= 1;
- }
- else
- {
- mpn_sub_n (prodp + hsize, vp, vp + hsize, hsize);
- /* No change of NEGFLG. */
- }
- /* Read temporary operands from low part of PROD.
- Put result in low part of TSPACE using upper part of TSPACE
- as new TSPACE. */
- MPN_MUL_N_RECURSE (tspace, prodp, prodp + hsize, hsize, tspace + size);
-
- /*** Add/copy product H. */
- MPN_COPY (prodp + hsize, prodp + size, hsize);
- cy = mpn_add_n (prodp + size, prodp + size, prodp + size + hsize, hsize);
-
- /*** Add product M (if NEGFLG M is a negative number). */
- if (negflg)
- cy -= mpn_sub_n (prodp + hsize, prodp + hsize, tspace, size);
- else
- cy += mpn_add_n (prodp + hsize, prodp + hsize, tspace, size);
-
- /*** Product L. ________________ ________________
- |________________||____U0 x V0_____| */
- /* Read temporary operands from low part of PROD.
- Put result in low part of TSPACE using upper part of TSPACE
- as new TSPACE. */
- MPN_MUL_N_RECURSE (tspace, up, vp, hsize, tspace + size);
-
- /*** Add/copy Product L (twice). */
-
- cy += mpn_add_n (prodp + hsize, prodp + hsize, tspace, size);
- if (cy)
- mpn_add_1 (prodp + hsize + size, prodp + hsize + size, hsize, cy);
-
- MPN_COPY (prodp, tspace, hsize);
- cy = mpn_add_n (prodp + hsize, prodp + hsize, tspace + hsize, hsize);
- if (cy)
- mpn_add_1 (prodp + size, prodp + size, size, 1);
- }
-}
-
-void
-impn_sqr_n_basecase (mp_ptr prodp, mp_srcptr up, mp_size_t size)
-{
- mp_size_t i;
- mp_limb_t cy_limb;
- mp_limb_t v_limb;
-
- /* Multiply by the first limb in V separately, as the result can be
- stored (not added) to PROD. We also avoid a loop for zeroing. */
- v_limb = up[0];
- if (v_limb <= 1)
- {
- if (v_limb == 1)
- MPN_COPY (prodp, up, size);
- else
- MPN_ZERO (prodp, size);
- cy_limb = 0;
- }
- else
- cy_limb = mpn_mul_1 (prodp, up, size, v_limb);
-
- prodp[size] = cy_limb;
- prodp++;
-
- /* For each iteration in the outer loop, multiply one limb from
- U with one limb from V, and add it to PROD. */
- for (i = 1; i < size; i++)
- {
- v_limb = up[i];
- if (v_limb <= 1)
- {
- cy_limb = 0;
- if (v_limb == 1)
- cy_limb = mpn_add_n (prodp, prodp, up, size);
- }
- else
- cy_limb = mpn_addmul_1 (prodp, up, size, v_limb);
-
- prodp[size] = cy_limb;
- prodp++;
- }
-}
-
-void
-impn_sqr_n (mp_ptr prodp,
- mp_srcptr up, mp_size_t size, mp_ptr tspace)
-{
- if ((size & 1) != 0)
- {
- /* The size is odd, the code code below doesn't handle that.
- Multiply the least significant (size - 1) limbs with a recursive
- call, and handle the most significant limb of S1 and S2
- separately. */
- /* A slightly faster way to do this would be to make the Karatsuba
- code below behave as if the size were even, and let it check for
- odd size in the end. I.e., in essence move this code to the end.
- Doing so would save us a recursive call, and potentially make the
- stack grow a lot less. */
-
- mp_size_t esize = size - 1; /* even size */
- mp_limb_t cy_limb;
-
- MPN_SQR_N_RECURSE (prodp, up, esize, tspace);
- cy_limb = mpn_addmul_1 (prodp + esize, up, esize, up[esize]);
- prodp[esize + esize] = cy_limb;
- cy_limb = mpn_addmul_1 (prodp + esize, up, size, up[esize]);
-
- prodp[esize + size] = cy_limb;
- }
- else
- {
- mp_size_t hsize = size >> 1;
- mp_limb_t cy;
-
- /*** Product H. ________________ ________________
- |_____U1 x U1____||____U0 x U0_____| */
- /* Put result in upper part of PROD and pass low part of TSPACE
- as new TSPACE. */
- MPN_SQR_N_RECURSE (prodp + size, up + hsize, hsize, tspace);
-
- /*** Product M. ________________
- |_(U1-U0)(U0-U1)_| */
- if (mpn_cmp (up + hsize, up, hsize) >= 0)
- {
- mpn_sub_n (prodp, up + hsize, up, hsize);
- }
- else
- {
- mpn_sub_n (prodp, up, up + hsize, hsize);
- }
-
- /* Read temporary operands from low part of PROD.
- Put result in low part of TSPACE using upper part of TSPACE
- as new TSPACE. */
- MPN_SQR_N_RECURSE (tspace, prodp, hsize, tspace + size);
-
- /*** Add/copy product H. */
- MPN_COPY (prodp + hsize, prodp + size, hsize);
- cy = mpn_add_n (prodp + size, prodp + size, prodp + size + hsize, hsize);
-
- /*** Add product M (if NEGFLG M is a negative number). */
- cy -= mpn_sub_n (prodp + hsize, prodp + hsize, tspace, size);
-
- /*** Product L. ________________ ________________
- |________________||____U0 x U0_____| */
- /* Read temporary operands from low part of PROD.
- Put result in low part of TSPACE using upper part of TSPACE
- as new TSPACE. */
- MPN_SQR_N_RECURSE (tspace, up, hsize, tspace + size);
-
- /*** Add/copy Product L (twice). */
-
- cy += mpn_add_n (prodp + hsize, prodp + hsize, tspace, size);
- if (cy)
- mpn_add_1 (prodp + hsize + size, prodp + hsize + size, hsize, cy);
-
- MPN_COPY (prodp, tspace, hsize);
- cy = mpn_add_n (prodp + hsize, prodp + hsize, tspace + hsize, hsize);
- if (cy)
- mpn_add_1 (prodp + size, prodp + size, size, 1);
- }
-}
-
-/* This should be made into an inline function in gmp.h. */
-void
-mpn_mul_n (mp_ptr prodp, mp_srcptr up, mp_srcptr vp, mp_size_t size)
-{
- TMP_DECL (marker);
- TMP_MARK (marker);
- if (up == vp)
- {
- if (size < KARATSUBA_THRESHOLD)
- {
- impn_sqr_n_basecase (prodp, up, size);
- }
- else
- {
- mp_ptr tspace;
- tspace = (mp_ptr) TMP_ALLOC (2 * size * BYTES_PER_MP_LIMB);
- impn_sqr_n (prodp, up, size, tspace);
- }
- }
- else
- {
- if (size < KARATSUBA_THRESHOLD)
- {
- impn_mul_n_basecase (prodp, up, vp, size);
- }
- else
- {
- mp_ptr tspace;
- tspace = (mp_ptr) TMP_ALLOC (2 * size * BYTES_PER_MP_LIMB);
- impn_mul_n (prodp, up, vp, size, tspace);
- }
- }
- TMP_FREE (marker);
-}
diff --git a/stdlib/nrand48.c b/stdlib/nrand48.c
deleted file mode 100644
index 9fdc62ff5f..0000000000
--- a/stdlib/nrand48.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-
-long int
-nrand48 (unsigned short int xsubi[3])
-{
- long int result;
-
- (void) __nrand48_r (xsubi, &__libc_drand48_data, &result);
-
- return result;
-}
diff --git a/stdlib/nrand48_r.c b/stdlib/nrand48_r.c
deleted file mode 100644
index e6f385d907..0000000000
--- a/stdlib/nrand48_r.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-int
-__nrand48_r (unsigned short int xsubi[3], struct drand48_data *buffer,
- long int *result)
-{
- /* Compute next state. */
- if (__drand48_iterate (xsubi, buffer) < 0)
- return -1;
-
- /* Store the result. */
- if (sizeof (unsigned short int) == 2)
- *result = xsubi[2] << 15 | xsubi[1] >> 1;
- else
- *result = xsubi[2] >> 1;
-
- return 0;
-}
-weak_alias (__nrand48_r, nrand48_r)
diff --git a/stdlib/old_atexit.c b/stdlib/old_atexit.c
deleted file mode 100644
index 44bbd699bd..0000000000
--- a/stdlib/old_atexit.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2_2)
-# define atexit attribute_compat_text_section __dyn_atexit
-# include "atexit.c"
-# undef atexit
-compat_symbol (libc, __dyn_atexit, atexit, GLIBC_2_0);
-#endif
diff --git a/stdlib/on_exit.c b/stdlib/on_exit.c
deleted file mode 100644
index 83845e76d8..0000000000
--- a/stdlib/on_exit.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-#include "exit.h"
-#include <atomic.h>
-#include <sysdep.h>
-
-/* Register a function to be called by exit. */
-int
-__on_exit (void (*func) (int status, void *arg), void *arg)
-{
- struct exit_function *new = __new_exitfn (&__exit_funcs);
-
- if (new == NULL)
- return -1;
-
-#ifdef PTR_MANGLE
- PTR_MANGLE (func);
-#endif
- new->func.on.fn = func;
- new->func.on.arg = arg;
- atomic_write_barrier ();
- new->flavor = ef_on;
- return 0;
-}
-weak_alias (__on_exit, on_exit)
diff --git a/stdlib/putenv.c b/stdlib/putenv.c
deleted file mode 100644
index c0488fc505..0000000000
--- a/stdlib/putenv.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Copyright (C) 1991-2017 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 _AIX && !defined __GNUC__
- #pragma alloca
-#endif
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if _LIBC || HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-#if _LIBC || HAVE_STRING_H
-# include <string.h>
-#endif
-
-#if !__GNU_LIBRARY__ && !HAVE_STRCHR
-# define strchr index
-#endif
-
-#ifndef _LIBC
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef __GNUC__
-# define alloca __builtin_alloca
-# else
-extern char *alloca ();
-# endif /* __GNUC__ */
-# endif /* HAVE_ALLOCA_H */
-#endif /* _LIBC */
-
-
-/* Put STRING, which is of the form "NAME=VALUE", in the environment. */
-int
-putenv (char *string)
-{
- const char *const name_end = strchr (string, '=');
-
- if (name_end != NULL)
- {
- char *name;
-#ifdef _LIBC
- int use_malloc = !__libc_use_alloca (name_end - string + 1);
- if (__builtin_expect (use_malloc, 0))
- {
- name = __strndup (string, name_end - string);
- if (name == NULL)
- return -1;
- }
- else
- name = strndupa (string, name_end - string);
-#else
-# define use_malloc 1
- name = malloc (name_end - string + 1);
- if (name == NULL)
- return -1;
- memcpy (name, string, name_end - string);
- name[name_end - string] = '\0';
-#endif
- int result = __add_to_environ (name, NULL, string, 1);
-
- if (__glibc_unlikely (use_malloc))
- free (name);
-
- return result;
- }
-
- __unsetenv (string);
- return 0;
-}
diff --git a/stdlib/qsort.c b/stdlib/qsort.c
deleted file mode 100644
index 9badf33ec0..0000000000
--- a/stdlib/qsort.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Written by Douglas C. Schmidt (schmidt@ics.uci.edu).
-
- 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 you consider tuning this algorithm, you should consult first:
- Engineering a sort function; Jon Bentley and M. Douglas McIlroy;
- Software - Practice and Experience; Vol. 23 (11), 1249-1265, 1993. */
-
-#include <alloca.h>
-#include <limits.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* Byte-wise swap two items of size SIZE. */
-#define SWAP(a, b, size) \
- do \
- { \
- size_t __size = (size); \
- char *__a = (a), *__b = (b); \
- do \
- { \
- char __tmp = *__a; \
- *__a++ = *__b; \
- *__b++ = __tmp; \
- } while (--__size > 0); \
- } while (0)
-
-/* Discontinue quicksort algorithm when partition gets below this size.
- This particular magic number was chosen to work best on a Sun 4/260. */
-#define MAX_THRESH 4
-
-/* Stack node declarations used to store unfulfilled partition obligations. */
-typedef struct
- {
- char *lo;
- char *hi;
- } stack_node;
-
-/* The next 4 #defines implement a very fast in-line stack abstraction. */
-/* The stack needs log (total_elements) entries (we could even subtract
- log(MAX_THRESH)). Since total_elements has type size_t, we get as
- upper bound for log (total_elements):
- bits per byte (CHAR_BIT) * sizeof(size_t). */
-#define STACK_SIZE (CHAR_BIT * sizeof(size_t))
-#define PUSH(low, high) ((void) ((top->lo = (low)), (top->hi = (high)), ++top))
-#define POP(low, high) ((void) (--top, (low = top->lo), (high = top->hi)))
-#define STACK_NOT_EMPTY (stack < top)
-
-
-/* Order size using quicksort. This implementation incorporates
- four optimizations discussed in Sedgewick:
-
- 1. Non-recursive, using an explicit stack of pointer that store the
- next array partition to sort. To save time, this maximum amount
- of space required to store an array of SIZE_MAX is allocated on the
- stack. Assuming a 32-bit (64 bit) integer for size_t, this needs
- only 32 * sizeof(stack_node) == 256 bytes (for 64 bit: 1024 bytes).
- Pretty cheap, actually.
-
- 2. Chose the pivot element using a median-of-three decision tree.
- This reduces the probability of selecting a bad pivot value and
- eliminates certain extraneous comparisons.
-
- 3. Only quicksorts TOTAL_ELEMS / MAX_THRESH partitions, leaving
- insertion sort to order the MAX_THRESH items within each partition.
- This is a big win, since insertion sort is faster for small, mostly
- sorted array segments.
-
- 4. The larger of the two sub-partitions is always pushed onto the
- stack first, with the algorithm then concentrating on the
- smaller partition. This *guarantees* no more than log (total_elems)
- stack size is needed (actually O(1) in this case)! */
-
-void
-_quicksort (void *const pbase, size_t total_elems, size_t size,
- __compar_d_fn_t cmp, void *arg)
-{
- char *base_ptr = (char *) pbase;
-
- const size_t max_thresh = MAX_THRESH * size;
-
- if (total_elems == 0)
- /* Avoid lossage with unsigned arithmetic below. */
- return;
-
- if (total_elems > MAX_THRESH)
- {
- char *lo = base_ptr;
- char *hi = &lo[size * (total_elems - 1)];
- stack_node stack[STACK_SIZE];
- stack_node *top = stack;
-
- PUSH (NULL, NULL);
-
- while (STACK_NOT_EMPTY)
- {
- char *left_ptr;
- char *right_ptr;
-
- /* Select median value from among LO, MID, and HI. Rearrange
- LO and HI so the three values are sorted. This lowers the
- probability of picking a pathological pivot value and
- skips a comparison for both the LEFT_PTR and RIGHT_PTR in
- the while loops. */
-
- char *mid = lo + size * ((hi - lo) / size >> 1);
-
- if ((*cmp) ((void *) mid, (void *) lo, arg) < 0)
- SWAP (mid, lo, size);
- if ((*cmp) ((void *) hi, (void *) mid, arg) < 0)
- SWAP (mid, hi, size);
- else
- goto jump_over;
- if ((*cmp) ((void *) mid, (void *) lo, arg) < 0)
- SWAP (mid, lo, size);
- jump_over:;
-
- left_ptr = lo + size;
- right_ptr = hi - size;
-
- /* Here's the famous ``collapse the walls'' section of quicksort.
- Gotta like those tight inner loops! They are the main reason
- that this algorithm runs much faster than others. */
- do
- {
- while ((*cmp) ((void *) left_ptr, (void *) mid, arg) < 0)
- left_ptr += size;
-
- while ((*cmp) ((void *) mid, (void *) right_ptr, arg) < 0)
- right_ptr -= size;
-
- if (left_ptr < right_ptr)
- {
- SWAP (left_ptr, right_ptr, size);
- if (mid == left_ptr)
- mid = right_ptr;
- else if (mid == right_ptr)
- mid = left_ptr;
- left_ptr += size;
- right_ptr -= size;
- }
- else if (left_ptr == right_ptr)
- {
- left_ptr += size;
- right_ptr -= size;
- break;
- }
- }
- while (left_ptr <= right_ptr);
-
- /* Set up pointers for next iteration. First determine whether
- left and right partitions are below the threshold size. If so,
- ignore one or both. Otherwise, push the larger partition's
- bounds on the stack and continue sorting the smaller one. */
-
- if ((size_t) (right_ptr - lo) <= max_thresh)
- {
- if ((size_t) (hi - left_ptr) <= max_thresh)
- /* Ignore both small partitions. */
- POP (lo, hi);
- else
- /* Ignore small left partition. */
- lo = left_ptr;
- }
- else if ((size_t) (hi - left_ptr) <= max_thresh)
- /* Ignore small right partition. */
- hi = right_ptr;
- else if ((right_ptr - lo) > (hi - left_ptr))
- {
- /* Push larger left partition indices. */
- PUSH (lo, right_ptr);
- lo = left_ptr;
- }
- else
- {
- /* Push larger right partition indices. */
- PUSH (left_ptr, hi);
- hi = right_ptr;
- }
- }
- }
-
- /* Once the BASE_PTR array is partially sorted by quicksort the rest
- is completely sorted using insertion sort, since this is efficient
- for partitions below MAX_THRESH size. BASE_PTR points to the beginning
- of the array to sort, and END_PTR points at the very last element in
- the array (*not* one beyond it!). */
-
-#define min(x, y) ((x) < (y) ? (x) : (y))
-
- {
- char *const end_ptr = &base_ptr[size * (total_elems - 1)];
- char *tmp_ptr = base_ptr;
- char *thresh = min(end_ptr, base_ptr + max_thresh);
- char *run_ptr;
-
- /* Find smallest element in first threshold and place it at the
- array's beginning. This is the smallest array element,
- and the operation speeds up insertion sort's inner loop. */
-
- for (run_ptr = tmp_ptr + size; run_ptr <= thresh; run_ptr += size)
- if ((*cmp) ((void *) run_ptr, (void *) tmp_ptr, arg) < 0)
- tmp_ptr = run_ptr;
-
- if (tmp_ptr != base_ptr)
- SWAP (tmp_ptr, base_ptr, size);
-
- /* Insertion sort, running from left-hand-side up to right-hand-side. */
-
- run_ptr = base_ptr + size;
- while ((run_ptr += size) <= end_ptr)
- {
- tmp_ptr = run_ptr - size;
- while ((*cmp) ((void *) run_ptr, (void *) tmp_ptr, arg) < 0)
- tmp_ptr -= size;
-
- tmp_ptr += size;
- if (tmp_ptr != run_ptr)
- {
- char *trav;
-
- trav = run_ptr + size;
- while (--trav >= run_ptr)
- {
- char c = *trav;
- char *hi, *lo;
-
- for (hi = lo = trav; (lo -= size) >= tmp_ptr; hi = lo)
- *hi = *lo;
- *hi = c;
- }
- }
- }
- }
-}
diff --git a/stdlib/quick_exit.c b/stdlib/quick_exit.c
deleted file mode 100644
index 67ad043727..0000000000
--- a/stdlib/quick_exit.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 2009-2017 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>
-#include <sysdep.h>
-#include <signal.h>
-#include <errno.h>
-#include <shlib-compat.h>
-#include "exit.h"
-
-void
-__new_quick_exit (int status)
-{
- /* The new quick_exit, following C++11 18.5.12, does not run object
- destructors. While C11 says nothing about object destructors,
- since it has none, the intent is to run the registered
- at_quick_exit handlers and then run _Exit immediately without
- disturbing the state of the process and threads. */
- __run_exit_handlers (status, &__quick_exit_funcs, false, false);
-}
-versioned_symbol (libc, __new_quick_exit, quick_exit, GLIBC_2_24);
-
-#if SHLIB_COMPAT(libc, GLIBC_2_10, GLIBC_2_24)
-void
-attribute_compat_text_section
-__old_quick_exit (int status)
-{
- /* The old quick_exit runs thread_local destructors. */
- __run_exit_handlers (status, &__quick_exit_funcs, false, true);
-}
-compat_symbol (libc, __old_quick_exit, quick_exit, GLIBC_2_10);
-#endif
diff --git a/stdlib/rand.c b/stdlib/rand.c
deleted file mode 100644
index a036319ce7..0000000000
--- a/stdlib/rand.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-
-#undef rand
-
-
-/* Return a random integer between 0 and RAND_MAX. */
-int
-rand (void)
-{
- return (int) __random ();
-}
diff --git a/stdlib/rand_r.c b/stdlib/rand_r.c
deleted file mode 100644
index ca681e8b53..0000000000
--- a/stdlib/rand_r.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Reentrant random function from POSIX.1c.
- Copyright (C) 1996-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
- 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>
-
-
-/* This algorithm is mentioned in the ISO C standard, here extended
- for 32 bits. */
-int
-rand_r (unsigned int *seed)
-{
- unsigned int next = *seed;
- int result;
-
- next *= 1103515245;
- next += 12345;
- result = (unsigned int) (next / 65536) % 2048;
-
- next *= 1103515245;
- next += 12345;
- result <<= 10;
- result ^= (unsigned int) (next / 65536) % 1024;
-
- next *= 1103515245;
- next += 12345;
- result <<= 10;
- result ^= (unsigned int) (next / 65536) % 1024;
-
- *seed = next;
-
- return result;
-}
diff --git a/stdlib/random.c b/stdlib/random.c
deleted file mode 100644
index 43bdb1232e..0000000000
--- a/stdlib/random.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
-
- 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 is derived from the Berkeley source:
- * @(#)random.c 5.5 (Berkeley) 7/6/88
- * It was reworked for the GNU C Library by Roland McGrath.
- * Rewritten to use reentrant functions by Ulrich Drepper, 1995.
- */
-
-/*
- Copyright (C) 1983 Regents of the University of California.
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 4. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- SUCH DAMAGE.*/
-
-#include <libc-lock.h>
-#include <limits.h>
-#include <stddef.h>
-#include <stdlib.h>
-
-
-/* An improved random number generation package. In addition to the standard
- rand()/srand() like interface, this package also has a special state info
- interface. The initstate() routine is called with a seed, an array of
- bytes, and a count of how many bytes are being passed in; this array is
- then initialized to contain information for random number generation with
- that much state information. Good sizes for the amount of state
- information are 32, 64, 128, and 256 bytes. The state can be switched by
- calling the setstate() function with the same array as was initialized
- with initstate(). By default, the package runs with 128 bytes of state
- information and generates far better random numbers than a linear
- congruential generator. If the amount of state information is less than
- 32 bytes, a simple linear congruential R.N.G. is used. Internally, the
- state information is treated as an array of longs; the zeroth element of
- the array is the type of R.N.G. being used (small integer); the remainder
- of the array is the state information for the R.N.G. Thus, 32 bytes of
- state information will give 7 longs worth of state information, which will
- allow a degree seven polynomial. (Note: The zeroth word of state
- information also has some other information stored in it; see setstate
- for details). The random number generation technique is a linear feedback
- shift register approach, employing trinomials (since there are fewer terms
- to sum up that way). In this approach, the least significant bit of all
- the numbers in the state table will act as a linear feedback shift register,
- and will have period 2^deg - 1 (where deg is the degree of the polynomial
- being used, assuming that the polynomial is irreducible and primitive).
- The higher order bits will have longer periods, since their values are
- also influenced by pseudo-random carries out of the lower bits. The
- total period of the generator is approximately deg*(2**deg - 1); thus
- doubling the amount of state information has a vast influence on the
- period of the generator. Note: The deg*(2**deg - 1) is an approximation
- only good for large deg, when the period of the shift register is the
- dominant factor. With deg equal to seven, the period is actually much
- longer than the 7*(2**7 - 1) predicted by this formula. */
-
-
-
-/* For each of the currently supported random number generators, we have a
- break value on the amount of state information (you need at least this many
- bytes of state info to support this random number generator), a degree for
- the polynomial (actually a trinomial) that the R.N.G. is based on, and
- separation between the two lower order coefficients of the trinomial. */
-
-/* Linear congruential. */
-#define TYPE_0 0
-#define BREAK_0 8
-#define DEG_0 0
-#define SEP_0 0
-
-/* x**7 + x**3 + 1. */
-#define TYPE_1 1
-#define BREAK_1 32
-#define DEG_1 7
-#define SEP_1 3
-
-/* x**15 + x + 1. */
-#define TYPE_2 2
-#define BREAK_2 64
-#define DEG_2 15
-#define SEP_2 1
-
-/* x**31 + x**3 + 1. */
-#define TYPE_3 3
-#define BREAK_3 128
-#define DEG_3 31
-#define SEP_3 3
-
-/* x**63 + x + 1. */
-#define TYPE_4 4
-#define BREAK_4 256
-#define DEG_4 63
-#define SEP_4 1
-
-
-/* Array versions of the above information to make code run faster.
- Relies on fact that TYPE_i == i. */
-
-#define MAX_TYPES 5 /* Max number of types above. */
-
-
-/* Initially, everything is set up as if from:
- initstate(1, randtbl, 128);
- Note that this initialization takes advantage of the fact that srandom
- advances the front and rear pointers 10*rand_deg times, and hence the
- rear pointer which starts at 0 will also end up at zero; thus the zeroth
- element of the state information, which contains info about the current
- position of the rear pointer is just
- (MAX_TYPES * (rptr - state)) + TYPE_3 == TYPE_3. */
-
-static int32_t randtbl[DEG_3 + 1] =
- {
- TYPE_3,
-
- -1726662223, 379960547, 1735697613, 1040273694, 1313901226,
- 1627687941, -179304937, -2073333483, 1780058412, -1989503057,
- -615974602, 344556628, 939512070, -1249116260, 1507946756,
- -812545463, 154635395, 1388815473, -1926676823, 525320961,
- -1009028674, 968117788, -123449607, 1284210865, 435012392,
- -2017506339, -911064859, -370259173, 1132637927, 1398500161,
- -205601318,
- };
-
-
-static struct random_data unsafe_state =
- {
-/* FPTR and RPTR are two pointers into the state info, a front and a rear
- pointer. These two pointers are always rand_sep places apart, as they
- cycle through the state information. (Yes, this does mean we could get
- away with just one pointer, but the code for random is more efficient
- this way). The pointers are left positioned as they would be from the call:
- initstate(1, randtbl, 128);
- (The position of the rear pointer, rptr, is really 0 (as explained above
- in the initialization of randtbl) because the state table pointer is set
- to point to randtbl[1] (as explained below).) */
-
- .fptr = &randtbl[SEP_3 + 1],
- .rptr = &randtbl[1],
-
-/* The following things are the pointer to the state information table,
- the type of the current generator, the degree of the current polynomial
- being used, and the separation between the two pointers.
- Note that for efficiency of random, we remember the first location of
- the state information, not the zeroth. Hence it is valid to access
- state[-1], which is used to store the type of the R.N.G.
- Also, we remember the last location, since this is more efficient than
- indexing every time to find the address of the last element to see if
- the front and rear pointers have wrapped. */
-
- .state = &randtbl[1],
-
- .rand_type = TYPE_3,
- .rand_deg = DEG_3,
- .rand_sep = SEP_3,
-
- .end_ptr = &randtbl[sizeof (randtbl) / sizeof (randtbl[0])]
-};
-
-/* POSIX.1c requires that there is mutual exclusion for the `rand' and
- `srand' functions to prevent concurrent calls from modifying common
- data. */
-__libc_lock_define_initialized (static, lock)
-
-/* Initialize the random number generator based on the given seed. If the
- type is the trivial no-state-information type, just remember the seed.
- Otherwise, initializes state[] based on the given "seed" via a linear
- congruential generator. Then, the pointers are set to known locations
- that are exactly rand_sep places apart. Lastly, it cycles the state
- information a given number of times to get rid of any initial dependencies
- introduced by the L.C.R.N.G. Note that the initialization of randtbl[]
- for default usage relies on values produced by this routine. */
-void
-__srandom (unsigned int x)
-{
- __libc_lock_lock (lock);
- (void) __srandom_r (x, &unsafe_state);
- __libc_lock_unlock (lock);
-}
-
-weak_alias (__srandom, srandom)
-weak_alias (__srandom, srand)
-
-/* Initialize the state information in the given array of N bytes for
- future random number generation. Based on the number of bytes we
- are given, and the break values for the different R.N.G.'s, we choose
- the best (largest) one we can and set things up for it. srandom is
- then called to initialize the state information. Note that on return
- from srandom, we set state[-1] to be the type multiplexed with the current
- value of the rear pointer; this is so successive calls to initstate won't
- lose this information and will be able to restart with setstate.
- Note: The first thing we do is save the current state, if any, just like
- setstate so that it doesn't matter when initstate is called.
- Returns a pointer to the old state. */
-char *
-__initstate (unsigned int seed, char *arg_state, size_t n)
-{
- int32_t *ostate;
- int ret;
-
- __libc_lock_lock (lock);
-
- ostate = &unsafe_state.state[-1];
-
- ret = __initstate_r (seed, arg_state, n, &unsafe_state);
-
- __libc_lock_unlock (lock);
-
- return ret == -1 ? NULL : (char *) ostate;
-}
-
-weak_alias (__initstate, initstate)
-
-/* Restore the state from the given state array.
- Note: It is important that we also remember the locations of the pointers
- in the current state information, and restore the locations of the pointers
- from the old state information. This is done by multiplexing the pointer
- location into the zeroth word of the state information. Note that due
- to the order in which things are done, it is OK to call setstate with the
- same state as the current state
- Returns a pointer to the old state information. */
-char *
-__setstate (char *arg_state)
-{
- int32_t *ostate;
-
- __libc_lock_lock (lock);
-
- ostate = &unsafe_state.state[-1];
-
- if (__setstate_r (arg_state, &unsafe_state) < 0)
- ostate = NULL;
-
- __libc_lock_unlock (lock);
-
- return (char *) ostate;
-}
-
-weak_alias (__setstate, setstate)
-
-/* If we are using the trivial TYPE_0 R.N.G., just do the old linear
- congruential bit. Otherwise, we do our fancy trinomial stuff, which is the
- same in all the other cases due to all the global variables that have been
- set up. The basic operation is to add the number at the rear pointer into
- the one at the front pointer. Then both pointers are advanced to the next
- location cyclically in the table. The value returned is the sum generated,
- reduced to 31 bits by throwing away the "least random" low bit.
- Note: The code takes advantage of the fact that both the front and
- rear pointers can't wrap on the same call by not testing the rear
- pointer if the front one has wrapped. Returns a 31-bit random number. */
-
-long int
-__random (void)
-{
- int32_t retval;
-
- __libc_lock_lock (lock);
-
- (void) __random_r (&unsafe_state, &retval);
-
- __libc_lock_unlock (lock);
-
- return retval;
-}
-
-weak_alias (__random, random)
diff --git a/stdlib/random_r.c b/stdlib/random_r.c
deleted file mode 100644
index c3f6f9aede..0000000000
--- a/stdlib/random_r.c
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- Copyright (C) 1995-2017 Free Software Foundation, Inc.
-
- 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/>. */
-
-/*
- Copyright (C) 1983 Regents of the University of California.
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 4. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- SUCH DAMAGE.*/
-
-/*
- * This is derived from the Berkeley source:
- * @(#)random.c 5.5 (Berkeley) 7/6/88
- * It was reworked for the GNU C Library by Roland McGrath.
- * Rewritten to be reentrant by Ulrich Drepper, 1995
- */
-
-#include <errno.h>
-#include <limits.h>
-#include <stddef.h>
-#include <stdlib.h>
-
-
-/* An improved random number generation package. In addition to the standard
- rand()/srand() like interface, this package also has a special state info
- interface. The initstate() routine is called with a seed, an array of
- bytes, and a count of how many bytes are being passed in; this array is
- then initialized to contain information for random number generation with
- that much state information. Good sizes for the amount of state
- information are 32, 64, 128, and 256 bytes. The state can be switched by
- calling the setstate() function with the same array as was initialized
- with initstate(). By default, the package runs with 128 bytes of state
- information and generates far better random numbers than a linear
- congruential generator. If the amount of state information is less than
- 32 bytes, a simple linear congruential R.N.G. is used. Internally, the
- state information is treated as an array of longs; the zeroth element of
- the array is the type of R.N.G. being used (small integer); the remainder
- of the array is the state information for the R.N.G. Thus, 32 bytes of
- state information will give 7 longs worth of state information, which will
- allow a degree seven polynomial. (Note: The zeroth word of state
- information also has some other information stored in it; see setstate
- for details). The random number generation technique is a linear feedback
- shift register approach, employing trinomials (since there are fewer terms
- to sum up that way). In this approach, the least significant bit of all
- the numbers in the state table will act as a linear feedback shift register,
- and will have period 2^deg - 1 (where deg is the degree of the polynomial
- being used, assuming that the polynomial is irreducible and primitive).
- The higher order bits will have longer periods, since their values are
- also influenced by pseudo-random carries out of the lower bits. The
- total period of the generator is approximately deg*(2**deg - 1); thus
- doubling the amount of state information has a vast influence on the
- period of the generator. Note: The deg*(2**deg - 1) is an approximation
- only good for large deg, when the period of the shift register is the
- dominant factor. With deg equal to seven, the period is actually much
- longer than the 7*(2**7 - 1) predicted by this formula. */
-
-
-
-/* For each of the currently supported random number generators, we have a
- break value on the amount of state information (you need at least this many
- bytes of state info to support this random number generator), a degree for
- the polynomial (actually a trinomial) that the R.N.G. is based on, and
- separation between the two lower order coefficients of the trinomial. */
-
-/* Linear congruential. */
-#define TYPE_0 0
-#define BREAK_0 8
-#define DEG_0 0
-#define SEP_0 0
-
-/* x**7 + x**3 + 1. */
-#define TYPE_1 1
-#define BREAK_1 32
-#define DEG_1 7
-#define SEP_1 3
-
-/* x**15 + x + 1. */
-#define TYPE_2 2
-#define BREAK_2 64
-#define DEG_2 15
-#define SEP_2 1
-
-/* x**31 + x**3 + 1. */
-#define TYPE_3 3
-#define BREAK_3 128
-#define DEG_3 31
-#define SEP_3 3
-
-/* x**63 + x + 1. */
-#define TYPE_4 4
-#define BREAK_4 256
-#define DEG_4 63
-#define SEP_4 1
-
-
-/* Array versions of the above information to make code run faster.
- Relies on fact that TYPE_i == i. */
-
-#define MAX_TYPES 5 /* Max number of types above. */
-
-struct random_poly_info
-{
- int seps[MAX_TYPES];
- int degrees[MAX_TYPES];
-};
-
-static const struct random_poly_info random_poly_info =
-{
- { SEP_0, SEP_1, SEP_2, SEP_3, SEP_4 },
- { DEG_0, DEG_1, DEG_2, DEG_3, DEG_4 }
-};
-
-
-
-
-/* Initialize the random number generator based on the given seed. If the
- type is the trivial no-state-information type, just remember the seed.
- Otherwise, initializes state[] based on the given "seed" via a linear
- congruential generator. Then, the pointers are set to known locations
- that are exactly rand_sep places apart. Lastly, it cycles the state
- information a given number of times to get rid of any initial dependencies
- introduced by the L.C.R.N.G. Note that the initialization of randtbl[]
- for default usage relies on values produced by this routine. */
-int
-__srandom_r (unsigned int seed, struct random_data *buf)
-{
- int type;
- int32_t *state;
- long int i;
- int32_t word;
- int32_t *dst;
- int kc;
-
- if (buf == NULL)
- goto fail;
- type = buf->rand_type;
- if ((unsigned int) type >= MAX_TYPES)
- goto fail;
-
- state = buf->state;
- /* We must make sure the seed is not 0. Take arbitrarily 1 in this case. */
- if (seed == 0)
- seed = 1;
- state[0] = seed;
- if (type == TYPE_0)
- goto done;
-
- dst = state;
- word = seed;
- kc = buf->rand_deg;
- for (i = 1; i < kc; ++i)
- {
- /* This does:
- state[i] = (16807 * state[i - 1]) % 2147483647;
- but avoids overflowing 31 bits. */
- long int hi = word / 127773;
- long int lo = word % 127773;
- word = 16807 * lo - 2836 * hi;
- if (word < 0)
- word += 2147483647;
- *++dst = word;
- }
-
- buf->fptr = &state[buf->rand_sep];
- buf->rptr = &state[0];
- kc *= 10;
- while (--kc >= 0)
- {
- int32_t discard;
- (void) __random_r (buf, &discard);
- }
-
- done:
- return 0;
-
- fail:
- return -1;
-}
-
-weak_alias (__srandom_r, srandom_r)
-
-/* Initialize the state information in the given array of N bytes for
- future random number generation. Based on the number of bytes we
- are given, and the break values for the different R.N.G.'s, we choose
- the best (largest) one we can and set things up for it. srandom is
- then called to initialize the state information. Note that on return
- from srandom, we set state[-1] to be the type multiplexed with the current
- value of the rear pointer; this is so successive calls to initstate won't
- lose this information and will be able to restart with setstate.
- Note: The first thing we do is save the current state, if any, just like
- setstate so that it doesn't matter when initstate is called.
- Returns 0 on success, non-zero on failure. */
-int
-__initstate_r (unsigned int seed, char *arg_state, size_t n,
- struct random_data *buf)
-{
- if (buf == NULL)
- goto fail;
-
- int32_t *old_state = buf->state;
- if (old_state != NULL)
- {
- int old_type = buf->rand_type;
- if (old_type == TYPE_0)
- old_state[-1] = TYPE_0;
- else
- old_state[-1] = (MAX_TYPES * (buf->rptr - old_state)) + old_type;
- }
-
- int type;
- if (n >= BREAK_3)
- type = n < BREAK_4 ? TYPE_3 : TYPE_4;
- else if (n < BREAK_1)
- {
- if (n < BREAK_0)
- goto fail;
-
- type = TYPE_0;
- }
- else
- type = n < BREAK_2 ? TYPE_1 : TYPE_2;
-
- int degree = random_poly_info.degrees[type];
- int separation = random_poly_info.seps[type];
-
- buf->rand_type = type;
- buf->rand_sep = separation;
- buf->rand_deg = degree;
- int32_t *state = &((int32_t *) arg_state)[1]; /* First location. */
- /* Must set END_PTR before srandom. */
- buf->end_ptr = &state[degree];
-
- buf->state = state;
-
- __srandom_r (seed, buf);
-
- state[-1] = TYPE_0;
- if (type != TYPE_0)
- state[-1] = (buf->rptr - state) * MAX_TYPES + type;
-
- return 0;
-
- fail:
- __set_errno (EINVAL);
- return -1;
-}
-
-weak_alias (__initstate_r, initstate_r)
-
-/* Restore the state from the given state array.
- Note: It is important that we also remember the locations of the pointers
- in the current state information, and restore the locations of the pointers
- from the old state information. This is done by multiplexing the pointer
- location into the zeroth word of the state information. Note that due
- to the order in which things are done, it is OK to call setstate with the
- same state as the current state
- Returns 0 on success, non-zero on failure. */
-int
-__setstate_r (char *arg_state, struct random_data *buf)
-{
- int32_t *new_state = 1 + (int32_t *) arg_state;
- int type;
- int old_type;
- int32_t *old_state;
- int degree;
- int separation;
-
- if (arg_state == NULL || buf == NULL)
- goto fail;
-
- old_type = buf->rand_type;
- old_state = buf->state;
- if (old_type == TYPE_0)
- old_state[-1] = TYPE_0;
- else
- old_state[-1] = (MAX_TYPES * (buf->rptr - old_state)) + old_type;
-
- type = new_state[-1] % MAX_TYPES;
- if (type < TYPE_0 || type > TYPE_4)
- goto fail;
-
- buf->rand_deg = degree = random_poly_info.degrees[type];
- buf->rand_sep = separation = random_poly_info.seps[type];
- buf->rand_type = type;
-
- if (type != TYPE_0)
- {
- int rear = new_state[-1] / MAX_TYPES;
- buf->rptr = &new_state[rear];
- buf->fptr = &new_state[(rear + separation) % degree];
- }
- buf->state = new_state;
- /* Set end_ptr too. */
- buf->end_ptr = &new_state[degree];
-
- return 0;
-
- fail:
- __set_errno (EINVAL);
- return -1;
-}
-
-weak_alias (__setstate_r, setstate_r)
-
-/* If we are using the trivial TYPE_0 R.N.G., just do the old linear
- congruential bit. Otherwise, we do our fancy trinomial stuff, which is the
- same in all the other cases due to all the global variables that have been
- set up. The basic operation is to add the number at the rear pointer into
- the one at the front pointer. Then both pointers are advanced to the next
- location cyclically in the table. The value returned is the sum generated,
- reduced to 31 bits by throwing away the "least random" low bit.
- Note: The code takes advantage of the fact that both the front and
- rear pointers can't wrap on the same call by not testing the rear
- pointer if the front one has wrapped. Returns a 31-bit random number. */
-
-int
-__random_r (struct random_data *buf, int32_t *result)
-{
- int32_t *state;
-
- if (buf == NULL || result == NULL)
- goto fail;
-
- state = buf->state;
-
- if (buf->rand_type == TYPE_0)
- {
- int32_t val = state[0];
- val = ((state[0] * 1103515245) + 12345) & 0x7fffffff;
- state[0] = val;
- *result = val;
- }
- else
- {
- int32_t *fptr = buf->fptr;
- int32_t *rptr = buf->rptr;
- int32_t *end_ptr = buf->end_ptr;
- int32_t val;
-
- val = *fptr += *rptr;
- /* Chucking least random bit. */
- *result = (val >> 1) & 0x7fffffff;
- ++fptr;
- if (fptr >= end_ptr)
- {
- fptr = state;
- ++rptr;
- }
- else
- {
- ++rptr;
- if (rptr >= end_ptr)
- rptr = state;
- }
- buf->fptr = fptr;
- buf->rptr = rptr;
- }
- return 0;
-
- fail:
- __set_errno (EINVAL);
- return -1;
-}
-
-weak_alias (__random_r, random_r)
diff --git a/stdlib/rpmatch.c b/stdlib/rpmatch.c
deleted file mode 100644
index 965c2999d8..0000000000
--- a/stdlib/rpmatch.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Determine whether string value is affirmation or negative response
- according to current locale's data.
- This file is part of the GNU C Library.
- Copyright (C) 1996-2017 Free Software Foundation, Inc.
-
- 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 <langinfo.h>
-#include <stdlib.h>
-#include <regex.h>
-
-
-/* Match against one of the response patterns, compiling the pattern
- first if necessary. */
-static int
-try (const char *response,
- const int tag, const int match, const int nomatch,
- const char **lastp, regex_t *re)
-{
- const char *pattern = nl_langinfo (tag);
- if (pattern != *lastp)
- {
- /* The pattern has changed. */
- if (*lastp != NULL)
- {
- /* Free the old compiled pattern. */
- __regfree (re);
- *lastp = NULL;
- }
- /* Compile the pattern and cache it for future runs. */
- if (__regcomp (re, pattern, REG_EXTENDED) != 0)
- return -1;
- *lastp = pattern;
- }
-
- /* Try the pattern. */
- return __regexec (re, response, 0, NULL, 0) == 0 ? match : nomatch;
-}
-
-int
-rpmatch (const char *response)
-{
- /* We cache the response patterns and compiled regexps here. */
- static const char *yesexpr, *noexpr;
- static regex_t yesre, nore;
-
- return (try (response, YESEXPR, 1, 0, &yesexpr, &yesre) ?:
- try (response, NOEXPR, 0, -1, &noexpr, &nore));
-}
diff --git a/stdlib/rshift.c b/stdlib/rshift.c
deleted file mode 100644
index d4c7f77769..0000000000
--- a/stdlib/rshift.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* mpn_rshift -- Shift right a low-level natural-number integer.
-
-Copyright (C) 1991-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-
-#include <assert.h>
-
-/* Shift U (pointed to by UP and USIZE limbs long) CNT bits to the right
- and store the USIZE least significant limbs of the result at WP.
- The bits shifted out to the right are returned.
-
- Argument constraints:
- 1. 0 < CNT < BITS_PER_MP_LIMB
- 2. If the result is to be written over the input, WP must be <= UP.
-*/
-
-mp_limb_t
-mpn_rshift (register mp_ptr wp,
- register mp_srcptr up, mp_size_t usize,
- register unsigned int cnt)
-{
- register mp_limb_t high_limb, low_limb;
- register unsigned sh_1, sh_2;
- register mp_size_t i;
- mp_limb_t retval;
-
- assert (usize != 0 && cnt != 0);
-
- sh_1 = cnt;
-
-#if 0
- if (sh_1 == 0)
- {
- if (wp != up)
- {
- /* Copy from low end to high end, to allow specified input/output
- overlapping. */
- for (i = 0; i < usize; i++)
- wp[i] = up[i];
- }
- return usize;
- }
-#endif
-
- wp -= 1;
- sh_2 = BITS_PER_MP_LIMB - sh_1;
- high_limb = up[0];
- retval = high_limb << sh_2;
- low_limb = high_limb;
-
- for (i = 1; i < usize; i++)
- {
- high_limb = up[i];
- wp[i] = (low_limb >> sh_1) | (high_limb << sh_2);
- low_limb = high_limb;
- }
- wp[i] = low_limb >> sh_1;
-
- return retval;
-}
diff --git a/stdlib/secure-getenv.c b/stdlib/secure-getenv.c
deleted file mode 100644
index 8d6a7e39a6..0000000000
--- a/stdlib/secure-getenv.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-#include <unistd.h>
-
-#include <shlib-compat.h>
-
-/* Some programs and especially the libc itself have to be careful
- what values to accept from the environment. This special version
- checks for SUID or SGID first before doing any work. */
-char *
-__libc_secure_getenv (const char *name)
-{
- return __libc_enable_secure ? NULL : getenv (name);
-}
-weak_alias (__libc_secure_getenv, secure_getenv)
-libc_hidden_weak (__libc_secure_getenv)
-
-#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_17)
-compat_symbol (libc, __libc_secure_getenv, __secure_getenv, GLIBC_2_0);
-#endif
diff --git a/stdlib/seed48.c b/stdlib/seed48.c
deleted file mode 100644
index 3108b0ca76..0000000000
--- a/stdlib/seed48.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-
-unsigned short int *
-seed48 (unsigned short int seed16v[3])
-{
- (void) __seed48_r (seed16v, &__libc_drand48_data);
-
- return __libc_drand48_data.__old_x;
-}
diff --git a/stdlib/seed48_r.c b/stdlib/seed48_r.c
deleted file mode 100644
index 3cdf351dfd..0000000000
--- a/stdlib/seed48_r.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-
-int
-__seed48_r (unsigned short int seed16v[3], struct drand48_data *buffer)
-{
- /* Save old value at a private place to be used as return value. */
- memcpy (buffer->__old_x, buffer->__x, sizeof (buffer->__x));
-
- /* Install new state. */
- buffer->__x[2] = seed16v[2];
- buffer->__x[1] = seed16v[1];
- buffer->__x[0] = seed16v[0];
- buffer->__a = 0x5deece66dull;
- buffer->__c = 0xb;
- buffer->__init = 1;
-
- return 0;
-}
-weak_alias (__seed48_r, seed48_r)
diff --git a/stdlib/setcontext.c b/stdlib/setcontext.c
deleted file mode 100644
index 3fe77177a2..0000000000
--- a/stdlib/setcontext.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 1998-2017 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 <ucontext.h>
-
-int
-setcontext (const ucontext_t *ucp)
-{
- __set_errno (ENOSYS);
- return -1;
-}
-
-
-stub_warning (setcontext)
diff --git a/stdlib/setenv.c b/stdlib/setenv.c
deleted file mode 100644
index f3c0220045..0000000000
--- a/stdlib/setenv.c
+++ /dev/null
@@ -1,340 +0,0 @@
-/* Copyright (C) 1992-2017 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 HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* Pacify GCC; see the commentary about VALLEN below. This is needed
- at least through GCC 4.9.2. Pacify GCC for the entire file, as
- there seems to be no way to pacify GCC selectively, only for the
- place where it's needed. Do not use DIAG_IGNORE_NEEDS_COMMENT
- here, as it's not defined yet. */
-#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
-
-#include <errno.h>
-#if !_LIBC
-# if !defined errno && !defined HAVE_ERRNO_DECL
-extern int errno;
-# endif
-# define __set_errno(ev) ((errno) = (ev))
-#endif
-
-#if _LIBC || HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-#if _LIBC || HAVE_STRING_H
-# include <string.h>
-#endif
-#if _LIBC || HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#if !_LIBC
-# define __environ environ
-# ifndef HAVE_ENVIRON_DECL
-extern char **environ;
-# endif
-#endif
-
-#if _LIBC
-/* This lock protects against simultaneous modifications of `environ'. */
-# include <libc-lock.h>
-__libc_lock_define_initialized (static, envlock)
-# define LOCK __libc_lock_lock (envlock)
-# define UNLOCK __libc_lock_unlock (envlock)
-#else
-# define LOCK
-# define UNLOCK
-#endif
-
-/* In the GNU C library we must keep the namespace clean. */
-#ifdef _LIBC
-# define setenv __setenv
-# define unsetenv __unsetenv
-# define clearenv __clearenv
-# define tfind __tfind
-# define tsearch __tsearch
-#endif
-
-/* In the GNU C library implementation we try to be more clever and
- allow arbitrarily many changes of the environment given that the used
- values are from a small set. Outside glibc this will eat up all
- memory after a while. */
-#if defined _LIBC || (defined HAVE_SEARCH_H && defined HAVE_TSEARCH \
- && defined __GNUC__)
-# define USE_TSEARCH 1
-# include <search.h>
-
-/* This is a pointer to the root of the search tree with the known
- values. */
-static void *known_values;
-
-# define KNOWN_VALUE(Str) \
- ({ \
- void *value = tfind (Str, &known_values, (__compar_fn_t) strcmp); \
- value != NULL ? *(char **) value : NULL; \
- })
-# define STORE_VALUE(Str) \
- tsearch (Str, &known_values, (__compar_fn_t) strcmp)
-
-#else
-# undef USE_TSEARCH
-
-# define KNOWN_VALUE(Str) NULL
-# define STORE_VALUE(Str) do { } while (0)
-
-#endif
-
-
-/* If this variable is not a null pointer we allocated the current
- environment. */
-static char **last_environ;
-
-
-/* This function is used by `setenv' and `putenv'. The difference between
- the two functions is that for the former must create a new string which
- is then placed in the environment, while the argument of `putenv'
- must be used directly. This is all complicated by the fact that we try
- to reuse values once generated for a `setenv' call since we can never
- free the strings. */
-int
-__add_to_environ (const char *name, const char *value, const char *combined,
- int replace)
-{
- char **ep;
- size_t size;
-
- /* Compute lengths before locking, so that the critical section is
- less of a performance bottleneck. VALLEN is needed only if
- COMBINED is null (unfortunately GCC is not smart enough to deduce
- this; see the #pragma at the start of this file). Testing
- COMBINED instead of VALUE causes setenv (..., NULL, ...) to dump
- core now instead of corrupting memory later. */
- const size_t namelen = strlen (name);
- size_t vallen;
- if (combined == NULL)
- vallen = strlen (value) + 1;
-
- LOCK;
-
- /* We have to get the pointer now that we have the lock and not earlier
- since another thread might have created a new environment. */
- ep = __environ;
-
- size = 0;
- if (ep != NULL)
- {
- for (; *ep != NULL; ++ep)
- if (!strncmp (*ep, name, namelen) && (*ep)[namelen] == '=')
- break;
- else
- ++size;
- }
-
- if (ep == NULL || __builtin_expect (*ep == NULL, 1))
- {
- char **new_environ;
-
- /* We allocated this space; we can extend it. */
- new_environ = (char **) realloc (last_environ,
- (size + 2) * sizeof (char *));
- if (new_environ == NULL)
- {
- UNLOCK;
- return -1;
- }
-
- if (__environ != last_environ)
- memcpy ((char *) new_environ, (char *) __environ,
- size * sizeof (char *));
-
- new_environ[size] = NULL;
- new_environ[size + 1] = NULL;
- ep = new_environ + size;
-
- last_environ = __environ = new_environ;
- }
- if (*ep == NULL || replace)
- {
- char *np;
-
- /* Use the user string if given. */
- if (combined != NULL)
- np = (char *) combined;
- else
- {
- const size_t varlen = namelen + 1 + vallen;
-#ifdef USE_TSEARCH
- char *new_value;
- int use_alloca = __libc_use_alloca (varlen);
- if (__builtin_expect (use_alloca, 1))
- new_value = (char *) alloca (varlen);
- else
- {
- new_value = malloc (varlen);
- if (new_value == NULL)
- {
- UNLOCK;
- return -1;
- }
- }
-# ifdef _LIBC
- __mempcpy (__mempcpy (__mempcpy (new_value, name, namelen), "=", 1),
- value, vallen);
-# else
- memcpy (new_value, name, namelen);
- new_value[namelen] = '=';
- memcpy (&new_value[namelen + 1], value, vallen);
-# endif
-
- np = KNOWN_VALUE (new_value);
- if (__glibc_likely (np == NULL))
-#endif
- {
-#ifdef USE_TSEARCH
- if (__glibc_unlikely (! use_alloca))
- np = new_value;
- else
-#endif
- {
- np = malloc (varlen);
- if (__glibc_unlikely (np == NULL))
- {
- UNLOCK;
- return -1;
- }
-
-#ifdef USE_TSEARCH
- memcpy (np, new_value, varlen);
-#else
- memcpy (np, name, namelen);
- np[namelen] = '=';
- memcpy (&np[namelen + 1], value, vallen);
-#endif
- }
- /* And remember the value. */
- STORE_VALUE (np);
- }
-#ifdef USE_TSEARCH
- else
- {
- if (__glibc_unlikely (! use_alloca))
- free (new_value);
- }
-#endif
- }
-
- *ep = np;
- }
-
- UNLOCK;
-
- return 0;
-}
-
-int
-setenv (const char *name, const char *value, int replace)
-{
- if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
- {
- __set_errno (EINVAL);
- return -1;
- }
-
- return __add_to_environ (name, value, NULL, replace);
-}
-
-int
-unsetenv (const char *name)
-{
- size_t len;
- char **ep;
-
- if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
- {
- __set_errno (EINVAL);
- return -1;
- }
-
- len = strlen (name);
-
- LOCK;
-
- ep = __environ;
- if (ep != NULL)
- while (*ep != NULL)
- {
- if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
- {
- /* Found it. Remove this pointer by moving later ones back. */
- char **dp = ep;
-
- do
- dp[0] = dp[1];
- while (*dp++);
- /* Continue the loop in case NAME appears again. */
- }
- else
- ++ep;
- }
-
- UNLOCK;
-
- return 0;
-}
-
-/* The `clearenv' was planned to be added to POSIX.1 but probably
- never made it. Nevertheless the POSIX.9 standard (POSIX bindings
- for Fortran 77) requires this function. */
-int
-clearenv (void)
-{
- LOCK;
-
- if (__environ == last_environ && __environ != NULL)
- {
- /* We allocated this environment so we can free it. */
- free (__environ);
- last_environ = NULL;
- }
-
- /* Clear the environment pointer removes the whole environment. */
- __environ = NULL;
-
- UNLOCK;
-
- return 0;
-}
-#ifdef _LIBC
-libc_freeres_fn (free_mem)
-{
- /* Remove all traces. */
- clearenv ();
-
- /* Now remove the search tree. */
- __tdestroy (known_values, free);
- known_values = NULL;
-}
-
-# undef setenv
-# undef unsetenv
-# undef clearenv
-weak_alias (__setenv, setenv)
-weak_alias (__unsetenv, unsetenv)
-weak_alias (__clearenv, clearenv)
-#endif
diff --git a/stdlib/srand48.c b/stdlib/srand48.c
deleted file mode 100644
index 9d665055a0..0000000000
--- a/stdlib/srand48.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-
-
-void
-srand48 (long seedval)
-{
- (void) __srand48_r (seedval, &__libc_drand48_data);
-}
diff --git a/stdlib/srand48_r.c b/stdlib/srand48_r.c
deleted file mode 100644
index 43bca37062..0000000000
--- a/stdlib/srand48_r.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 1995-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 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/>. */
-
-#include <stdlib.h>
-#include <limits.h>
-
-int
-__srand48_r (long int seedval, struct drand48_data *buffer)
-{
- /* The standards say we only have 32 bits. */
- if (sizeof (long int) > 4)
- seedval &= 0xffffffffl;
-
- buffer->__x[2] = seedval >> 16;
- buffer->__x[1] = seedval & 0xffffl;
- buffer->__x[0] = 0x330e;
-
- buffer->__a = 0x5deece66dull;
- buffer->__c = 0xb;
- buffer->__init = 1;
-
- return 0;
-}
-weak_alias (__srand48_r, srand48_r)
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
deleted file mode 100644
index 0a693c2b41..0000000000
--- a/stdlib/stdlib.h
+++ /dev/null
@@ -1,911 +0,0 @@
-/* Copyright (C) 1991-2017 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/>. */
-
-/*
- * ISO C99 Standard: 7.20 General utilities <stdlib.h>
- */
-
-#ifndef _STDLIB_H
-
-#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
-#include <bits/libc-header-start.h>
-
-/* Get size_t, wchar_t and NULL from <stddef.h>. */
-#define __need_size_t
-#define __need_wchar_t
-#define __need_NULL
-#include <stddef.h>
-
-__BEGIN_DECLS
-
-#define _STDLIB_H 1
-
-#if (defined __USE_XOPEN || defined __USE_XOPEN2K8) && !defined _SYS_WAIT_H
-/* XPG requires a few symbols from <sys/wait.h> being defined. */
-# include <bits/waitflags.h>
-# include <bits/waitstatus.h>
-
-/* Define the macros <sys/wait.h> also would define this way. */
-# define WEXITSTATUS(status) __WEXITSTATUS (status)
-# define WTERMSIG(status) __WTERMSIG (status)
-# define WSTOPSIG(status) __WSTOPSIG (status)
-# define WIFEXITED(status) __WIFEXITED (status)
-# define WIFSIGNALED(status) __WIFSIGNALED (status)
-# define WIFSTOPPED(status) __WIFSTOPPED (status)
-# ifdef __WIFCONTINUED
-# define WIFCONTINUED(status) __WIFCONTINUED (status)
-# endif
-#endif /* X/Open or XPG7 and <sys/wait.h> not included. */
-
-/* _FloatN API tests for enablement. */
-#include <bits/floatn.h>
-
-/* Returned by `div'. */
-typedef struct
- {
- int quot; /* Quotient. */
- int rem; /* Remainder. */
- } div_t;
-
-/* Returned by `ldiv'. */
-#ifndef __ldiv_t_defined
-typedef struct
- {
- long int quot; /* Quotient. */
- long int rem; /* Remainder. */
- } ldiv_t;
-# define __ldiv_t_defined 1
-#endif
-
-#if defined __USE_ISOC99 && !defined __lldiv_t_defined
-/* Returned by `lldiv'. */
-__extension__ typedef struct
- {
- long long int quot; /* Quotient. */
- long long int rem; /* Remainder. */
- } lldiv_t;
-# define __lldiv_t_defined 1
-#endif
-
-
-/* The largest number rand will return (same as INT_MAX). */
-#define RAND_MAX 2147483647
-
-
-/* We define these the same for all machines.
- Changes from this to the outside world should be done in `_exit'. */
-#define EXIT_FAILURE 1 /* Failing exit status. */
-#define EXIT_SUCCESS 0 /* Successful exit status. */
-
-
-/* Maximum length of a multibyte character in the current locale. */
-#define MB_CUR_MAX (__ctype_get_mb_cur_max ())
-extern size_t __ctype_get_mb_cur_max (void) __THROW __wur;
-
-
-/* Convert a string to a floating-point number. */
-extern double atof (const char *__nptr)
- __THROW __attribute_pure__ __nonnull ((1)) __wur;
-/* Convert a string to an integer. */
-extern int atoi (const char *__nptr)
- __THROW __attribute_pure__ __nonnull ((1)) __wur;
-/* Convert a string to a long integer. */
-extern long int atol (const char *__nptr)
- __THROW __attribute_pure__ __nonnull ((1)) __wur;
-
-#ifdef __USE_ISOC99
-/* Convert a string to a long long integer. */
-__extension__ extern long long int atoll (const char *__nptr)
- __THROW __attribute_pure__ __nonnull ((1)) __wur;
-#endif
-
-/* Convert a string to a floating-point number. */
-extern double strtod (const char *__restrict __nptr,
- char **__restrict __endptr)
- __THROW __nonnull ((1));
-
-#ifdef __USE_ISOC99
-/* Likewise for `float' and `long double' sizes of floating-point numbers. */
-extern float strtof (const char *__restrict __nptr,
- char **__restrict __endptr) __THROW __nonnull ((1));
-
-extern long double strtold (const char *__restrict __nptr,
- char **__restrict __endptr)
- __THROW __nonnull ((1));
-#endif
-
-/* Convert a string to a long integer. */
-extern long int strtol (const char *__restrict __nptr,
- char **__restrict __endptr, int __base)
- __THROW __nonnull ((1));
-/* Convert a string to an unsigned long integer. */
-extern unsigned long int strtoul (const char *__restrict __nptr,
- char **__restrict __endptr, int __base)
- __THROW __nonnull ((1));
-
-#ifdef __USE_MISC
-/* Convert a string to a quadword integer. */
-__extension__
-extern long long int strtoq (const char *__restrict __nptr,
- char **__restrict __endptr, int __base)
- __THROW __nonnull ((1));
-/* Convert a string to an unsigned quadword integer. */
-__extension__
-extern unsigned long long int strtouq (const char *__restrict __nptr,
- char **__restrict __endptr, int __base)
- __THROW __nonnull ((1));
-#endif /* Use misc. */
-
-#ifdef __USE_ISOC99
-/* Convert a string to a quadword integer. */
-__extension__
-extern long long int strtoll (const char *__restrict __nptr,
- char **__restrict __endptr, int __base)
- __THROW __nonnull ((1));
-/* Convert a string to an unsigned quadword integer. */
-__extension__
-extern unsigned long long int strtoull (const char *__restrict __nptr,
- char **__restrict __endptr, int __base)
- __THROW __nonnull ((1));
-#endif /* ISO C99 or use MISC. */
-
-/* Convert a floating-point number to a string. */
-#if __GLIBC_USE (IEC_60559_BFP_EXT)
-extern int strfromd (char *__dest, size_t __size, const char *__format,
- double __f)
- __THROW __nonnull ((3));
-
-extern int strfromf (char *__dest, size_t __size, const char *__format,
- float __f)
- __THROW __nonnull ((3));
-
-extern int strfroml (char *__dest, size_t __size, const char *__format,
- long double __f)
- __THROW __nonnull ((3));
-#endif
-
-#if __HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)
-extern int strfromf128 (char *__dest, size_t __size, const char * __format,
- _Float128 __f)
- __THROW __nonnull ((3));
-#endif
-
-
-#ifdef __USE_GNU
-/* The concept of one static locale per category is not very well
- thought out. Many applications will need to process its data using
- information from several different locales. Another problem is
- the implementation of the internationalization handling in the
- ISO C++ standard library. To support this another set of
- the functions using locale data exist which take an additional
- argument.
-
- Attention: even though several *_l interfaces are part of POSIX:2008,
- these are not. */
-
-/* Structure for reentrant locale using functions. This is an
- (almost) opaque type for the user level programs. */
-# include <xlocale.h>
-
-/* Special versions of the functions above which take the locale to
- use as an additional parameter. */
-extern long int strtol_l (const char *__restrict __nptr,
- char **__restrict __endptr, int __base,
- __locale_t __loc) __THROW __nonnull ((1, 4));
-
-extern unsigned long int strtoul_l (const char *__restrict __nptr,
- char **__restrict __endptr,
- int __base, __locale_t __loc)
- __THROW __nonnull ((1, 4));
-
-__extension__
-extern long long int strtoll_l (const char *__restrict __nptr,
- char **__restrict __endptr, int __base,
- __locale_t __loc)
- __THROW __nonnull ((1, 4));
-
-__extension__
-extern unsigned long long int strtoull_l (const char *__restrict __nptr,
- char **__restrict __endptr,
- int __base, __locale_t __loc)
- __THROW __nonnull ((1, 4));
-
-extern double strtod_l (const char *__restrict __nptr,
- char **__restrict __endptr, __locale_t __loc)
- __THROW __nonnull ((1, 3));
-
-extern float strtof_l (const char *__restrict __nptr,
- char **__restrict __endptr, __locale_t __loc)
- __THROW __nonnull ((1, 3));
-
-extern long double strtold_l (const char *__restrict __nptr,
- char **__restrict __endptr,
- __locale_t __loc)
- __THROW __nonnull ((1, 3));
-#endif /* GNU */
-
-
-#ifdef __USE_EXTERN_INLINES
-__extern_inline int
-__NTH (atoi (const char *__nptr))
-{
- return (int) strtol (__nptr, (char **) NULL, 10);
-}
-__extern_inline long int
-__NTH (atol (const char *__nptr))
-{
- return strtol (__nptr, (char **) NULL, 10);
-}
-
-# ifdef __USE_ISOC99
-__extension__ __extern_inline long long int
-__NTH (atoll (const char *__nptr))
-{
- return strtoll (__nptr, (char **) NULL, 10);
-}
-# endif
-#endif /* Optimizing and Inlining. */
-
-
-#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
-/* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant
- digit first. Returns a pointer to static storage overwritten by the
- next call. */
-extern char *l64a (long int __n) __THROW __wur;
-
-/* Read a number from a string S in base 64 as above. */
-extern long int a64l (const char *__s)
- __THROW __attribute_pure__ __nonnull ((1)) __wur;
-
-#endif /* Use misc || extended X/Open. */
-
-#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
-# include <sys/types.h> /* we need int32_t... */
-
-/* These are the functions that actually do things. The `random', `srandom',
- `initstate' and `setstate' functions are those from BSD Unices.
- The `rand' and `srand' functions are required by the ANSI standard.
- We provide both interfaces to the same random number generator. */
-/* Return a random long integer between 0 and RAND_MAX inclusive. */
-extern long int random (void) __THROW;
-
-/* Seed the random number generator with the given number. */
-extern void srandom (unsigned int __seed) __THROW;
-
-/* Initialize the random number generator to use state buffer STATEBUF,
- of length STATELEN, and seed it with SEED. Optimal lengths are 8, 16,
- 32, 64, 128 and 256, the bigger the better; values less than 8 will
- cause an error and values greater than 256 will be rounded down. */
-extern char *initstate (unsigned int __seed, char *__statebuf,
- size_t __statelen) __THROW __nonnull ((2));
-
-/* Switch the random number generator to state buffer STATEBUF,
- which should have been previously initialized by `initstate'. */
-extern char *setstate (char *__statebuf) __THROW __nonnull ((1));
-
-
-# ifdef __USE_MISC
-/* Reentrant versions of the `random' family of functions.
- These functions all use the following data structure to contain
- state, rather than global state variables. */
-
-struct random_data
- {
- int32_t *fptr; /* Front pointer. */
- int32_t *rptr; /* Rear pointer. */
- int32_t *state; /* Array of state values. */
- int rand_type; /* Type of random number generator. */
- int rand_deg; /* Degree of random number generator. */
- int rand_sep; /* Distance between front and rear. */
- int32_t *end_ptr; /* Pointer behind state table. */
- };
-
-extern int random_r (struct random_data *__restrict __buf,
- int32_t *__restrict __result) __THROW __nonnull ((1, 2));
-
-extern int srandom_r (unsigned int __seed, struct random_data *__buf)
- __THROW __nonnull ((2));
-
-extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
- size_t __statelen,
- struct random_data *__restrict __buf)
- __THROW __nonnull ((2, 4));
-
-extern int setstate_r (char *__restrict __statebuf,
- struct random_data *__restrict __buf)
- __THROW __nonnull ((1, 2));
-# endif /* Use misc. */
-#endif /* Use extended X/Open || misc. */
-
-
-/* Return a random integer between 0 and RAND_MAX inclusive. */
-extern int rand (void) __THROW;
-/* Seed the random number generator with the given number. */
-extern void srand (unsigned int __seed) __THROW;
-
-#ifdef __USE_POSIX199506
-/* Reentrant interface according to POSIX.1. */
-extern int rand_r (unsigned int *__seed) __THROW;
-#endif
-
-
-#if defined __USE_MISC || defined __USE_XOPEN
-/* System V style 48-bit random number generator functions. */
-
-/* Return non-negative, double-precision floating-point value in [0.0,1.0). */
-extern double drand48 (void) __THROW;
-extern double erand48 (unsigned short int __xsubi[3]) __THROW __nonnull ((1));
-
-/* Return non-negative, long integer in [0,2^31). */
-extern long int lrand48 (void) __THROW;
-extern long int nrand48 (unsigned short int __xsubi[3])
- __THROW __nonnull ((1));
-
-/* Return signed, long integers in [-2^31,2^31). */
-extern long int mrand48 (void) __THROW;
-extern long int jrand48 (unsigned short int __xsubi[3])
- __THROW __nonnull ((1));
-
-/* Seed random number generator. */
-extern void srand48 (long int __seedval) __THROW;
-extern unsigned short int *seed48 (unsigned short int __seed16v[3])
- __THROW __nonnull ((1));
-extern void lcong48 (unsigned short int __param[7]) __THROW __nonnull ((1));
-
-# ifdef __USE_MISC
-/* Data structure for communication with thread safe versions. This
- type is to be regarded as opaque. It's only exported because users
- have to allocate objects of this type. */
-struct drand48_data
- {
- unsigned short int __x[3]; /* Current state. */
- unsigned short int __old_x[3]; /* Old state. */
- unsigned short int __c; /* Additive const. in congruential formula. */
- unsigned short int __init; /* Flag for initializing. */
- __extension__ unsigned long long int __a; /* Factor in congruential
- formula. */
- };
-
-/* Return non-negative, double-precision floating-point value in [0.0,1.0). */
-extern int drand48_r (struct drand48_data *__restrict __buffer,
- double *__restrict __result) __THROW __nonnull ((1, 2));
-extern int erand48_r (unsigned short int __xsubi[3],
- struct drand48_data *__restrict __buffer,
- double *__restrict __result) __THROW __nonnull ((1, 2));
-
-/* Return non-negative, long integer in [0,2^31). */
-extern int lrand48_r (struct drand48_data *__restrict __buffer,
- long int *__restrict __result)
- __THROW __nonnull ((1, 2));
-extern int nrand48_r (unsigned short int __xsubi[3],
- struct drand48_data *__restrict __buffer,
- long int *__restrict __result)
- __THROW __nonnull ((1, 2));
-
-/* Return signed, long integers in [-2^31,2^31). */
-extern int mrand48_r (struct drand48_data *__restrict __buffer,
- long int *__restrict __result)
- __THROW __nonnull ((1, 2));
-extern int jrand48_r (unsigned short int __xsubi[3],
- struct drand48_data *__restrict __buffer,
- long int *__restrict __result)
- __THROW __nonnull ((1, 2));
-
-/* Seed random number generator. */
-extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
- __THROW __nonnull ((2));
-
-extern int seed48_r (unsigned short int __seed16v[3],
- struct drand48_data *__buffer) __THROW __nonnull ((1, 2));
-
-extern int lcong48_r (unsigned short int __param[7],
- struct drand48_data *__buffer)
- __THROW __nonnull ((1, 2));
-# endif /* Use misc. */
-#endif /* Use misc or X/Open. */
-
-/* Allocate SIZE bytes of memory. */
-extern void *malloc (size_t __size) __THROW __attribute_malloc__ __wur;
-/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
-extern void *calloc (size_t __nmemb, size_t __size)
- __THROW __attribute_malloc__ __wur;
-
-/* Re-allocate the previously allocated block
- in PTR, making the new block SIZE bytes long. */
-/* __attribute_malloc__ is not used, because if realloc returns
- the same pointer that was passed to it, aliasing needs to be allowed
- between objects pointed by the old and new pointers. */
-extern void *realloc (void *__ptr, size_t __size)
- __THROW __attribute_warn_unused_result__;
-
-#ifdef __USE_GNU
-/* Re-allocate the previously allocated block in PTR, making the new
- block large enough for NMEMB elements of SIZE bytes each. */
-/* __attribute_malloc__ is not used, because if reallocarray returns
- the same pointer that was passed to it, aliasing needs to be allowed
- between objects pointed by the old and new pointers. */
-extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
- __THROW __attribute_warn_unused_result__;
-#endif
-
-/* Free a block allocated by `malloc', `realloc' or `calloc'. */
-extern void free (void *__ptr) __THROW;
-
-#ifdef __USE_MISC
-# include <alloca.h>
-#endif /* Use misc. */
-
-#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \
- || defined __USE_MISC
-/* Allocate SIZE bytes on a page boundary. The storage cannot be freed. */
-extern void *valloc (size_t __size) __THROW __attribute_malloc__ __wur;
-#endif
-
-#ifdef __USE_XOPEN2K
-/* Allocate memory of SIZE bytes with an alignment of ALIGNMENT. */
-extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
- __THROW __nonnull ((1)) __wur;
-#endif
-
-#ifdef __USE_ISOC11
-/* ISO C variant of aligned allocation. */
-extern void *aligned_alloc (size_t __alignment, size_t __size)
- __THROW __attribute_malloc__ __attribute_alloc_size__ ((2)) __wur;
-#endif
-
-/* Abort execution and generate a core-dump. */
-extern void abort (void) __THROW __attribute__ ((__noreturn__));
-
-
-/* Register a function to be called when `exit' is called. */
-extern int atexit (void (*__func) (void)) __THROW __nonnull ((1));
-
-#if defined __USE_ISOC11 || defined __USE_ISOCXX11
-/* Register a function to be called when `quick_exit' is called. */
-# ifdef __cplusplus
-extern "C++" int at_quick_exit (void (*__func) (void))
- __THROW __asm ("at_quick_exit") __nonnull ((1));
-# else
-extern int at_quick_exit (void (*__func) (void)) __THROW __nonnull ((1));
-# endif
-#endif
-
-#ifdef __USE_MISC
-/* Register a function to be called with the status
- given to `exit' and the given argument. */
-extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
- __THROW __nonnull ((1));
-#endif
-
-/* Call all functions registered with `atexit' and `on_exit',
- in the reverse of the order in which they were registered,
- perform stdio cleanup, and terminate program execution with STATUS. */
-extern void exit (int __status) __THROW __attribute__ ((__noreturn__));
-
-#if defined __USE_ISOC11 || defined __USE_ISOCXX11
-/* Call all functions registered with `at_quick_exit' in the reverse
- of the order in which they were registered and terminate program
- execution with STATUS. */
-extern void quick_exit (int __status) __THROW __attribute__ ((__noreturn__));
-#endif
-
-#ifdef __USE_ISOC99
-/* Terminate the program with STATUS without calling any of the
- functions registered with `atexit' or `on_exit'. */
-extern void _Exit (int __status) __THROW __attribute__ ((__noreturn__));
-#endif
-
-
-/* Return the value of envariable NAME, or NULL if it doesn't exist. */
-extern char *getenv (const char *__name) __THROW __nonnull ((1)) __wur;
-
-#ifdef __USE_GNU
-/* This function is similar to the above but returns NULL if the
- programs is running with SUID or SGID enabled. */
-extern char *secure_getenv (const char *__name)
- __THROW __nonnull ((1)) __wur;
-#endif
-
-#if defined __USE_MISC || defined __USE_XOPEN
-/* The SVID says this is in <stdio.h>, but this seems a better place. */
-/* Put STRING, which is of the form "NAME=VALUE", in the environment.
- If there is no `=', remove NAME from the environment. */
-extern int putenv (char *__string) __THROW __nonnull ((1));
-#endif
-
-#ifdef __USE_XOPEN2K
-/* Set NAME to VALUE in the environment.
- If REPLACE is nonzero, overwrite an existing value. */
-extern int setenv (const char *__name, const char *__value, int __replace)
- __THROW __nonnull ((2));
-
-/* Remove the variable NAME from the environment. */
-extern int unsetenv (const char *__name) __THROW __nonnull ((1));
-#endif
-
-#ifdef __USE_MISC
-/* The `clearenv' was planned to be added to POSIX.1 but probably
- never made it. Nevertheless the POSIX.9 standard (POSIX bindings
- for Fortran 77) requires this function. */
-extern int clearenv (void) __THROW;
-#endif
-
-
-#if defined __USE_MISC \
- || (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8)
-/* Generate a unique temporary file name from TEMPLATE.
- The last six characters of TEMPLATE must be "XXXXXX";
- they are replaced with a string that makes the file name unique.
- Always returns TEMPLATE, it's either a temporary file name or a null
- string if it cannot get a unique file name. */
-extern char *mktemp (char *__template) __THROW __nonnull ((1));
-#endif
-
-#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* Generate a unique temporary file name from TEMPLATE.
- The last six characters of TEMPLATE must be "XXXXXX";
- they are replaced with a string that makes the filename unique.
- Returns a file descriptor open on the file for reading and writing,
- or -1 if it cannot create a uniquely-named file.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-# ifndef __USE_FILE_OFFSET64
-extern int mkstemp (char *__template) __nonnull ((1)) __wur;
-# else
-# ifdef __REDIRECT
-extern int __REDIRECT (mkstemp, (char *__template), mkstemp64)
- __nonnull ((1)) __wur;
-# else
-# define mkstemp mkstemp64
-# endif
-# endif
-# ifdef __USE_LARGEFILE64
-extern int mkstemp64 (char *__template) __nonnull ((1)) __wur;
-# endif
-#endif
-
-#ifdef __USE_MISC
-/* Similar to mkstemp, but the template can have a suffix after the
- XXXXXX. The length of the suffix is specified in the second
- parameter.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-# ifndef __USE_FILE_OFFSET64
-extern int mkstemps (char *__template, int __suffixlen) __nonnull ((1)) __wur;
-# else
-# ifdef __REDIRECT
-extern int __REDIRECT (mkstemps, (char *__template, int __suffixlen),
- mkstemps64) __nonnull ((1)) __wur;
-# else
-# define mkstemps mkstemps64
-# endif
-# endif
-# ifdef __USE_LARGEFILE64
-extern int mkstemps64 (char *__template, int __suffixlen)
- __nonnull ((1)) __wur;
-# endif
-#endif
-
-#ifdef __USE_XOPEN2K8
-/* Create a unique temporary directory from TEMPLATE.
- The last six characters of TEMPLATE must be "XXXXXX";
- they are replaced with a string that makes the directory name unique.
- Returns TEMPLATE, or a null pointer if it cannot get a unique name.
- The directory is created mode 700. */
-extern char *mkdtemp (char *__template) __THROW __nonnull ((1)) __wur;
-#endif
-
-#ifdef __USE_GNU
-/* Generate a unique temporary file name from TEMPLATE similar to
- mkstemp. But allow the caller to pass additional flags which are
- used in the open call to create the file..
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-# ifndef __USE_FILE_OFFSET64
-extern int mkostemp (char *__template, int __flags) __nonnull ((1)) __wur;
-# else
-# ifdef __REDIRECT
-extern int __REDIRECT (mkostemp, (char *__template, int __flags), mkostemp64)
- __nonnull ((1)) __wur;
-# else
-# define mkostemp mkostemp64
-# endif
-# endif
-# ifdef __USE_LARGEFILE64
-extern int mkostemp64 (char *__template, int __flags) __nonnull ((1)) __wur;
-# endif
-
-/* Similar to mkostemp, but the template can have a suffix after the
- XXXXXX. The length of the suffix is specified in the second
- parameter.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-# ifndef __USE_FILE_OFFSET64
-extern int mkostemps (char *__template, int __suffixlen, int __flags)
- __nonnull ((1)) __wur;
-# else
-# ifdef __REDIRECT
-extern int __REDIRECT (mkostemps, (char *__template, int __suffixlen,
- int __flags), mkostemps64)
- __nonnull ((1)) __wur;
-# else
-# define mkostemps mkostemps64
-# endif
-# endif
-# ifdef __USE_LARGEFILE64
-extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
- __nonnull ((1)) __wur;
-# endif
-#endif
-
-
-/* Execute the given line as a shell command.
-
- This function is a cancellation point and therefore not marked with
- __THROW. */
-extern int system (const char *__command) __wur;
-
-
-#ifdef __USE_GNU
-/* Return a malloc'd string containing the canonical absolute name of the
- existing named file. */
-extern char *canonicalize_file_name (const char *__name)
- __THROW __nonnull ((1)) __wur;
-#endif
-
-#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
-/* Return the canonical absolute name of file NAME. If RESOLVED is
- null, the result is malloc'd; otherwise, if the canonical name is
- PATH_MAX chars or more, returns null with `errno' set to
- ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars,
- returns the name in RESOLVED. */
-extern char *realpath (const char *__restrict __name,
- char *__restrict __resolved) __THROW __wur;
-#endif
-
-
-/* Shorthand for type of comparison functions. */
-#ifndef __COMPAR_FN_T
-# define __COMPAR_FN_T
-typedef int (*__compar_fn_t) (const void *, const void *);
-
-# ifdef __USE_GNU
-typedef __compar_fn_t comparison_fn_t;
-# endif
-#endif
-#ifdef __USE_GNU
-typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
-#endif
-
-/* Do a binary search for KEY in BASE, which consists of NMEMB elements
- of SIZE bytes each, using COMPAR to perform the comparisons. */
-extern void *bsearch (const void *__key, const void *__base,
- size_t __nmemb, size_t __size, __compar_fn_t __compar)
- __nonnull ((1, 2, 5)) __wur;
-
-#ifdef __USE_EXTERN_INLINES
-# include <bits/stdlib-bsearch.h>
-#endif
-
-/* Sort NMEMB elements of BASE, of SIZE bytes each,
- using COMPAR to perform the comparisons. */
-extern void qsort (void *__base, size_t __nmemb, size_t __size,
- __compar_fn_t __compar) __nonnull ((1, 4));
-#ifdef __USE_GNU
-extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
- __compar_d_fn_t __compar, void *__arg)
- __nonnull ((1, 4));
-#endif
-
-
-/* Return the absolute value of X. */
-extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur;
-extern long int labs (long int __x) __THROW __attribute__ ((__const__)) __wur;
-
-#ifdef __USE_ISOC99
-__extension__ extern long long int llabs (long long int __x)
- __THROW __attribute__ ((__const__)) __wur;
-#endif
-
-
-/* Return the `div_t', `ldiv_t' or `lldiv_t' representation
- of the value of NUMER over DENOM. */
-/* GCC may have built-ins for these someday. */
-extern div_t div (int __numer, int __denom)
- __THROW __attribute__ ((__const__)) __wur;
-extern ldiv_t ldiv (long int __numer, long int __denom)
- __THROW __attribute__ ((__const__)) __wur;
-
-#ifdef __USE_ISOC99
-__extension__ extern lldiv_t lldiv (long long int __numer,
- long long int __denom)
- __THROW __attribute__ ((__const__)) __wur;
-#endif
-
-
-#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
- || defined __USE_MISC
-/* Convert floating point numbers to strings. The returned values are
- valid only until another call to the same function. */
-
-/* Convert VALUE to a string with NDIGIT digits and return a pointer to
- this. Set *DECPT with the position of the decimal character and *SIGN
- with the sign of the number. */
-extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
- int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur;
-
-/* Convert VALUE to a string rounded to NDIGIT decimal digits. Set *DECPT
- with the position of the decimal character and *SIGN with the sign of
- the number. */
-extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
- int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur;
-
-/* If possible convert VALUE to a string with NDIGIT significant digits.
- Otherwise use exponential representation. The resulting string will
- be written to BUF. */
-extern char *gcvt (double __value, int __ndigit, char *__buf)
- __THROW __nonnull ((3)) __wur;
-#endif
-
-#ifdef __USE_MISC
-/* Long double versions of above functions. */
-extern char *qecvt (long double __value, int __ndigit,
- int *__restrict __decpt, int *__restrict __sign)
- __THROW __nonnull ((3, 4)) __wur;
-extern char *qfcvt (long double __value, int __ndigit,
- int *__restrict __decpt, int *__restrict __sign)
- __THROW __nonnull ((3, 4)) __wur;
-extern char *qgcvt (long double __value, int __ndigit, char *__buf)
- __THROW __nonnull ((3)) __wur;
-
-
-/* Reentrant version of the functions above which provide their own
- buffers. */
-extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
- int *__restrict __sign, char *__restrict __buf,
- size_t __len) __THROW __nonnull ((3, 4, 5));
-extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
- int *__restrict __sign, char *__restrict __buf,
- size_t __len) __THROW __nonnull ((3, 4, 5));
-
-extern int qecvt_r (long double __value, int __ndigit,
- int *__restrict __decpt, int *__restrict __sign,
- char *__restrict __buf, size_t __len)
- __THROW __nonnull ((3, 4, 5));
-extern int qfcvt_r (long double __value, int __ndigit,
- int *__restrict __decpt, int *__restrict __sign,
- char *__restrict __buf, size_t __len)
- __THROW __nonnull ((3, 4, 5));
-#endif /* misc */
-
-
-/* Return the length of the multibyte character
- in S, which is no longer than N. */
-extern int mblen (const char *__s, size_t __n) __THROW;
-/* Return the length of the given multibyte character,
- putting its `wchar_t' representation in *PWC. */
-extern int mbtowc (wchar_t *__restrict __pwc,
- const char *__restrict __s, size_t __n) __THROW;
-/* Put the multibyte character represented
- by WCHAR in S, returning its length. */
-extern int wctomb (char *__s, wchar_t __wchar) __THROW;
-
-
-/* Convert a multibyte string to a wide char string. */
-extern size_t mbstowcs (wchar_t *__restrict __pwcs,
- const char *__restrict __s, size_t __n) __THROW;
-/* Convert a wide char string to multibyte string. */
-extern size_t wcstombs (char *__restrict __s,
- const wchar_t *__restrict __pwcs, size_t __n)
- __THROW;
-
-
-#ifdef __USE_MISC
-/* Determine whether the string value of RESPONSE matches the affirmation
- or negative response expression as specified by the LC_MESSAGES category
- in the program's current locale. Returns 1 if affirmative, 0 if
- negative, and -1 if not matching. */
-extern int rpmatch (const char *__response) __THROW __nonnull ((1)) __wur;
-#endif
-
-
-#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-/* Parse comma separated suboption from *OPTIONP and match against
- strings in TOKENS. If found return index and set *VALUEP to
- optional value introduced by an equal sign. If the suboption is
- not part of TOKENS return in *VALUEP beginning of unknown
- suboption. On exit *OPTIONP is set to the beginning of the next
- token or at the terminating NUL character. */
-extern int getsubopt (char **__restrict __optionp,
- char *const *__restrict __tokens,
- char **__restrict __valuep)
- __THROW __nonnull ((1, 2, 3)) __wur;
-#endif
-
-
-#ifdef __USE_XOPEN
-/* Setup DES tables according KEY. */
-extern void setkey (const char *__key) __THROW __nonnull ((1));
-#endif
-
-
-/* X/Open pseudo terminal handling. */
-
-#ifdef __USE_XOPEN2KXSI
-/* Return a master pseudo-terminal handle. */
-extern int posix_openpt (int __oflag) __wur;
-#endif
-
-#ifdef __USE_XOPEN_EXTENDED
-/* The next four functions all take a master pseudo-tty fd and
- perform an operation on the associated slave: */
-
-/* Chown the slave to the calling user. */
-extern int grantpt (int __fd) __THROW;
-
-/* Release an internal lock so the slave can be opened.
- Call after grantpt(). */
-extern int unlockpt (int __fd) __THROW;
-
-/* Return the pathname of the pseudo terminal slave associated with
- the master FD is open on, or NULL on errors.
- The returned storage is good until the next call to this function. */
-extern char *ptsname (int __fd) __THROW __wur;
-#endif
-
-#ifdef __USE_GNU
-/* Store at most BUFLEN characters of the pathname of the slave pseudo
- terminal associated with the master FD is open on in BUF.
- Return 0 on success, otherwise an error number. */
-extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
- __THROW __nonnull ((2));
-
-/* Open a master pseudo terminal and return its file descriptor. */
-extern int getpt (void);
-#endif
-
-#ifdef __USE_MISC
-/* Put the 1 minute, 5 minute and 15 minute load averages into the first
- NELEM elements of LOADAVG. Return the number written (never more than
- three, but may be less than NELEM), or -1 if an error occurred. */
-extern int getloadavg (double __loadavg[], int __nelem)
- __THROW __nonnull ((1));
-#endif
-
-#if defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K
-/* Return the index into the active-logins file (utmp) for
- the controlling terminal. */
-extern int ttyslot (void) __THROW;
-#endif
-
-#include <bits/stdlib-float.h>
-
-/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
-# include <bits/stdlib.h>
-#endif
-#ifdef __LDBL_COMPAT
-# include <bits/stdlib-ldbl.h>
-#endif
-
-__END_DECLS
-
-#endif /* stdlib.h */
diff --git a/stdlib/strfmon.c b/stdlib/strfmon.c
deleted file mode 100644
index dfaa9e0d9c..0000000000
--- a/stdlib/strfmon.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Formatting a monetary value according to the current locale.
- Copyright (C) 1996-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>
- and Jochen Hein <Jochen.Hein@informatik.TU-Clausthal.de>, 1996.
-
- 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 <monetary.h>
-#include <stdarg.h>
-#include <locale/localeinfo.h>
-#include <math_ldbl_opt.h>
-
-ssize_t
-__strfmon (char *s, size_t maxsize, const char *format, ...)
-{
- va_list ap;
-
- va_start (ap, format);
-
- ssize_t res = __vstrfmon_l (s, maxsize, _NL_CURRENT_LOCALE, format, ap);
-
- va_end (ap);
-
- return res;
-}
-ldbl_strong_alias (__strfmon, strfmon)
diff --git a/stdlib/strfmon_l.c b/stdlib/strfmon_l.c
deleted file mode 100644
index af64173800..0000000000
--- a/stdlib/strfmon_l.c
+++ /dev/null
@@ -1,625 +0,0 @@
-/* Formatting a monetary value according to the given locale.
- Copyright (C) 1996-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
- 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 <errno.h>
-#include <langinfo.h>
-#include <locale.h>
-#include <monetary.h>
-#include "../libio/libioP.h"
-#include "../libio/strfile.h"
-#include <printf.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include "../locale/localeinfo.h"
-
-
-#define out_char(Ch) \
- do { \
- if (dest >= s + maxsize - 1) \
- { \
- __set_errno (E2BIG); \
- va_end (ap); \
- return -1; \
- } \
- *dest++ = (Ch); \
- } while (0)
-
-#define out_string(String) \
- do { \
- const char *_s = (String); \
- while (*_s) \
- out_char (*_s++); \
- } while (0)
-
-#define out_nstring(String, N) \
- do { \
- int _n = (N); \
- const char *_s = (String); \
- while (_n-- > 0) \
- out_char (*_s++); \
- } while (0)
-
-#define to_digit(Ch) ((Ch) - '0')
-
-
-/* We use this code also for the extended locale handling where the
- function gets as an additional argument the locale which has to be
- used. To access the values we have to redefine the _NL_CURRENT
- macro. */
-#undef _NL_CURRENT
-#define _NL_CURRENT(category, item) \
- (current->values[_NL_ITEM_INDEX (item)].string)
-
-/* This function determines the number of digit groups in the output.
- The definition is in printf_fp.c. */
-extern unsigned int __guess_grouping (unsigned int intdig_max,
- const char *grouping, wchar_t sepchar);
-
-
-/* We have to overcome some problems with this implementation. On the
- one hand the strfmon() function is specified in XPG4 and of course
- it has to follow this. But on the other hand POSIX.2 specifies
- some information in the LC_MONETARY category which should be used,
- too. Some of the information contradicts the information which can
- be specified in format string. */
-ssize_t
-__vstrfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format,
- va_list ap)
-{
- struct __locale_data *current = loc->__locales[LC_MONETARY];
- _IO_strfile f;
- struct printf_info info;
- char *dest; /* Pointer so copy the output. */
- const char *fmt; /* Pointer that walks through format. */
-
- dest = s;
- fmt = format;
-
- /* Loop through the format-string. */
- while (*fmt != '\0')
- {
- /* The floating-point value to output. */
- union
- {
- double dbl;
- __long_double_t ldbl;
- }
- fpnum;
- int int_format;
- int print_curr_symbol;
- int left_prec;
- int left_pad;
- int right_prec;
- int group;
- char pad;
- int is_long_double;
- int p_sign_posn;
- int n_sign_posn;
- int sign_posn;
- int other_sign_posn;
- int left;
- int is_negative;
- int sep_by_space;
- int other_sep_by_space;
- int cs_precedes;
- int other_cs_precedes;
- const char *sign_string;
- const char *other_sign_string;
- int done;
- const char *currency_symbol;
- size_t currency_symbol_len;
- long int width;
- char *startp;
- const void *ptr;
- char space_char;
-
- /* Process all character which do not introduce a format
- specification. */
- if (*fmt != '%')
- {
- out_char (*fmt++);
- continue;
- }
-
- /* "%%" means a single '%' character. */
- if (fmt[1] == '%')
- {
- out_char (*++fmt);
- ++fmt;
- continue;
- }
-
- /* Defaults for formatting. */
- int_format = 0; /* Use international curr. symbol */
- print_curr_symbol = 1; /* Print the currency symbol. */
- left_prec = -1; /* No left precision specified. */
- right_prec = -1; /* No right precision specified. */
- group = 1; /* Print digits grouped. */
- pad = ' '; /* Fill character is <SP>. */
- is_long_double = 0; /* Double argument by default. */
- p_sign_posn = -2; /* This indicates whether the */
- n_sign_posn = -2; /* '(' flag is given. */
- width = -1; /* No width specified so far. */
- left = 0; /* Right justified by default. */
-
- /* Parse group characters. */
- while (1)
- {
- switch (*++fmt)
- {
- case '=': /* Set fill character. */
- pad = *++fmt;
- if (pad == '\0')
- {
- /* Premature EOS. */
- __set_errno (EINVAL);
- return -1;
- }
- continue;
- case '^': /* Don't group digits. */
- group = 0;
- continue;
- case '+': /* Use +/- for sign of number. */
- if (n_sign_posn != -2)
- {
- __set_errno (EINVAL);
- return -1;
- }
- p_sign_posn = *_NL_CURRENT (LC_MONETARY, P_SIGN_POSN);
- n_sign_posn = *_NL_CURRENT (LC_MONETARY, N_SIGN_POSN);
- continue;
- case '(': /* Use ( ) for negative sign. */
- if (n_sign_posn != -2)
- {
- __set_errno (EINVAL);
- return -1;
- }
- p_sign_posn = 0;
- n_sign_posn = 0;
- continue;
- case '!': /* Don't print the currency symbol. */
- print_curr_symbol = 0;
- continue;
- case '-': /* Print left justified. */
- left = 1;
- continue;
- default:
- /* Will stop the loop. */;
- }
- break;
- }
-
- if (isdigit (*fmt))
- {
- /* Parse field width. */
- width = to_digit (*fmt);
-
- while (isdigit (*++fmt))
- {
- int val = to_digit (*fmt);
-
- if (width > LONG_MAX / 10
- || (width == LONG_MAX && val > LONG_MAX % 10))
- {
- __set_errno (E2BIG);
- return -1;
- }
-
- width = width * 10 + val;
- }
-
- /* If we don't have enough room for the demanded width we
- can stop now and return an error. */
- if (width >= maxsize - (dest - s))
- {
- __set_errno (E2BIG);
- return -1;
- }
- }
-
- /* Recognize left precision. */
- if (*fmt == '#')
- {
- if (!isdigit (*++fmt))
- {
- __set_errno (EINVAL);
- return -1;
- }
- left_prec = to_digit (*fmt);
-
- while (isdigit (*++fmt))
- {
- left_prec *= 10;
- left_prec += to_digit (*fmt);
- }
- }
-
- /* Recognize right precision. */
- if (*fmt == '.')
- {
- if (!isdigit (*++fmt))
- {
- __set_errno (EINVAL);
- return -1;
- }
- right_prec = to_digit (*fmt);
-
- while (isdigit (*++fmt))
- {
- right_prec *= 10;
- right_prec += to_digit (*fmt);
- }
- }
-
- /* Handle modifier. This is an extension. */
- if (*fmt == 'L')
- {
- ++fmt;
- if (!__ldbl_is_dbl)
- is_long_double = 1;
- }
-
- /* Handle format specifier. */
- char int_symbol[4];
- switch (*fmt++)
- {
- case 'i': { /* Use international currency symbol. */
- const char *int_curr_symbol;
-
- int_curr_symbol = _NL_CURRENT (LC_MONETARY, INT_CURR_SYMBOL);
- strncpy(int_symbol, int_curr_symbol, 3);
- int_symbol[3] = '\0';
-
- currency_symbol_len = 3;
- currency_symbol = &int_symbol[0];
- space_char = int_curr_symbol[3];
- int_format = 1;
- break;
- }
- case 'n': /* Use national currency symbol. */
- currency_symbol = _NL_CURRENT (LC_MONETARY, CURRENCY_SYMBOL);
- currency_symbol_len = strlen (currency_symbol);
- space_char = ' ';
- int_format = 0;
- break;
- default: /* Any unrecognized format is an error. */
- __set_errno (EINVAL);
- return -1;
- }
-
- /* If not specified by the format string now find the values for
- the format specification. */
- if (p_sign_posn == -2)
- p_sign_posn = *_NL_CURRENT (LC_MONETARY, int_format ? INT_P_SIGN_POSN : P_SIGN_POSN);
- if (n_sign_posn == -2)
- n_sign_posn = *_NL_CURRENT (LC_MONETARY, int_format ? INT_N_SIGN_POSN : N_SIGN_POSN);
-
- if (right_prec == -1)
- {
- right_prec = *_NL_CURRENT (LC_MONETARY, int_format ? INT_FRAC_DIGITS : FRAC_DIGITS);
-
- if (right_prec == '\377')
- right_prec = 2;
- }
-
- /* If we have to print the digits grouped determine how many
- extra characters this means. */
- if (group && left_prec != -1)
- left_prec += __guess_grouping (left_prec,
- _NL_CURRENT (LC_MONETARY, MON_GROUPING),
- *_NL_CURRENT (LC_MONETARY,
- MON_THOUSANDS_SEP));
-
- /* Now it's time to get the value. */
- if (is_long_double == 1)
- {
- fpnum.ldbl = va_arg (ap, long double);
- is_negative = fpnum.ldbl < 0;
- if (is_negative)
- fpnum.ldbl = -fpnum.ldbl;
- }
- else
- {
- fpnum.dbl = va_arg (ap, double);
- is_negative = fpnum.dbl < 0;
- if (is_negative)
- fpnum.dbl = -fpnum.dbl;
- }
-
- /* We now know the sign of the value and can determine the format. */
- if (is_negative)
- {
- sign_string = _NL_CURRENT (LC_MONETARY, NEGATIVE_SIGN);
- /* If the locale does not specify a character for the
- negative sign we use a '-'. */
- if (*sign_string == '\0')
- sign_string = (const char *) "-";
- cs_precedes = *_NL_CURRENT (LC_MONETARY, int_format ? INT_N_CS_PRECEDES : N_CS_PRECEDES);
- sep_by_space = *_NL_CURRENT (LC_MONETARY, int_format ? INT_N_SEP_BY_SPACE : N_SEP_BY_SPACE);
- sign_posn = n_sign_posn;
-
- other_sign_string = _NL_CURRENT (LC_MONETARY, POSITIVE_SIGN);
- other_cs_precedes = *_NL_CURRENT (LC_MONETARY, int_format ? INT_P_CS_PRECEDES : P_CS_PRECEDES);
- other_sep_by_space = *_NL_CURRENT (LC_MONETARY, int_format ? INT_P_SEP_BY_SPACE : P_SEP_BY_SPACE);
- other_sign_posn = p_sign_posn;
- }
- else
- {
- sign_string = _NL_CURRENT (LC_MONETARY, POSITIVE_SIGN);
- cs_precedes = *_NL_CURRENT (LC_MONETARY, int_format ? INT_P_CS_PRECEDES : P_CS_PRECEDES);
- sep_by_space = *_NL_CURRENT (LC_MONETARY, int_format ? INT_P_SEP_BY_SPACE : P_SEP_BY_SPACE);
- sign_posn = p_sign_posn;
-
- other_sign_string = _NL_CURRENT (LC_MONETARY, NEGATIVE_SIGN);
- if (*other_sign_string == '\0')
- other_sign_string = (const char *) "-";
- other_cs_precedes = *_NL_CURRENT (LC_MONETARY, int_format ? INT_N_CS_PRECEDES : N_CS_PRECEDES);
- other_sep_by_space = *_NL_CURRENT (LC_MONETARY, int_format ? INT_N_SEP_BY_SPACE : N_SEP_BY_SPACE);
- other_sign_posn = n_sign_posn;
- }
-
- /* Set default values for unspecified information. */
- if (cs_precedes != 0)
- cs_precedes = 1;
- if (other_cs_precedes != 0)
- other_cs_precedes = 1;
- if (sep_by_space == '\377')
- sep_by_space = 0;
- if (other_sep_by_space == '\377')
- other_sep_by_space = 0;
- if (sign_posn == '\377')
- sign_posn = 1;
- if (other_sign_posn == '\377')
- other_sign_posn = 1;
-
- /* Check for degenerate cases */
- if (sep_by_space == 2)
- {
- if (sign_posn == 0 ||
- (sign_posn == 1 && !cs_precedes) ||
- (sign_posn == 2 && cs_precedes))
- /* sign and symbol are not adjacent, so no separator */
- sep_by_space = 0;
- }
- if (other_sep_by_space == 2)
- {
- if (other_sign_posn == 0 ||
- (other_sign_posn == 1 && !other_cs_precedes) ||
- (other_sign_posn == 2 && other_cs_precedes))
- /* sign and symbol are not adjacent, so no separator */
- other_sep_by_space = 0;
- }
-
- /* Set the left precision and padding needed for alignment */
- if (left_prec == -1)
- {
- left_prec = 0;
- left_pad = 0;
- }
- else
- {
- /* Set left_pad to number of spaces needed to align positive
- and negative formats */
-
- int left_bytes = 0;
- int other_left_bytes = 0;
-
- /* Work out number of bytes for currency string and separator
- preceding the value */
- if (cs_precedes)
- {
- left_bytes += currency_symbol_len;
- if (sep_by_space != 0)
- ++left_bytes;
- }
-
- if (other_cs_precedes)
- {
- other_left_bytes += currency_symbol_len;
- if (other_sep_by_space != 0)
- ++other_left_bytes;
- }
-
- /* Work out number of bytes for the sign (or left parenthesis)
- preceding the value */
- if (sign_posn == 0 && is_negative)
- ++left_bytes;
- else if (sign_posn == 1)
- left_bytes += strlen (sign_string);
- else if (cs_precedes && (sign_posn == 3 || sign_posn == 4))
- left_bytes += strlen (sign_string);
-
- if (other_sign_posn == 0 && !is_negative)
- ++other_left_bytes;
- else if (other_sign_posn == 1)
- other_left_bytes += strlen (other_sign_string);
- else if (other_cs_precedes &&
- (other_sign_posn == 3 || other_sign_posn == 4))
- other_left_bytes += strlen (other_sign_string);
-
- /* Compare the number of bytes preceding the value for
- each format, and set the padding accordingly */
- if (other_left_bytes > left_bytes)
- left_pad = other_left_bytes - left_bytes;
- else
- left_pad = 0;
- }
-
- /* Perhaps we'll someday make these things configurable so
- better start using symbolic names now. */
-#define left_paren '('
-#define right_paren ')'
-
- startp = dest; /* Remember start so we can compute length. */
-
- while (left_pad-- > 0)
- out_char (' ');
-
- if (sign_posn == 0 && is_negative)
- out_char (left_paren);
-
- if (cs_precedes)
- {
- if (sign_posn != 0 && sign_posn != 2 && sign_posn != 4
- && sign_posn != 5)
- {
- out_string (sign_string);
- if (sep_by_space == 2)
- out_char (' ');
- }
-
- if (print_curr_symbol)
- out_string (currency_symbol);
-
- if (sign_posn == 4)
- {
- if (print_curr_symbol && sep_by_space == 2)
- out_char (space_char);
- out_string (sign_string);
- if (sep_by_space == 1)
- /* POSIX.2 and SUS are not clear on this case, but C99
- says a space follows the adjacent-symbol-and-sign */
- out_char (' ');
- }
- else
- if (print_curr_symbol && sep_by_space == 1)
- out_char (space_char);
- }
- else
- if (sign_posn != 0 && sign_posn != 2 && sign_posn != 3
- && sign_posn != 4 && sign_posn != 5)
- out_string (sign_string);
-
- /* Print the number. */
-#ifdef _IO_MTSAFE_IO
- f._sbf._f._lock = NULL;
-#endif
- _IO_init_internal (&f._sbf._f, 0);
- _IO_JUMPS (&f._sbf) = &_IO_str_jumps;
- _IO_str_init_static_internal (&f, dest, (s + maxsize) - dest, dest);
- /* We clear the last available byte so we can find out whether
- the numeric representation is too long. */
- s[maxsize - 1] = '\0';
-
- memset (&info, '\0', sizeof (info));
- info.prec = right_prec;
- info.width = left_prec + (right_prec ? (right_prec + 1) : 0);
- info.spec = 'f';
- info.is_long_double = is_long_double;
- info.group = group;
- info.pad = pad;
- info.extra = 1; /* This means use values from LC_MONETARY. */
-
- ptr = &fpnum;
- done = __printf_fp_l (&f._sbf._f, loc, &info, &ptr);
- if (done < 0)
- return -1;
-
- if (s[maxsize - 1] != '\0')
- {
- __set_errno (E2BIG);
- return -1;
- }
-
- dest += done;
-
- if (!cs_precedes)
- {
- if (sign_posn == 3)
- {
- if (sep_by_space == 1)
- out_char (' ');
- out_string (sign_string);
- }
-
- if (print_curr_symbol)
- {
- if ((sign_posn == 3 && sep_by_space == 2)
- || (sign_posn == 4 && sep_by_space == 1)
- || (sign_posn == 2 && sep_by_space == 1)
- || (sign_posn == 1 && sep_by_space == 1)
- || (sign_posn == 0 && sep_by_space == 1))
- out_char (space_char);
- out_nstring (currency_symbol, currency_symbol_len);
- }
-
- if (sign_posn == 4)
- {
- if (sep_by_space == 2)
- out_char (' ');
- out_string (sign_string);
- }
- }
-
- if (sign_posn == 2)
- {
- if (sep_by_space == 2)
- out_char (' ');
- out_string (sign_string);
- }
-
- if (sign_posn == 0 && is_negative)
- out_char (right_paren);
-
- /* Now test whether the output width is filled. */
- if (dest - startp < width)
- {
- if (left)
- /* We simply have to fill using spaces. */
- do
- out_char (' ');
- while (dest - startp < width);
- else
- {
- long int dist = width - (dest - startp);
- for (char *cp = dest - 1; cp >= startp; --cp)
- cp[dist] = cp[0];
-
- dest += dist;
-
- do
- startp[--dist] = ' ';
- while (dist > 0);
- }
- }
- }
-
- /* Terminate the string. */
- *dest = '\0';
-
- return dest - s;
-}
-
-ssize_t
-___strfmon_l (char *s, size_t maxsize, __locale_t loc, const char *format, ...)
-{
- va_list ap;
-
- va_start (ap, format);
-
- ssize_t res = __vstrfmon_l (s, maxsize, loc, format, ap);
-
- va_end (ap);
-
- return res;
-}
-ldbl_strong_alias (___strfmon_l, __strfmon_l)
-ldbl_weak_alias (___strfmon_l, strfmon_l)
diff --git a/stdlib/strfrom-skeleton.c b/stdlib/strfrom-skeleton.c
deleted file mode 100644
index 5841919fe4..0000000000
--- a/stdlib/strfrom-skeleton.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/* Convert a floating-point number to string.
- Copyright (C) 2016-2017 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/>. */
-
-/* Generic implementation for strfrom functions. The implementation is generic
- for several floating-point types (e.g.: float, double), so that each
- function, such as strfromf and strfroml, share the same code, thus avoiding
- code duplication. */
-
-#include <ctype.h>
-#include "../libio/libioP.h"
-#include "../libio/strfile.h"
-#include <printf.h>
-#include <string.h>
-#include <locale/localeinfo.h>
-
-#define UCHAR_T char
-#define L_(Str) Str
-#define ISDIGIT(Ch) isdigit (Ch)
-#include "stdio-common/printf-parse.h"
-
-int
-STRFROM (char *dest, size_t size, const char *format, FLOAT f)
-{
- _IO_strnfile sfile;
-#ifdef _IO_MTSAFE_IO
- sfile.f._sbf._f._lock = NULL;
-#endif
-
- int done;
-
- /* Single-precision values need to be stored in a double type, because
- __printf_fp_l and __printf_fphex do not accept the float type. */
- union {
- double flt;
- FLOAT value;
- } fpnum;
- const void *fpptr;
- fpptr = &fpnum;
-
- /* Variables to control the output format. */
- int precision = -1; /* printf_fp and printf_fphex treat this internally. */
- int specifier;
- struct printf_info info;
-
- /* Single-precision values need to be converted into double-precision,
- because __printf_fp and __printf_fphex only accept double and long double
- as the floating-point argument. */
- if (__builtin_types_compatible_p (FLOAT, float))
- fpnum.flt = f;
- else
- fpnum.value = f;
-
- /* Check if the first character in the format string is indeed the '%'
- character. Otherwise, abort. */
- if (*format == '%')
- format++;
- else
- abort ();
-
- /* The optional precision specification always starts with a '.'. If such
- character is present, read the precision. */
- if (*format == '.')
- {
- format++;
-
- /* Parse the precision. */
- if (ISDIGIT (*format))
- precision = read_int (&format);
- /* If only the period is specified, the precision is taken as zero, as
- described in ISO/IEC 9899:2011, section 7.21.6.1, 4th paragraph, 3rd
- item. */
- else
- precision = 0;
- }
-
- /* Now there is only the conversion specifier to be read. */
- switch (*format)
- {
- case 'a':
- case 'A':
- case 'e':
- case 'E':
- case 'f':
- case 'F':
- case 'g':
- case 'G':
- specifier = *format;
- break;
- default:
- abort ();
- }
-
- /* The following code to prepare the virtual file has been adapted from the
- function _IO_vsnprintf from libio. */
-
- if (size == 0)
- {
- /* When size is zero, nothing is written and dest may be a null pointer.
- This is specified for snprintf in ISO/IEC 9899:2011, Section 7.21.6.5,
- in the second paragraph. Thus, if size is zero, prepare to use the
- overflow buffer right from the start. */
- dest = sfile.overflow_buf;
- size = sizeof (sfile.overflow_buf);
- }
-
- /* Prepare the virtual string file. */
- _IO_no_init (&sfile.f._sbf._f, _IO_USER_LOCK, -1, NULL, NULL);
- _IO_JUMPS (&sfile.f._sbf) = &_IO_strn_jumps;
- _IO_str_init_static_internal (&sfile.f, dest, size - 1, dest);
-
- /* Prepare the format specification for printf_fp. */
- memset (&info, '\0', sizeof (info));
-
- /* The functions strfromd and strfromf pass a floating-point number with
- double precision to printf_fp, whereas strfroml passes a floating-point
- number with long double precision. The following line informs printf_fp
- which type of floating-point number is being passed. */
- info.is_long_double = __builtin_types_compatible_p (FLOAT, long double);
-
- /* Similarly, the function strfromf128 passes a floating-point number in
- _Float128 format to printf_fp. */
-#if __HAVE_DISTINCT_FLOAT128
- info.is_binary128 = __builtin_types_compatible_p (FLOAT, _Float128);
-#endif
-
- /* Set info according to the format string. */
- info.prec = precision;
- info.spec = specifier;
-
- if (info.spec != 'a' && info.spec != 'A')
- done = __printf_fp_l (&sfile.f._sbf._f, _NL_CURRENT_LOCALE, &info, &fpptr);
- else
- done = __printf_fphex (&sfile.f._sbf._f, &info, &fpptr);
-
- /* Terminate the string. */
- if (sfile.f._sbf._f._IO_buf_base != sfile.overflow_buf)
- *sfile.f._sbf._f._IO_write_ptr = '\0';
-
- return done;
-}
diff --git a/stdlib/strfromd.c b/stdlib/strfromd.c
deleted file mode 100644
index 5342059008..0000000000
--- a/stdlib/strfromd.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Definitions for strfromd. Implementation in stdlib/strfrom-skeleton.c.
- Copyright (C) 2016-2017 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 FLOAT double
-#define STRFROM strfromd
-
-#include "strfrom-skeleton.c"
diff --git a/stdlib/strfromf.c b/stdlib/strfromf.c
deleted file mode 100644
index 20c674414d..0000000000
--- a/stdlib/strfromf.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Definitions for strfromf. Implementation in stdlib/strfrom-skeleton.c.
- Copyright (C) 2016-2017 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 FLOAT float
-#define STRFROM strfromf
-
-#include "strfrom-skeleton.c"
diff --git a/stdlib/strfroml.c b/stdlib/strfroml.c
deleted file mode 100644
index f8c8a4fcc5..0000000000
--- a/stdlib/strfroml.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Definitions for strfroml. Implementation in stdlib/strfrom-skeleton.c.
- Copyright (C) 2016-2017 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 FLOAT long double
-#define STRFROM strfroml
-
-#include "strfrom-skeleton.c"
diff --git a/stdlib/strtod.c b/stdlib/strtod.c
deleted file mode 100644
index 2ac1b2e57a..0000000000
--- a/stdlib/strtod.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Read decimal floating point numbers.
- This file is part of the GNU C Library.
- Copyright (C) 1995-2017 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.org>, 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/>. */
-
-#include <stdlib.h>
-#include <wchar.h>
-#include <locale/localeinfo.h>
-
-
-#ifndef FLOAT
-# include <math_ldbl_opt.h>
-# define FLOAT double
-# ifdef USE_WIDE_CHAR
-# define STRTOF wcstod
-# define STRTOF_L __wcstod_l
-# else
-# define STRTOF strtod
-# define STRTOF_L __strtod_l
-# endif
-#endif
-
-#ifdef USE_WIDE_CHAR
-# include <wctype.h>
-# define STRING_TYPE wchar_t
-#else
-# define STRING_TYPE char
-#endif
-
-#define INTERNAL(x) INTERNAL1(x)
-#define INTERNAL1(x) __##x##_internal
-
-
-FLOAT
-INTERNAL (STRTOF) (const STRING_TYPE *nptr, STRING_TYPE **endptr, int group)
-{
- return INTERNAL(STRTOF_L) (nptr, endptr, group, _NL_CURRENT_LOCALE);
-}
-#if defined _LIBC
-libc_hidden_def (INTERNAL (STRTOF))
-#endif
-
-
-FLOAT
-#ifdef weak_function
-weak_function
-#endif
-STRTOF (const STRING_TYPE *nptr, STRING_TYPE **endptr)
-{
- return INTERNAL(STRTOF_L) (nptr, endptr, 0, _NL_CURRENT_LOCALE);
-}
-#if defined _LIBC
-libc_hidden_def (STRTOF)
-#endif
-
-#ifdef LONG_DOUBLE_COMPAT
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
-# ifdef USE_WIDE_CHAR
-compat_symbol (libc, wcstod, wcstold, GLIBC_2_0);
-compat_symbol (libc, __wcstod_internal, __wcstold_internal, GLIBC_2_0);
-# else
-compat_symbol (libc, strtod, strtold, GLIBC_2_0);
-compat_symbol (libc, __strtod_internal, __strtold_internal, GLIBC_2_0);
-# endif
-# endif
-#endif
diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c
deleted file mode 100644
index 99c2af357e..0000000000
--- a/stdlib/strtod_l.c
+++ /dev/null
@@ -1,1787 +0,0 @@
-/* Convert string representing a number to float value, using given locale.
- Copyright (C) 1997-2017 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 <xlocale.h>
-
-extern double ____strtod_l_internal (const char *, char **, int, __locale_t);
-
-/* Configuration part. These macros are defined by `strtold.c',
- `strtof.c', `wcstod.c', `wcstold.c', and `wcstof.c' to produce the
- `long double' and `float' versions of the reader. */
-#ifndef FLOAT
-# include <math_ldbl_opt.h>
-# define FLOAT double
-# define FLT DBL
-# ifdef USE_WIDE_CHAR
-# define STRTOF wcstod_l
-# define __STRTOF __wcstod_l
-# define STRTOF_NAN __wcstod_nan
-# else
-# define STRTOF strtod_l
-# define __STRTOF __strtod_l
-# define STRTOF_NAN __strtod_nan
-# endif
-# define MPN2FLOAT __mpn_construct_double
-# define FLOAT_HUGE_VAL HUGE_VAL
-#endif
-/* End of configuration part. */
-
-#include <ctype.h>
-#include <errno.h>
-#include <float.h>
-#include "../locale/localeinfo.h"
-#include <locale.h>
-#include <math.h>
-#include <math_private.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h>
-#include <rounding-mode.h>
-#include <tininess.h>
-
-/* The gmp headers need some configuration frobs. */
-#define HAVE_ALLOCA 1
-
-/* Include gmp-mparam.h first, such that definitions of _SHORT_LIMB
- and _LONG_LONG_LIMB in it can take effect into gmp.h. */
-#include <gmp-mparam.h>
-#include <gmp.h>
-#include "gmp-impl.h"
-#include "longlong.h"
-#include "fpioconst.h"
-
-#include <assert.h>
-
-
-/* We use this code for the extended locale handling where the
- function gets as an additional argument the locale which has to be
- used. To access the values we have to redefine the _NL_CURRENT and
- _NL_CURRENT_WORD macros. */
-#undef _NL_CURRENT
-#define _NL_CURRENT(category, item) \
- (current->values[_NL_ITEM_INDEX (item)].string)
-#undef _NL_CURRENT_WORD
-#define _NL_CURRENT_WORD(category, item) \
- ((uint32_t) current->values[_NL_ITEM_INDEX (item)].word)
-
-#if defined _LIBC || defined HAVE_WCHAR_H
-# include <wchar.h>
-#endif
-
-#ifdef USE_WIDE_CHAR
-# include <wctype.h>
-# define STRING_TYPE wchar_t
-# define CHAR_TYPE wint_t
-# define L_(Ch) L##Ch
-# define ISSPACE(Ch) __iswspace_l ((Ch), loc)
-# define ISDIGIT(Ch) __iswdigit_l ((Ch), loc)
-# define ISXDIGIT(Ch) __iswxdigit_l ((Ch), loc)
-# define TOLOWER(Ch) __towlower_l ((Ch), loc)
-# define TOLOWER_C(Ch) __towlower_l ((Ch), _nl_C_locobj_ptr)
-# define STRNCASECMP(S1, S2, N) \
- __wcsncasecmp_l ((S1), (S2), (N), _nl_C_locobj_ptr)
-#else
-# define STRING_TYPE char
-# define CHAR_TYPE char
-# define L_(Ch) Ch
-# 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 ((Ch), loc)
-# define TOLOWER_C(Ch) __tolower_l ((Ch), _nl_C_locobj_ptr)
-# define STRNCASECMP(S1, S2, N) \
- __strncasecmp_l ((S1), (S2), (N), _nl_C_locobj_ptr)
-#endif
-
-
-/* Constants we need from float.h; select the set for the FLOAT precision. */
-#define MANT_DIG PASTE(FLT,_MANT_DIG)
-#define DIG PASTE(FLT,_DIG)
-#define MAX_EXP PASTE(FLT,_MAX_EXP)
-#define MIN_EXP PASTE(FLT,_MIN_EXP)
-#define MAX_10_EXP PASTE(FLT,_MAX_10_EXP)
-#define MIN_10_EXP PASTE(FLT,_MIN_10_EXP)
-#define MAX_VALUE PASTE(FLT,_MAX)
-#define MIN_VALUE PASTE(FLT,_MIN)
-
-/* Extra macros required to get FLT expanded before the pasting. */
-#define PASTE(a,b) PASTE1(a,b)
-#define PASTE1(a,b) a##b
-
-/* Function to construct a floating point number from an MP integer
- containing the fraction bits, a base 2 exponent, and a sign flag. */
-extern FLOAT MPN2FLOAT (mp_srcptr mpn, int exponent, int negative);
-
-/* Definitions according to limb size used. */
-#if BITS_PER_MP_LIMB == 32
-# define MAX_DIG_PER_LIMB 9
-# define MAX_FAC_PER_LIMB 1000000000UL
-#elif BITS_PER_MP_LIMB == 64
-# define MAX_DIG_PER_LIMB 19
-# define MAX_FAC_PER_LIMB 10000000000000000000ULL
-#else
-# error "mp_limb_t size " BITS_PER_MP_LIMB "not accounted for"
-#endif
-
-extern const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1];
-
-#ifndef howmany
-#define howmany(x,y) (((x)+((y)-1))/(y))
-#endif
-#define SWAP(x, y) ({ typeof(x) _tmp = x; x = y; y = _tmp; })
-
-#define RETURN_LIMB_SIZE howmany (MANT_DIG, BITS_PER_MP_LIMB)
-
-#define RETURN(val,end) \
- do { if (endptr != NULL) *endptr = (STRING_TYPE *) (end); \
- return val; } while (0)
-
-/* Maximum size necessary for mpn integers to hold floating point
- numbers. The largest number we need to hold is 10^n where 2^-n is
- 1/4 ulp of the smallest representable value (that is, n = MANT_DIG
- - MIN_EXP + 2). Approximate using 10^3 < 2^10. */
-#define MPNSIZE (howmany (1 + ((MANT_DIG - MIN_EXP + 2) * 10) / 3, \
- BITS_PER_MP_LIMB) + 2)
-/* Declare an mpn integer variable that big. */
-#define MPN_VAR(name) mp_limb_t name[MPNSIZE]; mp_size_t name##size
-/* Copy an mpn integer value. */
-#define MPN_ASSIGN(dst, src) \
- memcpy (dst, src, (dst##size = src##size) * sizeof (mp_limb_t))
-
-
-/* Set errno and return an overflowing value with sign specified by
- NEGATIVE. */
-static FLOAT
-overflow_value (int negative)
-{
- __set_errno (ERANGE);
- FLOAT result = math_narrow_eval ((negative ? -MAX_VALUE : MAX_VALUE)
- * MAX_VALUE);
- return result;
-}
-
-
-/* Set errno and return an underflowing value with sign specified by
- NEGATIVE. */
-static FLOAT
-underflow_value (int negative)
-{
- __set_errno (ERANGE);
- FLOAT result = math_narrow_eval ((negative ? -MIN_VALUE : MIN_VALUE)
- * MIN_VALUE);
- return result;
-}
-
-
-/* Return a floating point number of the needed type according to the given
- multi-precision number after possible rounding. */
-static FLOAT
-round_and_return (mp_limb_t *retval, intmax_t exponent, int negative,
- mp_limb_t round_limb, mp_size_t round_bit, int more_bits)
-{
- int mode = get_rounding_mode ();
-
- if (exponent < MIN_EXP - 1)
- {
- if (exponent < MIN_EXP - 1 - MANT_DIG)
- return underflow_value (negative);
-
- mp_size_t shift = MIN_EXP - 1 - exponent;
- bool is_tiny = true;
-
- more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0;
- if (shift == MANT_DIG)
- /* This is a special case to handle the very seldom case where
- the mantissa will be empty after the shift. */
- {
- int i;
-
- round_limb = retval[RETURN_LIMB_SIZE - 1];
- round_bit = (MANT_DIG - 1) % BITS_PER_MP_LIMB;
- for (i = 0; i < RETURN_LIMB_SIZE - 1; ++i)
- more_bits |= retval[i] != 0;
- MPN_ZERO (retval, RETURN_LIMB_SIZE);
- }
- else if (shift >= BITS_PER_MP_LIMB)
- {
- int i;
-
- round_limb = retval[(shift - 1) / BITS_PER_MP_LIMB];
- round_bit = (shift - 1) % BITS_PER_MP_LIMB;
- for (i = 0; i < (shift - 1) / BITS_PER_MP_LIMB; ++i)
- more_bits |= retval[i] != 0;
- more_bits |= ((round_limb & ((((mp_limb_t) 1) << round_bit) - 1))
- != 0);
-
- /* __mpn_rshift requires 0 < shift < BITS_PER_MP_LIMB. */
- if ((shift % BITS_PER_MP_LIMB) != 0)
- (void) __mpn_rshift (retval, &retval[shift / BITS_PER_MP_LIMB],
- RETURN_LIMB_SIZE - (shift / BITS_PER_MP_LIMB),
- shift % BITS_PER_MP_LIMB);
- else
- for (i = 0; i < RETURN_LIMB_SIZE - (shift / BITS_PER_MP_LIMB); i++)
- retval[i] = retval[i + (shift / BITS_PER_MP_LIMB)];
- MPN_ZERO (&retval[RETURN_LIMB_SIZE - (shift / BITS_PER_MP_LIMB)],
- shift / BITS_PER_MP_LIMB);
- }
- else if (shift > 0)
- {
- if (TININESS_AFTER_ROUNDING && shift == 1)
- {
- /* Whether the result counts as tiny depends on whether,
- after rounding to the normal precision, it still has
- a subnormal exponent. */
- mp_limb_t retval_normal[RETURN_LIMB_SIZE];
- if (round_away (negative,
- (retval[0] & 1) != 0,
- (round_limb
- & (((mp_limb_t) 1) << round_bit)) != 0,
- (more_bits
- || ((round_limb
- & ((((mp_limb_t) 1) << round_bit) - 1))
- != 0)),
- mode))
- {
- mp_limb_t cy = __mpn_add_1 (retval_normal, retval,
- RETURN_LIMB_SIZE, 1);
-
- if (((MANT_DIG % BITS_PER_MP_LIMB) == 0 && cy) ||
- ((MANT_DIG % BITS_PER_MP_LIMB) != 0 &&
- ((retval_normal[RETURN_LIMB_SIZE - 1]
- & (((mp_limb_t) 1) << (MANT_DIG % BITS_PER_MP_LIMB)))
- != 0)))
- is_tiny = false;
- }
- }
- round_limb = retval[0];
- round_bit = shift - 1;
- (void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, shift);
- }
- /* This is a hook for the m68k long double format, where the
- exponent bias is the same for normalized and denormalized
- numbers. */
-#ifndef DENORM_EXP
-# define DENORM_EXP (MIN_EXP - 2)
-#endif
- exponent = DENORM_EXP;
- if (is_tiny
- && ((round_limb & (((mp_limb_t) 1) << round_bit)) != 0
- || more_bits
- || (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0))
- {
- __set_errno (ERANGE);
- FLOAT force_underflow = MIN_VALUE * MIN_VALUE;
- math_force_eval (force_underflow);
- }
- }
-
- if (exponent > MAX_EXP)
- goto overflow;
-
- bool half_bit = (round_limb & (((mp_limb_t) 1) << round_bit)) != 0;
- bool more_bits_nonzero
- = (more_bits
- || (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0);
- if (round_away (negative,
- (retval[0] & 1) != 0,
- half_bit,
- more_bits_nonzero,
- mode))
- {
- mp_limb_t cy = __mpn_add_1 (retval, retval, RETURN_LIMB_SIZE, 1);
-
- if (((MANT_DIG % BITS_PER_MP_LIMB) == 0 && cy) ||
- ((MANT_DIG % BITS_PER_MP_LIMB) != 0 &&
- (retval[RETURN_LIMB_SIZE - 1]
- & (((mp_limb_t) 1) << (MANT_DIG % BITS_PER_MP_LIMB))) != 0))
- {
- ++exponent;
- (void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, 1);
- retval[RETURN_LIMB_SIZE - 1]
- |= ((mp_limb_t) 1) << ((MANT_DIG - 1) % BITS_PER_MP_LIMB);
- }
- else if (exponent == DENORM_EXP
- && (retval[RETURN_LIMB_SIZE - 1]
- & (((mp_limb_t) 1) << ((MANT_DIG - 1) % BITS_PER_MP_LIMB)))
- != 0)
- /* The number was denormalized but now normalized. */
- exponent = MIN_EXP - 1;
- }
-
- if (exponent > MAX_EXP)
- overflow:
- return overflow_value (negative);
-
- if (half_bit || more_bits_nonzero)
- {
- FLOAT force_inexact = (FLOAT) 1 + MIN_VALUE;
- math_force_eval (force_inexact);
- }
- return MPN2FLOAT (retval, exponent, negative);
-}
-
-
-/* Read a multi-precision integer starting at STR with exactly DIGCNT digits
- into N. Return the size of the number limbs in NSIZE at the first
- character od the string that is not part of the integer as the function
- value. If the EXPONENT is small enough to be taken as an additional
- factor for the resulting number (see code) multiply by it. */
-static const STRING_TYPE *
-str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,
- intmax_t *exponent
-#ifndef USE_WIDE_CHAR
- , const char *decimal, size_t decimal_len, const char *thousands
-#endif
-
- )
-{
- /* Number of digits for actual limb. */
- int cnt = 0;
- mp_limb_t low = 0;
- mp_limb_t start;
-
- *nsize = 0;
- assert (digcnt > 0);
- do
- {
- if (cnt == MAX_DIG_PER_LIMB)
- {
- if (*nsize == 0)
- {
- n[0] = low;
- *nsize = 1;
- }
- else
- {
- mp_limb_t cy;
- cy = __mpn_mul_1 (n, n, *nsize, MAX_FAC_PER_LIMB);
- cy += __mpn_add_1 (n, n, *nsize, low);
- if (cy != 0)
- {
- assert (*nsize < MPNSIZE);
- n[*nsize] = cy;
- ++(*nsize);
- }
- }
- cnt = 0;
- low = 0;
- }
-
- /* There might be thousands separators or radix characters in
- the string. But these all can be ignored because we know the
- format of the number is correct and we have an exact number
- of characters to read. */
-#ifdef USE_WIDE_CHAR
- if (*str < L'0' || *str > L'9')
- ++str;
-#else
- if (*str < '0' || *str > '9')
- {
- int inner = 0;
- if (thousands != NULL && *str == *thousands
- && ({ for (inner = 1; thousands[inner] != '\0'; ++inner)
- if (thousands[inner] != str[inner])
- break;
- thousands[inner] == '\0'; }))
- str += inner;
- else
- str += decimal_len;
- }
-#endif
- low = low * 10 + *str++ - L_('0');
- ++cnt;
- }
- while (--digcnt > 0);
-
- if (*exponent > 0 && *exponent <= MAX_DIG_PER_LIMB - cnt)
- {
- low *= _tens_in_limb[*exponent];
- start = _tens_in_limb[cnt + *exponent];
- *exponent = 0;
- }
- else
- start = _tens_in_limb[cnt];
-
- if (*nsize == 0)
- {
- n[0] = low;
- *nsize = 1;
- }
- else
- {
- mp_limb_t cy;
- cy = __mpn_mul_1 (n, n, *nsize, start);
- cy += __mpn_add_1 (n, n, *nsize, low);
- if (cy != 0)
- {
- assert (*nsize < MPNSIZE);
- n[(*nsize)++] = cy;
- }
- }
-
- return str;
-}
-
-
-/* Shift {PTR, SIZE} COUNT bits to the left, and fill the vacated bits
- with the COUNT most significant bits of LIMB.
-
- Implemented as a macro, so that __builtin_constant_p works even at -O0.
-
- Tege doesn't like this macro so I have to write it here myself. :)
- --drepper */
-#define __mpn_lshift_1(ptr, size, count, limb) \
- do \
- { \
- mp_limb_t *__ptr = (ptr); \
- if (__builtin_constant_p (count) && count == BITS_PER_MP_LIMB) \
- { \
- mp_size_t i; \
- for (i = (size) - 1; i > 0; --i) \
- __ptr[i] = __ptr[i - 1]; \
- __ptr[0] = (limb); \
- } \
- else \
- { \
- /* We assume count > 0 && count < BITS_PER_MP_LIMB here. */ \
- unsigned int __count = (count); \
- (void) __mpn_lshift (__ptr, __ptr, size, __count); \
- __ptr[0] |= (limb) >> (BITS_PER_MP_LIMB - __count); \
- } \
- } \
- while (0)
-
-
-#define INTERNAL(x) INTERNAL1(x)
-#define INTERNAL1(x) __##x##_internal
-#ifndef ____STRTOF_INTERNAL
-# define ____STRTOF_INTERNAL INTERNAL (__STRTOF)
-#endif
-
-/* This file defines a function to check for correct grouping. */
-#include "grouping.h"
-
-
-/* Return a floating point number with the value of the given string NPTR.
- Set *ENDPTR to the character after the last used one. If the number is
- smaller than the smallest representable number, set `errno' to ERANGE and
- return 0.0. If the number is too big to be represented, set `errno' to
- ERANGE and return HUGE_VAL with the appropriate sign. */
-FLOAT
-____STRTOF_INTERNAL (const STRING_TYPE *nptr, STRING_TYPE **endptr, int group,
- __locale_t loc)
-{
- int negative; /* The sign of the number. */
- MPN_VAR (num); /* MP representation of the number. */
- intmax_t exponent; /* Exponent of the number. */
-
- /* Numbers starting `0X' or `0x' have to be processed with base 16. */
- int base = 10;
-
- /* When we have to compute fractional digits we form a fraction with a
- second multi-precision number (and we sometimes need a second for
- temporary results). */
- MPN_VAR (den);
-
- /* Representation for the return value. */
- mp_limb_t retval[RETURN_LIMB_SIZE];
- /* Number of bits currently in result value. */
- int bits;
-
- /* Running pointer after the last character processed in the string. */
- const STRING_TYPE *cp, *tp;
- /* Start of significant part of the number. */
- const STRING_TYPE *startp, *start_of_digits;
- /* Points at the character following the integer and fractional digits. */
- const STRING_TYPE *expp;
- /* Total number of digit and number of digits in integer part. */
- size_t dig_no, int_no, lead_zero;
- /* Contains the last character read. */
- CHAR_TYPE c;
-
-/* We should get wint_t from <stddef.h>, but not all GCC versions define it
- there. So define it ourselves if it remains undefined. */
-#ifndef _WINT_T
- typedef unsigned int wint_t;
-#endif
- /* The radix character of the current locale. */
-#ifdef USE_WIDE_CHAR
- wchar_t decimal;
-#else
- const char *decimal;
- size_t decimal_len;
-#endif
- /* The thousands character of the current locale. */
-#ifdef USE_WIDE_CHAR
- wchar_t thousands = L'\0';
-#else
- const char *thousands = NULL;
-#endif
- /* The numeric grouping specification of the current locale,
- in the format described in <locale.h>. */
- const char *grouping;
- /* Used in several places. */
- int cnt;
-
- struct __locale_data *current = loc->__locales[LC_NUMERIC];
-
- if (__glibc_unlikely (group))
- {
- grouping = _NL_CURRENT (LC_NUMERIC, GROUPING);
- if (*grouping <= 0 || *grouping == CHAR_MAX)
- grouping = NULL;
- else
- {
- /* Figure out the thousands separator character. */
-#ifdef USE_WIDE_CHAR
- thousands = _NL_CURRENT_WORD (LC_NUMERIC,
- _NL_NUMERIC_THOUSANDS_SEP_WC);
- if (thousands == L'\0')
- grouping = NULL;
-#else
- thousands = _NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP);
- if (*thousands == '\0')
- {
- thousands = NULL;
- grouping = NULL;
- }
-#endif
- }
- }
- else
- grouping = NULL;
-
- /* Find the locale's decimal point character. */
-#ifdef USE_WIDE_CHAR
- decimal = _NL_CURRENT_WORD (LC_NUMERIC, _NL_NUMERIC_DECIMAL_POINT_WC);
- assert (decimal != L'\0');
-# define decimal_len 1
-#else
- decimal = _NL_CURRENT (LC_NUMERIC, DECIMAL_POINT);
- decimal_len = strlen (decimal);
- assert (decimal_len > 0);
-#endif
-
- /* Prepare number representation. */
- exponent = 0;
- negative = 0;
- bits = 0;
-
- /* Parse string to get maximal legal prefix. We need the number of
- characters of the integer part, the fractional part and the exponent. */
- cp = nptr - 1;
- /* Ignore leading white space. */
- do
- c = *++cp;
- while (ISSPACE (c));
-
- /* Get sign of the result. */
- if (c == L_('-'))
- {
- negative = 1;
- c = *++cp;
- }
- else if (c == L_('+'))
- c = *++cp;
-
- /* Return 0.0 if no legal string is found.
- No character is used even if a sign was found. */
-#ifdef USE_WIDE_CHAR
- if (c == (wint_t) decimal
- && (wint_t) cp[1] >= L'0' && (wint_t) cp[1] <= L'9')
- {
- /* We accept it. This funny construct is here only to indent
- the code correctly. */
- }
-#else
- for (cnt = 0; decimal[cnt] != '\0'; ++cnt)
- if (cp[cnt] != decimal[cnt])
- break;
- if (decimal[cnt] == '\0' && cp[cnt] >= '0' && cp[cnt] <= '9')
- {
- /* We accept it. This funny construct is here only to indent
- the code correctly. */
- }
-#endif
- else if (c < L_('0') || c > L_('9'))
- {
- /* Check for `INF' or `INFINITY'. */
- CHAR_TYPE lowc = TOLOWER_C (c);
-
- if (lowc == L_('i') && STRNCASECMP (cp, L_("inf"), 3) == 0)
- {
- /* Return +/- infinity. */
- if (endptr != NULL)
- *endptr = (STRING_TYPE *)
- (cp + (STRNCASECMP (cp + 3, L_("inity"), 5) == 0
- ? 8 : 3));
-
- return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL;
- }
-
- if (lowc == L_('n') && STRNCASECMP (cp, L_("nan"), 3) == 0)
- {
- /* Return NaN. */
- FLOAT retval = NAN;
-
- cp += 3;
-
- /* Match `(n-char-sequence-digit)'. */
- if (*cp == L_('('))
- {
- const STRING_TYPE *startp = cp;
- STRING_TYPE *endp;
- retval = STRTOF_NAN (cp + 1, &endp, L_(')'));
- if (*endp == L_(')'))
- /* Consume the closing parenthesis. */
- cp = endp + 1;
- else
- /* Only match the NAN part. */
- cp = startp;
- }
-
- if (endptr != NULL)
- *endptr = (STRING_TYPE *) cp;
-
- return retval;
- }
-
- /* It is really a text we do not recognize. */
- RETURN (0.0, nptr);
- }
-
- /* First look whether we are faced with a hexadecimal number. */
- if (c == L_('0') && TOLOWER (cp[1]) == L_('x'))
- {
- /* Okay, it is a hexa-decimal number. Remember this and skip
- the characters. BTW: hexadecimal numbers must not be
- grouped. */
- base = 16;
- cp += 2;
- c = *cp;
- grouping = NULL;
- }
-
- /* Record the start of the digits, in case we will check their grouping. */
- start_of_digits = startp = cp;
-
- /* Ignore leading zeroes. This helps us to avoid useless computations. */
-#ifdef USE_WIDE_CHAR
- while (c == L'0' || ((wint_t) thousands != L'\0' && c == (wint_t) thousands))
- c = *++cp;
-#else
- if (__glibc_likely (thousands == NULL))
- while (c == '0')
- c = *++cp;
- else
- {
- /* We also have the multibyte thousands string. */
- while (1)
- {
- if (c != '0')
- {
- for (cnt = 0; thousands[cnt] != '\0'; ++cnt)
- if (thousands[cnt] != cp[cnt])
- break;
- if (thousands[cnt] != '\0')
- break;
- cp += cnt - 1;
- }
- c = *++cp;
- }
- }
-#endif
-
- /* If no other digit but a '0' is found the result is 0.0.
- Return current read pointer. */
- CHAR_TYPE lowc = TOLOWER (c);
- if (!((c >= L_('0') && c <= L_('9'))
- || (base == 16 && lowc >= L_('a') && lowc <= L_('f'))
- || (
-#ifdef USE_WIDE_CHAR
- c == (wint_t) decimal
-#else
- ({ for (cnt = 0; decimal[cnt] != '\0'; ++cnt)
- if (decimal[cnt] != cp[cnt])
- break;
- decimal[cnt] == '\0'; })
-#endif
- /* '0x.' alone is not a valid hexadecimal number.
- '.' alone is not valid either, but that has been checked
- already earlier. */
- && (base != 16
- || cp != start_of_digits
- || (cp[decimal_len] >= L_('0') && cp[decimal_len] <= L_('9'))
- || ({ CHAR_TYPE lo = TOLOWER (cp[decimal_len]);
- lo >= L_('a') && lo <= L_('f'); })))
- || (base == 16 && (cp != start_of_digits
- && lowc == L_('p')))
- || (base != 16 && lowc == L_('e'))))
- {
-#ifdef USE_WIDE_CHAR
- tp = __correctly_grouped_prefixwc (start_of_digits, cp, thousands,
- grouping);
-#else
- tp = __correctly_grouped_prefixmb (start_of_digits, cp, thousands,
- grouping);
-#endif
- /* If TP is at the start of the digits, there was no correctly
- grouped prefix of the string; so no number found. */
- RETURN (negative ? -0.0 : 0.0,
- tp == start_of_digits ? (base == 16 ? cp - 1 : nptr) : tp);
- }
-
- /* Remember first significant digit and read following characters until the
- decimal point, exponent character or any non-FP number character. */
- startp = cp;
- dig_no = 0;
- while (1)
- {
- if ((c >= L_('0') && c <= L_('9'))
- || (base == 16
- && ({ CHAR_TYPE lo = TOLOWER (c);
- lo >= L_('a') && lo <= L_('f'); })))
- ++dig_no;
- else
- {
-#ifdef USE_WIDE_CHAR
- if (__builtin_expect ((wint_t) thousands == L'\0', 1)
- || c != (wint_t) thousands)
- /* Not a digit or separator: end of the integer part. */
- break;
-#else
- if (__glibc_likely (thousands == NULL))
- break;
- else
- {
- for (cnt = 0; thousands[cnt] != '\0'; ++cnt)
- if (thousands[cnt] != cp[cnt])
- break;
- if (thousands[cnt] != '\0')
- break;
- cp += cnt - 1;
- }
-#endif
- }
- c = *++cp;
- }
-
- if (__builtin_expect (grouping != NULL, 0) && cp > start_of_digits)
- {
- /* Check the grouping of the digits. */
-#ifdef USE_WIDE_CHAR
- tp = __correctly_grouped_prefixwc (start_of_digits, cp, thousands,
- grouping);
-#else
- tp = __correctly_grouped_prefixmb (start_of_digits, cp, thousands,
- grouping);
-#endif
- if (cp != tp)
- {
- /* Less than the entire string was correctly grouped. */
-
- if (tp == start_of_digits)
- /* No valid group of numbers at all: no valid number. */
- RETURN (0.0, nptr);
-
- if (tp < startp)
- /* The number is validly grouped, but consists
- only of zeroes. The whole value is zero. */
- RETURN (negative ? -0.0 : 0.0, tp);
-
- /* Recompute DIG_NO so we won't read more digits than
- are properly grouped. */
- cp = tp;
- dig_no = 0;
- for (tp = startp; tp < cp; ++tp)
- if (*tp >= L_('0') && *tp <= L_('9'))
- ++dig_no;
-
- int_no = dig_no;
- lead_zero = 0;
-
- goto number_parsed;
- }
- }
-
- /* We have the number of digits in the integer part. Whether these
- are all or any is really a fractional digit will be decided
- later. */
- int_no = dig_no;
- lead_zero = int_no == 0 ? (size_t) -1 : 0;
-
- /* Read the fractional digits. A special case are the 'american
- style' numbers like `16.' i.e. with decimal point but without
- trailing digits. */
- if (
-#ifdef USE_WIDE_CHAR
- c == (wint_t) decimal
-#else
- ({ for (cnt = 0; decimal[cnt] != '\0'; ++cnt)
- if (decimal[cnt] != cp[cnt])
- break;
- decimal[cnt] == '\0'; })
-#endif
- )
- {
- cp += decimal_len;
- c = *cp;
- while ((c >= L_('0') && c <= L_('9')) ||
- (base == 16 && ({ CHAR_TYPE lo = TOLOWER (c);
- lo >= L_('a') && lo <= L_('f'); })))
- {
- if (c != L_('0') && lead_zero == (size_t) -1)
- lead_zero = dig_no - int_no;
- ++dig_no;
- c = *++cp;
- }
- }
- assert (dig_no <= (uintmax_t) INTMAX_MAX);
-
- /* Remember start of exponent (if any). */
- expp = cp;
-
- /* Read exponent. */
- lowc = TOLOWER (c);
- if ((base == 16 && lowc == L_('p'))
- || (base != 16 && lowc == L_('e')))
- {
- int exp_negative = 0;
-
- c = *++cp;
- if (c == L_('-'))
- {
- exp_negative = 1;
- c = *++cp;
- }
- else if (c == L_('+'))
- c = *++cp;
-
- if (c >= L_('0') && c <= L_('9'))
- {
- intmax_t exp_limit;
-
- /* Get the exponent limit. */
- if (base == 16)
- {
- if (exp_negative)
- {
- assert (int_no <= (uintmax_t) (INTMAX_MAX
- + MIN_EXP - MANT_DIG) / 4);
- exp_limit = -MIN_EXP + MANT_DIG + 4 * (intmax_t) int_no;
- }
- else
- {
- if (int_no)
- {
- assert (lead_zero == 0
- && int_no <= (uintmax_t) INTMAX_MAX / 4);
- exp_limit = MAX_EXP - 4 * (intmax_t) int_no + 3;
- }
- else if (lead_zero == (size_t) -1)
- {
- /* The number is zero and this limit is
- arbitrary. */
- exp_limit = MAX_EXP + 3;
- }
- else
- {
- assert (lead_zero
- <= (uintmax_t) (INTMAX_MAX - MAX_EXP - 3) / 4);
- exp_limit = (MAX_EXP
- + 4 * (intmax_t) lead_zero
- + 3);
- }
- }
- }
- else
- {
- if (exp_negative)
- {
- assert (int_no
- <= (uintmax_t) (INTMAX_MAX + MIN_10_EXP - MANT_DIG));
- exp_limit = -MIN_10_EXP + MANT_DIG + (intmax_t) int_no;
- }
- else
- {
- if (int_no)
- {
- assert (lead_zero == 0
- && int_no <= (uintmax_t) INTMAX_MAX);
- exp_limit = MAX_10_EXP - (intmax_t) int_no + 1;
- }
- else if (lead_zero == (size_t) -1)
- {
- /* The number is zero and this limit is
- arbitrary. */
- exp_limit = MAX_10_EXP + 1;
- }
- else
- {
- assert (lead_zero
- <= (uintmax_t) (INTMAX_MAX - MAX_10_EXP - 1));
- exp_limit = MAX_10_EXP + (intmax_t) lead_zero + 1;
- }
- }
- }
-
- if (exp_limit < 0)
- exp_limit = 0;
-
- do
- {
- if (__builtin_expect ((exponent > exp_limit / 10
- || (exponent == exp_limit / 10
- && c - L_('0') > exp_limit % 10)), 0))
- /* The exponent is too large/small to represent a valid
- number. */
- {
- FLOAT result;
-
- /* We have to take care for special situation: a joker
- might have written "0.0e100000" which is in fact
- zero. */
- if (lead_zero == (size_t) -1)
- result = negative ? -0.0 : 0.0;
- else
- {
- /* Overflow or underflow. */
- result = (exp_negative
- ? underflow_value (negative)
- : overflow_value (negative));
- }
-
- /* Accept all following digits as part of the exponent. */
- do
- ++cp;
- while (*cp >= L_('0') && *cp <= L_('9'));
-
- RETURN (result, cp);
- /* NOTREACHED */
- }
-
- exponent *= 10;
- exponent += c - L_('0');
-
- c = *++cp;
- }
- while (c >= L_('0') && c <= L_('9'));
-
- if (exp_negative)
- exponent = -exponent;
- }
- else
- cp = expp;
- }
-
- /* We don't want to have to work with trailing zeroes after the radix. */
- if (dig_no > int_no)
- {
- while (expp[-1] == L_('0'))
- {
- --expp;
- --dig_no;
- }
- assert (dig_no >= int_no);
- }
-
- if (dig_no == int_no && dig_no > 0 && exponent < 0)
- do
- {
- while (! (base == 16 ? ISXDIGIT (expp[-1]) : ISDIGIT (expp[-1])))
- --expp;
-
- if (expp[-1] != L_('0'))
- break;
-
- --expp;
- --dig_no;
- --int_no;
- exponent += base == 16 ? 4 : 1;
- }
- while (dig_no > 0 && exponent < 0);
-
- number_parsed:
-
- /* The whole string is parsed. Store the address of the next character. */
- if (endptr)
- *endptr = (STRING_TYPE *) cp;
-
- if (dig_no == 0)
- return negative ? -0.0 : 0.0;
-
- if (lead_zero)
- {
- /* Find the decimal point */
-#ifdef USE_WIDE_CHAR
- while (*startp != decimal)
- ++startp;
-#else
- while (1)
- {
- if (*startp == decimal[0])
- {
- for (cnt = 1; decimal[cnt] != '\0'; ++cnt)
- if (decimal[cnt] != startp[cnt])
- break;
- if (decimal[cnt] == '\0')
- break;
- }
- ++startp;
- }
-#endif
- startp += lead_zero + decimal_len;
- assert (lead_zero <= (base == 16
- ? (uintmax_t) INTMAX_MAX / 4
- : (uintmax_t) INTMAX_MAX));
- assert (lead_zero <= (base == 16
- ? ((uintmax_t) exponent
- - (uintmax_t) INTMAX_MIN) / 4
- : ((uintmax_t) exponent - (uintmax_t) INTMAX_MIN)));
- exponent -= base == 16 ? 4 * (intmax_t) lead_zero : (intmax_t) lead_zero;
- dig_no -= lead_zero;
- }
-
- /* If the BASE is 16 we can use a simpler algorithm. */
- if (base == 16)
- {
- static const int nbits[16] = { 0, 1, 2, 2, 3, 3, 3, 3,
- 4, 4, 4, 4, 4, 4, 4, 4 };
- int idx = (MANT_DIG - 1) / BITS_PER_MP_LIMB;
- int pos = (MANT_DIG - 1) % BITS_PER_MP_LIMB;
- mp_limb_t val;
-
- while (!ISXDIGIT (*startp))
- ++startp;
- while (*startp == L_('0'))
- ++startp;
- if (ISDIGIT (*startp))
- val = *startp++ - L_('0');
- else
- val = 10 + TOLOWER (*startp++) - L_('a');
- bits = nbits[val];
- /* We cannot have a leading zero. */
- assert (bits != 0);
-
- if (pos + 1 >= 4 || pos + 1 >= bits)
- {
- /* We don't have to care for wrapping. This is the normal
- case so we add the first clause in the `if' expression as
- an optimization. It is a compile-time constant and so does
- not cost anything. */
- retval[idx] = val << (pos - bits + 1);
- pos -= bits;
- }
- else
- {
- retval[idx--] = val >> (bits - pos - 1);
- retval[idx] = val << (BITS_PER_MP_LIMB - (bits - pos - 1));
- pos = BITS_PER_MP_LIMB - 1 - (bits - pos - 1);
- }
-
- /* Adjust the exponent for the bits we are shifting in. */
- assert (int_no <= (uintmax_t) (exponent < 0
- ? (INTMAX_MAX - bits + 1) / 4
- : (INTMAX_MAX - exponent - bits + 1) / 4));
- exponent += bits - 1 + ((intmax_t) int_no - 1) * 4;
-
- while (--dig_no > 0 && idx >= 0)
- {
- if (!ISXDIGIT (*startp))
- startp += decimal_len;
- if (ISDIGIT (*startp))
- val = *startp++ - L_('0');
- else
- val = 10 + TOLOWER (*startp++) - L_('a');
-
- if (pos + 1 >= 4)
- {
- retval[idx] |= val << (pos - 4 + 1);
- pos -= 4;
- }
- else
- {
- retval[idx--] |= val >> (4 - pos - 1);
- val <<= BITS_PER_MP_LIMB - (4 - pos - 1);
- if (idx < 0)
- {
- int rest_nonzero = 0;
- while (--dig_no > 0)
- {
- if (*startp != L_('0'))
- {
- rest_nonzero = 1;
- break;
- }
- startp++;
- }
- return round_and_return (retval, exponent, negative, val,
- BITS_PER_MP_LIMB - 1, rest_nonzero);
- }
-
- retval[idx] = val;
- pos = BITS_PER_MP_LIMB - 1 - (4 - pos - 1);
- }
- }
-
- /* We ran out of digits. */
- MPN_ZERO (retval, idx);
-
- return round_and_return (retval, exponent, negative, 0, 0, 0);
- }
-
- /* Now we have the number of digits in total and the integer digits as well
- as the exponent and its sign. We can decide whether the read digits are
- really integer digits or belong to the fractional part; i.e. we normalize
- 123e-2 to 1.23. */
- {
- intmax_t incr = (exponent < 0
- ? MAX (-(intmax_t) int_no, exponent)
- : MIN ((intmax_t) dig_no - (intmax_t) int_no, exponent));
- int_no += incr;
- exponent -= incr;
- }
-
- if (__glibc_unlikely (exponent > MAX_10_EXP + 1 - (intmax_t) int_no))
- return overflow_value (negative);
-
- /* 10^(MIN_10_EXP-1) is not normal. Thus, 10^(MIN_10_EXP-1) /
- 2^MANT_DIG is below half the least subnormal, so anything with a
- base-10 exponent less than the base-10 exponent (which is
- MIN_10_EXP - 1 - ceil(MANT_DIG*log10(2))) of that value
- underflows. DIG is floor((MANT_DIG-1)log10(2)), so an exponent
- below MIN_10_EXP - (DIG + 3) underflows. But EXPONENT is
- actually an exponent multiplied only by a fractional part, not an
- integer part, so an exponent below MIN_10_EXP - (DIG + 2)
- underflows. */
- if (__glibc_unlikely (exponent < MIN_10_EXP - (DIG + 2)))
- return underflow_value (negative);
-
- if (int_no > 0)
- {
- /* Read the integer part as a multi-precision number to NUM. */
- startp = str_to_mpn (startp, int_no, num, &numsize, &exponent
-#ifndef USE_WIDE_CHAR
- , decimal, decimal_len, thousands
-#endif
- );
-
- if (exponent > 0)
- {
- /* We now multiply the gained number by the given power of ten. */
- mp_limb_t *psrc = num;
- mp_limb_t *pdest = den;
- int expbit = 1;
- const struct mp_power *ttab = &_fpioconst_pow10[0];
-
- do
- {
- if ((exponent & expbit) != 0)
- {
- size_t size = ttab->arraysize - _FPIO_CONST_OFFSET;
- mp_limb_t cy;
- exponent ^= expbit;
-
- /* FIXME: not the whole multiplication has to be
- done. If we have the needed number of bits we
- only need the information whether more non-zero
- bits follow. */
- if (numsize >= ttab->arraysize - _FPIO_CONST_OFFSET)
- cy = __mpn_mul (pdest, psrc, numsize,
- &__tens[ttab->arrayoff
- + _FPIO_CONST_OFFSET],
- size);
- else
- cy = __mpn_mul (pdest, &__tens[ttab->arrayoff
- + _FPIO_CONST_OFFSET],
- size, psrc, numsize);
- numsize += size;
- if (cy == 0)
- --numsize;
- (void) SWAP (psrc, pdest);
- }
- expbit <<= 1;
- ++ttab;
- }
- while (exponent != 0);
-
- if (psrc == den)
- memcpy (num, den, numsize * sizeof (mp_limb_t));
- }
-
- /* Determine how many bits of the result we already have. */
- count_leading_zeros (bits, num[numsize - 1]);
- bits = numsize * BITS_PER_MP_LIMB - bits;
-
- /* Now we know the exponent of the number in base two.
- Check it against the maximum possible exponent. */
- if (__glibc_unlikely (bits > MAX_EXP))
- return overflow_value (negative);
-
- /* We have already the first BITS bits of the result. Together with
- the information whether more non-zero bits follow this is enough
- to determine the result. */
- if (bits > MANT_DIG)
- {
- int i;
- const mp_size_t least_idx = (bits - MANT_DIG) / BITS_PER_MP_LIMB;
- const mp_size_t least_bit = (bits - MANT_DIG) % BITS_PER_MP_LIMB;
- const mp_size_t round_idx = least_bit == 0 ? least_idx - 1
- : least_idx;
- const mp_size_t round_bit = least_bit == 0 ? BITS_PER_MP_LIMB - 1
- : least_bit - 1;
-
- if (least_bit == 0)
- memcpy (retval, &num[least_idx],
- RETURN_LIMB_SIZE * sizeof (mp_limb_t));
- else
- {
- for (i = least_idx; i < numsize - 1; ++i)
- retval[i - least_idx] = (num[i] >> least_bit)
- | (num[i + 1]
- << (BITS_PER_MP_LIMB - least_bit));
- if (i - least_idx < RETURN_LIMB_SIZE)
- retval[RETURN_LIMB_SIZE - 1] = num[i] >> least_bit;
- }
-
- /* Check whether any limb beside the ones in RETVAL are non-zero. */
- for (i = 0; num[i] == 0; ++i)
- ;
-
- return round_and_return (retval, bits - 1, negative,
- num[round_idx], round_bit,
- int_no < dig_no || i < round_idx);
- /* NOTREACHED */
- }
- else if (dig_no == int_no)
- {
- const mp_size_t target_bit = (MANT_DIG - 1) % BITS_PER_MP_LIMB;
- const mp_size_t is_bit = (bits - 1) % BITS_PER_MP_LIMB;
-
- if (target_bit == is_bit)
- {
- memcpy (&retval[RETURN_LIMB_SIZE - numsize], num,
- numsize * sizeof (mp_limb_t));
- /* FIXME: the following loop can be avoided if we assume a
- maximal MANT_DIG value. */
- MPN_ZERO (retval, RETURN_LIMB_SIZE - numsize);
- }
- else if (target_bit > is_bit)
- {
- (void) __mpn_lshift (&retval[RETURN_LIMB_SIZE - numsize],
- num, numsize, target_bit - is_bit);
- /* FIXME: the following loop can be avoided if we assume a
- maximal MANT_DIG value. */
- MPN_ZERO (retval, RETURN_LIMB_SIZE - numsize);
- }
- else
- {
- mp_limb_t cy;
- assert (numsize < RETURN_LIMB_SIZE);
-
- cy = __mpn_rshift (&retval[RETURN_LIMB_SIZE - numsize],
- num, numsize, is_bit - target_bit);
- retval[RETURN_LIMB_SIZE - numsize - 1] = cy;
- /* FIXME: the following loop can be avoided if we assume a
- maximal MANT_DIG value. */
- MPN_ZERO (retval, RETURN_LIMB_SIZE - numsize - 1);
- }
-
- return round_and_return (retval, bits - 1, negative, 0, 0, 0);
- /* NOTREACHED */
- }
-
- /* Store the bits we already have. */
- memcpy (retval, num, numsize * sizeof (mp_limb_t));
-#if RETURN_LIMB_SIZE > 1
- if (numsize < RETURN_LIMB_SIZE)
-# if RETURN_LIMB_SIZE == 2
- retval[numsize] = 0;
-# else
- MPN_ZERO (retval + numsize, RETURN_LIMB_SIZE - numsize);
-# endif
-#endif
- }
-
- /* We have to compute at least some of the fractional digits. */
- {
- /* We construct a fraction and the result of the division gives us
- the needed digits. The denominator is 1.0 multiplied by the
- exponent of the lowest digit; i.e. 0.123 gives 123 / 1000 and
- 123e-6 gives 123 / 1000000. */
-
- int expbit;
- int neg_exp;
- int more_bits;
- int need_frac_digits;
- mp_limb_t cy;
- mp_limb_t *psrc = den;
- mp_limb_t *pdest = num;
- const struct mp_power *ttab = &_fpioconst_pow10[0];
-
- assert (dig_no > int_no
- && exponent <= 0
- && exponent >= MIN_10_EXP - (DIG + 2));
-
- /* We need to compute MANT_DIG - BITS fractional bits that lie
- within the mantissa of the result, the following bit for
- rounding, and to know whether any subsequent bit is 0.
- Computing a bit with value 2^-n means looking at n digits after
- the decimal point. */
- if (bits > 0)
- {
- /* The bits required are those immediately after the point. */
- assert (int_no > 0 && exponent == 0);
- need_frac_digits = 1 + MANT_DIG - bits;
- }
- else
- {
- /* The number is in the form .123eEXPONENT. */
- assert (int_no == 0 && *startp != L_('0'));
- /* The number is at least 10^(EXPONENT-1), and 10^3 <
- 2^10. */
- int neg_exp_2 = ((1 - exponent) * 10) / 3 + 1;
- /* The number is at least 2^-NEG_EXP_2. We need up to
- MANT_DIG bits following that bit. */
- need_frac_digits = neg_exp_2 + MANT_DIG;
- /* However, we never need bits beyond 1/4 ulp of the smallest
- representable value. (That 1/4 ulp bit is only needed to
- determine tinyness on machines where tinyness is determined
- after rounding.) */
- if (need_frac_digits > MANT_DIG - MIN_EXP + 2)
- need_frac_digits = MANT_DIG - MIN_EXP + 2;
- /* At this point, NEED_FRAC_DIGITS is the total number of
- digits needed after the point, but some of those may be
- leading 0s. */
- need_frac_digits += exponent;
- /* Any cases underflowing enough that none of the fractional
- digits are needed should have been caught earlier (such
- cases are on the order of 10^-n or smaller where 2^-n is
- the least subnormal). */
- assert (need_frac_digits > 0);
- }
-
- if (need_frac_digits > (intmax_t) dig_no - (intmax_t) int_no)
- need_frac_digits = (intmax_t) dig_no - (intmax_t) int_no;
-
- if ((intmax_t) dig_no > (intmax_t) int_no + need_frac_digits)
- {
- dig_no = int_no + need_frac_digits;
- more_bits = 1;
- }
- else
- more_bits = 0;
-
- neg_exp = (intmax_t) dig_no - (intmax_t) int_no - exponent;
-
- /* Construct the denominator. */
- densize = 0;
- expbit = 1;
- do
- {
- if ((neg_exp & expbit) != 0)
- {
- mp_limb_t cy;
- neg_exp ^= expbit;
-
- if (densize == 0)
- {
- densize = ttab->arraysize - _FPIO_CONST_OFFSET;
- memcpy (psrc, &__tens[ttab->arrayoff + _FPIO_CONST_OFFSET],
- densize * sizeof (mp_limb_t));
- }
- else
- {
- cy = __mpn_mul (pdest, &__tens[ttab->arrayoff
- + _FPIO_CONST_OFFSET],
- ttab->arraysize - _FPIO_CONST_OFFSET,
- psrc, densize);
- densize += ttab->arraysize - _FPIO_CONST_OFFSET;
- if (cy == 0)
- --densize;
- (void) SWAP (psrc, pdest);
- }
- }
- expbit <<= 1;
- ++ttab;
- }
- while (neg_exp != 0);
-
- if (psrc == num)
- memcpy (den, num, densize * sizeof (mp_limb_t));
-
- /* Read the fractional digits from the string. */
- (void) str_to_mpn (startp, dig_no - int_no, num, &numsize, &exponent
-#ifndef USE_WIDE_CHAR
- , decimal, decimal_len, thousands
-#endif
- );
-
- /* We now have to shift both numbers so that the highest bit in the
- denominator is set. In the same process we copy the numerator to
- a high place in the array so that the division constructs the wanted
- digits. This is done by a "quasi fix point" number representation.
-
- num: ddddddddddd . 0000000000000000000000
- |--- m ---|
- den: ddddddddddd n >= m
- |--- n ---|
- */
-
- count_leading_zeros (cnt, den[densize - 1]);
-
- if (cnt > 0)
- {
- /* Don't call `mpn_shift' with a count of zero since the specification
- does not allow this. */
- (void) __mpn_lshift (den, den, densize, cnt);
- cy = __mpn_lshift (num, num, numsize, cnt);
- if (cy != 0)
- num[numsize++] = cy;
- }
-
- /* Now we are ready for the division. But it is not necessary to
- do a full multi-precision division because we only need a small
- number of bits for the result. So we do not use __mpn_divmod
- here but instead do the division here by hand and stop whenever
- the needed number of bits is reached. The code itself comes
- from the GNU MP Library by Torbj\"orn Granlund. */
-
- exponent = bits;
-
- switch (densize)
- {
- case 1:
- {
- mp_limb_t d, n, quot;
- int used = 0;
-
- n = num[0];
- d = den[0];
- assert (numsize == 1 && n < d);
-
- do
- {
- udiv_qrnnd (quot, n, n, 0, d);
-
-#define got_limb \
- if (bits == 0) \
- { \
- int cnt; \
- if (quot == 0) \
- cnt = BITS_PER_MP_LIMB; \
- else \
- count_leading_zeros (cnt, quot); \
- exponent -= cnt; \
- if (BITS_PER_MP_LIMB - cnt > MANT_DIG) \
- { \
- used = MANT_DIG + cnt; \
- retval[0] = quot >> (BITS_PER_MP_LIMB - used); \
- bits = MANT_DIG + 1; \
- } \
- else \
- { \
- /* Note that we only clear the second element. */ \
- /* The conditional is determined at compile time. */ \
- if (RETURN_LIMB_SIZE > 1) \
- retval[1] = 0; \
- retval[0] = quot; \
- bits = -cnt; \
- } \
- } \
- else if (bits + BITS_PER_MP_LIMB <= MANT_DIG) \
- __mpn_lshift_1 (retval, RETURN_LIMB_SIZE, BITS_PER_MP_LIMB, \
- quot); \
- else \
- { \
- used = MANT_DIG - bits; \
- if (used > 0) \
- __mpn_lshift_1 (retval, RETURN_LIMB_SIZE, used, quot); \
- } \
- bits += BITS_PER_MP_LIMB
-
- got_limb;
- }
- while (bits <= MANT_DIG);
-
- return round_and_return (retval, exponent - 1, negative,
- quot, BITS_PER_MP_LIMB - 1 - used,
- more_bits || n != 0);
- }
- case 2:
- {
- mp_limb_t d0, d1, n0, n1;
- mp_limb_t quot = 0;
- int used = 0;
-
- d0 = den[0];
- d1 = den[1];
-
- if (numsize < densize)
- {
- if (num[0] >= d1)
- {
- /* The numerator of the number occupies fewer bits than
- the denominator but the one limb is bigger than the
- high limb of the numerator. */
- n1 = 0;
- n0 = num[0];
- }
- else
- {
- if (bits <= 0)
- exponent -= BITS_PER_MP_LIMB;
- else
- {
- if (bits + BITS_PER_MP_LIMB <= MANT_DIG)
- __mpn_lshift_1 (retval, RETURN_LIMB_SIZE,
- BITS_PER_MP_LIMB, 0);
- else
- {
- used = MANT_DIG - bits;
- if (used > 0)
- __mpn_lshift_1 (retval, RETURN_LIMB_SIZE, used, 0);
- }
- bits += BITS_PER_MP_LIMB;
- }
- n1 = num[0];
- n0 = 0;
- }
- }
- else
- {
- n1 = num[1];
- n0 = num[0];
- }
-
- while (bits <= MANT_DIG)
- {
- mp_limb_t r;
-
- if (n1 == d1)
- {
- /* QUOT should be either 111..111 or 111..110. We need
- special treatment of this rare case as normal division
- would give overflow. */
- quot = ~(mp_limb_t) 0;
-
- r = n0 + d1;
- if (r < d1) /* Carry in the addition? */
- {
- add_ssaaaa (n1, n0, r - d0, 0, 0, d0);
- goto have_quot;
- }
- n1 = d0 - (d0 != 0);
- n0 = -d0;
- }
- else
- {
- udiv_qrnnd (quot, r, n1, n0, d1);
- umul_ppmm (n1, n0, d0, quot);
- }
-
- q_test:
- if (n1 > r || (n1 == r && n0 > 0))
- {
- /* The estimated QUOT was too large. */
- --quot;
-
- sub_ddmmss (n1, n0, n1, n0, 0, d0);
- r += d1;
- if (r >= d1) /* If not carry, test QUOT again. */
- goto q_test;
- }
- sub_ddmmss (n1, n0, r, 0, n1, n0);
-
- have_quot:
- got_limb;
- }
-
- return round_and_return (retval, exponent - 1, negative,
- quot, BITS_PER_MP_LIMB - 1 - used,
- more_bits || n1 != 0 || n0 != 0);
- }
- default:
- {
- int i;
- mp_limb_t cy, dX, d1, n0, n1;
- mp_limb_t quot = 0;
- int used = 0;
-
- dX = den[densize - 1];
- d1 = den[densize - 2];
-
- /* The division does not work if the upper limb of the two-limb
- numerator is greater than the denominator. */
- if (__mpn_cmp (num, &den[densize - numsize], numsize) > 0)
- num[numsize++] = 0;
-
- if (numsize < densize)
- {
- mp_size_t empty = densize - numsize;
- int i;
-
- if (bits <= 0)
- exponent -= empty * BITS_PER_MP_LIMB;
- else
- {
- if (bits + empty * BITS_PER_MP_LIMB <= MANT_DIG)
- {
- /* We make a difference here because the compiler
- cannot optimize the `else' case that good and
- this reflects all currently used FLOAT types
- and GMP implementations. */
-#if RETURN_LIMB_SIZE <= 2
- assert (empty == 1);
- __mpn_lshift_1 (retval, RETURN_LIMB_SIZE,
- BITS_PER_MP_LIMB, 0);
-#else
- for (i = RETURN_LIMB_SIZE - 1; i >= empty; --i)
- retval[i] = retval[i - empty];
- while (i >= 0)
- retval[i--] = 0;
-#endif
- }
- else
- {
- used = MANT_DIG - bits;
- if (used >= BITS_PER_MP_LIMB)
- {
- int i;
- (void) __mpn_lshift (&retval[used
- / BITS_PER_MP_LIMB],
- retval,
- (RETURN_LIMB_SIZE
- - used / BITS_PER_MP_LIMB),
- used % BITS_PER_MP_LIMB);
- for (i = used / BITS_PER_MP_LIMB - 1; i >= 0; --i)
- retval[i] = 0;
- }
- else if (used > 0)
- __mpn_lshift_1 (retval, RETURN_LIMB_SIZE, used, 0);
- }
- bits += empty * BITS_PER_MP_LIMB;
- }
- for (i = numsize; i > 0; --i)
- num[i + empty] = num[i - 1];
- MPN_ZERO (num, empty + 1);
- }
- else
- {
- int i;
- assert (numsize == densize);
- for (i = numsize; i > 0; --i)
- num[i] = num[i - 1];
- num[0] = 0;
- }
-
- den[densize] = 0;
- n0 = num[densize];
-
- while (bits <= MANT_DIG)
- {
- if (n0 == dX)
- /* This might over-estimate QUOT, but it's probably not
- worth the extra code here to find out. */
- quot = ~(mp_limb_t) 0;
- else
- {
- mp_limb_t r;
-
- udiv_qrnnd (quot, r, n0, num[densize - 1], dX);
- umul_ppmm (n1, n0, d1, quot);
-
- while (n1 > r || (n1 == r && n0 > num[densize - 2]))
- {
- --quot;
- r += dX;
- if (r < dX) /* I.e. "carry in previous addition?" */
- break;
- n1 -= n0 < d1;
- n0 -= d1;
- }
- }
-
- /* Possible optimization: We already have (q * n0) and (1 * n1)
- after the calculation of QUOT. Taking advantage of this, we
- could make this loop make two iterations less. */
-
- cy = __mpn_submul_1 (num, den, densize + 1, quot);
-
- if (num[densize] != cy)
- {
- cy = __mpn_add_n (num, num, den, densize);
- assert (cy != 0);
- --quot;
- }
- n0 = num[densize] = num[densize - 1];
- for (i = densize - 1; i > 0; --i)
- num[i] = num[i - 1];
- num[0] = 0;
-
- got_limb;
- }
-
- for (i = densize; i >= 0 && num[i] == 0; --i)
- ;
- return round_and_return (retval, exponent - 1, negative,
- quot, BITS_PER_MP_LIMB - 1 - used,
- more_bits || i >= 0);
- }
- }
- }
-
- /* NOTREACHED */
-}
-#if defined _LIBC && !defined USE_WIDE_CHAR
-libc_hidden_def (____STRTOF_INTERNAL)
-#endif
-
-/* External user entry point. */
-
-FLOAT
-#ifdef weak_function
-weak_function
-#endif
-__STRTOF (const STRING_TYPE *nptr, STRING_TYPE **endptr, __locale_t loc)
-{
- return ____STRTOF_INTERNAL (nptr, endptr, 0, loc);
-}
-#if defined _LIBC
-libc_hidden_def (__STRTOF)
-libc_hidden_ver (__STRTOF, STRTOF)
-#endif
-weak_alias (__STRTOF, STRTOF)
-
-#ifdef LONG_DOUBLE_COMPAT
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_1)
-# ifdef USE_WIDE_CHAR
-compat_symbol (libc, __wcstod_l, __wcstold_l, GLIBC_2_1);
-# else
-compat_symbol (libc, __strtod_l, __strtold_l, GLIBC_2_1);
-# endif
-# endif
-# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_3)
-# ifdef USE_WIDE_CHAR
-compat_symbol (libc, wcstod_l, wcstold_l, GLIBC_2_3);
-# else
-compat_symbol (libc, strtod_l, strtold_l, GLIBC_2_3);
-# endif
-# endif
-#endif
diff --git a/stdlib/strtod_nan.c b/stdlib/strtod_nan.c
deleted file mode 100644
index 3fbfb46cfc..0000000000
--- a/stdlib/strtod_nan.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Convert string for NaN payload to corresponding NaN. Narrow
- strings, double.
- Copyright (C) 2015-2017 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 <strtod_nan_narrow.h>
-#include <strtod_nan_double.h>
-
-#define STRTOD_NAN __strtod_nan
-#include <strtod_nan_main.c>
diff --git a/stdlib/strtod_nan_double.h b/stdlib/strtod_nan_double.h
deleted file mode 100644
index 224654d005..0000000000
--- a/stdlib/strtod_nan_double.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Convert string for NaN payload to corresponding NaN. For double.
- Copyright (C) 1997-2017 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 FLOAT double
-#define SET_MANTISSA(flt, mant) \
- do \
- { \
- union ieee754_double u; \
- u.d = (flt); \
- u.ieee_nan.mantissa0 = (mant) >> 32; \
- u.ieee_nan.mantissa1 = (mant); \
- if ((u.ieee.mantissa0 | u.ieee.mantissa1) != 0) \
- (flt) = u.d; \
- } \
- while (0)
diff --git a/stdlib/strtod_nan_float.h b/stdlib/strtod_nan_float.h
deleted file mode 100644
index 99e95cc2e7..0000000000
--- a/stdlib/strtod_nan_float.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Convert string for NaN payload to corresponding NaN. For float.
- Copyright (C) 1997-2017 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 FLOAT float
-#define SET_MANTISSA(flt, mant) \
- do \
- { \
- union ieee754_float u; \
- u.f = (flt); \
- u.ieee_nan.mantissa = (mant); \
- if (u.ieee.mantissa != 0) \
- (flt) = u.f; \
- } \
- while (0)
diff --git a/stdlib/strtod_nan_main.c b/stdlib/strtod_nan_main.c
deleted file mode 100644
index 96b788cb1e..0000000000
--- a/stdlib/strtod_nan_main.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Convert string for NaN payload to corresponding NaN.
- Copyright (C) 1997-2017 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 <ieee754.h>
-#include <locale.h>
-#include <math.h>
-#include <stdlib.h>
-#include <wchar.h>
-
-
-/* If STR starts with an optional n-char-sequence as defined by ISO C
- (a sequence of ASCII letters, digits and underscores), followed by
- ENDC, return a NaN whose payload is set based on STR. Otherwise,
- return a default NAN. If ENDPTR is not NULL, set *ENDPTR to point
- to the character after the initial n-char-sequence. */
-
-internal_function
-FLOAT
-STRTOD_NAN (const STRING_TYPE *str, STRING_TYPE **endptr, STRING_TYPE endc)
-{
- const STRING_TYPE *cp = str;
-
- while ((*cp >= L_('0') && *cp <= L_('9'))
- || (*cp >= L_('A') && *cp <= L_('Z'))
- || (*cp >= L_('a') && *cp <= L_('z'))
- || *cp == L_('_'))
- ++cp;
-
- FLOAT retval = NAN;
- if (*cp != endc)
- goto out;
-
- /* This is a system-dependent way to specify the bitmask used for
- the NaN. We expect it to be a number which is put in the
- mantissa of the number. */
- STRING_TYPE *endp;
- unsigned long long int mant;
-
- mant = STRTOULL (str, &endp, 0);
- if (endp == cp)
- SET_MANTISSA (retval, mant);
-
- out:
- if (endptr != NULL)
- *endptr = (STRING_TYPE *) cp;
- return retval;
-}
-libc_hidden_def (STRTOD_NAN)
diff --git a/stdlib/strtod_nan_narrow.h b/stdlib/strtod_nan_narrow.h
deleted file mode 100644
index 15733c21ae..0000000000
--- a/stdlib/strtod_nan_narrow.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Convert string for NaN payload to corresponding NaN. Narrow strings.
- Copyright (C) 1997-2017 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 STRING_TYPE char
-#define L_(Ch) Ch
-#define STRTOULL(S, E, B) ____strtoull_l_internal ((S), (E), (B), 0, \
- _nl_C_locobj_ptr)
diff --git a/stdlib/strtod_nan_wide.h b/stdlib/strtod_nan_wide.h
deleted file mode 100644
index 23abb2c745..0000000000
--- a/stdlib/strtod_nan_wide.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Convert string for NaN payload to corresponding NaN. Wide strings.
- Copyright (C) 1997-2017 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 STRING_TYPE wchar_t
-#define L_(Ch) L##Ch
-#define STRTOULL(S, E, B) ____wcstoull_l_internal ((S), (E), (B), 0, \
- _nl_C_locobj_ptr)
diff --git a/stdlib/strtof.c b/stdlib/strtof.c
deleted file mode 100644
index 600512134c..0000000000
--- a/stdlib/strtof.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Read decimal floating point numbers.
- This file is part of the GNU C Library.
- Copyright (C) 1995-2017 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.org>, 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 actual implementation for all floating point sizes is in strtod.c.
- These macros tell it to produce the `float' version, `strtof'. */
-
-#define FLOAT float
-#define FLT FLT
-#ifdef USE_WIDE_CHAR
-#define STRTOF wcstof
-#define STRTOF_L __wcstof_l
-#else
-# define STRTOF strtof
-# define STRTOF_L __strtof_l
-#endif
-
-
-#include "strtod.c"
diff --git a/stdlib/strtof_l.c b/stdlib/strtof_l.c
deleted file mode 100644
index 57e557516a..0000000000
--- a/stdlib/strtof_l.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Convert string representing a number to float value, using given locale.
- Copyright (C) 1997-2017 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 <xlocale.h>
-
-extern float ____strtof_l_internal (const char *, char **, int, __locale_t);
-
-#define FLOAT float
-#define FLT FLT
-#ifdef USE_WIDE_CHAR
-# define STRTOF wcstof_l
-# define __STRTOF __wcstof_l
-# define STRTOF_NAN __wcstof_nan
-#else
-# define STRTOF strtof_l
-# define __STRTOF __strtof_l
-# define STRTOF_NAN __strtof_nan
-#endif
-#define MPN2FLOAT __mpn_construct_float
-#define FLOAT_HUGE_VAL HUGE_VALF
-
-#include "strtod_l.c"
diff --git a/stdlib/strtof_nan.c b/stdlib/strtof_nan.c
deleted file mode 100644
index 0dd44294cc..0000000000
--- a/stdlib/strtof_nan.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Convert string for NaN payload to corresponding NaN. Narrow
- strings, float.
- Copyright (C) 2015-2017 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 <strtod_nan_narrow.h>
-#include <strtod_nan_float.h>
-
-#define STRTOD_NAN __strtof_nan
-#include <strtod_nan_main.c>
diff --git a/stdlib/strtoimax.c b/stdlib/strtoimax.c
deleted file mode 100644
index f1de70f320..0000000000
--- a/stdlib/strtoimax.c
+++ /dev/null
@@ -1 +0,0 @@
-#error "The correct implementation must be chosen based on the `intmax_t' type"
diff --git a/stdlib/strtol.c b/stdlib/strtol.c
deleted file mode 100644
index 8ac8347e7d..0000000000
--- a/stdlib/strtol.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/* Convert string representation of a number into an integer value.
- Copyright (C) 1991-2017 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 <stdlib.h>
-#include <wchar.h>
-#include <locale/localeinfo.h>
-
-#ifndef UNSIGNED
-# define UNSIGNED 0
-# define INT LONG int
-#else
-# define INT unsigned LONG int
-#endif
-
-#if UNSIGNED
-# ifdef USE_WIDE_CHAR
-# ifdef QUAD
-# define strtol wcstoull
-# define __strtol_l __wcstoull_l
-# else
-# define strtol wcstoul
-# define __strtol_l __wcstoul_l
-# endif
-# else
-# ifdef QUAD
-# define strtol strtoull
-# define __strtol_l __strtoull_l
-# else
-# define strtol strtoul
-# define __strtol_l __strtoul_l
-# endif
-# endif
-#else
-# ifdef USE_WIDE_CHAR
-# ifdef QUAD
-# define strtol wcstoll
-# define __strtol_l __wcstoll_l
-# else
-# define strtol wcstol
-# define __strtol_l __wcstol_l
-# endif
-# else
-# ifdef QUAD
-# define strtol strtoll
-# define __strtol_l __strtoll_l
-# endif
-# endif
-#endif
-
-
-/* If QUAD is defined, we are defining `strtoll' or `strtoull',
- operating on `long long int's. */
-#ifdef QUAD
-# define LONG long long
-#else
-# define LONG long
-#endif
-
-
-#ifdef USE_WIDE_CHAR
-# define STRING_TYPE wchar_t
-#else
-# define STRING_TYPE char
-#endif
-
-
-#define INTERNAL(X) INTERNAL1(X)
-#define INTERNAL1(X) __##X##_internal
-
-#define SYM__(X) SYM__1 (X)
-#define SYM__1(X) __ ## X
-#define __strtol SYM__ (strtol)
-
-
-extern INT INTERNAL (__strtol_l) (const STRING_TYPE *, STRING_TYPE **, int,
- int, __locale_t);
-
-
-INT
-INTERNAL (strtol) (const STRING_TYPE *nptr, STRING_TYPE **endptr,
- int base, int group)
-{
- return INTERNAL (__strtol_l) (nptr, endptr, base, group, _NL_CURRENT_LOCALE);
-}
-libc_hidden_def (INTERNAL (strtol))
-
-
-INT
-__strtol (const STRING_TYPE *nptr, STRING_TYPE **endptr, int base)
-{
- return INTERNAL (__strtol_l) (nptr, endptr, base, 0, _NL_CURRENT_LOCALE);
-}
-weak_alias (__strtol, strtol)
-libc_hidden_weak (strtol)
diff --git a/stdlib/strtol_l.c b/stdlib/strtol_l.c
deleted file mode 100644
index 5a0683b2bb..0000000000
--- a/stdlib/strtol_l.c
+++ /dev/null
@@ -1,551 +0,0 @@
-/* Convert string representing a number to integer value, using given locale.
- Copyright (C) 1997-2017 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/>. */
-
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef _LIBC
-# define USE_NUMBER_GROUPING
-# define HAVE_LIMITS_H
-#endif
-
-#include <ctype.h>
-#include <errno.h>
-#ifndef __set_errno
-# define __set_errno(Val) errno = (Val)
-#endif
-
-#ifdef HAVE_LIMITS_H
-# include <limits.h>
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <locale.h>
-#include <xlocale.h>
-#include <stdint.h>
-#include <bits/wordsize.h>
-
-#ifdef USE_NUMBER_GROUPING
-# include "../locale/localeinfo.h"
-#endif
-
-/* Nonzero if we are defining `strtoul' or `strtoull', operating on
- unsigned integers. */
-#ifndef UNSIGNED
-# define UNSIGNED 0
-# define INT LONG int
-#else
-# define INT unsigned LONG int
-#endif
-
-/* Determine the name. */
-#if UNSIGNED
-# ifdef USE_WIDE_CHAR
-# ifdef QUAD
-# define strtol_l wcstoull_l
-# else
-# define strtol_l wcstoul_l
-# endif
-# else
-# ifdef QUAD
-# define strtol_l strtoull_l
-# else
-# define strtol_l strtoul_l
-# endif
-# endif
-#else
-# ifdef USE_WIDE_CHAR
-# ifdef QUAD
-# define strtol_l wcstoll_l
-# else
-# define strtol_l wcstol_l
-# endif
-# else
-# ifdef QUAD
-# define strtol_l strtoll_l
-# else
-# define strtol_l strtol_l
-# endif
-# endif
-#endif
-
-#define __strtol_l __strtol_l2(strtol_l)
-#define __strtol_l2(name) __strtol_l3(name)
-#define __strtol_l3(name) __##name
-
-
-/* If QUAD is defined, we are defining `strtoll' or `strtoull',
- operating on `long long int's. */
-#ifdef QUAD
-# define LONG long long
-# define STRTOL_LONG_MIN LONG_LONG_MIN
-# define STRTOL_LONG_MAX LONG_LONG_MAX
-# define STRTOL_ULONG_MAX ULONG_LONG_MAX
-#else
-# define LONG long
-
-# ifndef ULONG_MAX
-# define ULONG_MAX ((unsigned long int) ~(unsigned long int) 0)
-# endif
-# ifndef LONG_MAX
-# define LONG_MAX ((long int) (ULONG_MAX >> 1))
-# endif
-# define STRTOL_LONG_MIN LONG_MIN
-# define STRTOL_LONG_MAX LONG_MAX
-# define STRTOL_ULONG_MAX ULONG_MAX
-#endif
-
-
-/* We use this code for the extended locale handling where the
- function gets as an additional argument the locale which has to be
- used. To access the values we have to redefine the _NL_CURRENT and
- _NL_CURRENT_WORD macros. */
-#undef _NL_CURRENT
-#define _NL_CURRENT(category, item) \
- (current->values[_NL_ITEM_INDEX (item)].string)
-#undef _NL_CURRENT_WORD
-#define _NL_CURRENT_WORD(category, item) \
- ((uint32_t) current->values[_NL_ITEM_INDEX (item)].word)
-
-#if defined _LIBC || defined HAVE_WCHAR_H
-# include <wchar.h>
-#endif
-
-#ifdef USE_WIDE_CHAR
-# include <wctype.h>
-# define L_(Ch) L##Ch
-# define UCHAR_TYPE wint_t
-# define STRING_TYPE wchar_t
-# define ISSPACE(Ch) __iswspace_l ((Ch), loc)
-# define ISALPHA(Ch) __iswalpha_l ((Ch), _nl_C_locobj_ptr)
-# define TOUPPER(Ch) __towupper_l ((Ch), _nl_C_locobj_ptr)
-#else
-# if defined _LIBC \
- || defined STDC_HEADERS || (!defined isascii && !defined HAVE_ISASCII)
-# define IN_CTYPE_DOMAIN(c) 1
-# else
-# define IN_CTYPE_DOMAIN(c) isascii(c)
-# endif
-# define L_(Ch) Ch
-# define UCHAR_TYPE unsigned char
-# define STRING_TYPE char
-# define ISSPACE(Ch) __isspace_l ((Ch), loc)
-# define ISALPHA(Ch) __isalpha_l ((Ch), _nl_C_locobj_ptr)
-# define TOUPPER(Ch) __toupper_l ((Ch), _nl_C_locobj_ptr)
-#endif
-
-#define INTERNAL(X) INTERNAL1(X)
-#define INTERNAL1(X) __##X##_internal
-#define WEAKNAME(X) WEAKNAME1(X)
-
-#ifdef USE_NUMBER_GROUPING
-/* This file defines a function to check for correct grouping. */
-# include "grouping.h"
-#endif
-
-
-/* Define tables of maximum values and remainders in order to detect
- overflow. Do this at compile-time in order to avoid the runtime
- overhead of the division. */
-extern const unsigned long __strtol_ul_max_tab[] attribute_hidden;
-extern const unsigned char __strtol_ul_rem_tab[] attribute_hidden;
-#if defined(QUAD) && __WORDSIZE == 32
-extern const unsigned long long __strtol_ull_max_tab[] attribute_hidden;
-extern const unsigned char __strtol_ull_rem_tab[] attribute_hidden;
-#endif
-
-#define DEF(TYPE, NAME) \
- const TYPE NAME[] attribute_hidden = \
- { \
- F(2), F(3), F(4), F(5), F(6), F(7), F(8), F(9), F(10), \
- F(11), F(12), F(13), F(14), F(15), F(16), F(17), F(18), F(19), F(20), \
- F(21), F(22), F(23), F(24), F(25), F(26), F(27), F(28), F(29), F(30), \
- F(31), F(32), F(33), F(34), F(35), F(36) \
- }
-
-#if !UNSIGNED && !defined (USE_WIDE_CHAR) && !defined (QUAD)
-# define F(X) ULONG_MAX / X
- DEF (unsigned long, __strtol_ul_max_tab);
-# undef F
-# define F(X) ULONG_MAX % X
- DEF (unsigned char, __strtol_ul_rem_tab);
-# undef F
-#endif
-#if !UNSIGNED && !defined (USE_WIDE_CHAR) && defined (QUAD) \
- && __WORDSIZE == 32
-# define F(X) ULONG_LONG_MAX / X
- DEF (unsigned long long, __strtol_ull_max_tab);
-# undef F
-# define F(X) ULONG_LONG_MAX % X
- DEF (unsigned char, __strtol_ull_rem_tab);
-# undef F
-#endif
-#undef DEF
-
-/* Define some more readable aliases for these arrays which correspond
- to how they'll be used in the function below. */
-#define jmax_tab __strtol_ul_max_tab
-#if defined(QUAD) && __WORDSIZE == 32
-# define cutoff_tab __strtol_ull_max_tab
-# define cutlim_tab __strtol_ull_rem_tab
-#else
-# define cutoff_tab __strtol_ul_max_tab
-# define cutlim_tab __strtol_ul_rem_tab
-#endif
-
-
-/* Convert NPTR to an `unsigned long int' or `long int' in base BASE.
- If BASE is 0 the base is determined by the presence of a leading
- zero, indicating octal or a leading "0x" or "0X", indicating hexadecimal.
- If BASE is < 2 or > 36, it is reset to 10.
- If ENDPTR is not NULL, a pointer to the character after the last
- one converted is stored in *ENDPTR. */
-
-INT
-INTERNAL (__strtol_l) (const STRING_TYPE *nptr, STRING_TYPE **endptr,
- int base, int group, __locale_t loc)
-{
- int negative;
- unsigned LONG int cutoff;
- unsigned int cutlim;
- unsigned LONG int i;
- const STRING_TYPE *s;
- UCHAR_TYPE c;
- const STRING_TYPE *save, *end;
- int overflow;
-#ifndef USE_WIDE_CHAR
- size_t cnt;
-#endif
-
-#ifdef USE_NUMBER_GROUPING
- struct __locale_data *current = loc->__locales[LC_NUMERIC];
- /* The thousands character of the current locale. */
-# ifdef USE_WIDE_CHAR
- wchar_t thousands = L'\0';
-# else
- const char *thousands = NULL;
- size_t thousands_len = 0;
-# endif
- /* The numeric grouping specification of the current locale,
- in the format described in <locale.h>. */
- const char *grouping;
-
- if (__glibc_unlikely (group))
- {
- grouping = _NL_CURRENT (LC_NUMERIC, GROUPING);
- if (*grouping <= 0 || *grouping == CHAR_MAX)
- grouping = NULL;
- else
- {
- /* Figure out the thousands separator character. */
-# ifdef USE_WIDE_CHAR
-# ifdef _LIBC
- thousands = _NL_CURRENT_WORD (LC_NUMERIC,
- _NL_NUMERIC_THOUSANDS_SEP_WC);
-# endif
- if (thousands == L'\0')
- grouping = NULL;
-# else
-# ifdef _LIBC
- thousands = _NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP);
-# endif
- if (*thousands == '\0')
- {
- thousands = NULL;
- grouping = NULL;
- }
-# endif
- }
- }
- else
- grouping = NULL;
-#endif
-
- if (base < 0 || base == 1 || base > 36)
- {
- __set_errno (EINVAL);
- return 0;
- }
-
- save = s = nptr;
-
- /* Skip white space. */
- while (ISSPACE (*s))
- ++s;
- if (__glibc_unlikely (*s == L_('\0')))
- goto noconv;
-
- /* Check for a sign. */
- negative = 0;
- if (*s == L_('-'))
- {
- negative = 1;
- ++s;
- }
- else if (*s == L_('+'))
- ++s;
-
- /* Recognize number prefix and if BASE is zero, figure it out ourselves. */
- if (*s == L_('0'))
- {
- if ((base == 0 || base == 16) && TOUPPER (s[1]) == L_('X'))
- {
- s += 2;
- base = 16;
- }
- else if (base == 0)
- base = 8;
- }
- else if (base == 0)
- base = 10;
-
- /* Save the pointer so we can check later if anything happened. */
- save = s;
-
-#ifdef USE_NUMBER_GROUPING
- if (base != 10)
- grouping = NULL;
-
- if (__glibc_unlikely (grouping != NULL))
- {
-# ifndef USE_WIDE_CHAR
- thousands_len = strlen (thousands);
-# endif
-
- /* Find the end of the digit string and check its grouping. */
- end = s;
- if (
-# ifdef USE_WIDE_CHAR
- *s != thousands
-# else
- ({ for (cnt = 0; cnt < thousands_len; ++cnt)
- if (thousands[cnt] != end[cnt])
- break;
- cnt < thousands_len; })
-# endif
- )
- {
- for (c = *end; c != L_('\0'); c = *++end)
- if (((STRING_TYPE) c < L_('0') || (STRING_TYPE) c > L_('9'))
-# ifdef USE_WIDE_CHAR
- && (wchar_t) c != thousands
-# else
- && ({ for (cnt = 0; cnt < thousands_len; ++cnt)
- if (thousands[cnt] != end[cnt])
- break;
- cnt < thousands_len; })
-# endif
- && (!ISALPHA (c)
- || (int) (TOUPPER (c) - L_('A') + 10) >= base))
- break;
-
-# ifdef USE_WIDE_CHAR
- end = __correctly_grouped_prefixwc (s, end, thousands, grouping);
-# else
- end = __correctly_grouped_prefixmb (s, end, thousands, grouping);
-# endif
- }
- }
- else
-#endif
- end = NULL;
-
- /* Avoid runtime division; lookup cutoff and limit. */
- cutoff = cutoff_tab[base - 2];
- cutlim = cutlim_tab[base - 2];
-
- overflow = 0;
- i = 0;
- c = *s;
- if (sizeof (long int) != sizeof (LONG int))
- {
- unsigned long int j = 0;
- unsigned long int jmax = jmax_tab[base - 2];
-
- for (;c != L_('\0'); c = *++s)
- {
- if (s == end)
- break;
- if (c >= L_('0') && c <= L_('9'))
- c -= L_('0');
-#ifdef USE_NUMBER_GROUPING
-# ifdef USE_WIDE_CHAR
- else if (grouping && (wchar_t) c == thousands)
- continue;
-# else
- else if (thousands_len)
- {
- for (cnt = 0; cnt < thousands_len; ++cnt)
- if (thousands[cnt] != s[cnt])
- break;
- if (cnt == thousands_len)
- {
- s += thousands_len - 1;
- continue;
- }
- if (ISALPHA (c))
- c = TOUPPER (c) - L_('A') + 10;
- else
- break;
- }
-# endif
-#endif
- else if (ISALPHA (c))
- c = TOUPPER (c) - L_('A') + 10;
- else
- break;
- if ((int) c >= base)
- break;
- /* Note that we never can have an overflow. */
- else if (j >= jmax)
- {
- /* We have an overflow. Now use the long representation. */
- i = (unsigned LONG int) j;
- goto use_long;
- }
- else
- j = j * (unsigned long int) base + c;
- }
-
- i = (unsigned LONG int) j;
- }
- else
- for (;c != L_('\0'); c = *++s)
- {
- if (s == end)
- break;
- if (c >= L_('0') && c <= L_('9'))
- c -= L_('0');
-#ifdef USE_NUMBER_GROUPING
-# ifdef USE_WIDE_CHAR
- else if (grouping && (wchar_t) c == thousands)
- continue;
-# else
- else if (thousands_len)
- {
- for (cnt = 0; cnt < thousands_len; ++cnt)
- if (thousands[cnt] != s[cnt])
- break;
- if (cnt == thousands_len)
- {
- s += thousands_len - 1;
- continue;
- }
- if (ISALPHA (c))
- c = TOUPPER (c) - L_('A') + 10;
- else
- break;
- }
-# endif
-#endif
- else if (ISALPHA (c))
- c = TOUPPER (c) - L_('A') + 10;
- else
- break;
- if ((int) c >= base)
- break;
- /* Check for overflow. */
- if (i > cutoff || (i == cutoff && c > cutlim))
- overflow = 1;
- else
- {
- use_long:
- i *= (unsigned LONG int) base;
- i += c;
- }
- }
-
- /* Check if anything actually happened. */
- if (s == save)
- goto noconv;
-
- /* Store in ENDPTR the address of one character
- past the last character we converted. */
- if (endptr != NULL)
- *endptr = (STRING_TYPE *) s;
-
-#if !UNSIGNED
- /* Check for a value that is within the range of
- `unsigned LONG int', but outside the range of `LONG int'. */
- if (overflow == 0
- && i > (negative
- ? -((unsigned LONG int) (STRTOL_LONG_MIN + 1)) + 1
- : (unsigned LONG int) STRTOL_LONG_MAX))
- overflow = 1;
-#endif
-
- if (__glibc_unlikely (overflow))
- {
- __set_errno (ERANGE);
-#if UNSIGNED
- return STRTOL_ULONG_MAX;
-#else
- return negative ? STRTOL_LONG_MIN : STRTOL_LONG_MAX;
-#endif
- }
-
- /* Return the result of the appropriate sign. */
- return negative ? -i : i;
-
-noconv:
- /* We must handle a special case here: the base is 0 or 16 and the
- first two characters are '0' and 'x', but the rest are no
- hexadecimal digits. This is no error case. We return 0 and
- ENDPTR points to the `x`. */
- if (endptr != NULL)
- {
- if (save - nptr >= 2 && TOUPPER (save[-1]) == L_('X')
- && save[-2] == L_('0'))
- *endptr = (STRING_TYPE *) &save[-1];
- else
- /* There was no number to convert. */
- *endptr = (STRING_TYPE *) nptr;
- }
-
- return 0L;
-}
-#if defined _LIBC && !defined USE_WIDE_CHAR
-libc_hidden_def (INTERNAL (__strtol_l))
-#endif
-
-/* External user entry point. */
-
-#if _LIBC - 0 == 0
-
-/* Prototype. */
-extern INT __strtol_l (const STRING_TYPE *nptr, STRING_TYPE **endptr,
- int base);
-#endif
-
-
-INT
-#ifdef weak_function
-weak_function
-#endif
-__strtol_l (const STRING_TYPE *nptr, STRING_TYPE **endptr,
- int base, __locale_t loc)
-{
- return INTERNAL (__strtol_l) (nptr, endptr, base, 0, loc);
-}
-libc_hidden_def (__strtol_l)
-weak_alias (__strtol_l, strtol_l)
diff --git a/stdlib/strtold.c b/stdlib/strtold.c
deleted file mode 100644
index e4ace02dd0..0000000000
--- a/stdlib/strtold.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Read decimal floating point numbers.
- This file is part of the GNU C Library.
- Copyright (C) 1995-2017 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.org>, 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 actual implementation for all floating point sizes is in strtod.c.
- These macros tell it to produce the `float' version, `strtof'. */
-
-#include <bits/long-double.h>
-
-#ifdef __LONG_DOUBLE_MATH_OPTIONAL
-# include <wchar.h>
-# define NEW(x) NEW1(x)
-# define NEW1(x) __new_##x
-long double ____new_strtold_internal (const char *, char **, int);
-long double __new_strtold (const char *, char **);
-long double ____new_wcstold_internal (const wchar_t *, wchar_t **, int);
-long double __new_wcstold (const wchar_t *, wchar_t **);
-libc_hidden_proto (____new_strtold_internal)
-libc_hidden_proto (____new_wcstold_internal)
-libc_hidden_proto (__new_strtold)
-libc_hidden_proto (__new_wcstold)
-#else
-# define NEW(x) x
-#endif
-
-#define FLOAT long double
-#define FLT LDBL
-#ifdef USE_WIDE_CHAR
-# define STRTOF NEW (wcstold)
-# define STRTOF_L __wcstold_l
-#else
-# define STRTOF NEW (strtold)
-# define STRTOF_L __strtold_l
-#endif
-
-#include "strtod.c"
-
-#ifdef __LONG_DOUBLE_MATH_OPTIONAL
-# include <math_ldbl_opt.h>
-# ifdef USE_WIDE_CHAR
-long_double_symbol (libc, __new_wcstold, wcstold);
-long_double_symbol (libc, ____new_wcstold_internal, __wcstold_internal);
-libc_hidden_ver (____new_wcstold_internal, __wcstold_internal)
-# else
-long_double_symbol (libc, __new_strtold, strtold);
-long_double_symbol (libc, ____new_strtold_internal, __strtold_internal);
-libc_hidden_ver (____new_strtold_internal, __strtold_internal)
-# endif
-#endif
diff --git a/stdlib/strtold_l.c b/stdlib/strtold_l.c
deleted file mode 100644
index bef2a4d3d7..0000000000
--- a/stdlib/strtold_l.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Copyright (C) 1999-2017 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 <math.h>
-#include <stdlib.h>
-#include <xlocale.h>
-
-#if defined _LIBC || defined HAVE_WCHAR_H
-# include <wchar.h>
-#endif
-
-#ifdef USE_WIDE_CHAR
-# define STRING_TYPE wchar_t
-# define STRTOLD wcstold_l
-# define __STRTOLD __wcstold_l
-# define __STRTOD __wcstod_l
-#else
-# define STRING_TYPE char
-# define STRTOLD strtold_l
-# define __STRTOLD __strtold_l
-# define __STRTOD __strtod_l
-#endif
-
-#define INTERNAL(x) INTERNAL1(x)
-#define INTERNAL1(x) __##x##_internal
-
-extern double INTERNAL (__STRTOD) (const STRING_TYPE *, STRING_TYPE **,
- int, __locale_t);
-
-/* There is no `long double' type, use the `double' implementations. */
-long double
-INTERNAL (__STRTOLD) (const STRING_TYPE *nptr, STRING_TYPE **endptr,
- int group, __locale_t loc)
-{
- return INTERNAL (__STRTOD) (nptr, endptr, group, loc);
-}
-#ifndef USE_WIDE_CHAR
-libc_hidden_def (INTERNAL (__STRTOLD))
-#endif
-
-long double
-weak_function
-__STRTOLD (const STRING_TYPE *nptr, STRING_TYPE **endptr, __locale_t loc)
-{
- return INTERNAL (__STRTOD) (nptr, endptr, 0, loc);
-}
-#if defined _LIBC
-libc_hidden_def (__STRTOLD)
-libc_hidden_ver (__STRTOLD, STRTOLD)
-#endif
-weak_alias (__STRTOLD, STRTOLD)
diff --git a/stdlib/strtold_nan.c b/stdlib/strtold_nan.c
deleted file mode 100644
index 165a3e6c0f..0000000000
--- a/stdlib/strtold_nan.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Convert string for NaN payload to corresponding NaN. Narrow
- strings, long double.
- Copyright (C) 2015-2017 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 <math.h>
-
-/* This function is unused if long double and double have the same
- representation. */
-#ifndef __NO_LONG_DOUBLE_MATH
-# include <strtod_nan_narrow.h>
-# include <strtod_nan_ldouble.h>
-
-# define STRTOD_NAN __strtold_nan
-# include <strtod_nan_main.c>
-#endif
diff --git a/stdlib/strtoll.c b/stdlib/strtoll.c
deleted file mode 100644
index cb2207cc55..0000000000
--- a/stdlib/strtoll.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Function to parse a `long long int' from text.
- Copyright (C) 1995-2017 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 QUAD 1
-
-#include <strtol.c>
-
-#ifdef _LIBC
-# ifdef SHARED
-# include <shlib-compat.h>
-
-# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
-compat_symbol (libc, __strtoll_internal, __strtoq_internal, GLIBC_2_0);
-# endif
-
-# endif
-weak_alias (strtoll, strtoq)
-#endif
diff --git a/stdlib/strtoll_l.c b/stdlib/strtoll_l.c
deleted file mode 100644
index 2a712eb80e..0000000000
--- a/stdlib/strtoll_l.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Convert string representing a number to integer value, using given locale.
- Copyright (C) 1997-2017 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/>. */
-
-#define QUAD 1
-
-#include <xlocale.h>
-
-extern long long int ____strtoll_l_internal (const char *, char **, int, int,
- __locale_t);
-
-#include <strtol_l.c>
diff --git a/stdlib/strtoul.c b/stdlib/strtoul.c
deleted file mode 100644
index f72a8d50b1..0000000000
--- a/stdlib/strtoul.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright (C) 1991-2017 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 UNSIGNED 1
-
-#include "strtol.c"
diff --git a/stdlib/strtoul_l.c b/stdlib/strtoul_l.c
deleted file mode 100644
index 6d23ee2964..0000000000
--- a/stdlib/strtoul_l.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Convert string representing a number to integer value, using given locale.
- Copyright (C) 1997-2017 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/>. */
-
-#define UNSIGNED 1
-
-#include <xlocale.h>
-
-extern unsigned long int ____strtoul_l_internal (const char *, char **, int,
- int, __locale_t);
-
-#include "strtol_l.c"
diff --git a/stdlib/strtoull.c b/stdlib/strtoull.c
deleted file mode 100644
index e3dbd849e0..0000000000
--- a/stdlib/strtoull.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Function to parse an `unsigned long long int' from text.
- Copyright (C) 1995-2017 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 QUAD 1
-
-#include <strtoul.c>
-
-#ifdef _LIBC
-# ifdef SHARED
-# include <shlib-compat.h>
-
-# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
-compat_symbol (libc, __strtoull_internal, __strtouq_internal, GLIBC_2_0);
-# endif
-
-# endif
-weak_alias (strtoull, strtouq)
-#endif
diff --git a/stdlib/strtoull_l.c b/stdlib/strtoull_l.c
deleted file mode 100644
index 53ecb916df..0000000000
--- a/stdlib/strtoull_l.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Convert string representing a number to integer value, using given locale.
- Copyright (C) 1997-2017 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/>. */
-
-#define QUAD 1
-#define UNSIGNED 1
-
-#include <xlocale.h>
-
-extern unsigned long long int ____strtoull_l_internal (const char *, char **,
- int, int, __locale_t);
-
-#include <strtol_l.c>
diff --git a/stdlib/strtoumax.c b/stdlib/strtoumax.c
deleted file mode 100644
index 508cb19f8c..0000000000
--- a/stdlib/strtoumax.c
+++ /dev/null
@@ -1 +0,0 @@
-#error "The correct implementation must be chosen based on the `uintmax_t' type"
diff --git a/stdlib/sub_n.c b/stdlib/sub_n.c
deleted file mode 100644
index 7f429def89..0000000000
--- a/stdlib/sub_n.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* mpn_sub_n -- Subtract two limb vectors of equal, non-zero length.
-
-Copyright (C) 1992-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-
-mp_limb_t
-mpn_sub_n (mp_ptr res_ptr, mp_srcptr s1_ptr, mp_srcptr s2_ptr, mp_size_t size)
-{
- register mp_limb_t x, y, cy;
- register mp_size_t j;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- s1_ptr -= j;
- s2_ptr -= j;
- res_ptr -= j;
-
- cy = 0;
- do
- {
- y = s2_ptr[j];
- x = s1_ptr[j];
- y += cy; /* add previous carry to subtrahend */
- cy = (y < cy); /* get out carry from that addition */
- y = x - y; /* main subtract */
- cy = (y > x) + cy; /* get out carry from the subtract, combine */
- res_ptr[j] = y;
- }
- while (++j != 0);
-
- return cy;
-}
diff --git a/stdlib/submul_1.c b/stdlib/submul_1.c
deleted file mode 100644
index 9bc27df442..0000000000
--- a/stdlib/submul_1.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* mpn_submul_1 -- multiply the S1_SIZE long limb vector pointed to by S1_PTR
- by S2_LIMB, subtract the S1_SIZE least significant limbs of the product
- from the limb vector pointed to by RES_PTR. Return the most significant
- limb of the product, adjusted for carry-out from the subtraction.
-
-Copyright (C) 1992-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <gmp.h>
-#include "gmp-impl.h"
-#include "longlong.h"
-
-mp_limb_t
-mpn_submul_1 (register mp_ptr res_ptr, register mp_srcptr s1_ptr,
- mp_size_t s1_size, register mp_limb_t s2_limb)
-{
- register mp_limb_t cy_limb;
- register mp_size_t j;
- register mp_limb_t prod_high, prod_low;
- register mp_limb_t x;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -s1_size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- res_ptr -= j;
- s1_ptr -= j;
-
- cy_limb = 0;
- do
- {
- umul_ppmm (prod_high, prod_low, s1_ptr[j], s2_limb);
-
- prod_low += cy_limb;
- cy_limb = (prod_low < cy_limb) + prod_high;
-
- x = res_ptr[j];
- prod_low = x - prod_low;
- cy_limb += (prod_low > x);
- res_ptr[j] = prod_low;
- }
- while (++j != 0);
-
- return cy_limb;
-}
diff --git a/stdlib/swapcontext.c b/stdlib/swapcontext.c
deleted file mode 100644
index decf2b9a9e..0000000000
--- a/stdlib/swapcontext.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 1998-2017 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 <ucontext.h>
-
-int
-swapcontext (ucontext_t *oucp, const ucontext_t *ucp)
-{
- __set_errno (ENOSYS);
- return -1;
-}
-
-
-stub_warning (swapcontext)
diff --git a/stdlib/sys/errno.h b/stdlib/sys/errno.h
deleted file mode 100644
index 339f4fc10c..0000000000
--- a/stdlib/sys/errno.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <errno.h>
diff --git a/stdlib/sys/random.h b/stdlib/sys/random.h
deleted file mode 100644
index 90a0aca15c..0000000000
--- a/stdlib/sys/random.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Interfaces for obtaining random bytes.
- Copyright (C) 2016-2017 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 _SYS_RANDOM_H
-#define _SYS_RANDOM_H 1
-
-#include <features.h>
-#include <sys/types.h>
-
-/* Flags for use with getrandom. */
-#define GRND_NONBLOCK 0x01
-#define GRND_RANDOM 0x02
-
-__BEGIN_DECLS
-
-/* Write LENGTH bytes of randomness starting at BUFFER. Return the
- number of bytes written, or -1 on error. */
-ssize_t getrandom (void *__buffer, size_t __length,
- unsigned int __flags) __wur;
-
-/* Write LENGTH bytes of randomness starting at BUFFER. Return 0 on
- success or -1 on error. */
-int getentropy (void *__buffer, size_t __length) __wur;
-
-__END_DECLS
-
-#endif /* _SYS_RANDOM_H */
diff --git a/stdlib/system.c b/stdlib/system.c
deleted file mode 100644
index 026ab77768..0000000000
--- a/stdlib/system.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-
-
-/* Execute LINE as a shell command. */
-int
-__libc_system (const char *line)
-{
- if (line == NULL)
- return 0; /* This indicates no command processor. */
-
- __set_errno (ENOSYS);
- return -1;
-}
-weak_alias (__libc_system, system)
-
-
-stub_warning (system)
diff --git a/stdlib/tens_in_limb.c b/stdlib/tens_in_limb.c
deleted file mode 100644
index b6e35aa35a..0000000000
--- a/stdlib/tens_in_limb.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <gmp.h>
-
-
-/* Definitions according to limb size used. */
-#if BITS_PER_MP_LIMB == 32
-# define MAX_DIG_PER_LIMB 9
-# define MAX_FAC_PER_LIMB 1000000000UL
-#elif BITS_PER_MP_LIMB == 64
-# define MAX_DIG_PER_LIMB 19
-# define MAX_FAC_PER_LIMB 10000000000000000000ULL
-#else
-# error "mp_limb_t size " BITS_PER_MP_LIMB "not accounted for"
-#endif
-
-
-/* Local data structure. */
-const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1] =
-{ 0, 10, 100,
- 1000, 10000, 100000L,
- 1000000L, 10000000L, 100000000L,
- 1000000000L
-#if BITS_PER_MP_LIMB > 32
- , 10000000000ULL, 100000000000ULL,
- 1000000000000ULL, 10000000000000ULL, 100000000000000ULL,
- 1000000000000000ULL, 10000000000000000ULL, 100000000000000000ULL,
- 1000000000000000000ULL, 10000000000000000000ULL
-#endif
-#if BITS_PER_MP_LIMB > 64
- #error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB
-#endif
-};
diff --git a/stdlib/test-a64l.c b/stdlib/test-a64l.c
deleted file mode 100644
index b3e1b2e846..0000000000
--- a/stdlib/test-a64l.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Test program for the l64a and a64l functions.
- Copyright (C) 2001-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Schwab <schwab@suse.de>.
-
- 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>
-
-/* Prototype for our test function. */
-extern int do_test (int argc, char *argv[]);
-#include <test-skeleton.c>
-
-struct a64l_test
-{
- const char *base64;
- long int value;
-};
-
-static const struct a64l_test tests[] =
- {
- { "./", 64 },
- { "", 0 },
- { "/", 1 },
- { "FT", 2001 },
- { "zzzzz1", 0xffffffff },
- { "zzzz1", 0x3ffffff },
- { "zzz1", 0xfffff },
- { "zz1", 0x3fff },
- { "z1", 0xff },
- { "1", 0x3 },
- { NULL, 0 }
- };
-
-int
-do_test (int argc, char ** argv)
-{
- const struct a64l_test *at;
- long int l;
- const char *s;
- int status = 0;
-
- for (at = tests; at->base64 != NULL; ++at)
- {
- printf ("a64l (\"%s\")", at->base64);
- l = a64l (at->base64);
- if (l == at->value)
- puts ("\tOK");
- else
- {
- printf ("\tBAD\n returns %ld, expected %ld\n", l, at->value);
- status = 1;
- }
- printf ("l64a (%ld)", at->value);
- s = l64a (at->value);
- if (strcmp (s, at->base64) == 0)
- puts ("\tOK");
- else
- {
- printf ("\tBAD\n returns \"%s\", expected \"%s\"\n", s, at->base64);
- status = 1;
- }
- }
-
- return status ? EXIT_FAILURE : EXIT_SUCCESS;
-}
diff --git a/stdlib/test-canon.c b/stdlib/test-canon.c
deleted file mode 100644
index d664f73c45..0000000000
--- a/stdlib/test-canon.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/* Test program for returning the canonical absolute name of a given file.
- Copyright (C) 1996-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by David Mosberger <davidm@azstarnet.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/>. */
-
-/* This file must be run from within a directory called "stdlib". */
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-
-/* Prototype for our test function. */
-extern int do_test (int argc, char *argv[]);
-#include <test-skeleton.c>
-
-#ifndef PATH_MAX
-# define PATH_MAX 4096
-#endif
-static char cwd[PATH_MAX];
-static size_t cwd_len;
-
-struct {
- const char * name;
- const char * value;
-} symlinks[] = {
- {"SYMLINK_LOOP", "SYMLINK_LOOP"},
- {"SYMLINK_1", "."},
- {"SYMLINK_2", "//////./../../etc"},
- {"SYMLINK_3", "SYMLINK_1"},
- {"SYMLINK_4", "SYMLINK_2"},
- {"SYMLINK_5", "doesNotExist"},
-};
-
-struct {
- const char * in, * out, * resolved;
- int error;
-} tests[] = {
- /* 0 */
- {"/", "/"},
- {"/////////////////////////////////", "/"},
- {"/.././.././.././..///", "/"},
- {"/etc", "/etc"},
- {"/etc/../etc", "/etc"},
- /* 5 */
- {"/doesNotExist/../etc", 0, "/doesNotExist", ENOENT},
- {"./././././././././.", "."},
- {"/etc/.//doesNotExist", 0, "/etc/doesNotExist", ENOENT},
- {"./doesExist", "./doesExist"},
- {"./doesExist/", "./doesExist"},
- /* 10 */
- {"./doesExist/../doesExist", "./doesExist"},
- {"foobar", 0, "./foobar", ENOENT},
- {".", "."},
- {"./foobar", 0, "./foobar", ENOENT},
- {"SYMLINK_LOOP", 0, "./SYMLINK_LOOP", ELOOP},
- /* 15 */
- {"./SYMLINK_LOOP", 0, "./SYMLINK_LOOP", ELOOP},
- {"SYMLINK_1", "."},
- {"SYMLINK_1/foobar", 0, "./foobar", ENOENT},
- {"SYMLINK_2", "/etc"},
- {"SYMLINK_3", "."},
- /* 20 */
- {"SYMLINK_4", "/etc"},
- {"../stdlib/SYMLINK_1", "."},
- {"../stdlib/SYMLINK_2", "/etc"},
- {"../stdlib/SYMLINK_3", "."},
- {"../stdlib/SYMLINK_4", "/etc"},
- /* 25 */
- {"./SYMLINK_5", 0, "./doesNotExist", ENOENT},
- {"SYMLINK_5", 0, "./doesNotExist", ENOENT},
- {"SYMLINK_5/foobar", 0, "./doesNotExist", ENOENT},
- {"doesExist/../../stdlib/doesExist", "./doesExist"},
- {"doesExist/.././../stdlib/.", "."},
- /* 30 */
- {"./doesExist/someFile/", 0, "./doesExist/someFile", ENOTDIR},
- {"./doesExist/someFile/..", 0, "./doesExist/someFile", ENOTDIR},
-};
-
-
-static int
-check_path (const char * result, const char * expected)
-{
- int good;
-
- if (!result)
- return (expected == NULL);
-
- if (!expected)
- return 0;
-
- if (expected[0] == '.' && (expected[1] == '/' || expected[1] == '\0'))
- good = (strncmp (result, cwd, cwd_len) == 0
- && strcmp (result + cwd_len, expected + 1) == 0);
- else
- good = (strcmp (expected, result) == 0);
-
- return good;
-}
-
-
-int
-do_test (int argc, char ** argv)
-{
- char * result;
- int i, errors = 0;
- char buf[PATH_MAX];
-
- getcwd (cwd, sizeof(buf));
- cwd_len = strlen (cwd);
-
- errno = 0;
- if (realpath (NULL, buf) != NULL || errno != EINVAL)
- {
- printf ("%s: expected return value NULL and errno set to EINVAL"
- " for realpath(NULL,...)\n", argv[0]);
- ++errors;
- }
-
-#if 0
- /* This is now allowed. The test is invalid. */
- errno = 0;
- if (realpath ("/", NULL) != NULL || errno != EINVAL)
- {
- printf ("%s: expected return value NULL and errno set to EINVAL"
- " for realpath(...,NULL)\n", argv[0]);
- ++errors;
- }
-#endif
-
- errno = 0;
- if (realpath ("", buf) != NULL || errno != ENOENT)
- {
- printf ("%s: expected return value NULL and set errno to ENOENT"
- " for realpath(\"\",...)\n", argv[0]);
- ++errors;
- }
-
- for (i = 0; i < (int) (sizeof (symlinks) / sizeof (symlinks[0])); ++i)
- symlink (symlinks[i].value, symlinks[i].name);
-
- int has_dir = mkdir ("doesExist", 0777) == 0;
-
- int fd = has_dir ? creat ("doesExist/someFile", 0777) : -1;
-
- for (i = 0; i < (int) (sizeof (tests) / sizeof (tests[0])); ++i)
- {
- buf[0] = '\0';
- result = realpath (tests[i].in, buf);
-
- if (!check_path (result, tests[i].out))
- {
- printf ("%s: flunked test %d (expected `%s', got `%s')\n",
- argv[0], i, tests[i].out ? tests[i].out : "NULL",
- result ? result : "NULL");
- ++errors;
- continue;
- }
-
- if (!check_path (buf, tests[i].out ? tests[i].out : tests[i].resolved))
- {
- printf ("%s: flunked test %d (expected resolved `%s', got `%s')\n",
- argv[0], i, tests[i].out ? tests[i].out : tests[i].resolved,
- buf);
- ++errors;
- continue;
- }
-
- if (!tests[i].out && errno != tests[i].error)
- {
- printf ("%s: flunked test %d (expected errno %d, got %d)\n",
- argv[0], i, tests[i].error, errno);
- ++errors;
- continue;
- }
-
- char *result2 = realpath (tests[i].in, NULL);
- if ((result2 == NULL && result != NULL)
- || (result2 != NULL && strcmp (result, result2) != 0))
- {
- printf ("\
-%s: realpath(..., NULL) produced different result than realpath(..., buf): '%s' vs '%s'\n",
- argv[0], result2, result);
- ++errors;
- }
- free (result2);
- }
-
- getcwd (buf, sizeof(buf));
- if (strcmp (buf, cwd))
- {
- printf ("%s: current working directory changed from %s to %s\n",
- argv[0], cwd, buf);
- ++errors;
- }
-
- if (fd >= 0)
- {
- close (fd);
- unlink ("doesExist/someFile");
- }
-
- if (has_dir)
- rmdir ("doesExist");
-
- for (i = 0; i < (int) (sizeof (symlinks) / sizeof (symlinks[0])); ++i)
- unlink (symlinks[i].name);
-
- if (errors != 0)
- {
- printf ("%d errors.\n", errors);
- return EXIT_FAILURE;
- }
-
- puts ("No errors.");
- return EXIT_SUCCESS;
-}
diff --git a/stdlib/test-canon2.c b/stdlib/test-canon2.c
deleted file mode 100644
index bb676cd865..0000000000
--- a/stdlib/test-canon2.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Test for realpath/canonicalize function.
- Copyright (C) 1998-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
- 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 <string.h>
-
-
-/* Prototype for our test function. */
-extern void do_prepare (int argc, char *argv[]);
-extern int do_test (int argc, char *argv[]);
-
-/* We have a preparation function. */
-#define PREPARE do_prepare
-
-#include <test-skeleton.c>
-
-/* Name of the temporary files we create. */
-char *name1;
-char *name2;
-
-/* Preparation. */
-void
-do_prepare (int argc, char *argv[])
-{
- size_t test_dir_len;
-
- test_dir_len = strlen (test_dir);
-
- /* Generate the circular symlinks. */
- name1 = malloc (test_dir_len + sizeof ("/canonXXXXXX"));
- mempcpy (mempcpy (name1, test_dir, test_dir_len),
- "/canonXXXXXX", sizeof ("/canonXXXXXX"));
- name2 = strdup (name1);
-
- add_temp_file (mktemp (name1));
- add_temp_file (mktemp (name2));
-}
-
-
-/* Run the test. */
-int
-do_test (int argc, char *argv[])
-{
- char *canon;
-
- printf ("create symlinks from %s to %s and vice versa\n", name1, name2);
- if (symlink (name1, name2) == -1
- || symlink (name2, name1) == -1)
- /* We cannot test this. */
- return 0;
-
- /* Call the function. This is equivalent the using `realpath' but the
- function allocates the room for the result. */
- errno = 0;
- canon = canonicalize_file_name (name1);
-
- return canon != NULL || errno != ELOOP;
-}
diff --git a/stdlib/testdiv.c b/stdlib/testdiv.c
deleted file mode 100644
index 4ba3843c69..0000000000
--- a/stdlib/testdiv.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 1992-2017 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 <stdlib.h>
-#include <stdio.h>
-
-int
-main (void)
-{
- int err = 0;
- int i, j;
- while (scanf ("%d %d\n", &i, &j) == 2)
- {
- div_t d = div (i, j);
- printf ("%d / %d = %d + %d/%d", i, j, d.quot, d.rem, j);
- if (i == d.quot * j + d.rem)
- fputs (" OK\n", stdout);
- else
- {
- fputs (" FAILED\n", stdout);
- err = 1;
- }
- }
- return err;
-}
diff --git a/stdlib/testdiv.input b/stdlib/testdiv.input
deleted file mode 100644
index 415b7b4f54..0000000000
--- a/stdlib/testdiv.input
+++ /dev/null
@@ -1,2 +0,0 @@
-10 3
--10 3
diff --git a/stdlib/testmb.c b/stdlib/testmb.c
deleted file mode 100644
index 45dae7db61..0000000000
--- a/stdlib/testmb.c
+++ /dev/null
@@ -1,65 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-int
-main (int argc, char *argv[])
-{
- wchar_t w[10];
- char c[10];
- int i;
- int lose = 0;
-
- i = mbstowcs (w, "bar", 4);
- if (!(i == 3 && w[1] == 'a'))
- {
- puts ("mbstowcs FAILED!");
- lose = 1;
- }
-
- mbstowcs (w, "blah", 5);
- i = wcstombs (c, w, 10);
- if (i != 4)
- {
- puts ("wcstombs FAILED!");
- lose = 1;
- }
-
- if (mblen ("foobar", 7) != 1)
- {
- puts ("mblen 1 FAILED!");
- lose = 1;
- }
-
- if (mblen ("", 1) != 0)
- {
- puts ("mblen 2 FAILED!");
- lose = 1;
- }
-
- {
- int r;
- char c = 'x';
- wchar_t wc;
- char mbc[MB_CUR_MAX];
-
- if ((r = mbtowc (&wc, &c, MB_CUR_MAX)) <= 0)
- {
- printf ("conversion to wide failed, result: %d\n", r);
- lose = 1;
- }
- else
- {
- printf ("wide value: 0x%04lx\n", (unsigned long) wc);
- mbc[0] = '\0';
- if ((r = wctomb (mbc, wc)) <= 0)
- {
- printf ("conversion to multibyte failed, result: %d\n", r);
- lose = 1;
- }
- }
-
- }
-
- puts (lose ? "Test FAILED!" : "Test succeeded.");
- return lose;
-}
diff --git a/stdlib/testmb2.c b/stdlib/testmb2.c
deleted file mode 100644
index 3a3e354629..0000000000
--- a/stdlib/testmb2.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Test case by Miloslav Trmac <mitr@volny.cz>. */
-#include <locale.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-int
-main (void)
-{
- wchar_t wc;
-
- if (setlocale (LC_CTYPE, "de_DE.UTF-8") == NULL)
- {
- puts ("setlocale failed");
- return 1;
- }
-
- if (mbtowc (&wc, "\xc3\xa1", MB_CUR_MAX) != 2 || wc != 0xE1)
- {
- puts ("1st mbtowc failed");
- return 1;
- }
-
- if (mbtowc (&wc, "\xc3\xa1", SIZE_MAX) != 2 || wc != 0xE1)
- {
- puts ("2nd mbtowc failed");
- return 1;
- }
-
- return 0;
-}
diff --git a/stdlib/testrand.c b/stdlib/testrand.c
deleted file mode 100644
index fdfc4e5694..0000000000
--- a/stdlib/testrand.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (C) 1992-2017 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 <stdlib.h>
-#include <stdio.h>
-
-int
-main (void)
-{
- int i1, i2;
- int j1, j2;
-
- /* The C standard says that "If rand is called before any calls to
- srand have been made, the same sequence shall be generated as
- when srand is first called with a seed value of 1." */
- i1 = rand();
- i2 = rand();
- srand (1);
- j1 = rand();
- j2 = rand();
- if (i1 < 0 || i2 < 0 || j1 < 0 || j2 < 0) {
- puts ("Test FAILED!");
- }
- if (j1 == i1 && j2 == i2)
- {
- puts ("Test succeeded.");
- return 0;
- }
- else
- {
- if (j1 != i1)
- printf ("%d != %d\n", j1, i1);
- if (j2 != i2)
- printf ("%d != %d\n", j2, i2);
- puts ("Test FAILED!");
- return 1;
- }
-}
diff --git a/stdlib/testsort.c b/stdlib/testsort.c
deleted file mode 100644
index aa4332a568..0000000000
--- a/stdlib/testsort.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-static int
-compare (const void *a, const void *b)
-{
- return strcmp (*(char **) a, *(char **) b);
-}
-
-int
-main (void)
-{
- char bufs[500][20];
- char *lines[500];
- size_t lens[500];
- size_t i, j;
-
- srandom (1);
-
- for (i = 0; i < 500; ++i)
- {
- lens[i] = random() % 19;
- lines[i] = bufs[i];
- for (j = 0; j < lens[i]; ++j)
- lines[i][j] = random() % 26 + 'a';
- lines[i][j] = '\0';
- }
-
- qsort (lines, 500, sizeof (char *), compare);
-
- for (i = 0; i < 500 && lines[i] != NULL; ++i)
- puts (lines[i]);
-
- return 0;
-}
diff --git a/stdlib/tst-atof1.c b/stdlib/tst-atof1.c
deleted file mode 100644
index 879d866558..0000000000
--- a/stdlib/tst-atof1.c
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static int
-do_test (void)
-{
- char buf[100];
- snprintf (buf, sizeof (buf), "%g", atof ("0x10p-1"));
- if (strcmp (buf, "8") != 0)
- {
- printf ("got \"%s\", expected \"8\"\n", buf);
- return 1;
- }
- return 0;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-atof2.c b/stdlib/tst-atof2.c
deleted file mode 100644
index 74dac87b0d..0000000000
--- a/stdlib/tst-atof2.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-static const struct
-{
- const char *str;
- const char *expected;
-} tests[] =
- {
- { "1e308", "1e+308" },
- { "100000000e300", "1e+308" },
- { "0x1p1023", "8.98847e+307" },
- { "0x1000p1011", "8.98847e+307" },
- { "0x1p1020", "1.12356e+307" },
- { "0x0.00001p1040", "1.12356e+307" },
- { "1e-307", "1e-307" },
- { "0.000001e-301", "1e-307" },
- { "0.0000001e-300", "1e-307" },
- { "0.00000001e-299", "1e-307" },
- { "1000000e-313", "1e-307" },
- { "10000000e-314", "1e-307" },
- { "100000000e-315", "1e-307" },
- { "0x1p-1021", "4.45015e-308" },
- { "0x1000p-1033", "4.45015e-308" },
- { "0x10000p-1037", "4.45015e-308" },
- { "0x0.001p-1009", "4.45015e-308" },
- { "0x0.0001p-1005", "4.45015e-308" },
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
-
-
-static int
-do_test (void)
-{
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char buf[100];
- snprintf (buf, sizeof (buf), "%g", atof (tests[i].str));
- if (strcmp (buf, tests[i].expected) != 0)
- {
- printf ("%d: got \"%s\", expected \"%s\"\n",
- i, buf, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-bsearch.c b/stdlib/tst-bsearch.c
deleted file mode 100644
index 766b11bc61..0000000000
--- a/stdlib/tst-bsearch.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/* Copyright (C) 2000-2017 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 <stdio.h>
-#include <stdlib.h>
-#include <tst-stack-align.h>
-
-struct item
-{
- int val;
- const char *str;
-} arr[] =
-{
- { 0, "zero" },
- { 1, "one" },
- { 2, "two" },
- { 3, "three" },
- { 4, "four" },
- { 5, "five" },
- { 6, "six" },
- { 7, "seven" },
- { 8, "eight" },
- { 9, "nine" },
- { 10, "ten" }
-};
-#define narr (sizeof (arr) / sizeof (arr[0]))
-
-static int align_check;
-
-static int
-comp (const void *p1, const void *p2)
-{
- struct item *e1 = (struct item *) p1;
- struct item *e2 = (struct item *) p2;
-
- if (!align_check)
- align_check = TEST_STACK_ALIGN () ? -1 : 1;
-
- return e1->val - e2->val;
-}
-
-
-static int
-do_test (void)
-{
- size_t cnt;
- int result = 0;
- struct item key;
- struct item *res;
-
- for (cnt = 0; cnt < narr; ++cnt)
- {
-
- key.val = arr[cnt].val;
-
- res = (struct item *) bsearch (&key, arr, narr, sizeof (arr[0]), comp);
- if (res == NULL)
- {
- printf ("entry %zd not found\n", cnt);
- result = 1;
- }
- else if (res != &arr[cnt])
- {
- puts ("wrong entry returned");
- result = 1;
- }
- }
-
- /* And some special tests that shouldn't find any entry. */
- key.val = -1;
- res = (struct item *) bsearch (&key, arr, narr, sizeof (arr[0]), comp);
- if (res != NULL)
- {
- puts ("found an entry that's not there");
- result = 1;
- }
-
- key.val = 11;
- res = (struct item *) bsearch (&key, arr, narr, sizeof (arr[0]), comp);
- if (res != NULL)
- {
- puts ("found an entry that's not there");
- result = 1;
- }
-
- key.val = 11;
- res = (struct item *) bsearch (&key, arr, 0, sizeof (arr[0]), comp);
- if (res != NULL)
- {
- puts ("found an entry that's not there");
- result = 1;
- }
-
- /* Now the array contains only one element - no entry should be found. */
- for (cnt = 0; cnt < narr; ++cnt)
- {
- key.val = arr[cnt].val;
-
- res = (struct item *) bsearch (&key, &arr[5], 1, sizeof (arr[0]), comp);
- if (cnt == 5)
- {
- if (res == NULL)
- {
- printf ("entry %zd not found\n", cnt);
- result = 1;
- }
- else if (res != &arr[cnt])
- {
- puts ("wrong entry returned");
- result = 1;
- }
- }
- else if (res != NULL)
- {
- puts ("found an entry that's not there");
- result = 1;
- }
- }
-
- if (align_check == 0)
- {
- puts ("alignment not checked");
- result = 1;
- }
- else if (align_check == -1)
- {
- puts ("stack not sufficiently aligned");
- result = 1;
- }
-
- if (result == 0)
- puts ("all OK");
-
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-empty-env.c b/stdlib/tst-empty-env.c
deleted file mode 100644
index 0b0651d530..0000000000
--- a/stdlib/tst-empty-env.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Test that passing a NULL value does not hang environment traversal in
- tunables.
- Copyright (C) 2017 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/>. */
-
-/* The test is useful only when the source is configured with
- --enable-hardcoded-path-in-tests since otherwise the execve just picks up
- the system dynamic linker. */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <errno.h>
-
-static int
-do_test (int argc, char **argv)
-{
- if (argc == 2)
- return 0;
-
- char envname[] = "FOOBAR";
- char *filename = program_invocation_name;
- char *newargv[] = {filename, filename, NULL};
- char *newenviron[] = {envname, NULL};
-
- /* This was reported in Fedora:
-
- https://bugzilla.redhat.com/show_bug.cgi?id=1414589
-
- If one of the environment variables has no value, then the environment
- traversal must skip and also advance to the next environment entry. The
- bug in question would cause this test to hang in an infinite loop. */
- int ret = execve (filename, newargv, newenviron);
-
- if (ret != 0)
- printf ("execve failed: %m");
-
- /* We will reach here only if we fail execve. */
- return 1;
-}
-
-#define TIMEOUT 3
-#define TEST_FUNCTION_ARGV do_test
-#include <support/test-driver.c>
diff --git a/stdlib/tst-environ.c b/stdlib/tst-environ.c
deleted file mode 100644
index b2301641f5..0000000000
--- a/stdlib/tst-environ.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/* Copyright (C) 1999-2017 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>
-#include <libc-diag.h>
-
-#define VAR "FOOBAR"
-
-char putenv_val[100] = VAR "=some longer value";
-
-static int
-do_test (void)
-{
- int result = 0;
- const char *valp;
-
- /* First test: remove entry FOOBAR, whether it exists or not. */
- unsetenv (VAR);
-
- /* Now getting the value should fail. */
- if (getenv (VAR) != NULL)
- {
- printf ("There should be no `%s' value\n", VAR);
- result = 1;
- }
-
- /* Now add a value, with the replace flag cleared. */
- if (setenv (VAR, "one", 0) != 0)
- {
- printf ("setenv #1 failed: %m\n");
- result = 1;
- }
-
- /* Getting this value should now be possible. */
- valp = getenv (VAR);
- if (valp == NULL || strcmp (valp, "one") != 0)
- {
- puts ("getenv #2 failed");
- result = 1;
- }
-
- /* Try to replace without the replace flag set. This should fail. */
- if (setenv (VAR, "two", 0) != 0)
- {
- printf ("setenv #2 failed: %m\n");
- result = 1;
- }
-
- /* The value shouldn't have changed. */
- valp = getenv (VAR);
- if (valp == NULL || strcmp (valp, "one") != 0)
- {
- puts ("getenv #3 failed");
- result = 1;
- }
-
- /* Now replace the value using putenv. */
- if (putenv (putenv_val) != 0)
- {
- printf ("putenv #1 failed: %m\n");
- result = 1;
- }
-
- /* The value should have changed now. */
- valp = getenv (VAR);
- if (valp == NULL || strcmp (valp, "some longer value") != 0)
- {
- printf ("getenv #4 failed (is \"%s\")\n", valp);
- result = 1;
- }
-
- /* Now one tricky check: changing the variable passed in putenv should
- change the environment. */
- strcpy (&putenv_val[sizeof VAR], "a short one");
-
- /* The value should have changed again. */
- valp = getenv (VAR);
- if (valp == NULL || strcmp (valp, "a short one") != 0)
- {
- puts ("getenv #5 failed");
- result = 1;
- }
-
- /* It should even be possible to rename the variable. */
- strcpy (putenv_val, "XYZZY=some other value");
-
- /* Now a lookup using the old name should fail. */
- if (getenv (VAR) != NULL)
- {
- puts ("getenv #6 failed");
- result = 1;
- }
-
- /* But using the new name it should work. */
- valp = getenv ("XYZZY");
- if (valp == NULL || strcmp (valp, "some other value") != 0)
- {
- puts ("getenv #7 failed");
- result = 1;
- }
-
- /* Create a new variable with the old name. */
- if (setenv (VAR, "a new value", 0) != 0)
- {
- printf ("setenv #3 failed: %m\n");
- result = 1;
- }
-
- /* At this point a getenv call must return the new value. */
- valp = getenv (VAR);
- if (valp == NULL || strcmp (valp, "a new value") != 0)
- {
- puts ("getenv #8 failed");
- result = 1;
- }
-
- /* Black magic: rename the variable we added using putenv back. */
- strcpy (putenv_val, VAR "=old name new value");
-
- /* This is interesting. We have two variables with the same name.
- Getting a value should return one of them. */
- valp = getenv (VAR);
- if (valp == NULL
- || (strcmp (valp, "a new value") != 0
- && strcmp (valp, "old name new value") != 0))
- {
- puts ("getenv #9 failed");
- result = 1;
- }
-
- /* More fun ahead: we are now removing the variable. This should remove
- both values. The cast is ok: this call should never put the string
- in the environment and it should never modify it. */
- putenv ((char *) VAR);
-
- /* Getting the value should now fail. */
- if (getenv (VAR) != NULL)
- {
- printf ("getenv #10 failed (\"%s\" found)\n", getenv (VAR));
- result = 1;
- }
-
- /* Now a test with an environment variable that's one character long.
- This is to test a special case in the getenv implementation. */
- strcpy (putenv_val, "X=one character test");
- if (putenv (putenv_val) != 0)
- {
- printf ("putenv #2 failed: %m\n");
- result = 1;
- }
-
- valp = getenv ("X");
- if (valp == NULL || strcmp (valp, "one character test") != 0)
- {
- puts ("getenv #11 failed");
- result = 1;
- }
-
- /* Both setenv and unsetenv should return -1/EINVAL for NULL or "" name
- or if name contains '=' character. */
- errno = 0;
- if (setenv (NULL, "val", 1) >= 0 || errno != EINVAL)
- {
- puts ("setenv #4 failed");
- result = 1;
- }
-
- errno = 0;
- if (setenv ("", "val", 0) >= 0 || errno != EINVAL)
- {
- puts ("setenv #5 failed");
- result = 1;
- }
-
- errno = 0;
- if (setenv ("var=val", "val", 1) >= 0 || errno != EINVAL)
- {
- puts ("setenv #6 failed");
- result = 1;
- }
-
- /* This deliberately tests supplying a null pointer to a function whose
- argument is marked __attribute__ ((nonnull)). */
- DIAG_PUSH_NEEDS_COMMENT;
- DIAG_IGNORE_NEEDS_COMMENT(5, "-Wnonnull");
- errno = 0;
- if (unsetenv (NULL) >= 0 || errno != EINVAL)
- {
- puts ("unsetenv #1 failed");
- result = 1;
- }
- DIAG_POP_NEEDS_COMMENT;
-
- errno = 0;
- if (unsetenv ("") >= 0 || errno != EINVAL)
- {
- puts ("unsetenv #2 failed");
- result = 1;
- }
-
- errno = 0;
- if (unsetenv ("x=y") >= 0 || errno != EINVAL)
- {
- puts ("unsetenv #3 failed");
- result = 1;
- }
-
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-fmtmsg.c b/stdlib/tst-fmtmsg.c
deleted file mode 100644
index b7948c5f1e..0000000000
--- a/stdlib/tst-fmtmsg.c
+++ /dev/null
@@ -1,85 +0,0 @@
-#include <fmtmsg.h>
-#include <mcheck.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-#define MM_TEST 10
-
-static int
-do_test (void)
-{
- int result = 0;
-
- mtrace ();
-
- char TEST[] = "ABCD";
- if (addseverity (MM_TEST, TEST) != MM_OK)
- {
- puts ("addseverity failed");
- result = 1;
- }
- strcpy (TEST, "TEST");
-
- if (fmtmsg (MM_PRINT, "GLIBC:tst-fmtmsg", MM_HALT, "halt",
- "should print message for MM_HALT", "GLIBC:tst-fmtmsg:1")
- != MM_OK)
- result = 1;
-
- if (fmtmsg (MM_PRINT, "GLIBC:tst-fmtmsg", MM_ERROR, "halt",
- "should print message for MM_ERROR", "GLIBC:tst-fmtmsg:2")
- != MM_OK)
- result = 1;
-
- if (fmtmsg (MM_PRINT, "GLIBC:tst-fmtmsg", MM_WARNING, "halt",
- "should print message for MM_WARNING", "GLIBC:tst-fmtmsg:3")
- != MM_OK)
- result = 1;
-
- if (fmtmsg (MM_PRINT, "GLIBC:tst-fmtmsg", MM_INFO, "halt",
- "should print message for MM_INFO", "GLIBC:tst-fmtmsg:4")
- != MM_OK)
- result = 1;
-
- if (fmtmsg (MM_PRINT, "GLIBC:tst-fmtmsg", MM_NOSEV, "halt",
- "should print message for MM_NOSEV", "GLIBC:tst-fmtmsg:5")
- != MM_OK)
- result = 1;
-
- if (fmtmsg (MM_PRINT, "GLIBC:tst-fmtmsg", MM_TEST, "halt",
- "should print message for MM_TEST", "GLIBC:tst-fmtmsg:6")
- != MM_OK)
- result = 1;
-
- if (addseverity (MM_TEST, NULL) != MM_OK)
- {
- puts ("second addseverity failed");
- result = 1;
- }
-
- if (addseverity (MM_TEST, NULL) != MM_NOTOK)
- {
- puts ("third addseverity unexpectedly succeeded");
- result = 1;
- }
-
- char *p = strdup ("TEST2");
- if (addseverity (MM_TEST, p) != MM_OK)
- {
- puts ("fourth addseverity failed");
- result = 1;
- }
- if (addseverity (MM_TEST, "TEST3") != MM_OK)
- {
- puts ("fifth addseverity failed");
- result = 1;
- }
-
- free (p);
-
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-fmtmsg.sh b/stdlib/tst-fmtmsg.sh
deleted file mode 100755
index bcbe2e3348..0000000000
--- a/stdlib/tst-fmtmsg.sh
+++ /dev/null
@@ -1,337 +0,0 @@
-#!/bin/sh
-# Test of fmtmsg function family.
-# Copyright (C) 2000-2017 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
-test_program_prefix_before_env=$2
-run_program_env=$3
-test_program_prefix_after_env=$4
-objpfx=$5
-
-test_pre="${test_program_prefix_before_env} ${run_program_env}"
-test="${test_program_prefix_after_env} ${objpfx}tst-fmtmsg"
-out=${objpfx}tst-fmtmsg.out
-
-($test_pre MSGVERB= $test || exit 1;
- $test_pre MSGVERB=label $test || exit 1;
- $test_pre MSGVERB=severity $test || exit 1;
- $test_pre MSGVERB=severity:label $test || exit 1;
- $test_pre MSGVERB=text $test || exit 1;
- $test_pre MSGVERB=text:label $test || exit 1;
- $test_pre MSGVERB=text:severity $test || exit 1;
- $test_pre MSGVERB=text:severity:label $test || exit 1;
- $test_pre MSGVERB=action $test || exit 1;
- $test_pre MSGVERB=action:label $test || exit 1;
- $test_pre MSGVERB=action:severity $test || exit 1;
- $test_pre MSGVERB=action:severity:label $test || exit 1;
- $test_pre MSGVERB=action:text $test || exit 1;
- $test_pre MSGVERB=action:text:label $test || exit 1;
- $test_pre MSGVERB=action:text:severity $test || exit 1;
- $test_pre MSGVERB=action:text:severity:label $test || exit 1;
- $test_pre MSGVERB=tag $test || exit 1;
- $test_pre MSGVERB=tag:label $test || exit 1;
- $test_pre MSGVERB=tag:severity $test || exit 1;
- $test_pre MSGVERB=tag:severity:label $test || exit 1;
- $test_pre MSGVERB=tag:text $test || exit 1;
- $test_pre MSGVERB=tag:text:label $test || exit 1;
- $test_pre MSGVERB=tag:text:severity $test || exit 1;
- $test_pre MSGVERB=tag:text:severity:label $test || exit 1;
- $test_pre MSGVERB=tag:action $test || exit 1;
- $test_pre MSGVERB=tag:action:label $test || exit 1;
- $test_pre MSGVERB=tag:action:severity $test || exit 1;
- $test_pre MSGVERB=tag:action:severity:label $test || exit 1;
- $test_pre MSGVERB=tag:action:text $test || exit 1;
- $test_pre MSGVERB=tag:action:text:label $test || exit 1;
- $test_pre MSGVERB=tag:action:text:severity $test || exit 1;
- $test_pre MSGVERB=tag:action:text:severity:label $test || exit 1;) 2> $out
-
-cmp $out <<EOF
-GLIBC:tst-fmtmsg: HALT: halt
-TO FIX: should print message for MM_HALT GLIBC:tst-fmtmsg:1
-GLIBC:tst-fmtmsg: ERROR: halt
-TO FIX: should print message for MM_ERROR GLIBC:tst-fmtmsg:2
-GLIBC:tst-fmtmsg: WARNING: halt
-TO FIX: should print message for MM_WARNING GLIBC:tst-fmtmsg:3
-GLIBC:tst-fmtmsg: INFO: halt
-TO FIX: should print message for MM_INFO GLIBC:tst-fmtmsg:4
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_NOSEV GLIBC:tst-fmtmsg:5
-GLIBC:tst-fmtmsg: TEST: halt
-TO FIX: should print message for MM_TEST GLIBC:tst-fmtmsg:6
-GLIBC:tst-fmtmsg
-GLIBC:tst-fmtmsg
-GLIBC:tst-fmtmsg
-GLIBC:tst-fmtmsg
-GLIBC:tst-fmtmsg
-GLIBC:tst-fmtmsg
-HALT
-ERROR
-WARNING
-INFO
-
-TEST
-GLIBC:tst-fmtmsg: HALT
-GLIBC:tst-fmtmsg: ERROR
-GLIBC:tst-fmtmsg: WARNING
-GLIBC:tst-fmtmsg: INFO
-GLIBC:tst-fmtmsg
-GLIBC:tst-fmtmsg: TEST
-halt
-halt
-halt
-halt
-halt
-halt
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg: halt
-HALT: halt
-ERROR: halt
-WARNING: halt
-INFO: halt
-halt
-TEST: halt
-GLIBC:tst-fmtmsg: HALT: halt
-GLIBC:tst-fmtmsg: ERROR: halt
-GLIBC:tst-fmtmsg: WARNING: halt
-GLIBC:tst-fmtmsg: INFO: halt
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg: TEST: halt
-TO FIX: should print message for MM_HALT
-TO FIX: should print message for MM_ERROR
-TO FIX: should print message for MM_WARNING
-TO FIX: should print message for MM_INFO
-TO FIX: should print message for MM_NOSEV
-TO FIX: should print message for MM_TEST
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_HALT
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_ERROR
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_WARNING
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_INFO
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_NOSEV
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_TEST
-HALT: TO FIX: should print message for MM_HALT
-ERROR: TO FIX: should print message for MM_ERROR
-WARNING: TO FIX: should print message for MM_WARNING
-INFO: TO FIX: should print message for MM_INFO
-TO FIX: should print message for MM_NOSEV
-TEST: TO FIX: should print message for MM_TEST
-GLIBC:tst-fmtmsg: HALT: TO FIX: should print message for MM_HALT
-GLIBC:tst-fmtmsg: ERROR: TO FIX: should print message for MM_ERROR
-GLIBC:tst-fmtmsg: WARNING: TO FIX: should print message for MM_WARNING
-GLIBC:tst-fmtmsg: INFO: TO FIX: should print message for MM_INFO
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_NOSEV
-GLIBC:tst-fmtmsg: TEST: TO FIX: should print message for MM_TEST
-halt
-TO FIX: should print message for MM_HALT
-halt
-TO FIX: should print message for MM_ERROR
-halt
-TO FIX: should print message for MM_WARNING
-halt
-TO FIX: should print message for MM_INFO
-halt
-TO FIX: should print message for MM_NOSEV
-halt
-TO FIX: should print message for MM_TEST
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_HALT
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_ERROR
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_WARNING
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_INFO
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_NOSEV
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_TEST
-HALT: halt
-TO FIX: should print message for MM_HALT
-ERROR: halt
-TO FIX: should print message for MM_ERROR
-WARNING: halt
-TO FIX: should print message for MM_WARNING
-INFO: halt
-TO FIX: should print message for MM_INFO
-halt
-TO FIX: should print message for MM_NOSEV
-TEST: halt
-TO FIX: should print message for MM_TEST
-GLIBC:tst-fmtmsg: HALT: halt
-TO FIX: should print message for MM_HALT
-GLIBC:tst-fmtmsg: ERROR: halt
-TO FIX: should print message for MM_ERROR
-GLIBC:tst-fmtmsg: WARNING: halt
-TO FIX: should print message for MM_WARNING
-GLIBC:tst-fmtmsg: INFO: halt
-TO FIX: should print message for MM_INFO
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_NOSEV
-GLIBC:tst-fmtmsg: TEST: halt
-TO FIX: should print message for MM_TEST
-GLIBC:tst-fmtmsg:1
-GLIBC:tst-fmtmsg:2
-GLIBC:tst-fmtmsg:3
-GLIBC:tst-fmtmsg:4
-GLIBC:tst-fmtmsg:5
-GLIBC:tst-fmtmsg:6
-GLIBC:tst-fmtmsg: GLIBC:tst-fmtmsg:1
-GLIBC:tst-fmtmsg: GLIBC:tst-fmtmsg:2
-GLIBC:tst-fmtmsg: GLIBC:tst-fmtmsg:3
-GLIBC:tst-fmtmsg: GLIBC:tst-fmtmsg:4
-GLIBC:tst-fmtmsg: GLIBC:tst-fmtmsg:5
-GLIBC:tst-fmtmsg: GLIBC:tst-fmtmsg:6
-HALT: GLIBC:tst-fmtmsg:1
-ERROR: GLIBC:tst-fmtmsg:2
-WARNING: GLIBC:tst-fmtmsg:3
-INFO: GLIBC:tst-fmtmsg:4
-GLIBC:tst-fmtmsg:5
-TEST: GLIBC:tst-fmtmsg:6
-GLIBC:tst-fmtmsg: HALT: GLIBC:tst-fmtmsg:1
-GLIBC:tst-fmtmsg: ERROR: GLIBC:tst-fmtmsg:2
-GLIBC:tst-fmtmsg: WARNING: GLIBC:tst-fmtmsg:3
-GLIBC:tst-fmtmsg: INFO: GLIBC:tst-fmtmsg:4
-GLIBC:tst-fmtmsg: GLIBC:tst-fmtmsg:5
-GLIBC:tst-fmtmsg: TEST: GLIBC:tst-fmtmsg:6
-halt
-GLIBC:tst-fmtmsg:1
-halt
-GLIBC:tst-fmtmsg:2
-halt
-GLIBC:tst-fmtmsg:3
-halt
-GLIBC:tst-fmtmsg:4
-halt
-GLIBC:tst-fmtmsg:5
-halt
-GLIBC:tst-fmtmsg:6
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg:1
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg:2
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg:3
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg:4
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg:5
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg:6
-HALT: halt
-GLIBC:tst-fmtmsg:1
-ERROR: halt
-GLIBC:tst-fmtmsg:2
-WARNING: halt
-GLIBC:tst-fmtmsg:3
-INFO: halt
-GLIBC:tst-fmtmsg:4
-halt
-GLIBC:tst-fmtmsg:5
-TEST: halt
-GLIBC:tst-fmtmsg:6
-GLIBC:tst-fmtmsg: HALT: halt
-GLIBC:tst-fmtmsg:1
-GLIBC:tst-fmtmsg: ERROR: halt
-GLIBC:tst-fmtmsg:2
-GLIBC:tst-fmtmsg: WARNING: halt
-GLIBC:tst-fmtmsg:3
-GLIBC:tst-fmtmsg: INFO: halt
-GLIBC:tst-fmtmsg:4
-GLIBC:tst-fmtmsg: halt
-GLIBC:tst-fmtmsg:5
-GLIBC:tst-fmtmsg: TEST: halt
-GLIBC:tst-fmtmsg:6
-TO FIX: should print message for MM_HALT GLIBC:tst-fmtmsg:1
-TO FIX: should print message for MM_ERROR GLIBC:tst-fmtmsg:2
-TO FIX: should print message for MM_WARNING GLIBC:tst-fmtmsg:3
-TO FIX: should print message for MM_INFO GLIBC:tst-fmtmsg:4
-TO FIX: should print message for MM_NOSEV GLIBC:tst-fmtmsg:5
-TO FIX: should print message for MM_TEST GLIBC:tst-fmtmsg:6
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_HALT GLIBC:tst-fmtmsg:1
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_ERROR GLIBC:tst-fmtmsg:2
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_WARNING GLIBC:tst-fmtmsg:3
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_INFO GLIBC:tst-fmtmsg:4
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_NOSEV GLIBC:tst-fmtmsg:5
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_TEST GLIBC:tst-fmtmsg:6
-HALT: TO FIX: should print message for MM_HALT GLIBC:tst-fmtmsg:1
-ERROR: TO FIX: should print message for MM_ERROR GLIBC:tst-fmtmsg:2
-WARNING: TO FIX: should print message for MM_WARNING GLIBC:tst-fmtmsg:3
-INFO: TO FIX: should print message for MM_INFO GLIBC:tst-fmtmsg:4
-TO FIX: should print message for MM_NOSEV GLIBC:tst-fmtmsg:5
-TEST: TO FIX: should print message for MM_TEST GLIBC:tst-fmtmsg:6
-GLIBC:tst-fmtmsg: HALT: TO FIX: should print message for MM_HALT GLIBC:tst-fmtmsg:1
-GLIBC:tst-fmtmsg: ERROR: TO FIX: should print message for MM_ERROR GLIBC:tst-fmtmsg:2
-GLIBC:tst-fmtmsg: WARNING: TO FIX: should print message for MM_WARNING GLIBC:tst-fmtmsg:3
-GLIBC:tst-fmtmsg: INFO: TO FIX: should print message for MM_INFO GLIBC:tst-fmtmsg:4
-GLIBC:tst-fmtmsg: TO FIX: should print message for MM_NOSEV GLIBC:tst-fmtmsg:5
-GLIBC:tst-fmtmsg: TEST: TO FIX: should print message for MM_TEST GLIBC:tst-fmtmsg:6
-halt
-TO FIX: should print message for MM_HALT GLIBC:tst-fmtmsg:1
-halt
-TO FIX: should print message for MM_ERROR GLIBC:tst-fmtmsg:2
-halt
-TO FIX: should print message for MM_WARNING GLIBC:tst-fmtmsg:3
-halt
-TO FIX: should print message for MM_INFO GLIBC:tst-fmtmsg:4
-halt
-TO FIX: should print message for MM_NOSEV GLIBC:tst-fmtmsg:5
-halt
-TO FIX: should print message for MM_TEST GLIBC:tst-fmtmsg:6
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_HALT GLIBC:tst-fmtmsg:1
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_ERROR GLIBC:tst-fmtmsg:2
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_WARNING GLIBC:tst-fmtmsg:3
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_INFO GLIBC:tst-fmtmsg:4
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_NOSEV GLIBC:tst-fmtmsg:5
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_TEST GLIBC:tst-fmtmsg:6
-HALT: halt
-TO FIX: should print message for MM_HALT GLIBC:tst-fmtmsg:1
-ERROR: halt
-TO FIX: should print message for MM_ERROR GLIBC:tst-fmtmsg:2
-WARNING: halt
-TO FIX: should print message for MM_WARNING GLIBC:tst-fmtmsg:3
-INFO: halt
-TO FIX: should print message for MM_INFO GLIBC:tst-fmtmsg:4
-halt
-TO FIX: should print message for MM_NOSEV GLIBC:tst-fmtmsg:5
-TEST: halt
-TO FIX: should print message for MM_TEST GLIBC:tst-fmtmsg:6
-GLIBC:tst-fmtmsg: HALT: halt
-TO FIX: should print message for MM_HALT GLIBC:tst-fmtmsg:1
-GLIBC:tst-fmtmsg: ERROR: halt
-TO FIX: should print message for MM_ERROR GLIBC:tst-fmtmsg:2
-GLIBC:tst-fmtmsg: WARNING: halt
-TO FIX: should print message for MM_WARNING GLIBC:tst-fmtmsg:3
-GLIBC:tst-fmtmsg: INFO: halt
-TO FIX: should print message for MM_INFO GLIBC:tst-fmtmsg:4
-GLIBC:tst-fmtmsg: halt
-TO FIX: should print message for MM_NOSEV GLIBC:tst-fmtmsg:5
-GLIBC:tst-fmtmsg: TEST: halt
-TO FIX: should print message for MM_TEST GLIBC:tst-fmtmsg:6
-EOF
-exit $?
diff --git a/stdlib/tst-getrandom.c b/stdlib/tst-getrandom.c
deleted file mode 100644
index e84a83f248..0000000000
--- a/stdlib/tst-getrandom.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/* Tests for the getentropy, getrandom functions.
- Copyright (C) 2016-2017 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 <stdbool.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/random.h>
-
-/* Set to true if any errors are encountered. */
-static bool errors;
-
-/* Test getrandom with a single buffer length. NB: The passed-in
- buffer must have room for four extra bytes after the specified
- length, which are used to test that getrandom leaves those bytes
- unchanged. */
-static void
-test_length (char *buffer, size_t length, unsigned int flags)
-{
- memset (buffer, 0, length);
- strcpy (buffer + length, "123");
- ssize_t ret = getrandom (buffer, length, flags);
- if (ret < 0)
- {
- /* EAGAIN is an expected error with GRND_RANDOM and
- GRND_NONBLOCK. */
- if ((flags & GRND_RANDOM)
- && (flags & GRND_NONBLOCK)
- && errno == EAGAIN)
- return;
- printf ("error: getrandom (%zu, 0x%x): %m\n", length, flags);
- errors = true;
- return;
- }
- if (ret != length)
- {
- if (flags & GRND_RANDOM)
- {
- if (ret == 0 || ret > length)
- {
- printf ("error: getrandom (%zu, 0x%x) returned %zd\n",
- length, flags, ret);
- errors = true;
- }
- }
- else
- {
- printf ("error: getrandom (%zu, 0x%x) returned %zd\n",
- length, flags, ret);
- errors = true;
- }
- }
- if (length >= 7)
- {
- /* One spurious test failure in 2**56 is sufficiently
- unlikely. */
- int non_null = 0;
- for (int i = 0; i < length; ++i)
- non_null += buffer[i] != 0;
- if (non_null == 0)
- {
- printf ("error: getrandom (%zu, 0x%x) returned all-zero bytes\n",
- length, flags);
- errors = true;
- }
- }
- if (memcmp (buffer + length, "123", 4) != 0)
- {
- printf ("error: getrandom (%zu, 0x%x) wrote spurious bytes\n",
- length, flags);
- errors = true;
- }
-}
-
-/* Call getrandom repeatedly to fill the buffer. */
-static bool
-getrandom_full (char *buffer, size_t length, unsigned int flags)
-{
- char *end = buffer + length;
- while (buffer < end)
- {
- ssize_t ret = getrandom (buffer, end - buffer, flags);
- if (ret < 0)
- {
- printf ("error: getrandom (%zu, 0x%x): %m\n", length, flags);
- errors = true;
- return false;
- }
- buffer += ret;
- }
-
- return true;
-}
-
-static void
-test_flags (unsigned int flags)
-{
- /* Test various lengths, but only for !GRND_RANDOM, to conserve
- entropy. */
- {
- enum { max_length = 300 };
- char buffer[max_length + 4];
- if (flags & GRND_RANDOM)
- test_length (buffer, 0, flags);
- else
- {
- for (int length = 0; length <= 9; ++length)
- test_length (buffer, length, flags);
- test_length (buffer, 16, flags);
- test_length (buffer, max_length, flags);
- }
- }
-
- /* Test that getrandom returns different data. */
- if (!(flags & GRND_NONBLOCK))
- {
- char buffer1[8];
- memset (buffer1, 0, sizeof (buffer1));
-
- char buffer2[8];
- memset (buffer2, 0, sizeof (buffer2));
-
- if (getrandom_full (buffer1, sizeof (buffer1), flags)
- && getrandom_full (buffer2, sizeof (buffer2), flags))
- {
- /* The probability that these two 8-byte buffers are equal
- is very small (assuming that two subsequent calls to
- getrandom result are independent, uniformly distributed
- random variables). */
- if (memcmp (buffer1, buffer2, sizeof (buffer1)) == 0)
- {
- printf ("error: getrandom returns constant value\n");
- errors = true;
- }
- }
- }
-}
-
-static void
-test_getentropy (void)
-{
- char buf[16];
- memset (buf, '@', sizeof (buf));
- if (getentropy (buf, 0) != 0)
- {
- printf ("error: getentropy zero length: %m\n");
- errors = true;
- return;
- }
- for (size_t i = 0; i < sizeof (buf); ++i)
- if (buf[i] != '@')
- {
- printf ("error: getentropy modified zero-length buffer\n");
- errors = true;
- return;
- }
-
- if (getentropy (buf, sizeof (buf)) != 0)
- {
- printf ("error: getentropy buf: %m\n");
- errors = true;
- return;
- }
-
- char buf2[256];
- _Static_assert (sizeof (buf) < sizeof (buf2), "buf and buf2 compatible");
- memset (buf2, '@', sizeof (buf2));
- if (getentropy (buf2, sizeof (buf)) != 0)
- {
- printf ("error: getentropy buf2: %m\n");
- errors = true;
- return;
- }
-
- /* The probability that these two buffers are equal is very
- small. */
- if (memcmp (buf, buf2, sizeof (buf) == 0))
- {
- printf ("error: getentropy appears to return constant bytes\n");
- errors = true;
- return;
- }
-
- for (size_t i = sizeof (buf); i < sizeof (buf2); ++i)
- if (buf2[i] != '@')
- {
- printf ("error: getentropy wrote beyond the end of the buffer\n");
- errors = true;
- return;
- }
-
- char buf3[257];
- if (getentropy (buf3, sizeof (buf3)) == 0)
- {
- printf ("error: getentropy successful for 257 byte buffer\n");
- errors = true;
- return;
- }
- if (errno != EIO)
- {
- printf ("error: getentropy wrong error for 257 byte buffer: %m\n");
- errors = true;
- return;
- }
-}
-
-static int
-do_test (void)
-{
- /* Check if getrandom is not supported by this system. */
- if (getrandom (NULL, 0, 0) == -1 && errno == ENOSYS)
- return 77;
-
- for (int use_random = 0; use_random < 2; ++use_random)
- for (int use_nonblock = 0; use_nonblock < 2; ++use_nonblock)
- {
- unsigned int flags = 0;
- if (use_random)
- flags |= GRND_RANDOM;
- if (use_nonblock)
- flags |= GRND_NONBLOCK;
- test_flags (flags);
- }
-
- test_getentropy ();
-
- return errors;
-}
-
-#include <support/test-driver.c>
diff --git a/stdlib/tst-limits.c b/stdlib/tst-limits.c
deleted file mode 100644
index 9aabc360f6..0000000000
--- a/stdlib/tst-limits.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* It is important that this comes first to not hide effects introduced
- by other headers. */
-#include <limits.h>
-
-#include <inttypes.h>
-#include <stdio.h>
-
-
-static long long int
-bitval (int bits)
-{
- long long int val = 0;
- while (bits-- > 0)
- val |= 1ll << bits;
- return val;
-}
-
-
-static int
-do_test (void)
-{
- int result = 0;
-
-#define TEST(name, format, expected) \
- printf ("%-12s expected = %-20" format " actual = %" format "\n", \
- #name ":", expected, name); \
- result |= name != expected
-
- /* The limits from ISO C99. */
-
- /* We cannot support anything but 8-bit chars. */
- TEST (CHAR_BIT, "d", 8);
- TEST (SCHAR_MIN, "d", -128);
- TEST (SCHAR_MAX, "d", 127);
- TEST (UCHAR_MAX, "d", 255);
-
- TEST (SHRT_MIN, "d", -(1 << (sizeof (short int) * CHAR_BIT - 1)));
- TEST (SHRT_MAX, "d", (1 << (sizeof (short int) * CHAR_BIT - 1)) - 1);
- TEST (USHRT_MAX, "d", (1 << sizeof (short int) * CHAR_BIT) - 1);
-
- TEST (INT_MIN, "d", (int) -bitval (sizeof (int) * CHAR_BIT - 1) - 1);
- TEST (INT_MAX, "d", (int) bitval (sizeof (int) * CHAR_BIT - 1));
- TEST (UINT_MAX, "u",
- (unsigned int) bitval (sizeof (unsigned int) * CHAR_BIT));
-
- TEST (LONG_MIN, "ld",
- (long int) -bitval (sizeof (long int) * CHAR_BIT - 1) - 1);
- TEST (LONG_MAX, "ld", (long int) bitval (sizeof (long int) * CHAR_BIT - 1));
- TEST (ULONG_MAX, "lu",
- (unsigned long int) bitval (sizeof (unsigned long int) * CHAR_BIT));
-
- TEST (LLONG_MIN, "lld", -bitval (sizeof (long long int) * CHAR_BIT - 1) - 1);
- TEST (LLONG_MAX, "lld", bitval (sizeof (long long int) * CHAR_BIT - 1));
- TEST (ULLONG_MAX, "llu",
- (unsigned long long int) bitval (sizeof (unsigned long long int)
- * CHAR_BIT));
-
- /* Values from POSIX and Unix. */
-#ifdef PAGESIZE
- TEST (PAGESIZE, "d", getpagesize ());
-#elif defined (PAGE_SIZE)
- TEST (PAGE_SIZE, "d", getpagesize ());
-#endif
-
- TEST (WORD_BIT, "d", (int) sizeof (int) * CHAR_BIT);
- TEST (LONG_BIT, "d", (int) sizeof (long int) * CHAR_BIT);
-
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-makecontext.c b/stdlib/tst-makecontext.c
deleted file mode 100644
index d7ffad5f64..0000000000
--- a/stdlib/tst-makecontext.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Copyright (C) 2006-2017 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 <stdlib.h>
-#include <stdio.h>
-#include <ucontext.h>
-#include <assert.h>
-#include <unwind.h>
-#include <dlfcn.h>
-#include <gnu/lib-names.h>
-
-ucontext_t ucp;
-char st1[16384];
-__thread int thr;
-
-int somevar = -76;
-long othervar = -78L;
-
-struct trace_arg
-{
- int cnt, size;
-};
-
-static _Unwind_Reason_Code
-backtrace_helper (struct _Unwind_Context *ctx, void *a)
-{
- struct trace_arg *arg = a;
- if (++arg->cnt == arg->size)
- return _URC_END_OF_STACK;
- return _URC_NO_REASON;
-}
-
-void
-cf (int i)
-{
- struct trace_arg arg = { .size = 100, .cnt = -1 };
- void *handle;
- _Unwind_Reason_Code (*unwind_backtrace) (_Unwind_Trace_Fn, void *);
-
- if (i != othervar || thr != 94)
- {
- printf ("i %d thr %d\n", i, thr);
- exit (1);
- }
-
- /* Test if callback function of _Unwind_Backtrace is not called infinitely
- times. See Bug 18508 or gcc bug "Bug 66303 - runtime.Caller() returns
- infinitely deep stack frames on s390x.".
- The go runtime calls backtrace_full() in
- <gcc-src>/libbacktrace/backtrace.c, which uses _Unwind_Backtrace(). */
- handle = dlopen (LIBGCC_S_SO, RTLD_LAZY);
- if (handle != NULL)
- {
- unwind_backtrace = dlsym (handle, "_Unwind_Backtrace");
- if (unwind_backtrace != NULL)
- {
- unwind_backtrace (backtrace_helper, &arg);
- assert (arg.cnt != -1 && arg.cnt < 100);
- }
- dlclose (handle);
- }
-
- /* Since uc_link below has been set to NULL, setcontext is supposed to
- terminate the process normally after this function returns. */
-}
-
-int
-do_test (void)
-{
- if (getcontext (&ucp) != 0)
- {
- if (errno == ENOSYS)
- {
- puts ("context handling not supported");
- return 0;
- }
-
- puts ("getcontext failed");
- return 1;
- }
- thr = 94;
- ucp.uc_link = NULL;
- ucp.uc_stack.ss_sp = st1;
- ucp.uc_stack.ss_size = sizeof st1;
- makecontext (&ucp, (void (*) (void)) cf, 1, somevar - 2);
- if (setcontext (&ucp) != 0)
- {
- puts ("setcontext failed");
- return 1;
- }
- return 2;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-makecontext2.c b/stdlib/tst-makecontext2.c
deleted file mode 100644
index 0d078279a8..0000000000
--- a/stdlib/tst-makecontext2.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Copyright (C) 2008-2017 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 <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ucontext.h>
-#include <tst-stack-align.h>
-
-ucontext_t ucp, ucp2;
-char st1[262144] __attribute__((aligned (16)));
-
-void
-cf (int i, int j)
-{
- if (i != 78 || j != 274)
- {
- printf ("i %d j %d\n", i, j);
- exit (1);
- }
- else if (TEST_STACK_ALIGN ())
- {
- puts ("insufficiently aligned stack");
- exit (2);
- }
-}
-
-int
-do_test (void)
-{
- for (size_t j = 32; j < 64; j += sizeof (long))
- {
- if (getcontext (&ucp) != 0)
- {
- if (errno == ENOSYS)
- {
- puts ("context handling not supported");
- return 0;
- }
-
- puts ("getcontext failed");
- return 1;
- }
- ucp.uc_link = &ucp2;
- ucp.uc_stack.ss_sp = st1;
- ucp.uc_stack.ss_size = sizeof (st1) - j;
- memset (&st1[sizeof (st1) - j], 0x55, j);
- makecontext (&ucp, (void (*) (void)) cf, 2, 78, 274);
- if (swapcontext (&ucp2, &ucp) != 0)
- {
- puts ("setcontext failed");
- return 1;
- }
-
- for (size_t i = j; i > 0; i--)
- if (st1[sizeof (st1) - j + i - 1] != 0x55)
- { printf ("fail %zd %zd\n", i, j); break; }
- }
-
- return 0;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-makecontext3.c b/stdlib/tst-makecontext3.c
deleted file mode 100644
index ccdeb4a282..0000000000
--- a/stdlib/tst-makecontext3.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* Copyright (C) 2001-2017 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>
-#include <ucontext.h>
-#include <unistd.h>
-
-static ucontext_t ctx[3];
-
-static int was_in_f1;
-static int was_in_f2;
-
-static char st2[32768];
-
-static volatile int flag;
-
-static void
-f1 (int a00, int a01, int a02, int a03, int a04, int a05, int a06, int a07,
- int a08, int a09, int a10, int a11, int a12, int a13, int a14, int a15,
- int a16, int a17, int a18, int a19, int a20, int a21, int a22, int a23,
- int a24, int a25, int a26, int a27, int a28, int a29, int a30, int a31,
- int a32)
-{
- printf ("start f1(a00=%08x,a01=%08x,a02=%08x,a03=%08x,\n"
- " a04=%08x,a05=%08x,a06=%08x,a07=%08x,\n"
- " a08=%08x,a09=%08x,a10=%08x,a11=%08x,\n"
- " a12=%08x,a13=%08x,a14=%08x,a15=%08x,\n"
- " a16=%08x,a17=%08x,a18=%08x,a19=%08x,\n"
- " a20=%08x,a21=%08x,a22=%08x,a23=%08x,\n"
- " a24=%08x,a25=%08x,a26=%08x,a27=%08x,\n"
- " a28=%08x,a29=%08x,a30=%08x,a31=%08x,\n"
- " a32=%08x) [%d]\n",
- a00, a01, a02, a03, a04, a05, a06, a07,
- a08, a09, a10, a11, a12, a13, a14, a15,
- a16, a17, a18, a19, a20, a21, a22, a23,
- a24, a25, a26, a27, a28, a29, a30, a31,
- a32, flag);
-
- if (a00 != (0x00000001 << flag) || a01 != (0x00000004 << flag)
- || a02 != (0x00000012 << flag) || a03 != (0x00000048 << flag)
- || a04 != (0x00000123 << flag) || a05 != (0x0000048d << flag)
- || a06 != (0x00001234 << flag) || a07 != (0x000048d1 << flag)
- || a08 != (0x00012345 << flag) || a09 != (0x00048d15 << flag)
- || a10 != (0x00123456 << flag) || a11 != (0x0048d159 << flag)
- || a12 != (0x01234567 << flag) || a13 != (0x048d159e << flag)
- || a14 != (0x12345678 << flag) || a15 != (0x48d159e2 << flag)
- || a16 != (0x23456789 << flag) || a17 != (0x8d159e26 << flag)
- || a18 != (0x3456789a << flag) || a19 != (0xd159e26a << flag)
- || a20 != (0x456789ab << flag) || a21 != (0x159e26af << flag)
- || a22 != (0x56789abc << flag) || a23 != (0x59e26af3 << flag)
- || a24 != (0x6789abcd << flag) || a25 != (0x9e26af37 << flag)
- || a26 != (0x789abcde << flag) || a27 != (0xe26af37b << flag)
- || a28 != (0x89abcdef << flag) || a29 != (0x26af37bc << flag)
- || a30 != (0x9abcdef0 << flag) || a31 != (0x6af37bc3 << flag)
- || a32 != (0xabcdef0f << flag))
- {
- puts ("arg mismatch");
- exit (-1);
- }
-
- if (flag && swapcontext (&ctx[1], &ctx[2]) != 0)
- {
- printf ("%s: swapcontext: %m\n", __FUNCTION__);
- exit (1);
- }
- printf ("finish f1 [%d]\n", flag);
- flag++;
- was_in_f1++;
-}
-
-static void
-f2 (void)
-{
- puts ("start f2");
- if (swapcontext (&ctx[2], &ctx[1]) != 0)
- {
- printf ("%s: swapcontext: %m\n", __FUNCTION__);
- exit (1);
- }
- puts ("finish f2");
- was_in_f2 = 1;
-}
-
-volatile int global;
-
-
-static int back_in_main;
-
-
-static void
-check_called (void)
-{
- if (back_in_main == 0)
- {
- puts ("program did not reach main again");
- _exit (1);
- }
-}
-
-
-int
-main (void)
-{
- atexit (check_called);
-
- char st1[32768];
-
- puts ("making contexts");
- if (getcontext (&ctx[0]) != 0)
- {
- if (errno == ENOSYS)
- {
- back_in_main = 1;
- exit (0);
- }
-
- printf ("%s: getcontext: %m\n", __FUNCTION__);
- exit (1);
- }
-
- if (getcontext (&ctx[1]) != 0)
- {
- printf ("%s: getcontext: %m\n", __FUNCTION__);
- exit (1);
- }
-
- ctx[1].uc_stack.ss_sp = st1;
- ctx[1].uc_stack.ss_size = sizeof st1;
- ctx[1].uc_link = &ctx[0];
- errno = 0;
- makecontext (&ctx[1], (void (*) (void)) f1, 33,
- 0x00000001 << flag, 0x00000004 << flag,
- 0x00000012 << flag, 0x00000048 << flag,
- 0x00000123 << flag, 0x0000048d << flag,
- 0x00001234 << flag, 0x000048d1 << flag,
- 0x00012345 << flag, 0x00048d15 << flag,
- 0x00123456 << flag, 0x0048d159 << flag,
- 0x01234567 << flag, 0x048d159e << flag,
- 0x12345678 << flag, 0x48d159e2 << flag,
- 0x23456789 << flag, 0x8d159e26 << flag,
- 0x3456789a << flag, 0xd159e26a << flag,
- 0x456789ab << flag, 0x159e26af << flag,
- 0x56789abc << flag, 0x59e26af3 << flag,
- 0x6789abcd << flag, 0x9e26af37 << flag,
- 0x789abcde << flag, 0xe26af37b << flag,
- 0x89abcdef << flag, 0x26af37bc << flag,
- 0x9abcdef0 << flag, 0x6af37bc3 << flag,
- 0xabcdef0f << flag);
-
- /* Without this check, a stub makecontext can make us spin forever. */
- if (errno == ENOSYS)
- {
- puts ("makecontext not implemented");
- back_in_main = 1;
- return 0;
- }
-
- /* Play some tricks with this context. */
- if (++global == 1)
- if (setcontext (&ctx[1]) != 0)
- {
- printf ("%s: setcontext: %m\n", __FUNCTION__);
- exit (1);
- }
- if (global != 2)
- {
- printf ("%s: 'global' not incremented twice\n", __FUNCTION__);
- exit (1);
- }
-
- if (getcontext (&ctx[2]) != 0)
- {
- printf ("%s: second getcontext: %m\n", __FUNCTION__);
- exit (1);
- }
- ctx[2].uc_stack.ss_sp = st2;
- ctx[2].uc_stack.ss_size = sizeof st2;
- ctx[2].uc_link = &ctx[1];
- makecontext (&ctx[2], f2, 0);
-
- puts ("swapping contexts");
- if (swapcontext (&ctx[0], &ctx[2]) != 0)
- {
- printf ("%s: swapcontext: %m\n", __FUNCTION__);
- exit (1);
- }
- puts ("back at main program");
- back_in_main = 1;
-
- if (was_in_f1 < 2)
- {
- puts ("didn't reach f1 twice");
- exit (1);
- }
- if (was_in_f2 == 0)
- {
- puts ("didn't reach f2");
- exit (1);
- }
-
- puts ("test succeeded");
- return 0;
-}
diff --git a/stdlib/tst-putenv.c b/stdlib/tst-putenv.c
deleted file mode 100644
index 47513ea42b..0000000000
--- a/stdlib/tst-putenv.c
+++ /dev/null
@@ -1,18 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-static int
-do_test (void)
-{
- char *p = getenv ("SOMETHING_NOBODY_USES");
- if (p == NULL)
- {
- puts ("envvar not defined");
- return 1;
- }
-
- return 0;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-putenvmod.c b/stdlib/tst-putenvmod.c
deleted file mode 100644
index 7c0c337d3f..0000000000
--- a/stdlib/tst-putenvmod.c
+++ /dev/null
@@ -1,17 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-void
-__attribute ((constructor))
-init (void)
-{
- puts ("init DSO");
-
- static char str[] = "SOMETHING_NOBODY_USES=something_else";
- if (putenv (str) != 0)
- {
- puts ("putenv failed");
- _exit (1);
- }
-}
diff --git a/stdlib/tst-qsort.c b/stdlib/tst-qsort.c
deleted file mode 100644
index 2b26e74d0b..0000000000
--- a/stdlib/tst-qsort.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Test case by Paul Eggert <eggert@twinsun.com> */
-#include <stdio.h>
-#include <stdlib.h>
-#include <tst-stack-align.h>
-
-struct big { char c[4 * 1024]; };
-
-struct big *array;
-struct big *array_end;
-
-static int align_check;
-
-int
-compare (void const *a1, void const *b1)
-{
- struct big const *a = a1;
- struct big const *b = b1;
-
- if (!align_check)
- align_check = TEST_STACK_ALIGN () ? -1 : 1;
-
- if (! (array <= a && a < array_end
- && array <= b && b < array_end))
- {
- exit (EXIT_FAILURE);
- }
- return b->c[0] - a->c[0];
-}
-
-int
-main (int argc, char **argv)
-{
- size_t i;
- size_t array_members = argv[1] ? atoi (argv[1]) : 50;
- array = (struct big *) malloc (array_members * sizeof *array);
- if (array == NULL)
- {
- puts ("no memory");
- exit (EXIT_FAILURE);
- }
-
- array_end = array + array_members;
- for (i = 0; i < array_members; i++)
- array[i].c[0] = i % 128;
-
- qsort (array, array_members, sizeof *array, compare);
-
- if (align_check == -1)
- {
- puts ("stack not sufficiently aligned");
- exit (EXIT_FAILURE);
- }
-
- return 0;
-}
diff --git a/stdlib/tst-qsort2.c b/stdlib/tst-qsort2.c
deleted file mode 100644
index 10d16852b0..0000000000
--- a/stdlib/tst-qsort2.c
+++ /dev/null
@@ -1,89 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-char *array;
-char *array_end;
-size_t member_size;
-
-int
-compare (const void *a1, const void *b1)
-{
- const char *a = a1;
- const char *b = b1;
-
- if (! (array <= a && a < array_end
- && array <= b && b < array_end))
- {
- puts ("compare arguments not inside of the array");
- exit (EXIT_FAILURE);
- }
- int ret = b[0] - a[0];
- if (ret)
- return ret;
- if (member_size > 1)
- return b[1] - a[1];
- return 0;
-}
-
-int
-test (size_t nmemb, size_t size)
-{
- array = malloc (nmemb * size);
- if (array == NULL)
- {
- printf ("%zd x %zd: no memory", nmemb, size);
- return 1;
- }
-
- array_end = array + nmemb * size;
- member_size = size;
-
- char *p;
- size_t i;
- size_t bias = random ();
- for (i = 0, p = array; i < nmemb; i++, p += size)
- {
- p[0] = (char) (i + bias);
- if (size > 1)
- p[1] = (char) ((i + bias) >> 8);
- }
-
- qsort (array, nmemb, size, compare);
-
- for (i = 0, p = array; i < nmemb - 1; i++, p += size)
- {
- if (p[0] < p[size]
- || (size > 1 && p[0] == p[size] && p[1] < p[size + 1]))
- {
- printf ("%zd x %zd: failure at offset %zd\n", nmemb,
- size, i);
- free (array);
- return 1;
- }
- }
-
- free (array);
- return 0;
-}
-
-int
-main (int argc, char **argv)
-{
- int ret = 0;
- if (argc >= 3)
- ret |= test (atoi (argv[1]), atoi (argv[2]));
- else
- {
- ret |= test (10000, 1);
- ret |= test (200000, 2);
- ret |= test (2000000, 3);
- ret |= test (2132310, 4);
- ret |= test (1202730, 7);
- ret |= test (1184710, 8);
- ret |= test (272710, 12);
- ret |= test (14170, 32);
- ret |= test (4170, 320);
- }
-
- return ret;
-}
diff --git a/stdlib/tst-quick_exit.cc b/stdlib/tst-quick_exit.cc
deleted file mode 100644
index b46fafed5c..0000000000
--- a/stdlib/tst-quick_exit.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Bug 20198: Do not call object destructors at exit.
- Copyright (C) 2016-2017 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 <stdlib.h>
-
-struct A
-{
- ~A () { abort (); }
-};
-
-thread_local A a;
-
-void
-__attribute__ ((noinline, noclone))
-optimization_barrier (A &)
-{
-}
-
-static int
-do_test ()
-{
- optimization_barrier (a);
- /* The C++11 standard in 18.5.12 says:
- "Objects shall not be destroyed as a result of calling
- quick_exit."
- If quick_exit calls the destructors the test aborts. */
- quick_exit (0);
- return 0;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-rand48-2.c b/stdlib/tst-rand48-2.c
deleted file mode 100644
index 8b8fef4430..0000000000
--- a/stdlib/tst-rand48-2.c
+++ /dev/null
@@ -1,116 +0,0 @@
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-
-static int
-do_test (void)
-{
- time_t t = time (NULL);
- int i, ret = 0;
- double d;
- long int l;
- struct drand48_data data;
- unsigned short int buf[3];
-
- srand48 ((long int) t);
- for (i = 0; i < 50; i++)
- if ((d = drand48 ()) < 0.0 || d >= 1.0)
- {
- printf ("drand48 %d %g\n", i, d);
- ret = 1;
- }
-
- srand48_r ((long int) t, &data);
- for (i = 0; i < 50; i++)
- if (drand48_r (&data, &d) != 0 || d < 0.0 || d >= 1.0)
- {
- printf ("drand48_r %d %g\n", i, d);
- ret = 1;
- }
-
- buf[2] = (t & 0xffff0000) >> 16; buf[1] = (t & 0xffff); buf[0] = 0x330e;
- for (i = 0; i < 50; i++)
- if ((d = erand48 (buf)) < 0.0 || d >= 1.0)
- {
- printf ("erand48 %d %g\n", i, d);
- ret = 1;
- }
-
- buf[2] = (t & 0xffff0000) >> 16; buf[1] = (t & 0xffff); buf[0] = 0x330e;
- for (i = 0; i < 50; i++)
- if (erand48_r (buf, &data, &d) != 0 || d < 0.0 || d >= 1.0)
- {
- printf ("erand48_r %d %g\n", i, d);
- ret = 1;
- }
-
- srand48 ((long int) t);
- for (i = 0; i < 50; i++)
- if ((l = lrand48 ()) < 0 || l > INT32_MAX)
- {
- printf ("lrand48 %d %ld\n", i, l);
- ret = 1;
- }
-
- srand48_r ((long int) t, &data);
- for (i = 0; i < 50; i++)
- if (lrand48_r (&data, &l) != 0 || l < 0 || l > INT32_MAX)
- {
- printf ("lrand48_r %d %ld\n", i, l);
- ret = 1;
- }
-
- buf[2] = (t & 0xffff0000) >> 16; buf[1] = (t & 0xffff); buf[0] = 0x330e;
- for (i = 0; i < 50; i++)
- if ((l = nrand48 (buf)) < 0 || l > INT32_MAX)
- {
- printf ("nrand48 %d %ld\n", i, l);
- ret = 1;
- }
-
- buf[2] = (t & 0xffff0000) >> 16; buf[1] = (t & 0xffff); buf[0] = 0x330e;
- for (i = 0; i < 50; i++)
- if (nrand48_r (buf, &data, &l) != 0 || l < 0 || l > INT32_MAX)
- {
- printf ("nrand48_r %d %ld\n", i, l);
- ret = 1;
- }
-
- srand48 ((long int) t);
- for (i = 0; i < 50; i++)
- if ((l = mrand48 ()) < INT32_MIN || l > INT32_MAX)
- {
- printf ("mrand48 %d %ld\n", i, l);
- ret = 1;
- }
-
- srand48_r ((long int) t, &data);
- for (i = 0; i < 50; i++)
- if (mrand48_r (&data, &l) != 0 || l < INT32_MIN || l > INT32_MAX)
- {
- printf ("mrand48_r %d %ld\n", i, l);
- ret = 1;
- }
-
- buf[2] = (t & 0xffff0000) >> 16; buf[1] = (t & 0xffff); buf[0] = 0x330e;
- for (i = 0; i < 50; i++)
- if ((l = jrand48 (buf)) < INT32_MIN || l > INT32_MAX)
- {
- printf ("jrand48 %d %ld\n", i, l);
- ret = 1;
- }
-
- buf[2] = (t & 0xffff0000) >> 16; buf[1] = (t & 0xffff); buf[0] = 0x330e;
- for (i = 0; i < 50; i++)
- if (jrand48_r (buf, &data, &l) != 0 || l < INT32_MIN || l > INT32_MAX)
- {
- printf ("jrand48_r %d %ld\n", i, l);
- ret = 1;
- }
-
- return ret;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-rand48.c b/stdlib/tst-rand48.c
deleted file mode 100644
index 973c62e1eb..0000000000
--- a/stdlib/tst-rand48.c
+++ /dev/null
@@ -1,393 +0,0 @@
-#include <float.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifndef DECIMAL_DIG
-# define DECIMAL_DIG 21
-#endif
-
-
-static int
-do_test (void)
-{
- unsigned short int xs[3] = { 0x0001, 0x0012, 0x0123 };
- unsigned short int lxs[7];
- unsigned short int *xsp;
- int result = 0;
- long int l;
- double d;
- double e;
-
- /* Test srand48. */
- srand48 (0x98765432);
- /* Get the values of the internal Xi array. */
- xsp = seed48 (xs);
- if (xsp[0] != 0x330e || xsp[1] != 0x5432 || xsp[2] != 0x9876)
- {
- puts ("srand48(0x98765432) didn't set correct value");
- printf (" expected: { %04hx, %04hx, %04hx }\n", 0x330e, 0x5432, 0x9876);
- printf (" seen: { %04hx, %04hx, %04hx }\n", xsp[0], xsp[1], xsp[2]);
- result = 1;
- }
- /* Put the values back. */
- memcpy (xs, xsp, sizeof (xs));
- (void) seed48 (xs);
-
- /* See whether the correct values are installed. */
- l = lrand48 ();
- if (l != 0x2fed1413l)
- {
- printf ("lrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x2fed1413l, l);
- result = 1;
- }
-
- l = mrand48 ();
- if (l != -0x5d73effdl)
- {
- printf ("mrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, -0x5d73effdl, l);
- result = 1;
- }
-
- l = lrand48 ();
- if (l != 0x585fcfb7l)
- {
- printf ("lrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x585fcfb7l, l);
- result = 1;
- }
-
- l = mrand48 ();
- if (l != -0x61770b8cl)
- {
- printf ("mrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, -0x61770b8cl, l);
- result = 1;
- }
-
- /* Test seed48. The previous call should have install the values in
- the initialization of `xs' above. */
- xs[0] = 0x1234;
- xs[1] = 0x5678;
- xs[2] = 0x9012;
- xsp = seed48 (xs);
- if (xsp[0] != 0x62f2 || xsp[1] != 0xf474 || xsp[2] != 0x9e88)
- {
- puts ("seed48() did not install the values correctly");
- printf (" expected: { %04hx, %04hx, %04hx }\n", 0x62f2, 0xf474, 0x9e88);
- printf (" seen: { %04hx, %04hx, %04hx }\n", xsp[0], xsp[1], xsp[2]);
- result = 1;
- }
-
- /* Test lrand48 and mrand48. We continue from the seed established
- above. */
- l = lrand48 ();
- if (l != 0x017e48b5l)
- {
- printf ("lrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x017e48b5l, l);
- result = 1;
- }
-
- l = mrand48 ();
- if (l != -0x1485e05dl)
- {
- printf ("mrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, -0x1485e05dl, l);
- result = 1;
- }
-
- l = lrand48 ();
- if (l != 0x6b6a3f95l)
- {
- printf ("lrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x6b6a3f95l, l);
- result = 1;
- }
-
- l = mrand48 ();
- if (l != 0x175c0d6fl)
- {
- printf ("mrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x175c0d6fl, l);
- result = 1;
- }
-
- /* Test lcong48. */
- lxs[0] = 0x4567;
- lxs[1] = 0x6789;
- lxs[2] = 0x8901;
- lxs[3] = 0x0123;
- lxs[4] = 0x2345;
- lxs[5] = 0x1111;
- lxs[6] = 0x2222;
- lcong48 (lxs);
-
- /* See whether the correct values are installed. */
- l = lrand48 ();
- if (l != 0x6df63d66l)
- {
- printf ("lrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x6df63d66l, l);
- result = 1;
- }
-
- l = mrand48 ();
- if (l != 0x2f92c8e1l)
- {
- printf ("mrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x2f92c8e1l, l);
- result = 1;
- }
-
- l = lrand48 ();
- if (l != 0x3b4869ffl)
- {
- printf ("lrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x3b4869ffl, l);
- result = 1;
- }
-
- l = mrand48 ();
- if (l != 0x5cd4cc3el)
- {
- printf ("mrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x5cd4cc3el, l);
- result = 1;
- }
-
- /* Check whether srand48() restores the A and C parameters. */
- srand48 (0x98765432);
-
- /* See whether the correct values are installed. */
- l = lrand48 ();
- if (l != 0x2fed1413l)
- {
- printf ("lrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x2fed1413l, l);
- result = 1;
- }
-
- l = mrand48 ();
- if (l != -0x5d73effdl)
- {
- printf ("mrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, -0x5d73effdl, l);
- result = 1;
- }
-
- l = lrand48 ();
- if (l != 0x585fcfb7l)
- {
- printf ("lrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x585fcfb7l, l);
- result = 1;
- }
-
- l = mrand48 ();
- if (l != -0x61770b8cl)
- {
- printf ("mrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, -0x61770b8cl, l);
- result = 1;
- }
-
- /* And again to see whether seed48() does the same. */
- lcong48 (lxs);
-
- /* See whether lxs wasn't modified. */
- l = lrand48 ();
- if (l != 0x6df63d66l)
- {
- printf ("lrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x6df63d66l, l);
- result = 1;
- }
-
- /* Test seed48. The previous call should have install the values in
- the initialization of `xs' above. */
- xs[0] = 0x1234;
- xs[1] = 0x5678;
- xs[2] = 0x9012;
- xsp = seed48 (xs);
- if (xsp[0] != 0x0637 || xsp[1] != 0x7acd || xsp[2] != 0xdbec)
- {
- puts ("seed48() did not install the values correctly");
- printf (" expected: { %04hx, %04hx, %04hx }\n", 0x0637, 0x7acd, 0xdbec);
- printf (" seen: { %04hx, %04hx, %04hx }\n", xsp[0], xsp[1], xsp[2]);
- result = 1;
- }
-
- /* Test lrand48 and mrand48. We continue from the seed established
- above. */
- l = lrand48 ();
- if (l != 0x017e48b5l)
- {
- printf ("lrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x017e48b5l, l);
- result = 1;
- }
-
- l = mrand48 ();
- if (l != -0x1485e05dl)
- {
- printf ("mrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, -0x1485e05dl, l);
- result = 1;
- }
-
- l = lrand48 ();
- if (l != 0x6b6a3f95l)
- {
- printf ("lrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x6b6a3f95l, l);
- result = 1;
- }
-
- l = mrand48 ();
- if (l != 0x175c0d6fl)
- {
- printf ("mrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x175c0d6fl, l);
- result = 1;
- }
-
- /* Test drand48. */
- d = drand48 ();
- if (d != 0.0908832261858485424)
- {
- printf ("drand48() in line %d failed: expected %.*g, seen %.*g\n",
- __LINE__ - 4, DECIMAL_DIG, 0.0908832261858485424,
- DECIMAL_DIG, d);
- result = 1;
- }
-
- d = drand48 ();
- if (d != 0.943149381730059133133)
- {
- printf ("drand48() in line %d failed: expected %.*g, seen %.*g\n",
- __LINE__ - 4, DECIMAL_DIG, 0.943149381730059133133,
- DECIMAL_DIG, d);
- result = 1;
- }
-
- /* Now the functions which get the Xis passed. */
- xs[0] = 0x3849;
- xs[1] = 0x5061;
- xs[2] = 0x7283;
-
- l = nrand48 (xs);
- if (l != 0x1efe61a1l)
- {
- printf ("nrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x1efe61a1l, l);
- result = 1;
- }
-
- l = jrand48 (xs);
- if (l != -0xa973860l)
- {
- printf ("jrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, -0xa973860l, l);
- result = 1;
- }
-
- l = nrand48 (xs);
- if (l != 0x2a5e57fel)
- {
- printf ("nrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x2a5e57fel, l);
- result = 1;
- }
-
- l = jrand48 (xs);
- if (l != 0x71a779a8l)
- {
- printf ("jrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x71a779a8l, l);
- result = 1;
- }
-
- /* Test whether the global A and C are used. */
- lcong48 (lxs);
-
- l = nrand48 (xs);
- if (l != 0x32beee9fl)
- {
- printf ("nrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x32beee9fl, l);
- result = 1;
- }
-
- l = jrand48 (xs);
- if (l != 0x7bddf3bal)
- {
- printf ("jrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x7bddf3bal, l);
- result = 1;
- }
-
- l = nrand48 (xs);
- if (l != 0x85bdf28l)
- {
- printf ("nrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x85bdf28l, l);
- result = 1;
- }
-
- l = jrand48 (xs);
- if (l != 0x7b433e47l)
- {
- printf ("jrand48() in line %d failed: expected %lx, seen %lx\n",
- __LINE__ - 4, 0x7b433e47l, l);
- result = 1;
- }
-
- /* Test erand48. Also compare with the drand48 results. */
- (void) seed48 (xs);
-
- d = drand48 ();
- e = erand48 (xs);
- if (d != e)
- {
- printf ("\
-drand48() and erand48 in lines %d and %d produce different results\n",
- __LINE__ - 6, __LINE__ - 5);
- printf (" drand48() = %g, erand48() = %g\n", d, e);
- result = 1;
- }
- else if (e != 0.640650904452755298735)
- {
- printf ("erand48() in line %d failed: expected %.*g, seen %.*g\n",
- __LINE__ - 4, DECIMAL_DIG, 0.640650904452755298735,
- DECIMAL_DIG, e);
- result = 1;
-
- }
-
- d = drand48 ();
- e = erand48 (xs);
- if (d != e)
- {
- printf ("\
-drand48() and erand48 in lines %d and %d produce different results\n",
- __LINE__ - 6, __LINE__ - 5);
- printf (" drand48() = %g, erand48() = %g\n", d, e);
- result = 1;
- }
- else if (e != 0.115372323508150742555)
- {
- printf ("erand48() in line %d failed: expected %.*g, seen %.*g\n",
- __LINE__ - 4, DECIMAL_DIG, 0.0115372323508150742555,
- DECIMAL_DIG, e);
- result = 1;
-
- }
-
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-random.c b/stdlib/tst-random.c
deleted file mode 100644
index 8fe0993dd7..0000000000
--- a/stdlib/tst-random.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/* Test program for random(), srandom(), initstate(), setstate()
- Written by Michael J. Fischer, August 21, 2000
- Placed in the public domain. */
-
-/* This program primarily tests the correct functioning of srandom()
- and setstate(). The strategy is generate and store a set of random
- sequences, each with a specified starting seed. Then each sequence
- is regenerated twice and checked against the stored values.
-
- First they are regenerated one sequence at a time, using srandom()
- to set the initial state. A discrepency here would suggest that
- srandom() was failing to completely initialize the random number
- generator.
-
- Second the sequences are regenerated in an interleaved order.
- A state vector is created for each sequence using initstate().
- setstate() is used to switch from sequence to sequence during
- the interleaved generation. A discrepency here would suggest
- a problem with either initstate() failing to initialize the
- random number generator properly, or the failure of setstate()
- to correctly save and restore state information. Also, each
- time setstate() is called, the returned value is checked for
- correctness (since we know what it should be).
-
- Note: We use default state vector for sequence 0 and our own
- state vectors for the remaining sequences. This is to give a check
- that the value returned by initstate() is valid and can indeed be
- used in the future. */
-
-/* Strategy:
- 1. Use srandom() followed by calls on random to generate a set of
- sequences of values.
- 2. Regenerate and check the sequences.
- 3. Use initstate() to create new states.
- 4. Regenerate the sequences in an interleaved manner and check.
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-const int degree = 128; /* random number generator degree (should
- be one of 8, 16, 32, 64, 128, 256) */
-const int nseq = 3; /* number of test sequences */
-const int nrnd = 50; /* length of each test sequence */
-const unsigned int seed[3] = { 0x12344321U, 0xEE11DD22U, 0xFEDCBA98 };
-
-void fail (const char *msg, int s, int i) __attribute__ ((__noreturn__));
-
-static int
-do_test (void)
-{
- long int rnd[nseq][nrnd]; /* pseudorandom numbers */
- char* state[nseq]; /* state for PRNG */
- char* oldstate[nseq]; /* old PRNG state */
- int s; /* sequence index */
- int i; /* element index */
-
- printf ("Begining random package test using %d sequences of length %d.\n",
- nseq, nrnd);
-
- /* 1. Generate and store the sequences. */
- printf ("Generating random sequences.\n");
- for (s = 0; s < nseq; ++s)
- {
- srandom ( seed[s] );
- for (i = 0; i < nrnd; ++i)
- rnd[s][i] = random ();
- }
-
- /* 2. Regenerate and check. */
- printf ("Regenerating and checking sequences.\n");
- for (s = 0; s < nseq; ++s)
- {
- srandom (seed[s]);
- for (i = 0; i < nrnd; ++i)
- if (rnd[s][i] != random ())
- fail ("first regenerate test", s, i);
- }
-
- /* 3. Create state vector, one for each sequence.
- First state is random's internal state; others are malloced. */
- printf ("Creating and checking state vector for each sequence.\n");
- srandom (seed[0]); /* reseed with first seed */
- for (s = 1; s < nseq; ++s)
- {
- state[s] = (char*) malloc (degree);
- oldstate[s] = initstate (seed[s], state[s], degree);
- }
- state[0] = oldstate[1];
-
- /* Check returned values. */
- for (s = 1; s < nseq - 1; ++s)
- if (state[s] != oldstate[s + 1])
- fail ("bad initstate() return value", s, i);
-
- /* 4. Regenerate sequences interleaved and check. */
- printf ("Regenerating and checking sequences in interleaved order.\n");
- for (i = 0; i < nrnd; ++i)
- {
- for (s = 0; s < nseq; ++s)
- {
- char *oldstate = (char *) setstate (state[s]);
- if (oldstate != state[(s + nseq - 1) % nseq])
- fail ("bad setstate() return value", s, i);
- if (rnd[s][i] != random ())
- fail ("bad value generated in interleave test", s, i);
- }
- }
- printf ("All tests passed!\n");
- return 0;
-}
-
-void
-fail (const char *msg, int s, int i)
-{
- printf ("\nTest FAILED: ");
- printf ("%s (seq %d, pos %d).\n", msg, s, i);
- exit (1);
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-random2.c b/stdlib/tst-random2.c
deleted file mode 100644
index 093e16879c..0000000000
--- a/stdlib/tst-random2.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Test initstate saving the old state.
- Copyright (C) 2005-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Jakub Jelinek <jakub@redhat.com>, 2005.
-
- 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>
-
-static int
-do_test (void)
-{
- int pass;
- int ret = 0;
- long int r[2];
-
- for (pass = 0; pass < 2; pass++)
- {
- srandom (0x12344321);
-
- int j;
- for (j = 0; j < 3; ++j)
- random ();
- if (pass == 1)
- {
- char state[128];
- char *ostate = initstate (0x34562101, state, 128);
- if (setstate (ostate) != state)
- {
- puts ("setstate (ostate) != state");
- ret = 1;
- }
- }
-
- random ();
- r[pass] = random ();
- }
-
- if (r[0] != r[1])
- {
- printf ("%ld != %ld\n", r[0], r[1]);
- ret = 1;
- }
- return ret;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-secure-getenv.c b/stdlib/tst-secure-getenv.c
deleted file mode 100644
index 2705cf9c5b..0000000000
--- a/stdlib/tst-secure-getenv.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/* Copyright (C) 2012-2017 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 that secure_getenv works by invoking the test as a SGID
- program with a group ID from the supplementary group list. This
- test can fail spuriously if the user is not a member of a suitable
- supplementary group. */
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <unistd.h>
-
-#include <support/support.h>
-#include <support/test-driver.h>
-
-static char MAGIC_ARGUMENT[] = "run-actual-test";
-#define MAGIC_STATUS 19
-
-/* Return a GID which is not our current GID, but is present in the
- supplementary group list. */
-static gid_t
-choose_gid (void)
-{
- const int count = 64;
- gid_t groups[count];
- int ret = getgroups (count, groups);
- if (ret < 0)
- {
- printf ("getgroups: %m\n");
- exit (1);
- }
- gid_t current = getgid ();
- for (int i = 0; i < ret; ++i)
- {
- if (groups[i] != current)
- return groups[i];
- }
- return 0;
-}
-
-
-/* Copies the executable into a restricted directory, so that we can
- safely make it SGID with the TARGET group ID. Then runs the
- executable. */
-static int
-run_executable_sgid (gid_t target)
-{
- char *dirname = xasprintf ("%s/secure-getenv.%jd",
- test_dir, (intmax_t) getpid ());
- char *execname = xasprintf ("%s/bin", dirname);
- int infd = -1;
- int outfd = -1;
- int ret = -1;
- if (mkdir (dirname, 0700) < 0)
- {
- printf ("mkdir: %m\n");
- goto err;
- }
- infd = open ("/proc/self/exe", O_RDONLY);
- if (infd < 0)
- {
- printf ("open (/proc/self/exe): %m\n");
- goto err;
- }
- outfd = open (execname, O_WRONLY | O_CREAT | O_EXCL, 0700);
- if (outfd < 0)
- {
- printf ("open (%s): %m\n", execname);
- goto err;
- }
- char buf[4096];
- for (;;)
- {
- ssize_t rdcount = read (infd, buf, sizeof (buf));
- if (rdcount < 0)
- {
- printf ("read: %m\n");
- goto err;
- }
- if (rdcount == 0)
- break;
- char *p = buf;
- char *end = buf + rdcount;
- while (p != end)
- {
- ssize_t wrcount = write (outfd, buf, end - p);
- if (wrcount == 0)
- errno = ENOSPC;
- if (wrcount <= 0)
- {
- printf ("write: %m\n");
- goto err;
- }
- p += wrcount;
- }
- }
- if (fchown (outfd, getuid (), target) < 0)
- {
- printf ("fchown (%s): %m\n", execname);
- goto err;
- }
- if (fchmod (outfd, 02750) < 0)
- {
- printf ("fchmod (%s): %m\n", execname);
- goto err;
- }
- if (close (outfd) < 0)
- {
- printf ("close (outfd): %m\n");
- goto err;
- }
- if (close (infd) < 0)
- {
- printf ("close (infd): %m\n");
- goto err;
- }
-
- int kid = fork ();
- if (kid < 0)
- {
- printf ("fork: %m\n");
- goto err;
- }
- if (kid == 0)
- {
- /* Child process. */
- char *args[] = { execname, MAGIC_ARGUMENT, NULL };
- execve (execname, args, environ);
- printf ("execve (%s): %m\n", execname);
- _exit (1);
- }
- int status;
- if (waitpid (kid, &status, 0) < 0)
- {
- printf ("waitpid: %m\n");
- goto err;
- }
- if (!WIFEXITED (status) || WEXITSTATUS (status) != MAGIC_STATUS)
- {
- printf ("Unexpected exit status %d from child process\n",
- status);
- goto err;
- }
- ret = 0;
-
-err:
- if (outfd >= 0)
- close (outfd);
- if (infd >= 0)
- close (infd);
- if (execname)
- {
- unlink (execname);
- free (execname);
- }
- if (dirname)
- {
- rmdir (dirname);
- free (dirname);
- }
- return ret;
-}
-
-static int
-do_test (void)
-{
- if (getenv ("PATH") == NULL)
- {
- printf ("PATH not set\n");
- exit (1);
- }
- if (secure_getenv ("PATH") == NULL)
- {
- printf ("PATH not set according to secure_getenv\n");
- exit (1);
- }
- if (strcmp (getenv ("PATH"), secure_getenv ("PATH")) != 0)
- {
- printf ("PATH mismatch (%s, %s)\n",
- getenv ("PATH"), secure_getenv ("PATH"));
- exit (1);
- }
-
- gid_t target = choose_gid ();
- if (target == 0)
- {
- fprintf (stderr,
- "Could not find a suitable GID for user %jd, skipping test\n",
- (intmax_t) getuid ());
- exit (0);
- }
- return run_executable_sgid (target);
-}
-
-static void
-alternative_main (int argc, char **argv)
-{
- if (argc == 2 && strcmp (argv[1], MAGIC_ARGUMENT) == 0)
- {
- if (getgid () == getegid ())
- {
- /* This can happen if the file system is mounted nosuid. */
- fprintf (stderr, "SGID failed: GID and EGID match (%jd)\n",
- (intmax_t) getgid ());
- exit (MAGIC_STATUS);
- }
- if (getenv ("PATH") == NULL)
- {
- printf ("PATH variable not present\n");
- exit (3);
- }
- if (secure_getenv ("PATH") != NULL)
- {
- printf ("PATH variable not filtered out\n");
- exit (4);
- }
- exit (MAGIC_STATUS);
- }
-}
-
-#define PREPARE alternative_main
-#include <support/test-driver.c>
diff --git a/stdlib/tst-setcontext.c b/stdlib/tst-setcontext.c
deleted file mode 100644
index 20b2ff6f3b..0000000000
--- a/stdlib/tst-setcontext.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/* Copyright (C) 2001-2017 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 <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ucontext.h>
-#include <unistd.h>
-
-static ucontext_t ctx[3];
-
-static int was_in_f1;
-static int was_in_f2;
-
-static char st2[32768];
-
-static void
-f1 (int a0, int a1, int a2, int a3)
-{
- printf ("start f1(a0=%x,a1=%x,a2=%x,a3=%x)\n", a0, a1, a2, a3);
-
- if (a0 != 1 || a1 != 2 || a2 != 3 || a3 != -4)
- {
- puts ("arg mismatch");
- exit (-1);
- }
-
- if (swapcontext (&ctx[1], &ctx[2]) != 0)
- {
- printf ("%s: swapcontext: %m\n", __FUNCTION__);
- exit (1);
- }
- puts ("finish f1");
- was_in_f1 = 1;
-}
-
-static void
-f2 (void)
-{
- char on_stack[1];
-
- puts ("start f2");
-
- printf ("&on_stack=%p\n", on_stack);
- if (on_stack < st2 || on_stack >= st2 + sizeof (st2))
- {
- printf ("%s: memory stack is not where it belongs!", __FUNCTION__);
- exit (1);
- }
-
- if (swapcontext (&ctx[2], &ctx[1]) != 0)
- {
- printf ("%s: swapcontext: %m\n", __FUNCTION__);
- exit (1);
- }
- puts ("finish f2");
- was_in_f2 = 1;
-}
-
-void
-test_stack (volatile int a, volatile int b,
- volatile int c, volatile int d)
-{
- volatile int e = 5;
- volatile int f = 6;
- ucontext_t uc;
-
- /* Test for cases where getcontext is clobbering the callers
- stack, including parameters. */
- getcontext (&uc);
-
- if (a != 1)
- {
- printf ("%s: getcontext clobbers parm a\n", __FUNCTION__);
- exit (1);
- }
-
- if (b != 2)
- {
- printf ("%s: getcontext clobbers parm b\n", __FUNCTION__);
- exit (1);
- }
-
- if (c != 3)
- {
- printf ("%s: getcontext clobbers parm c\n", __FUNCTION__);
- exit (1);
- }
-
- if (d != 4)
- {
- printf ("%s: getcontext clobbers parm d\n", __FUNCTION__);
- exit (1);
- }
-
- if (e != 5)
- {
- printf ("%s: getcontext clobbers varible e\n", __FUNCTION__);
- exit (1);
- }
-
- if (f != 6)
- {
- printf ("%s: getcontext clobbers variable f\n", __FUNCTION__);
- exit (1);
- }
-}
-
-volatile int global;
-
-
-static int back_in_main;
-
-
-static void
-check_called (void)
-{
- if (back_in_main == 0)
- {
- puts ("program did not reach main again");
- _exit (1);
- }
-}
-
-
-int
-main (void)
-{
- atexit (check_called);
-
- char st1[32768];
- stack_t stack_before, stack_after;
-
- sigaltstack (NULL, &stack_before);
-
- puts ("making contexts");
- if (getcontext (&ctx[1]) != 0)
- {
- if (errno == ENOSYS)
- {
- back_in_main = 1;
- exit (0);
- }
-
- printf ("%s: getcontext: %m\n", __FUNCTION__);
- exit (1);
- }
-
- test_stack (1, 2, 3, 4);
-
- /* Play some tricks with this context. */
- if (++global == 1)
- if (setcontext (&ctx[1]) != 0)
- {
- printf ("%s: setcontext: %m\n", __FUNCTION__);
- exit (1);
- }
- if (global != 2)
- {
- printf ("%s: 'global' not incremented twice\n", __FUNCTION__);
- exit (1);
- }
-
- ctx[1].uc_stack.ss_sp = st1;
- ctx[1].uc_stack.ss_size = sizeof st1;
- ctx[1].uc_link = &ctx[0];
- {
- ucontext_t tempctx = ctx[1];
- makecontext (&ctx[1], (void (*) (void)) f1, 4, 1, 2, 3, -4);
-
- /* Without this check, a stub makecontext can make us spin forever. */
- if (memcmp (&tempctx, &ctx[1], sizeof ctx[1]) == 0)
- {
- puts ("makecontext was a no-op, presuming not implemented");
- return 0;
- }
- }
-
- if (getcontext (&ctx[2]) != 0)
- {
- printf ("%s: second getcontext: %m\n", __FUNCTION__);
- exit (1);
- }
- ctx[2].uc_stack.ss_sp = st2;
- ctx[2].uc_stack.ss_size = sizeof st2;
- ctx[2].uc_link = &ctx[1];
- makecontext (&ctx[2], f2, 0);
-
- puts ("swapping contexts");
- if (swapcontext (&ctx[0], &ctx[2]) != 0)
- {
- printf ("%s: swapcontext: %m\n", __FUNCTION__);
- exit (1);
- }
- puts ("back at main program");
- back_in_main = 1;
-
- sigaltstack (NULL, &stack_after);
-
- if (was_in_f1 == 0)
- {
- puts ("didn't reach f1");
- exit (1);
- }
- if (was_in_f2 == 0)
- {
- puts ("didn't reach f2");
- exit (1);
- }
-
- /* Check sigaltstack state is not clobbered as in BZ #16629. */
- if (stack_before.ss_sp != stack_after.ss_sp)
- {
- printf ("stack ss_sp mismatch: %p %p\n",
- stack_before.ss_sp, stack_after.ss_sp);
- exit (1);
- }
-
- if (stack_before.ss_size != stack_after.ss_size)
- {
- printf ("stack ss_size mismatch: %zd %zd\n",
- stack_before.ss_size, stack_after.ss_size);
- exit (1);
- }
-
- puts ("test succeeded");
- return 0;
-}
diff --git a/stdlib/tst-setcontext2.c b/stdlib/tst-setcontext2.c
deleted file mode 100644
index 07fb974c46..0000000000
--- a/stdlib/tst-setcontext2.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/* Testcase checks, if setcontext(), swapcontext() restores signal-mask
- and if pending signals are delivered after those calls.
- Copyright (C) 2015-2017 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 <sys/types.h>
-#include <signal.h>
-#include <ucontext.h>
-#include <unistd.h>
-
-volatile int global;
-volatile sig_atomic_t handlerCalled;
-
-static void
-check (const char *funcName)
-{
- sigset_t set;
-
- /* check if SIGUSR2 is unblocked after setcontext-call. */
- sigprocmask (SIG_BLOCK, NULL, &set);
-
- if (sigismember (&set, SIGUSR2) != 0)
- {
- printf ("FAIL: SIGUSR2 is blocked after %s.\n", funcName);
- exit (1);
- }
-
- if (sigismember (&set, SIGUSR1) != 1)
- {
- printf ("FAIL: SIGUSR1 is not blocked after %s.\n", funcName);
- exit (1);
- }
-}
-
-static void
-signalmask (int how, int signum)
-{
- sigset_t set;
- sigemptyset (&set);
- sigaddset (&set, signum);
- if (sigprocmask (how, &set, NULL) != 0)
- {
- printf ("FAIL: sigprocmaks (%d, %d, NULL): %m\n", how, signum);
- exit (1);
- }
-}
-
-static void
-signalpending (int signum, const char *msg)
-{
- sigset_t set;
- sigemptyset (&set);
- if (sigpending (&set) != 0)
- {
- printf ("FAIL: sigpending: %m\n");
- exit (1);
- }
- if (sigismember (&set, SIGUSR2) != 1)
- {
- printf ("FAIL: Signal %d is not pending %s\n", signum, msg);
- exit (1);
- }
-}
-
-static void
-handler (int __attribute__ ((unused)) signum)
-{
- handlerCalled ++;
-}
-
-static int
-do_test (void)
-{
- ucontext_t ctx, oldctx;
- struct sigaction action;
- pid_t pid;
-
- pid = getpid ();
-
- /* unblock SIGUSR2 */
- signalmask (SIG_UNBLOCK, SIGUSR2);
-
- /* block SIGUSR1 */
- signalmask (SIG_BLOCK, SIGUSR1);
-
- /* register handler for SIGUSR2 */
- action.sa_flags = 0;
- action.sa_handler = handler;
- sigemptyset (&action.sa_mask);
- sigaction (SIGUSR2, &action, NULL);
-
- if (getcontext (&ctx) != 0)
- {
- printf ("FAIL: getcontext: %m\n");
- exit (1);
- }
-
- global++;
-
- if (global == 1)
- {
- puts ("after getcontext");
-
- /* block SIGUSR2 */
- signalmask (SIG_BLOCK, SIGUSR2);
-
- /* send SIGUSR2 to me */
- handlerCalled = 0;
- kill (pid, SIGUSR2);
-
- /* was SIGUSR2 handler called? */
- if (handlerCalled != 0)
- {
- puts ("FAIL: signal handler was called, but signal was blocked.");
- exit (1);
- }
-
- /* is SIGUSR2 pending? */
- signalpending (SIGUSR2, "before setcontext");
-
- /* SIGUSR2 will be unblocked by setcontext-call. */
- if (setcontext (&ctx) != 0)
- {
- printf ("FAIL: setcontext: %m\n");
- exit (1);
- }
- }
- else if (global == 2)
- {
- puts ("after setcontext");
-
- /* check SIGUSR1/2 */
- check ("setcontext");
-
- /* was SIGUSR2 handler called? */
- if (handlerCalled != 1)
- {
- puts ("FAIL: signal handler was not called after setcontext.");
- exit (1);
- }
-
- /* block SIGUSR2 */
- signalmask (SIG_BLOCK, SIGUSR2);
-
- /* send SIGUSR2 to me */
- handlerCalled = 0;
- kill (pid, SIGUSR2);
-
- /* was SIGUSR2 handler called? */
- if (handlerCalled != 0)
- {
- puts ("FAIL: signal handler was called, but signal was blocked.");
- exit (1);
- }
-
- /* is SIGUSR2 pending? */
- signalpending (SIGUSR2, "before swapcontext");
-
- if (swapcontext (&oldctx, &ctx) != 0)
- {
- printf ("FAIL: swapcontext: %m\n");
- exit (1);
- }
-
- puts ("after returned from swapcontext");
-
- if (global != 3)
- {
- puts ("FAIL: returned from swapcontext without ctx-context called.");
- exit (1);
- }
-
- puts ("test succeeded");
- return 0;
- }
- else if ( global != 3 )
- {
- puts ("FAIL: 'global' not incremented three times");
- exit (1);
- }
-
- puts ("after swapcontext");
- /* check SIGUSR1/2 */
- check ("swapcontext");
-
- /* was SIGUSR2 handler called? */
- if (handlerCalled != 1)
- {
- puts ("FAIL: signal handler was not called after swapcontext.");
- exit (1);
- }
-
- /* check sigmask in old context of swapcontext-call */
- if (sigismember (&oldctx.uc_sigmask, SIGUSR2) != 1)
- {
- puts ("FAIL: SIGUSR2 is not blocked in oldctx.uc_sigmask.");
- exit (1);
- }
-
- if (sigismember (&oldctx.uc_sigmask, SIGUSR1) != 1)
- {
- puts ("FAIL: SIGUSR1 is not blocked in oldctx.uc_sigmaks.");
- exit (1);
- }
-
- /* change to old context, which was gathered by swapcontext() call. */
- setcontext (&oldctx);
-
- puts ("FAIL: returned from setcontext (&oldctx)");
- exit (1);
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-setcontext3.c b/stdlib/tst-setcontext3.c
deleted file mode 100644
index 414a9a7f41..0000000000
--- a/stdlib/tst-setcontext3.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/* Bug 18125: Verify setcontext calls exit() and not _exit().
- Copyright (C) 2015-2017 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 <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ucontext.h>
-#include <unistd.h>
-#include <limits.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-
-/* Please note that depending on the outcome of Bug 18135 this test
- may become invalid, and instead of testing for calling exit it
- should be reworked to test for the last context calling
- pthread_exit(). */
-
-static ucontext_t ctx;
-static char *filename;
-
-/* It is intended that this function does nothing. */
-static void
-cf (void)
-{
- printf ("called context function\n");
-}
-
-static void
-exit_called (void)
-{
- int fd;
- ssize_t res;
- const char buf[] = "Called exit function\n";
-
- fd = open (filename, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
- if (fd == -1)
- {
- printf ("FAIL: Unable to create test file %s\n", filename);
- exit (1);
- }
- res = write (fd, buf, sizeof (buf));
- if (res != sizeof (buf))
- {
- printf ("FAIL: Expected to write test file in one write call.\n");
- exit (1);
- }
- res = close (fd);
- if (res == -1)
- {
- printf ("FAIL: Failed to close test file.\n");
- exit (1);
- }
- printf ("PASS: %s", buf);
-}
-
-/* The test expects a filename given by the wrapper calling script.
- The test then registers an atexit handler that will create the
- file to indicate that the atexit handler ran. Then the test
- creates a context, modifies it with makecontext, and sets it.
- The context has only a single context which then must exit.
- If it incorrectly exits via _exit then the atexit handler is
- not run, the file is not created, and the wrapper detects this
- and fails the test. This test cannot be done using an _exit
- interposer since setcontext avoids the PLT and calls _exit
- directly. */
-static int
-do_test (int argc, char **argv)
-{
- int ret;
- char st1[32768];
- ucontext_t tempctx = ctx;
-
- if (argc < 2)
- {
- printf ("FAIL: Test missing filename argument.\n");
- exit (1);
- }
-
- filename = argv[1];
-
- atexit (exit_called);
-
- puts ("making contexts");
- if (getcontext (&ctx) != 0)
- {
- if (errno == ENOSYS)
- {
- /* Exit with 77 to mark the test as UNSUPPORTED. */
- printf ("UNSUPPORTED: getcontext not implemented.\n");
- exit (77);
- }
-
- printf ("FAIL: getcontext failed.\n");
- exit (1);
- }
-
- ctx.uc_stack.ss_sp = st1;
- ctx.uc_stack.ss_size = sizeof (st1);
- ctx.uc_link = 0;
- makecontext (&ctx, cf, 0);
-
- /* Without this check, a stub makecontext can make us spin forever. */
- if (memcmp (&tempctx, &ctx, sizeof ctx) == 0)
- {
- puts ("UNSUPPORTED: makecontext was a no-op, presuming not implemented");
- exit (77);
- }
-
- ret = setcontext (&ctx);
- if (ret != 0)
- {
- printf ("FAIL: setcontext returned with %d and errno of %d.\n", ret, errno);
- exit (1);
- }
-
- printf ("FAIL: Impossibly returned to main.\n");
- exit (1);
-}
-
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-setcontext3.sh b/stdlib/tst-setcontext3.sh
deleted file mode 100644
index 158d0dc0a8..0000000000
--- a/stdlib/tst-setcontext3.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-# Bug 18125: Test the exit functionality of setcontext().
-# Copyright (C) 2015-2017 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
-test_program_prefix_before_env=$2
-run_program_env=$3
-test_program_prefix_after_env=$4
-objpfx=$5
-
-test_pre="${test_program_prefix_before_env} ${run_program_env}"
-test="${test_program_prefix_after_env} ${objpfx}tst-setcontext3"
-out=${objpfx}tst-setcontext3.out
-
-cleanup() {
- rm -f $tempfile
-}
-trap cleanup 0
-
-tempfile=$(mktemp "tst-setcontext3.XXXXXXXXXX")
-
-# We want to run the test program and see if secontext called
-# exit() and wrote out the test file we specified. If the
-# test exits with a non-zero status this will fail because we
-# are using `set -e`.
-$test_pre $test "$tempfile"
-
-# Look for resulting file.
-if [ -e "$tempfile" ]; then
- echo "PASS: tst-setcontext3 an exit() and created $tempfile"
- exit 0
-else
- echo "FAIL: tst-setcontext3 did not create $tempfile"
- exit 1
-fi
diff --git a/stdlib/tst-strfmon_l.c b/stdlib/tst-strfmon_l.c
deleted file mode 100644
index 49fa31907e..0000000000
--- a/stdlib/tst-strfmon_l.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* Test locale dependence of strfmon_l.
- Copyright (C) 2016-2017 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 <stdbool.h>
-#include <stdio.h>
-#include <monetary.h>
-#include <string.h>
-#include <stdlib.h>
-#include <locale.h>
-
-static const char *const en_us_name = "en_US.ISO-8859-1";
-
-/* Locale value to be used by tests. */
-static locale_t loc;
-static const char *loc_name;
-
-/* Set the global locale to GLOBAL_NAME, and the locale referenced by
- the loc variable above to LOCAL_NAME. */
-static void
-init_loc (const char *global_name, const char *local_name)
-{
- loc = newlocale (LC_ALL_MASK, local_name, 0);
- if (loc == 0)
- {
- printf ("error: newlocale (%s): %m\n", local_name);
- abort ();
- }
- loc_name = local_name;
-
- if (setlocale (LC_ALL, global_name) == NULL)
- {
- printf ("error: setlocale (%s): %m\n", global_name);
- abort ();
- }
-}
-
-/* Expected strings for a positive or negative value. */
-struct testcase
-{
- const char *i; /* %i */
- const char *n; /* %n */
- const char *i_ungrouped; /* %^i */
- const char *n_ungrouped; /* %^n */
-};
-
-/* Collected expected strings for both positive and negative
- values. */
-struct testcase_pair
-{
- struct testcase positive; /* 1234567.89 */
- struct testcase negative; /* -1234567.89 */
-};
-
-static bool errors;
-
-/* Test one value using the locale loc. */
-static void
-test_one (const char *format, double value, const char *expected)
-{
- static char actual[64];
- int result = strfmon_l (actual, sizeof (actual), loc, format, value);
- if (result < 0)
- {
- printf ("error: locale %s, format \"%s\", value %g: strfmon_l: %m\n",
- loc_name, format, value);
- errors = true;
- }
- else if (strcmp (actual, expected) != 0)
- {
- printf ("error: locale %s, format \"%s\", value %g: mismatch\n",
- loc_name, format, value);
- printf ("error: expected: \"%s\"\n", expected);
- printf ("error: actual: \"%s\"\n", actual);
- errors = true;
- }
-}
-
-static void
-test_pair (const struct testcase_pair *pair)
-{
- double positive = 1234567.89;
- test_one ("%i", positive, pair->positive.i);
- test_one ("%n", positive, pair->positive.n);
- test_one ("%^i", positive, pair->positive.i_ungrouped);
- test_one ("%^n", positive, pair->positive.n_ungrouped);
- double negative = -1234567.89;
- test_one ("%i", negative, pair->negative.i);
- test_one ("%n", negative, pair->negative.n);
- test_one ("%^i", negative, pair->negative.i_ungrouped);
- test_one ("%^n", negative, pair->negative.n_ungrouped);
-}
-
-static const struct testcase_pair en_us =
- {
- {
- "USD 1,234,567.89", "$1,234,567.89",
- "USD 1234567.89", "$1234567.89"
- },
- {
- "-USD 1,234,567.89", "-$1,234,567.89",
- "-USD 1234567.89", "-$1234567.89"
- }
- };
-
-static void
-test_en_us (const char *other_name)
-{
- init_loc (other_name, en_us_name);
- test_pair (&en_us);
- freelocale (loc);
-}
-
-struct locale_pair
-{
- const char *locale_name;
- struct testcase_pair pair;
-};
-
-static const struct locale_pair tests[] =
- {
- {
- "de_DE.UTF-8",
- {
- {
- "1.234.567,89 EUR", "1.234.567,89 \u20ac",
- "1234567,89 EUR", "1234567,89 \u20ac"
- },
- {
- "-1.234.567,89 EUR", "-1.234.567,89 \u20ac",
- "-1234567,89 EUR", "-1234567,89 \u20ac"
- }
- },
- },
- {
- "tg_TJ.UTF-8",
- {
- {
- "1 234 567.89 TJS", "1 234 567.89 \u0440\u0443\u0431",
- "1234567.89 TJS", "1234567.89 \u0440\u0443\u0431"
- },
- {
- "-1 234 567.89 TJS", "-1 234 567.89 \u0440\u0443\u0431",
- "-1234567.89 TJS", "-1234567.89 \u0440\u0443\u0431"
- }
- }
- },
- {
- "te_IN.UTF-8",
- {
- {
- "INR12,34,567.89", "\u20b912,34,567.89",
- "INR1234567.89", "\u20b91234567.89"
- },
- {
- "-INR12,34,567.89", "-\u20b912,34,567.89",
- "-INR1234567.89", "-\u20b91234567.89"
- }
- }
- },
- {
- "bn_IN.UTF-8",
- {
- {
- "INR 12,345,67.89", "\u20b9 12,345,67.89",
- "INR 1234567.89", "\u20b9 1234567.89"
- },
- {
- "-INR 12,345,67.89", "-\u20b9 12,345,67.89",
- "-INR 1234567.89", "-\u20b9 1234567.89"
- }
- }
- },
- {
- "el_GR.UTF-8",
- {
- {
- "1.234.567,89EUR", "1.234.567,89\u20ac",
- "1234567,89EUR", "1234567,89\u20ac"
- },
- {
- "-EUR1.234.567,89", "-\u20ac1.234.567,89",
- "-EUR1234567,89", "-\u20ac1234567,89",
- }
- }
- },
- {}
- };
-
-static int
-do_test (void)
-{
- for (const struct locale_pair *test = tests;
- test->locale_name != NULL; ++test)
- {
- init_loc (en_us_name, test->locale_name);
- test_pair (&test->pair);
- freelocale (loc);
- test_en_us (test->locale_name);
- }
-
- return errors;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strfrom-locale.c b/stdlib/tst-strfrom-locale.c
deleted file mode 100644
index f01b42d575..0000000000
--- a/stdlib/tst-strfrom-locale.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Tests for strfromf, strfromd, strfroml functions.
- Copyright (C) 2016-2017 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 "tst-strfrom.h"
-
-static const struct test tests[] = {
- TEST ("12,345000", "%f", 50, 9, 12.345),
- TEST ("9,999", "%.3f", 50, 5, 9.999),
- TEST ("0,125000", "%f", 50, 8, .125),
- TEST ("0,000000", "%f", 50, 8, .0),
- TEST ("0", "%g", 50, 1, .0),
- TEST ("9,900000", "%f", 50, 8, 9.9),
- TEST ("9,1", "%.5f", 4, 7, 9.123456),
- TEST ("9,91235", "%g", 50, 7, 9.91234567812345678),
- TEST ("79,8765", "%G", 50, 7, 79.8765432111),
- TEST ("79,9", "%.3g", 50, 4, 79.8765432111),
- TEST ("1,000000e+38", "%e", 50, 12, 1e+38),
- TEST ("1,000000e+38", "%e", 50, 12, 1e38),
- TEST ("-1,000000e-37", "%e", 50, 13, -1e-37),
- TEST ("1,000000e-37", "%e", 50, 12, 0.00000001e-29),
- TEST ("1,000000e-37", "%e", 50, 12, 1.000000e-37),
- TEST ("5,900000e-16", "%e", 50, 12, 5.9e-16),
- TEST ("1,234500e+20", "%e", 50, 12, 12.345e19),
- TEST ("1,000000e+05", "%e", 50, 12, 1e5),
- TEST ("-NAN", "%G", 50, 4, -NAN_),
- TEST ("-inf", "%g", 50, 4, -INF),
- TEST ("inf", "%g", 50, 3, INF)
-};
-/* Tests with buffer size small. */
-static const struct test stest[] = {
- TEST ("1234", "%g", 5, 7, 12345.345),
- TEST ("0,12", "%f", 5, 8, .125),
- TEST ("9,99", "%.3f", 5, 5, 9.999),
- TEST ("100", "%g", 5, 3, 1e2)
-};
-/* Hexadecimal tests. */
-static const struct htests htest[] = {
- HTEST ("%a", { "0x1,ffp+6", "0x3,fep+5", "0x7,fcp+4", "0xf,f8p+3" },
- 0x1.ffp+6),
- HTEST ("%a", { "0x1,88p+4", "0x3,1p+3", "0x6,2p+2", "0xc,4p+1" },
- 0x1.88p+4),
- HTEST ("%A", { "-0X1,88P+5", "-0X3,1P+4", "-0X6,2P+3", "-0XC,4P+2" },
- -0x1.88p+5),
- HTEST ("%a", { "0x1,44p+10", "0x2,88p+9", "0x5,1p+8", "0xa,2p+7" },
- 0x1.44p+10),
- HTEST ("%a", { "0x1p-10", "0x2p-11", "0x4p-12", "0x8p-13" },
- 0x0.0040p+0),
- HTEST ("%a", { "0x1,4p+3", "0x2,8p+2", "0x5p+1", "0xap+0" },
- 10.0)
-};
-
-GEN_TEST_STRTOD_FOREACH (TEST_STRFROM)
-
-static int
-test_locale (const char *locale)
-{
- printf ("Testing in locale: %s\n", locale);
- if (setlocale (LC_ALL, locale) == NULL)
- {
- printf ("Cannot set locale %s\n", locale);
- }
- return STRTOD_TEST_FOREACH (test_);
-}
-
-static int
-do_test (void)
-{
- int result = 0;
- result += test_locale ("de_DE.UTF-8");
- result += test_locale ("tr_TR.ISO-8859-9");
- result += test_locale ("tr_TR.UTF-8");
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strfrom.c b/stdlib/tst-strfrom.c
deleted file mode 100644
index 5aa54fa7cb..0000000000
--- a/stdlib/tst-strfrom.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Tests for strfromf, strfromd, strfroml functions.
- Copyright (C) 2016-2017 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 "tst-strfrom.h"
-
-static const struct test tests[] = {
- TEST ("12.345000", "%f", 50, 9, 12.345),
- TEST ("9.999", "%.3f", 50, 5, 9.999),
- TEST ("0.125000", "%f", 50, 8, .125),
- TEST ("0.000000", "%f", 50, 8, .0),
- TEST ("0", "%g", 50, 1, .0),
- TEST ("9.900000", "%f", 50, 8, 9.9),
- TEST ("9.1", "%.5f", 4, 7, 9.123456),
- TEST ("9.91235", "%g", 50, 7, 9.91234567812345678),
- TEST ("79.8765", "%G", 50, 7, 79.8765432111),
- TEST ("79.9", "%.3g", 50, 4, 79.8765432111),
- TEST ("1.000000e+38", "%e", 50, 12, 1e+38),
- TEST ("1.000000e+38", "%e", 50, 12, 1e38),
- TEST ("-1.000000e-37", "%e", 50, 13, -1e-37),
- TEST ("1.000000e-37", "%e", 50, 12, 0.00000001e-29),
- TEST ("1.000000e-37", "%e", 50, 12, 1.000000e-37),
- TEST ("5.900000e-16", "%e", 50, 12, 5.9e-16),
- TEST ("1.234500e+20", "%e", 50, 12, 12.345e19),
- TEST ("1.000000e+05", "%e", 50, 12, 1e5),
- TEST ("-NAN", "%G", 50, 4, -NAN_),
- TEST ("-inf", "%g", 50, 4, -INF),
- TEST ("inf", "%g", 50, 3, INF)
-};
-/* Tests with buffer size small. */
-static const struct test stest[] = {
- TEST ("1234", "%g", 5, 7, 12345.345),
- TEST ("0.12", "%f", 5, 8, .125),
- TEST ("9.99", "%.3f", 5, 5, 9.999),
- TEST ("100", "%g", 5, 3, 1e2)
-};
-/* Hexadecimal tests. */
-static const struct htests htest[] = {
- HTEST ("%a", { "0x1.ffp+6", "0x3.fep+5", "0x7.fcp+4", "0xf.f8p+3" },
- 0x1.ffp+6),
- HTEST ("%a", { "0x1.88p+4", "0x3.1p+3", "0x6.2p+2", "0xc.4p+1" },
- 0x1.88p+4),
- HTEST ("%A", { "-0X1.88P+5", "-0X3.1P+4", "-0X6.2P+3", "-0XC.4P+2" },
- -0x1.88p+5),
- HTEST ("%a", { "0x1.44p+10", "0x2.88p+9", "0x5.1p+8", "0xa.2p+7" },
- 0x1.44p+10),
- HTEST ("%a", { "0x1p-10", "0x2p-11", "0x4p-12", "0x8p-13" },
- 0x0.0040p+0),
- HTEST ("%a", { "0x1.4p+3", "0x2.8p+2", "0x5p+1", "0xap+0" },
- 10.0)
-};
-
-GEN_TEST_STRTOD_FOREACH (TEST_STRFROM)
-
-static int
-test_locale (const char *locale)
-{
- printf ("Testing in locale: %s\n", locale);
- if (setlocale (LC_ALL, locale) == NULL)
- {
- printf ("Cannot set locale %s\n", locale);
- }
- return STRTOD_TEST_FOREACH (test_);
-}
-
-static int
-do_test (void)
-{
- int result = 0;
- result += test_locale ("C");
- result += test_locale ("en_US.ISO-8859-1");
- result += test_locale ("en_US.UTF-8");
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strfrom.h b/stdlib/tst-strfrom.h
deleted file mode 100644
index 86c0c19392..0000000000
--- a/stdlib/tst-strfrom.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Tests for strfromf, strfromd, strfroml functions.
- Copyright (C) 2016-2017 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>
-#include <float.h>
-#include <math.h>
-#include <locale.h>
-
-#include "tst-strtod.h"
-
-#define _CONCAT(a, b) a ## b
-#define CONCAT(a, b) _CONCAT (a, b)
-
-/* Generator to create an FTYPE member variabled named FSUF
- * used to populate struct member variables. */
-#define FTYPE_MEMBER(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
- FTYPE FSUF;
-
-#define STRUCT_FOREACH_FLOAT_FTYPE GEN_TEST_STRTOD_FOREACH (FTYPE_MEMBER)
-
-#define ENTRY(FSUF, FTYPE, FTOSTR, LSUF, CSUF, ...) \
- CONCAT (__VA_ARGS__, LSUF),
-/* This is hacky way around the seemingly unavoidable macro
- * expansion of the INFINITY or HUGE_VAL like macros in the
- * above. It is assumed the compiler will implicitly convert
- * the infinity correctly. */
-#define INF INFINITY + 0.0
-#define NAN_ NAN + 0.0
-
-struct test_input
-{
- STRUCT_FOREACH_FLOAT_FTYPE
-};
-struct test {
- const char *s;
- const char *fmt;
- int size;
- int rc;
- struct test_input t;
-};
-#define TEST(s, fmt, size, rc, val) \
- { \
- s, fmt, size, rc, { GEN_TEST_STRTOD_FOREACH (ENTRY, val) } \
- }
-/* Hexadecimal tests. */
-struct htests
-{
- const char *fmt;
- const char *exp[4];
- struct test_input t;
-};
-#define HTEST(fmt, exp1, exp2, exp3, exp4, val) \
- { \
- fmt, exp1, exp2, exp3, exp4, { GEN_TEST_STRTOD_FOREACH (ENTRY, val) } \
- }
-
-#define TEST_STRFROM(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
-static int \
-test_ ## FSUF (void) \
-{ \
- char buf[50], sbuf[5]; \
- int status = 0; \
- int i, rc = 0, rc1 = 0; \
- for (i = 0; i < sizeof (stest) / sizeof (stest[0]); i++) \
- { \
- rc = FTOSTR (sbuf, stest[i].size, stest[i].fmt, stest[i].t.FSUF); \
- rc1 = (strcmp (sbuf, stest[i].s) != 0) || (rc != stest[i].rc); \
- if (rc1) \
- { \
- printf (#FTOSTR ": got %s (%d), expected %s (%d)\n", \
- sbuf, rc, stest[i].s, stest[i].rc); \
- status++; \
- } \
- } \
- for (i = 0; i < sizeof (tests) / sizeof (tests[0]); i++) \
- { \
- rc = FTOSTR (buf, tests[i].size, tests[i].fmt, tests[i].t.FSUF); \
- rc1 = (strcmp (buf, tests[i].s) != 0) || (rc != tests[i].rc); \
- if (rc1) \
- { \
- printf (#FTOSTR ": got %s (%d), expected %s (%d)\n", \
- buf, rc, tests[i].s, tests[i].rc); \
- status++; \
- } \
- } \
- for (i = 0; i < sizeof (htest) / sizeof (htest[0]); i++) \
- { \
- rc = FTOSTR (buf, 50, htest[i].fmt, htest[i].t.FSUF); \
- if (strcmp (buf, htest[i].exp[0]) == 0 || \
- strcmp (buf, htest[i].exp[1]) == 0 || \
- strcmp (buf, htest[i].exp[2]) == 0 || \
- strcmp (buf, htest[i].exp[3]) == 0) \
- continue; \
- else \
- { \
- printf (#FTOSTR ": got %s (%d), expected %s or %s or %s " \
- "or %s\n", buf, rc, htest[i].exp[0], htest[i].exp[1], \
- htest[i].exp[2], htest[i].exp[3]); \
- status++; \
- } \
- } \
- return status; \
-}
diff --git a/stdlib/tst-strtod-nan-locale-main.c b/stdlib/tst-strtod-nan-locale-main.c
deleted file mode 100644
index 8044dad89f..0000000000
--- a/stdlib/tst-strtod-nan-locale-main.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Test strtod functions work with all ASCII letters in NAN(...) in
- Turkish locales (bug 19266).
- Copyright (C) 2015-2017 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 <locale.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <wchar.h>
-
-#define STR_(X) #X
-#define STR(X) STR_(X)
-#define FNPFXS STR (FNPFX)
-#define CONCAT_(X, Y) X ## Y
-#define CONCAT(X, Y) CONCAT_ (X, Y)
-#define FNX(FN) CONCAT (FNPFX, FN)
-
-#define TEST(LOC, STR, FN, TYPE) \
- do \
- { \
- CHAR *ep; \
- TYPE val = FNX (FN) (STR, &ep); \
- if (isnan (val) && *ep == 0) \
- printf ("PASS: %s: " FNPFXS #FN " (" SFMT ")\n", LOC, STR); \
- else \
- { \
- printf ("FAIL: %s: " FNPFXS #FN " (" SFMT ")\n", LOC, STR); \
- result = 1; \
- } \
- } \
- while (0)
-
-static int
-test_one_locale (const char *loc)
-{
- if (setlocale (LC_ALL, loc) == NULL)
- {
- printf ("setlocale (LC_ALL, \"%s\") failed\n", loc);
- return 1;
- }
- int result = 0;
- for (int i = 10; i < 36; i++)
- {
- CHAR s[7];
- s[0] = L_('N');
- s[1] = L_('A');
- s[2] = L_('N');
- s[3] = L_('(');
- s[4] = L_('A') + i - 10;
- s[5] = L_(')');
- s[6] = 0;
- TEST (loc, s, f, float);
- TEST (loc, s, d, double);
- TEST (loc, s, ld, long double);
- s[4] = L_('a') + i - 10;
- TEST (loc, s, f, float);
- TEST (loc, s, d, double);
- TEST (loc, s, ld, long double);
- }
- return result;
-}
-
-static int
-do_test (void)
-{
- int result = 0;
- result |= test_one_locale ("C");
- result |= test_one_locale ("tr_TR.UTF-8");
- result |= test_one_locale ("tr_TR.ISO-8859-9");
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtod-nan-locale.c b/stdlib/tst-strtod-nan-locale.c
deleted file mode 100644
index cf0820df75..0000000000
--- a/stdlib/tst-strtod-nan-locale.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Test strtod functions work with all ASCII letters in NAN(...) in
- Turkish locales (bug 19266). Narrow string version.
- Copyright (C) 2015-2017 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 CHAR char
-#define SFMT "\"%s\""
-#define FNPFX strto
-#define L_(C) C
-
-#include <tst-strtod-nan-locale-main.c>
diff --git a/stdlib/tst-strtod-overflow.c b/stdlib/tst-strtod-overflow.c
deleted file mode 100644
index c1eb561dec..0000000000
--- a/stdlib/tst-strtod-overflow.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Test for integer/buffer overflow in strtod.
- Copyright (C) 2012-2017 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>
-
-#define EXPONENT "e-2147483649"
-#define SIZE 214748364
-
-static int
-do_test (void)
-{
- char *p = malloc (1 + SIZE + sizeof (EXPONENT));
- if (p == NULL)
- {
- puts ("malloc failed, cannot test for overflow");
- return 0;
- }
- p[0] = '1';
- memset (p + 1, '0', SIZE);
- memcpy (p + 1 + SIZE, EXPONENT, sizeof (EXPONENT));
- double d = strtod (p, NULL);
- if (d != 0)
- {
- printf ("strtod returned wrong value: %a\n", d);
- return 1;
- }
- return 0;
-}
-
-#define TEST_FUNCTION do_test ()
-#define TIMEOUT 30
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtod-round-data b/stdlib/tst-strtod-round-data
deleted file mode 100644
index cb908036fd..0000000000
--- a/stdlib/tst-strtod-round-data
+++ /dev/null
@@ -1,150 +0,0 @@
-3.518437208883201171875E+013
-1.00000005960464477550
-1.0000000596046447755
-1.000000059604644776
-1.000000059604644775
-1.00000005960464478
-1.0000000596046448
-1.000000059604645
-1.00000005960464
-1.0000000596046
-1.000000059605
-1.00000005960
-1.0000000596
-1.000000060
-1.00000006
-1.0000001
-1.000000
-1.00000000000000011113
-1.00000000000000011103
-1.00000000000000011102
-1.00000000000000011101
-1.0000000000000001111
-1.000000000000000111
-1.00000000000000011
-1.0000000000000001
-3929201589819414e-25
-0.000000000000000000000000000000000000000000002101947696487225606385594374934874196920392912814773657635602425834686624028790902229957282543182373046875
-1.00000005960464477539062499
-1.000000059604644775390625
-1.00000005960464477539062501
-1.00000011920928955078125
-1.00000017881393432617187499
-1.000000178813934326171875
-1.00000017881393432617187501
-1.0000002384185791015625
-1.08420217248550443400745280086994171142578125e-19
-1.0842022371089897897127399001987457793916291848290711641311645507812499e-19
-1.08420223710898978971273990019874577939162918482907116413116455078125e-19
-1.0842022371089897897127399001987457793916291848290711641311645507812501e-19
-1.0842023017324751454180269995275498473574771196581423282623291015625e-19
-1.0842023663559605011233140988563539153233250544872134923934936523437499e-19
-1.08420236635596050112331409885635391532332505448721349239349365234375e-19
-1.0842023663559605011233140988563539153233250544872134923934936523437501e-19
-1.084202430979445856828601198185157983289172989316284656524658203125e-19
-7.52316384526264005099991383822237233803945956334136013765601092018187046051025390625e-37
-7.5231642936781486349413765338158389908126215730251815381410578824437213052434003657253924757242202758789062499e-37
-7.52316429367814863494137653381583899081262157302518153814105788244372130524340036572539247572422027587890625e-37
-7.5231642936781486349413765338158389908126215730251815381410578824437213052434003657253924757242202758789062501e-37
-7.5231647420936572188828392294093056435857835827090029386261048447055721499765468252007849514484405517578125e-37
-7.5231651905091658028243019250027722963589455923928243391111518069674229947096932846761774271726608276367187499e-37
-7.52316519050916580282430192500277229635894559239282433911115180696742299470969328467617742717266082763671875e-37
-7.5231651905091658028243019250027722963589455923928243391111518069674229947096932846761774271726608276367187501e-37
-7.523165638924674386765764620596238949132107602076645739596198769229273839442839744151569902896881103515625e-37
-340282356779733661637539395458142568447.999
-340282356779733661637539395458142568448
-340282356779733661637539395458142568448.001
--340282356779733661637539395458142568447.999
--340282356779733661637539395458142568448
--340282356779733661637539395458142568448.001
-179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791.999
-179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792
-179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.001
--179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791.999
--179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792
--179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.001
-1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918527.999
-1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528
-1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528.001
--1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918527.999
--1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528
--1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528.001
-1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715391.999
-1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715392
-1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715392.001
--1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715391.999
--1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715392
--1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715392.001
-2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687499e-45
-2.101947696487225606385594374934874196920392912814773657635602425834686624028790902229957282543182373046875e-45
-2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687501e-45
--2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687499e-45
--2.101947696487225606385594374934874196920392912814773657635602425834686624028790902229957282543182373046875e-45
--2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687501e-45
-3.50324616081204267730932395822479032820065485469128942939267070972447770671465150371659547090530395507812499e-45
-3.503246160812042677309323958224790328200654854691289429392670709724477706714651503716595470905303955078125e-45
-3.50324616081204267730932395822479032820065485469128942939267070972447770671465150371659547090530395507812501e-45
--3.50324616081204267730932395822479032820065485469128942939267070972447770671465150371659547090530395507812499e-45
--3.503246160812042677309323958224790328200654854691289429392670709724477706714651503716595470905303955078125e-45
--3.50324616081204267730932395822479032820065485469128942939267070972447770671465150371659547090530395507812501e-45
-7.410984687618698162648531893023320585475897039214871466383785237510132609053131277979497545424539885696948470431685765963899850655339096945981621940161728171894510697854671067917687257517734731555330779540854980960845750095811137303474765809687100959097544227100475730780971111893578483867565399878350301522805593404659373979179073872386829939581848166016912201945649993128979841136206248449867871357218035220901702390328579173252022052897402080290685402160661237554998340267130003581248647904138574340187552090159017259254714629617513415977493871857473787096164563890871811984127167305601704549300470526959016576377688490826798697257336652176556794107250876433756084600398490497214911746308553955635418864151316847843631308023759629577398300170898437499e-324
-7.4109846876186981626485318930233205854758970392148714663837852375101326090531312779794975454245398856969484704316857659638998506553390969459816219401617281718945106978546710679176872575177347315553307795408549809608457500958111373034747658096871009590975442271004757307809711118935784838675653998783503015228055934046593739791790738723868299395818481660169122019456499931289798411362062484498678713572180352209017023903285791732520220528974020802906854021606612375549983402671300035812486479041385743401875520901590172592547146296175134159774938718574737870961645638908718119841271673056017045493004705269590165763776884908267986972573366521765567941072508764337560846003984904972149117463085539556354188641513168478436313080237596295773983001708984375e-324
-7.410984687618698162648531893023320585475897039214871466383785237510132609053131277979497545424539885696948470431685765963899850655339096945981621940161728171894510697854671067917687257517734731555330779540854980960845750095811137303474765809687100959097544227100475730780971111893578483867565399878350301522805593404659373979179073872386829939581848166016912201945649993128979841136206248449867871357218035220901702390328579173252022052897402080290685402160661237554998340267130003581248647904138574340187552090159017259254714629617513415977493871857473787096164563890871811984127167305601704549300470526959016576377688490826798697257336652176556794107250876433756084600398490497214911746308553955635418864151316847843631308023759629577398300170898437501e-324
--7.410984687618698162648531893023320585475897039214871466383785237510132609053131277979497545424539885696948470431685765963899850655339096945981621940161728171894510697854671067917687257517734731555330779540854980960845750095811137303474765809687100959097544227100475730780971111893578483867565399878350301522805593404659373979179073872386829939581848166016912201945649993128979841136206248449867871357218035220901702390328579173252022052897402080290685402160661237554998340267130003581248647904138574340187552090159017259254714629617513415977493871857473787096164563890871811984127167305601704549300470526959016576377688490826798697257336652176556794107250876433756084600398490497214911746308553955635418864151316847843631308023759629577398300170898437499e-324
--7.4109846876186981626485318930233205854758970392148714663837852375101326090531312779794975454245398856969484704316857659638998506553390969459816219401617281718945106978546710679176872575177347315553307795408549809608457500958111373034747658096871009590975442271004757307809711118935784838675653998783503015228055934046593739791790738723868299395818481660169122019456499931289798411362062484498678713572180352209017023903285791732520220528974020802906854021606612375549983402671300035812486479041385743401875520901590172592547146296175134159774938718574737870961645638908718119841271673056017045493004705269590165763776884908267986972573366521765567941072508764337560846003984904972149117463085539556354188641513168478436313080237596295773983001708984375e-324
--7.410984687618698162648531893023320585475897039214871466383785237510132609053131277979497545424539885696948470431685765963899850655339096945981621940161728171894510697854671067917687257517734731555330779540854980960845750095811137303474765809687100959097544227100475730780971111893578483867565399878350301522805593404659373979179073872386829939581848166016912201945649993128979841136206248449867871357218035220901702390328579173252022052897402080290685402160661237554998340267130003581248647904138574340187552090159017259254714629617513415977493871857473787096164563890871811984127167305601704549300470526959016576377688490826798697257336652176556794107250876433756084600398490497214911746308553955635418864151316847843631308023759629577398300170898437501e-324
-5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687499e-4951
-5.46779929782371190379260890042912972459857622354034501558147073054255753295009660521434106293874080779587102102080529665295047844893304825496026211338471350822573387176689751785383789570845033963493234384897511609341047969033029090288686119993125921652327780757456908215307313367394295878957740232139393310129853319126610211888963060953233950845785422003199631793594071800032514400843804841615045854626840829469327828294881838298175674523144370769439505327077912524046992686788101985028712502357968555779098305597496288175991948375220290368919956488030568463545206536359579198829053635210070171697414632960443922662694334080526864190176997186277619487638560405926908417212393004914459916660510317558023267203296664540665686303143487355117536394182579842533190638252470657276648523287454223056426260916178239688724389624700924406883725156778322327128669248001067971134780240835161999919912749368941130062333775184713893949842620045030584554856591000906652415254548036281829022414017017836373531792968500569736393059459388134289532878925936202911959860111289900618887987637185487890257175376747802810055833471650478460459250779148245153313351312860635744071818212363779076932092244234906632899168786207255077931639313903720118757997293301622787489850525574323330053349895193815663640653261384657614561732314168448072640907418419722475454249088439281362536533088134879943284462483896082614443915736191774429072907311631885819175882194201070472653674851414139198108859096891122440647971063242952915458929379913214790617434914900609409461282745336576821301251695869305718994035511225062977631807957323251343409893311558937242893589182127073929977680322999972072084511129714257799395078371652632557642689712118195363229932217741231347266655794602658713781865895628587618356133445842690980622757869697298305457864854014077743134149549581616770960047019414114115927554858644718705151733262444646312957015720874401831783399876629267632412206980788226617090546010735234775446535427950204682560784093064091008748868287818605298248793439879457512520813143459903135506837923488146278624413240301557305921665812510099227873245904315487345753286636286503807226030243834125646514462721175610422077384131141310997310167289350231522394313116195338483765836875091084530867301962551116953524641866782219275647577303198252230493416188536313334782412272272680845833966884362299362668540114271927670393635174916595231338524725341041244411123466156968910970701214636522586812703780765383816975942646584796378630871592938388807529281755454082628134037935686954169983885723045287488247562656656838905184226961694223388061375323047846826624482079286817404761883437391178335259163868151357930349068061174131050087191978828376147382620503202915394941049520564716066454820461766340754590215525559595903549562621278099530136795125074514242718392219467940568610559805583630337329057723569860511809664741164231921947415724386492152042297812796203704453738513487869185273997856308082426571227053818066616162711321820177977936612440784457475475356233845487698185296555392790365032340724558109915880751818176959751731101364826598545575062030580805510188732031382604511098551005267200735661262096661256044824137056119967967779273328271035688633522914992613122903551437420180422544707071078472935932052340497748391917547810304969780910060995596752409667301101676249036106564732671055561556337835940895462611076531105318082794457577243991861203875486751486321760491907016803052102243880722619748067919226364128975269527936779466226741495770848035680512429340764509429270927056845470429154903231124579718536587607255881903776664771069031066938472788476460322012930233295033487307239472187974104523339108479138928271958145518583355195189390314460933853291828207141736579466617460059018668855897329226526045739728421972311873652633819589252279700383580649872482332717064626876511433504720180433213145347598195242033084909143585968861500534066295124347881553551091005403198578135356959232734262569115529775393942099186306684666328819296619712127724446251513719534288754911396839196870087240104752172553479156988209602152172573903085602353234630969464420805480187541663697061615897052158736871663656287877965014700568701277294647143621722168024410452769115970094432811353897291302226031856656464346619476276280777232193768927273861205192875774054105101149361515027529971227502627819113726259972234152835169954792656314857994567825617347666484628496410640971818182042794985528278253841862020655169993625733881361630774771266021694104359050140770498084974090253693257957652720666502780042003578789909113749828579771084884825283544063138938642114971057650305046009822534888054745317987421433744650802400305823700866991679376510383079097061393271193254188545464782857356545416354777903469647826173542650507678783352302721948966801419867450746302258931065735595588435458411860251695316041515884813891649489148235939442871333362636803581913695403219306498244714254851377779848235254021151511710933136132513506853438248590522201268915519660183559208727757248071287690032431294868087337963504976682551164851571910118588306438983236282234720992802435831644343483470149103980044398219705082804408727593958279432709850087691435623519380914762150835481641373335418838088700191162340990134529298079501516522974364360061496849397757812346609541561544786426941760385242778104838331497986813457080891521791939794631694023406117934862723018080732675346126855938595967878668842110313414179033917498253204546635083703852518317784773110170897293611521619288153898185799835444909828917340811313123097443309606660312914517408855034585438849563676549437992646003145318154279326911078747823286547592935758034819293619617810739585020754384990706331937996993116942871832994234753398176556080587247232218670875630645576361123808295145013820732577370224728666082441643103852052135237029107871824725171250301064910318448715931417597297739077195100440493528574265929367637279694961039405916019750786028596604786141194054282128301344907317062205837882653447288187668851269775881511119842904443216489319071880803360647138732888340962292032766761198105218517261333777006163413042578229757889674721527422550419125841970454230312985062190118002401201824458385906966474162853345156310197990075156820042500608570209040122153751704798004826805544998060107661096550615074217477224611806173614025750822946789256052710835878978453907682264056485085181035257786386181957751285160739592729901482394153462634869665739345774507872436670632443783818831158272076058561748763500450868853206266693313118805937759162696436463954232205499407904769897092430274201583908061356909751493847146842199649381827199629139314649794586391855195314900094376198383063623654537548076548847041634904692964444271447785937256873584370873901519906946675162792020243324948282106576182619520385972302637994125842758516674039106573708797071810533658185026800374315600912099826417389956527932358515693723141301076471660852356156972570942691331009141357831788562803921393250013528417186104846166274481895569136218377916506998203230597087664208101335848418267186316816833817435119742641262509842148123971199782739179038898658917188367922633778880524581892387460749864560166810987228694195882740201814306527328178587284738493695393674639171713173248820998049990430544672477855920384647234422762398960664315801237564285400749454724277525689811714006217058533748758859430726006925769147904672059052723725947401879880819003174931850051429136071633807200697867867820953318408936940737783251194718335284929170810085473034145093815636178641952577515465395754614358036259938883256478835410391923683669874002630496812188314777763451185185037095888408590233797624565610306839281153499423939631856771230553247716937842149249317370437936795460514548456241502709554506083187473957557289508327546112770413596023012051385091755433135227727865041410075526919022495723751757317409236187691973046528983526943866654482600334585753232528142338680982794761667642582849114342880722431789416983473659854276969831295794960590320328412811499235180870848768851143690332277365212457405547117714234927198999823577119102255454804246883221953362404922531362818578378084917959937881991252055552221165810711344767874684305393079096174421066851595190710538449873436664524942803177201535670543641172447751413365584060985488039245094960522618251980431402726553036253156053265695302528858549918222892192012183135907454120104466422471117039019915913380626933201571806187365694399692832452794303126511926687883400336268251942602962629598842585977035848887708019612096528229823223761223035861698616851060438205104442934328562512103956932612648678239801726833527961417722103017259976523738041525250371628522914038044559973313673784636324377732429055180750654147242958574602882254000616086649616491964000793596226737706078983952690750565966271161482894910424917641709240148851061582354827747784181341232939744368770519956736186837511153538087714349842044477361747583160630962450473112798415799955781866094028642440427514431285362784534306334231186628526883742296008944189588248424594505408261764521458293892861035227741011955560296507532542444335659379385268289908931497662989977383599138871788886071907657098670524708807859379351100914247434499663534978656817538413802460756120940336174886746762968225700770270762668795579136738393410120995580438064423487980539512392749133346315224095644617704348757904022300228726475684361770186580686970717318793991803745609634927267145287292242089385899402725157478883791184616177022716940750874196341472980767647757457070269344429082366644005572655279514534821916845976742736919782536786909511787772395739254104386790993747006099739201282014223813291082365753694036759607652383337781270170965742961483210755669592850422218371597998001335632399639696386108726803932103001801520206130516134145471637137725126177572779559798958663675717764562685641910924770276501358322003764402397837265405526948517172695984892888515296609750277756395652297345967262058326684349793545419433450629778911871465610501181181082233237352108436811286154136010912220079123505369597771143065415145113323689360785609297881437988143912215075223706486467673642091321473124070149531135323798381957284911285369782859180669910409931530643561799038859520279527137496536045020535123554499166808872342387738555816361724795948668717650945139401032841679141101967202611108127167764242601545073950503805754528504207308184129947310793073435383768802801240193210401980387235587845444085843444660909828020673265290009315620489328754690798749565951805953953470932851402791654679655963183657497015358123843332409682836407213440034420026916137720567620990980257393327159139701862251764595634841341397466479401705379002753504804904688514393007719499151947030805766110225906703998449318676097774175289034547319222063789321414647554026294200742938163492700383513394191467684738513531716291539122387971419059201430360641317052304217623052328615038567995111559365651690059167118453891355809281625119124385312041561384477751207895486661436002934120657671671068885091725680035306685394605882483165133926525678562246026972962033289200733544259940449566248313469794588468375979500641518671645837492034339425921785288689813115753318489415974924704367823875026875326490930964983153474039774360013999821020308467636989947850546175232414631869808983945042114307636178253068950656615360454314979037591180079348391228818858630917694698835398768405435212957063159198557844932356038662689259817026902702028295957943508009182579139917444559226833433740466716699302196502685546875e-4951
-5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687501e-4951
--5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687499e-4951
--5.46779929782371190379260890042912972459857622354034501558147073054255753295009660521434106293874080779587102102080529665295047844893304825496026211338471350822573387176689751785383789570845033963493234384897511609341047969033029090288686119993125921652327780757456908215307313367394295878957740232139393310129853319126610211888963060953233950845785422003199631793594071800032514400843804841615045854626840829469327828294881838298175674523144370769439505327077912524046992686788101985028712502357968555779098305597496288175991948375220290368919956488030568463545206536359579198829053635210070171697414632960443922662694334080526864190176997186277619487638560405926908417212393004914459916660510317558023267203296664540665686303143487355117536394182579842533190638252470657276648523287454223056426260916178239688724389624700924406883725156778322327128669248001067971134780240835161999919912749368941130062333775184713893949842620045030584554856591000906652415254548036281829022414017017836373531792968500569736393059459388134289532878925936202911959860111289900618887987637185487890257175376747802810055833471650478460459250779148245153313351312860635744071818212363779076932092244234906632899168786207255077931639313903720118757997293301622787489850525574323330053349895193815663640653261384657614561732314168448072640907418419722475454249088439281362536533088134879943284462483896082614443915736191774429072907311631885819175882194201070472653674851414139198108859096891122440647971063242952915458929379913214790617434914900609409461282745336576821301251695869305718994035511225062977631807957323251343409893311558937242893589182127073929977680322999972072084511129714257799395078371652632557642689712118195363229932217741231347266655794602658713781865895628587618356133445842690980622757869697298305457864854014077743134149549581616770960047019414114115927554858644718705151733262444646312957015720874401831783399876629267632412206980788226617090546010735234775446535427950204682560784093064091008748868287818605298248793439879457512520813143459903135506837923488146278624413240301557305921665812510099227873245904315487345753286636286503807226030243834125646514462721175610422077384131141310997310167289350231522394313116195338483765836875091084530867301962551116953524641866782219275647577303198252230493416188536313334782412272272680845833966884362299362668540114271927670393635174916595231338524725341041244411123466156968910970701214636522586812703780765383816975942646584796378630871592938388807529281755454082628134037935686954169983885723045287488247562656656838905184226961694223388061375323047846826624482079286817404761883437391178335259163868151357930349068061174131050087191978828376147382620503202915394941049520564716066454820461766340754590215525559595903549562621278099530136795125074514242718392219467940568610559805583630337329057723569860511809664741164231921947415724386492152042297812796203704453738513487869185273997856308082426571227053818066616162711321820177977936612440784457475475356233845487698185296555392790365032340724558109915880751818176959751731101364826598545575062030580805510188732031382604511098551005267200735661262096661256044824137056119967967779273328271035688633522914992613122903551437420180422544707071078472935932052340497748391917547810304969780910060995596752409667301101676249036106564732671055561556337835940895462611076531105318082794457577243991861203875486751486321760491907016803052102243880722619748067919226364128975269527936779466226741495770848035680512429340764509429270927056845470429154903231124579718536587607255881903776664771069031066938472788476460322012930233295033487307239472187974104523339108479138928271958145518583355195189390314460933853291828207141736579466617460059018668855897329226526045739728421972311873652633819589252279700383580649872482332717064626876511433504720180433213145347598195242033084909143585968861500534066295124347881553551091005403198578135356959232734262569115529775393942099186306684666328819296619712127724446251513719534288754911396839196870087240104752172553479156988209602152172573903085602353234630969464420805480187541663697061615897052158736871663656287877965014700568701277294647143621722168024410452769115970094432811353897291302226031856656464346619476276280777232193768927273861205192875774054105101149361515027529971227502627819113726259972234152835169954792656314857994567825617347666484628496410640971818182042794985528278253841862020655169993625733881361630774771266021694104359050140770498084974090253693257957652720666502780042003578789909113749828579771084884825283544063138938642114971057650305046009822534888054745317987421433744650802400305823700866991679376510383079097061393271193254188545464782857356545416354777903469647826173542650507678783352302721948966801419867450746302258931065735595588435458411860251695316041515884813891649489148235939442871333362636803581913695403219306498244714254851377779848235254021151511710933136132513506853438248590522201268915519660183559208727757248071287690032431294868087337963504976682551164851571910118588306438983236282234720992802435831644343483470149103980044398219705082804408727593958279432709850087691435623519380914762150835481641373335418838088700191162340990134529298079501516522974364360061496849397757812346609541561544786426941760385242778104838331497986813457080891521791939794631694023406117934862723018080732675346126855938595967878668842110313414179033917498253204546635083703852518317784773110170897293611521619288153898185799835444909828917340811313123097443309606660312914517408855034585438849563676549437992646003145318154279326911078747823286547592935758034819293619617810739585020754384990706331937996993116942871832994234753398176556080587247232218670875630645576361123808295145013820732577370224728666082441643103852052135237029107871824725171250301064910318448715931417597297739077195100440493528574265929367637279694961039405916019750786028596604786141194054282128301344907317062205837882653447288187668851269775881511119842904443216489319071880803360647138732888340962292032766761198105218517261333777006163413042578229757889674721527422550419125841970454230312985062190118002401201824458385906966474162853345156310197990075156820042500608570209040122153751704798004826805544998060107661096550615074217477224611806173614025750822946789256052710835878978453907682264056485085181035257786386181957751285160739592729901482394153462634869665739345774507872436670632443783818831158272076058561748763500450868853206266693313118805937759162696436463954232205499407904769897092430274201583908061356909751493847146842199649381827199629139314649794586391855195314900094376198383063623654537548076548847041634904692964444271447785937256873584370873901519906946675162792020243324948282106576182619520385972302637994125842758516674039106573708797071810533658185026800374315600912099826417389956527932358515693723141301076471660852356156972570942691331009141357831788562803921393250013528417186104846166274481895569136218377916506998203230597087664208101335848418267186316816833817435119742641262509842148123971199782739179038898658917188367922633778880524581892387460749864560166810987228694195882740201814306527328178587284738493695393674639171713173248820998049990430544672477855920384647234422762398960664315801237564285400749454724277525689811714006217058533748758859430726006925769147904672059052723725947401879880819003174931850051429136071633807200697867867820953318408936940737783251194718335284929170810085473034145093815636178641952577515465395754614358036259938883256478835410391923683669874002630496812188314777763451185185037095888408590233797624565610306839281153499423939631856771230553247716937842149249317370437936795460514548456241502709554506083187473957557289508327546112770413596023012051385091755433135227727865041410075526919022495723751757317409236187691973046528983526943866654482600334585753232528142338680982794761667642582849114342880722431789416983473659854276969831295794960590320328412811499235180870848768851143690332277365212457405547117714234927198999823577119102255454804246883221953362404922531362818578378084917959937881991252055552221165810711344767874684305393079096174421066851595190710538449873436664524942803177201535670543641172447751413365584060985488039245094960522618251980431402726553036253156053265695302528858549918222892192012183135907454120104466422471117039019915913380626933201571806187365694399692832452794303126511926687883400336268251942602962629598842585977035848887708019612096528229823223761223035861698616851060438205104442934328562512103956932612648678239801726833527961417722103017259976523738041525250371628522914038044559973313673784636324377732429055180750654147242958574602882254000616086649616491964000793596226737706078983952690750565966271161482894910424917641709240148851061582354827747784181341232939744368770519956736186837511153538087714349842044477361747583160630962450473112798415799955781866094028642440427514431285362784534306334231186628526883742296008944189588248424594505408261764521458293892861035227741011955560296507532542444335659379385268289908931497662989977383599138871788886071907657098670524708807859379351100914247434499663534978656817538413802460756120940336174886746762968225700770270762668795579136738393410120995580438064423487980539512392749133346315224095644617704348757904022300228726475684361770186580686970717318793991803745609634927267145287292242089385899402725157478883791184616177022716940750874196341472980767647757457070269344429082366644005572655279514534821916845976742736919782536786909511787772395739254104386790993747006099739201282014223813291082365753694036759607652383337781270170965742961483210755669592850422218371597998001335632399639696386108726803932103001801520206130516134145471637137725126177572779559798958663675717764562685641910924770276501358322003764402397837265405526948517172695984892888515296609750277756395652297345967262058326684349793545419433450629778911871465610501181181082233237352108436811286154136010912220079123505369597771143065415145113323689360785609297881437988143912215075223706486467673642091321473124070149531135323798381957284911285369782859180669910409931530643561799038859520279527137496536045020535123554499166808872342387738555816361724795948668717650945139401032841679141101967202611108127167764242601545073950503805754528504207308184129947310793073435383768802801240193210401980387235587845444085843444660909828020673265290009315620489328754690798749565951805953953470932851402791654679655963183657497015358123843332409682836407213440034420026916137720567620990980257393327159139701862251764595634841341397466479401705379002753504804904688514393007719499151947030805766110225906703998449318676097774175289034547319222063789321414647554026294200742938163492700383513394191467684738513531716291539122387971419059201430360641317052304217623052328615038567995111559365651690059167118453891355809281625119124385312041561384477751207895486661436002934120657671671068885091725680035306685394605882483165133926525678562246026972962033289200733544259940449566248313469794588468375979500641518671645837492034339425921785288689813115753318489415974924704367823875026875326490930964983153474039774360013999821020308467636989947850546175232414631869808983945042114307636178253068950656615360454314979037591180079348391228818858630917694698835398768405435212957063159198557844932356038662689259817026902702028295957943508009182579139917444559226833433740466716699302196502685546875e-4951
--5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687501e-4951
-5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687499e-4951
-5.46779929782371190379260890042912972459857622354034501558147073054255753295009660521434106293874080779587102102080529665295047844893304825496026211338471350822573387176689751785383789570845033963493234384897511609341047969033029090288686119993125921652327780757456908215307313367394295878957740232139393310129853319126610211888963060953233950845785422003199631793594071800032514400843804841615045854626840829469327828294881838298175674523144370769439505327077912524046992686788101985028712502357968555779098305597496288175991948375220290368919956488030568463545206536359579198829053635210070171697414632960443922662694334080526864190176997186277619487638560405926908417212393004914459916660510317558023267203296664540665686303143487355117536394182579842533190638252470657276648523287454223056426260916178239688724389624700924406883725156778322327128669248001067971134780240835161999919912749368941130062333775184713893949842620045030584554856591000906652415254548036281829022414017017836373531792968500569736393059459388134289532878925936202911959860111289900618887987637185487890257175376747802810055833471650478460459250779148245153313351312860635744071818212363779076932092244234906632899168786207255077931639313903720118757997293301622787489850525574323330053349895193815663640653261384657614561732314168448072640907418419722475454249088439281362536533088134879943284462483896082614443915736191774429072907311631885819175882194201070472653674851414139198108859096891122440647971063242952915458929379913214790617434914900609409461282745336576821301251695869305718994035511225062977631807957323251343409893311558937242893589182127073929977680322999972072084511129714257799395078371652632557642689712118195363229932217741231347266655794602658713781865895628587618356133445842690980622757869697298305457864854014077743134149549581616770960047019414114115927554858644718705151733262444646312957015720874401831783399876629267632412206980788226617090546010735234775446535427950204682560784093064091008748868287818605298248793439879457512520813143459903135506837923488146278624413240301557305921665812510099227873245904315487345753286636286503807226030243834125646514462721175610422077384131141310997310167289350231522394313116195338483765836875091084530867301962551116953524641866782219275647577303198252230493416188536313334782412272272680845833966884362299362668540114271927670393635174916595231338524725341041244411123466156968910970701214636522586812703780765383816975942646584796378630871592938388807529281755454082628134037935686954169983885723045287488247562656656838905184226961694223388061375323047846826624482079286817404761883437391178335259163868151357930349068061174131050087191978828376147382620503202915394941049520564716066454820461766340754590215525559595903549562621278099530136795125074514242718392219467940568610559805583630337329057723569860511809664741164231921947415724386492152042297812796203704453738513487869185273997856308082426571227053818066616162711321820177977936612440784457475475356233845487698185296555392790365032340724558109915880751818176959751731101364826598545575062030580805510188732031382604511098551005267200735661262096661256044824137056119967967779273328271035688633522914992613122903551437420180422544707071078472935932052340497748391917547810304969780910060995596752409667301101676249036106564732671055561556337835940895462611076531105318082794457577243991861203875486751486321760491907016803052102243880722619748067919226364128975269527936779466226741495770848035680512429340764509429270927056845470429154903231124579718536587607255881903776664771069031066938472788476460322012930233295033487307239472187974104523339108479138928271958145518583355195189390314460933853291828207141736579466617460059018668855897329226526045739728421972311873652633819589252279700383580649872482332717064626876511433504720180433213145347598195242033084909143585968861500534066295124347881553551091005403198578135356959232734262569115529775393942099186306684666328819296619712127724446251513719534288754911396839196870087240104752172553479156988209602152172573903085602353234630969464420805480187541663697061615897052158736871663656287877965014700568701277294647143621722168024410452769115970094432811353897291302226031856656464346619476276280777232193768927273861205192875774054105101149361515027529971227502627819113726259972234152835169954792656314857994567825617347666484628496410640971818182042794985528278253841862020655169993625733881361630774771266021694104359050140770498084974090253693257957652720666502780042003578789909113749828579771084884825283544063138938642114971057650305046009822534888054745317987421433744650802400305823700866991679376510383079097061393271193254188545464782857356545416354777903469647826173542650507678783352302721948966801419867450746302258931065735595588435458411860251695316041515884813891649489148235939442871333362636803581913695403219306498244714254851377779848235254021151511710933136132513506853438248590522201268915519660183559208727757248071287690032431294868087337963504976682551164851571910118588306438983236282234720992802435831644343483470149103980044398219705082804408727593958279432709850087691435623519380914762150835481641373335418838088700191162340990134529298079501516522974364360061496849397757812346609541561544786426941760385242778104838331497986813457080891521791939794631694023406117934862723018080732675346126855938595967878668842110313414179033917498253204546635083703852518317784773110170897293611521619288153898185799835444909828917340811313123097443309606660312914517408855034585438849563676549437992646003145318154279326911078747823286547592935758034819293619617810739585020754384990706331937996993116942871832994234753398176556080587247232218670875630645576361123808295145013820732577370224728666082441643103852052135237029107871824725171250301064910318448715931417597297739077195100440493528574265929367637279694961039405916019750786028596604786141194054282128301344907317062205837882653447288187668851269775881511119842904443216489319071880803360647138732888340962292032766761198105218517261333777006163413042578229757889674721527422550419125841970454230312985062190118002401201824458385906966474162853345156310197990075156820042500608570209040122153751704798004826805544998060107661096550615074217477224611806173614025750822946789256052710835878978453907682264056485085181035257786386181957751285160739592729901482394153462634869665739345774507872436670632443783818831158272076058561748763500450868853206266693313118805937759162696436463954232205499407904769897092430274201583908061356909751493847146842199649381827199629139314649794586391855195314900094376198383063623654537548076548847041634904692964444271447785937256873584370873901519906946675162792020243324948282106576182619520385972302637994125842758516674039106573708797071810533658185026800374315600912099826417389956527932358515693723141301076471660852356156972570942691331009141357831788562803921393250013528417186104846166274481895569136218377916506998203230597087664208101335848418267186316816833817435119742641262509842148123971199782739179038898658917188367922633778880524581892387460749864560166810987228694195882740201814306527328178587284738493695393674639171713173248820998049990430544672477855920384647234422762398960664315801237564285400749454724277525689811714006217058533748758859430726006925769147904672059052723725947401879880819003174931850051429136071633807200697867867820953318408936940737783251194718335284929170810085473034145093815636178641952577515465395754614358036259938883256478835410391923683669874002630496812188314777763451185185037095888408590233797624565610306839281153499423939631856771230553247716937842149249317370437936795460514548456241502709554506083187473957557289508327546112770413596023012051385091755433135227727865041410075526919022495723751757317409236187691973046528983526943866654482600334585753232528142338680982794761667642582849114342880722431789416983473659854276969831295794960590320328412811499235180870848768851143690332277365212457405547117714234927198999823577119102255454804246883221953362404922531362818578378084917959937881991252055552221165810711344767874684305393079096174421066851595190710538449873436664524942803177201535670543641172447751413365584060985488039245094960522618251980431402726553036253156053265695302528858549918222892192012183135907454120104466422471117039019915913380626933201571806187365694399692832452794303126511926687883400336268251942602962629598842585977035848887708019612096528229823223761223035861698616851060438205104442934328562512103956932612648678239801726833527961417722103017259976523738041525250371628522914038044559973313673784636324377732429055180750654147242958574602882254000616086649616491964000793596226737706078983952690750565966271161482894910424917641709240148851061582354827747784181341232939744368770519956736186837511153538087714349842044477361747583160630962450473112798415799955781866094028642440427514431285362784534306334231186628526883742296008944189588248424594505408261764521458293892861035227741011955560296507532542444335659379385268289908931497662989977383599138871788886071907657098670524708807859379351100914247434499663534978656817538413802460756120940336174886746762968225700770270762668795579136738393410120995580438064423487980539512392749133346315224095644617704348757904022300228726475684361770186580686970717318793991803745609634927267145287292242089385899402725157478883791184616177022716940750874196341472980767647757457070269344429082366644005572655279514534821916845976742736919782536786909511787772395739254104386790993747006099739201282014223813291082365753694036759607652383337781270170965742961483210755669592850422218371597998001335632399639696386108726803932103001801520206130516134145471637137725126177572779559798958663675717764562685641910924770276501358322003764402397837265405526948517172695984892888515296609750277756395652297345967262058326684349793545419433450629778911871465610501181181082233237352108436811286154136010912220079123505369597771143065415145113323689360785609297881437988143912215075223706486467673642091321473124070149531135323798381957284911285369782859180669910409931530643561799038859520279527137496536045020535123554499166808872342387738555816361724795948668717650945139401032841679141101967202611108127167764242601545073950503805754528504207308184129947310793073435383768802801240193210401980387235587845444085843444660909828020673265290009315620489328754690798749565951805953953470932851402791654679655963183657497015358123843332409682836407213440034420026916137720567620990980257393327159139701862251764595634841341397466479401705379002753504804904688514393007719499151947030805766110225906703998449318676097774175289034547319222063789321414647554026294200742938163492700383513394191467684738513531716291539122387971419059201430360641317052304217623052328615038567995111559365651690059167118453891355809281625119124385312041561384477751207895486661436002934120657671671068885091725680035306685394605882483165133926525678562246026972962033289200733544259940449566248313469794588468375979500641518671645837492034339425921785288689813115753318489415974924704367823875026875326490930964983153474039774360013999821020308467636989947850546175232414631869808983945042114307636178253068950656615360454314979037591180079348391228818858630917694698835398768405435212957063159198557844932356038662689259817026902702028295957943508009182579139917444559226833433740466716699302196502685546875e-4951
-5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687501e-4951
--5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687499e-4951
--5.46779929782371190379260890042912972459857622354034501558147073054255753295009660521434106293874080779587102102080529665295047844893304825496026211338471350822573387176689751785383789570845033963493234384897511609341047969033029090288686119993125921652327780757456908215307313367394295878957740232139393310129853319126610211888963060953233950845785422003199631793594071800032514400843804841615045854626840829469327828294881838298175674523144370769439505327077912524046992686788101985028712502357968555779098305597496288175991948375220290368919956488030568463545206536359579198829053635210070171697414632960443922662694334080526864190176997186277619487638560405926908417212393004914459916660510317558023267203296664540665686303143487355117536394182579842533190638252470657276648523287454223056426260916178239688724389624700924406883725156778322327128669248001067971134780240835161999919912749368941130062333775184713893949842620045030584554856591000906652415254548036281829022414017017836373531792968500569736393059459388134289532878925936202911959860111289900618887987637185487890257175376747802810055833471650478460459250779148245153313351312860635744071818212363779076932092244234906632899168786207255077931639313903720118757997293301622787489850525574323330053349895193815663640653261384657614561732314168448072640907418419722475454249088439281362536533088134879943284462483896082614443915736191774429072907311631885819175882194201070472653674851414139198108859096891122440647971063242952915458929379913214790617434914900609409461282745336576821301251695869305718994035511225062977631807957323251343409893311558937242893589182127073929977680322999972072084511129714257799395078371652632557642689712118195363229932217741231347266655794602658713781865895628587618356133445842690980622757869697298305457864854014077743134149549581616770960047019414114115927554858644718705151733262444646312957015720874401831783399876629267632412206980788226617090546010735234775446535427950204682560784093064091008748868287818605298248793439879457512520813143459903135506837923488146278624413240301557305921665812510099227873245904315487345753286636286503807226030243834125646514462721175610422077384131141310997310167289350231522394313116195338483765836875091084530867301962551116953524641866782219275647577303198252230493416188536313334782412272272680845833966884362299362668540114271927670393635174916595231338524725341041244411123466156968910970701214636522586812703780765383816975942646584796378630871592938388807529281755454082628134037935686954169983885723045287488247562656656838905184226961694223388061375323047846826624482079286817404761883437391178335259163868151357930349068061174131050087191978828376147382620503202915394941049520564716066454820461766340754590215525559595903549562621278099530136795125074514242718392219467940568610559805583630337329057723569860511809664741164231921947415724386492152042297812796203704453738513487869185273997856308082426571227053818066616162711321820177977936612440784457475475356233845487698185296555392790365032340724558109915880751818176959751731101364826598545575062030580805510188732031382604511098551005267200735661262096661256044824137056119967967779273328271035688633522914992613122903551437420180422544707071078472935932052340497748391917547810304969780910060995596752409667301101676249036106564732671055561556337835940895462611076531105318082794457577243991861203875486751486321760491907016803052102243880722619748067919226364128975269527936779466226741495770848035680512429340764509429270927056845470429154903231124579718536587607255881903776664771069031066938472788476460322012930233295033487307239472187974104523339108479138928271958145518583355195189390314460933853291828207141736579466617460059018668855897329226526045739728421972311873652633819589252279700383580649872482332717064626876511433504720180433213145347598195242033084909143585968861500534066295124347881553551091005403198578135356959232734262569115529775393942099186306684666328819296619712127724446251513719534288754911396839196870087240104752172553479156988209602152172573903085602353234630969464420805480187541663697061615897052158736871663656287877965014700568701277294647143621722168024410452769115970094432811353897291302226031856656464346619476276280777232193768927273861205192875774054105101149361515027529971227502627819113726259972234152835169954792656314857994567825617347666484628496410640971818182042794985528278253841862020655169993625733881361630774771266021694104359050140770498084974090253693257957652720666502780042003578789909113749828579771084884825283544063138938642114971057650305046009822534888054745317987421433744650802400305823700866991679376510383079097061393271193254188545464782857356545416354777903469647826173542650507678783352302721948966801419867450746302258931065735595588435458411860251695316041515884813891649489148235939442871333362636803581913695403219306498244714254851377779848235254021151511710933136132513506853438248590522201268915519660183559208727757248071287690032431294868087337963504976682551164851571910118588306438983236282234720992802435831644343483470149103980044398219705082804408727593958279432709850087691435623519380914762150835481641373335418838088700191162340990134529298079501516522974364360061496849397757812346609541561544786426941760385242778104838331497986813457080891521791939794631694023406117934862723018080732675346126855938595967878668842110313414179033917498253204546635083703852518317784773110170897293611521619288153898185799835444909828917340811313123097443309606660312914517408855034585438849563676549437992646003145318154279326911078747823286547592935758034819293619617810739585020754384990706331937996993116942871832994234753398176556080587247232218670875630645576361123808295145013820732577370224728666082441643103852052135237029107871824725171250301064910318448715931417597297739077195100440493528574265929367637279694961039405916019750786028596604786141194054282128301344907317062205837882653447288187668851269775881511119842904443216489319071880803360647138732888340962292032766761198105218517261333777006163413042578229757889674721527422550419125841970454230312985062190118002401201824458385906966474162853345156310197990075156820042500608570209040122153751704798004826805544998060107661096550615074217477224611806173614025750822946789256052710835878978453907682264056485085181035257786386181957751285160739592729901482394153462634869665739345774507872436670632443783818831158272076058561748763500450868853206266693313118805937759162696436463954232205499407904769897092430274201583908061356909751493847146842199649381827199629139314649794586391855195314900094376198383063623654537548076548847041634904692964444271447785937256873584370873901519906946675162792020243324948282106576182619520385972302637994125842758516674039106573708797071810533658185026800374315600912099826417389956527932358515693723141301076471660852356156972570942691331009141357831788562803921393250013528417186104846166274481895569136218377916506998203230597087664208101335848418267186316816833817435119742641262509842148123971199782739179038898658917188367922633778880524581892387460749864560166810987228694195882740201814306527328178587284738493695393674639171713173248820998049990430544672477855920384647234422762398960664315801237564285400749454724277525689811714006217058533748758859430726006925769147904672059052723725947401879880819003174931850051429136071633807200697867867820953318408936940737783251194718335284929170810085473034145093815636178641952577515465395754614358036259938883256478835410391923683669874002630496812188314777763451185185037095888408590233797624565610306839281153499423939631856771230553247716937842149249317370437936795460514548456241502709554506083187473957557289508327546112770413596023012051385091755433135227727865041410075526919022495723751757317409236187691973046528983526943866654482600334585753232528142338680982794761667642582849114342880722431789416983473659854276969831295794960590320328412811499235180870848768851143690332277365212457405547117714234927198999823577119102255454804246883221953362404922531362818578378084917959937881991252055552221165810711344767874684305393079096174421066851595190710538449873436664524942803177201535670543641172447751413365584060985488039245094960522618251980431402726553036253156053265695302528858549918222892192012183135907454120104466422471117039019915913380626933201571806187365694399692832452794303126511926687883400336268251942602962629598842585977035848887708019612096528229823223761223035861698616851060438205104442934328562512103956932612648678239801726833527961417722103017259976523738041525250371628522914038044559973313673784636324377732429055180750654147242958574602882254000616086649616491964000793596226737706078983952690750565966271161482894910424917641709240148851061582354827747784181341232939744368770519956736186837511153538087714349842044477361747583160630962450473112798415799955781866094028642440427514431285362784534306334231186628526883742296008944189588248424594505408261764521458293892861035227741011955560296507532542444335659379385268289908931497662989977383599138871788886071907657098670524708807859379351100914247434499663534978656817538413802460756120940336174886746762968225700770270762668795579136738393410120995580438064423487980539512392749133346315224095644617704348757904022300228726475684361770186580686970717318793991803745609634927267145287292242089385899402725157478883791184616177022716940750874196341472980767647757457070269344429082366644005572655279514534821916845976742736919782536786909511787772395739254104386790993747006099739201282014223813291082365753694036759607652383337781270170965742961483210755669592850422218371597998001335632399639696386108726803932103001801520206130516134145471637137725126177572779559798958663675717764562685641910924770276501358322003764402397837265405526948517172695984892888515296609750277756395652297345967262058326684349793545419433450629778911871465610501181181082233237352108436811286154136010912220079123505369597771143065415145113323689360785609297881437988143912215075223706486467673642091321473124070149531135323798381957284911285369782859180669910409931530643561799038859520279527137496536045020535123554499166808872342387738555816361724795948668717650945139401032841679141101967202611108127167764242601545073950503805754528504207308184129947310793073435383768802801240193210401980387235587845444085843444660909828020673265290009315620489328754690798749565951805953953470932851402791654679655963183657497015358123843332409682836407213440034420026916137720567620990980257393327159139701862251764595634841341397466479401705379002753504804904688514393007719499151947030805766110225906703998449318676097774175289034547319222063789321414647554026294200742938163492700383513394191467684738513531716291539122387971419059201430360641317052304217623052328615038567995111559365651690059167118453891355809281625119124385312041561384477751207895486661436002934120657671671068885091725680035306685394605882483165133926525678562246026972962033289200733544259940449566248313469794588468375979500641518671645837492034339425921785288689813115753318489415974924704367823875026875326490930964983153474039774360013999821020308467636989947850546175232414631869808983945042114307636178253068950656615360454314979037591180079348391228818858630917694698835398768405435212957063159198557844932356038662689259817026902702028295957943508009182579139917444559226833433740466716699302196502685546875e-4951
--5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687501e-4951
--0x0.7p-149
--0x0.7p-1074
--0x0.7p-16445
--0x0.7p-16494
-0x1p-150
-0x1p-1075
-0x1p-16446
-0x1p-16495
--0x1p-150
--0x1p-1075
--0x1p-16446
--0x1p-16495
-.70064923216240853546186479164495807e-45
-7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015624e-46
-7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625e-46
-7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015626e-46
--7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015624e-46
--7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625e-46
--7.00649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015626e-46
-2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328124e-324
-2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125e-324
-2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328126e-324
--2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328124e-324
--2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125e-324
--2.4703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328126e-324
-1.82259976594123730126420296680970990819952540784678167186049024351418584431669886840478035431291360259862367367360176555098349281631101608498675403779490450274191129058896583928461263190281677987831078128299170536447015989677676363429562039997708640550775926919152302738435771122464765292985913410713131103376617773042203403962987686984411316948595140667733210597864690600010838133614601613871681951542280276489775942764960612766058558174381456923146501775692637508015664228929367328342904167452656185259699435199165429391997316125073430122973318829343522821181735512119859732943017878403356723899138210986814640887564778026842288063392332395425873162546186801975636139070797668304819972220170105852674422401098888180221895434381162451705845464727526614177730212750823552425549507762484741018808753638726079896241463208233641468961241718926107442376223082667022657044926746945053999973304249789647043354111258394904631316614206681676861518285530333635550805084849345427276340804672339278791177264322833523245464353153129378096510959641978734303986620037096633539629329212395162630085725125582600936685277823883492820153083593049415051104450437620211914690606070787926358977364081411635544299722928735751692643879771301240039585999097767207595829950175191441110017783298397938554546884420461552538187244104722816024213635806139907491818083029479760454178844362711626647761487494632027538147971912063924809690969103877295273058627398067023490884558283804713066036286365630374146882657021080984305152976459971071596872478304966869803153760915112192273767083898623101906331345170408354325877269319107750447803297770519645747631196394042357976659226774333324024028170376571419266465026123884210852547563237372731787743310739247077115755551931534219571260621965209529206118711148614230326874252623232432768485954951338025914378049849860538923653349006471371371975851619548239568383911087481548770985671906958133943927799958876422544137402326929408872363515336911744925148845142650068227520261364354697002916289429272868432749597813293152504173604381153301045168945974496048759541471080100519101973888604170033075957748634771829115251095545428834602408676747944708548838154240391870140692461377047103665770055763116743840798104372065112827921945625030361510289100654183705651174880622260739758549192434399417410164472062845437778260804090757560281944655628120766454222846704757309223464545058305531743779508241780347081470374488718989636990233738212174195604234593588461272325314215528265459543623864312796269176427251818027542711345978562318056661295241015095829415854218885612968394742320564741129353791774349282275541494026428939134920627812463726111753054622717119310116356020391377016695730659609458715794206834400971798313683173521572022151606820588780251530071841853198634516520873759366510045598375024838080906130739822646856203519935194543445776352574523286837269888247054743973982471908128830717347432604265401234817912837829289728424665952102694142190409017939355538720903773940059325978870813594819158491785411281829232728432185130930121677446908186036638626917272725653250577033788275532848525020676860268503396244010460868170366183668422400245220420698887085348274712352039989322593091109423678562877840971664204374301183812473393474181569023692824311977350780165916130639182603434989926970020331865584136555767033892083012035521577557018520518779278646965154203692177035106027598152525747997287067958495583828773920163969005601017367414626907539916022639742121376325089842645593155408913831923616011893504143113588169809756975685615156809718301077041526572845529202418627301258888257023010355646157596158820107337643411098344495769079824062658034841113036159712976090652715172861118398396463438153644617763942735713912193155539153353006222951965776408842015246576140657437291217544606529750759900127860216624160777572354875625503811168240060144404381782532731747344361636381195322953833511355431708115960517850363668467732859378452319744244754189705176591797980699728768894888776273098873237375908148750504573178096251637132279732290029080034917390851159718996069867384057524634361867451078210323154806935160062513887899020538632350719578957221218762625988338233522900425764882381207240722674803484256371990031477603784632430434075343952218821448873158758760259077397922975757953735064291924684701700383120505009176657075834209273037908753324078050945056651597552104952664855941872449222161542832136880323939394014264995176092751280620673551723331208577960453876924923755340564701453016713590166028324696751231085985884240222167593347334526263303037916609526590361628275094514687712979547371657019216768348669940844962684915105995807144581550267466768607900288997226458836794359699020464423731084729515154927619118848472118259301156549275391180883502559594450767573982988933806622483582100752977021911865196145152803953417231772013838628271297216496382745313147623777787545601193971231801073102166081571418283792593282745084673717170570311045377504502284479416196840733756305173220061186402909252416023762563344143764956029112654501658894183721617190636706196102146327745427411573664267478610548114494490049701326681466073235027601469575864652759810903283362563811874506460304920716945160547124445139612696233397054113663378176432693167172174324788120020498949799252604115536513853848262142313920128414259368279443832662271152360297173930646598210564674468705978287574339360244225115375618646198655959556280703437804726344639166084401515545027901284172772594924370056965764537173873096051299395266611814969942972446937104374365814436535553437638172469618344861812949854558849812664215334381772718093108970359582607762182530978586011606431206539270246528340251461663568777312665664372314290610998078251132725518693529082410739556958543548525453707936098381671273577525790074909555360813881034617350711745676369290608241723750100354970106149571977139199099246359065033480164509524755309789212426564987013135305339916928676198868262047064684760709433781635772354068612627551149096062556283756591960503706614301481072163106357293601120215712910962780320764010922253732701739505753777925668721137680859409919296558240509140850139708613990151410104328354063372667467067274819461968988824720951115052103399330025052273347500202856736346707384583901599334942268514999353369220365516871691405825741537268724538008583607648929752017570278626326151302560754685495028393678419262128727319250428386913197576633827464717820878289888579781924835957478890210814594606277052757358686187249587833483622951068755564437706268645919720898812154651410735166469301589965697476758067194636020452303250497949048947399883127275733209713104883264862130618398438300031458732794354541218179182692182949013878301564321481423815928645752291194790291300506635648891720930673414441649427368858727539840128657434212664708614252838891346368857902932357270177886061675600124771866970699942139129985509310786171897907713767025490553617452052324190314230443669713785943929520934640464416671176139062034948722091493965189712072792638835666067743532362554736033778616139422395438938944605811706580880420836614049374657066594246393012966219639062789307544592960174860630795820249954853388936995742898065294246733938102175776059529094912831231797891546390571057749606999349996810181557492618640128215744807587466320221438600412521428466916484908092508563270571335405686177916252953143575335641923049301557353017574575315800626626939667724977283350476378690544602400232622622606984439469645646912594417064906111761643056936695157678048364605212059547317525838488465251538119345419979627752159611803463974561223291334210165604062771592587817061728345698629469530077932541521870102279760384499807979877285590410184415905645947383083105790145978931820171516152080500903184835361062491319185763169442515370923471198674337350461697251811045075909288347136691842306340831907917252439136412062563991015509661175647955551494200111528584410842714112893660931587222547527616371447626907477263138994491219951425656610431931653530106776137603833078393623616256283714563444092455070819135182372571411642399666607859039700751818268082294407317787468307510454272859459361639319979293997084018517407055270237114922624894768464359698724807022283865063570179483291145554841647601059067178556847880390815917137788528020328496013081698320174206083993477134242184345417718684421898434176286183306074297397337394378635818040034822140823705679673305304460208977733857268729121898133230944150931434375503975562627800112089417314200987543199614195325678616295902673204032176076607741253741011953899538950353479401701480978109520837367985644204216226079933908944509320472574034339086658841246013841750123876174304679348186657771224594878774792577476351726916884715747652858200960751333538695549872163988000264532075579235359661317563583521988757053827631636808305880569746716283687194118275915928060447077646581456256839985578728945837051179362571449947348159120582527720210320816824370932805266651927288698009547480142504810428454261511435444743728876175627914098669648063196082808198168469420588173819431297620345075913670651853432169177514148111886459795089429969643832554329992461199712957262962023969219032890174902935953126450366971415811499887844992885605846137934153585373646778724962248920989408566923423587556265193045579464470040331860146021474495993513170797583044448771741365214872568116252634674100076242158561453923395526895656905772931330601248536544975755715095764080696461966467575052492961263728205392340905646916958065447157660255882585819023423114809694122214668524218426504844940638948658914245639927512262303170595924131913084701462263664582335366579733760671407937763694121917898012253202550794445927090056988580987161070251889864283474072790532666000445210799879898795369575601310701000600506735376838711381823879045908375392524259853266319554558572588187561880636974923425500452774001254800799279088468508982839057565328297629505098869916759252131884099115322420686108894783264515139811150209926303957155203500393727027411079117369478937095384712003637406693041168456532590381021805048371107896453595203099293812662714637405025074568828822557880697107157708023383177045107932793985761637095123260953060223303469977176881187266346286506759842379165512015006845041184833055602957447462579518605453908265316222905883648379800344280559713700655734203702709055921414200515024650167935251509501402436061376649103597691145127922934267080064403467326795745195948481361947814886969942673557755096669771873496442918230266249855317268651317823644283800930551559885321061219165671786041281110803227612135737813344806675638712573522540330326752464442386379900620750588198544947113799155493133901793000917834934968229504797669239833050649010268588703408635567999483106225365924725096344849106407354596440471549184675431400247646054497566794504464730489228246171177238763846374129323806353067143453547105684101405874350776205012855998370519788550563353055706151297118603093875039708128437347187128159250402631828887145334311373552557223689628363908560011768895131535294161055044642175226187415342324320677763066911181419980149855416104489931529489458659833547172890548612497344779808640595096229937705251106163138658308234789274625008958442163643654994384491346591453337999940340102822545663315950182058410804877289936327981680704769212059417689650218871786818104993012530393359782797076272952876972564899611799589468478404319021053066185948310785346220896419939008967567342765319314502669727526379972481519742277811246822238899767398834228515624e-4951
-1.82259976594123730126420296680970990819952540784678167186049024351418584431669886840478035431291360259862367367360176555098349281631101608498675403779490450274191129058896583928461263190281677987831078128299170536447015989677676363429562039997708640550775926919152302738435771122464765292985913410713131103376617773042203403962987686984411316948595140667733210597864690600010838133614601613871681951542280276489775942764960612766058558174381456923146501775692637508015664228929367328342904167452656185259699435199165429391997316125073430122973318829343522821181735512119859732943017878403356723899138210986814640887564778026842288063392332395425873162546186801975636139070797668304819972220170105852674422401098888180221895434381162451705845464727526614177730212750823552425549507762484741018808753638726079896241463208233641468961241718926107442376223082667022657044926746945053999973304249789647043354111258394904631316614206681676861518285530333635550805084849345427276340804672339278791177264322833523245464353153129378096510959641978734303986620037096633539629329212395162630085725125582600936685277823883492820153083593049415051104450437620211914690606070787926358977364081411635544299722928735751692643879771301240039585999097767207595829950175191441110017783298397938554546884420461552538187244104722816024213635806139907491818083029479760454178844362711626647761487494632027538147971912063924809690969103877295273058627398067023490884558283804713066036286365630374146882657021080984305152976459971071596872478304966869803153760915112192273767083898623101906331345170408354325877269319107750447803297770519645747631196394042357976659226774333324024028170376571419266465026123884210852547563237372731787743310739247077115755551931534219571260621965209529206118711148614230326874252623232432768485954951338025914378049849860538923653349006471371371975851619548239568383911087481548770985671906958133943927799958876422544137402326929408872363515336911744925148845142650068227520261364354697002916289429272868432749597813293152504173604381153301045168945974496048759541471080100519101973888604170033075957748634771829115251095545428834602408676747944708548838154240391870140692461377047103665770055763116743840798104372065112827921945625030361510289100654183705651174880622260739758549192434399417410164472062845437778260804090757560281944655628120766454222846704757309223464545058305531743779508241780347081470374488718989636990233738212174195604234593588461272325314215528265459543623864312796269176427251818027542711345978562318056661295241015095829415854218885612968394742320564741129353791774349282275541494026428939134920627812463726111753054622717119310116356020391377016695730659609458715794206834400971798313683173521572022151606820588780251530071841853198634516520873759366510045598375024838080906130739822646856203519935194543445776352574523286837269888247054743973982471908128830717347432604265401234817912837829289728424665952102694142190409017939355538720903773940059325978870813594819158491785411281829232728432185130930121677446908186036638626917272725653250577033788275532848525020676860268503396244010460868170366183668422400245220420698887085348274712352039989322593091109423678562877840971664204374301183812473393474181569023692824311977350780165916130639182603434989926970020331865584136555767033892083012035521577557018520518779278646965154203692177035106027598152525747997287067958495583828773920163969005601017367414626907539916022639742121376325089842645593155408913831923616011893504143113588169809756975685615156809718301077041526572845529202418627301258888257023010355646157596158820107337643411098344495769079824062658034841113036159712976090652715172861118398396463438153644617763942735713912193155539153353006222951965776408842015246576140657437291217544606529750759900127860216624160777572354875625503811168240060144404381782532731747344361636381195322953833511355431708115960517850363668467732859378452319744244754189705176591797980699728768894888776273098873237375908148750504573178096251637132279732290029080034917390851159718996069867384057524634361867451078210323154806935160062513887899020538632350719578957221218762625988338233522900425764882381207240722674803484256371990031477603784632430434075343952218821448873158758760259077397922975757953735064291924684701700383120505009176657075834209273037908753324078050945056651597552104952664855941872449222161542832136880323939394014264995176092751280620673551723331208577960453876924923755340564701453016713590166028324696751231085985884240222167593347334526263303037916609526590361628275094514687712979547371657019216768348669940844962684915105995807144581550267466768607900288997226458836794359699020464423731084729515154927619118848472118259301156549275391180883502559594450767573982988933806622483582100752977021911865196145152803953417231772013838628271297216496382745313147623777787545601193971231801073102166081571418283792593282745084673717170570311045377504502284479416196840733756305173220061186402909252416023762563344143764956029112654501658894183721617190636706196102146327745427411573664267478610548114494490049701326681466073235027601469575864652759810903283362563811874506460304920716945160547124445139612696233397054113663378176432693167172174324788120020498949799252604115536513853848262142313920128414259368279443832662271152360297173930646598210564674468705978287574339360244225115375618646198655959556280703437804726344639166084401515545027901284172772594924370056965764537173873096051299395266611814969942972446937104374365814436535553437638172469618344861812949854558849812664215334381772718093108970359582607762182530978586011606431206539270246528340251461663568777312665664372314290610998078251132725518693529082410739556958543548525453707936098381671273577525790074909555360813881034617350711745676369290608241723750100354970106149571977139199099246359065033480164509524755309789212426564987013135305339916928676198868262047064684760709433781635772354068612627551149096062556283756591960503706614301481072163106357293601120215712910962780320764010922253732701739505753777925668721137680859409919296558240509140850139708613990151410104328354063372667467067274819461968988824720951115052103399330025052273347500202856736346707384583901599334942268514999353369220365516871691405825741537268724538008583607648929752017570278626326151302560754685495028393678419262128727319250428386913197576633827464717820878289888579781924835957478890210814594606277052757358686187249587833483622951068755564437706268645919720898812154651410735166469301589965697476758067194636020452303250497949048947399883127275733209713104883264862130618398438300031458732794354541218179182692182949013878301564321481423815928645752291194790291300506635648891720930673414441649427368858727539840128657434212664708614252838891346368857902932357270177886061675600124771866970699942139129985509310786171897907713767025490553617452052324190314230443669713785943929520934640464416671176139062034948722091493965189712072792638835666067743532362554736033778616139422395438938944605811706580880420836614049374657066594246393012966219639062789307544592960174860630795820249954853388936995742898065294246733938102175776059529094912831231797891546390571057749606999349996810181557492618640128215744807587466320221438600412521428466916484908092508563270571335405686177916252953143575335641923049301557353017574575315800626626939667724977283350476378690544602400232622622606984439469645646912594417064906111761643056936695157678048364605212059547317525838488465251538119345419979627752159611803463974561223291334210165604062771592587817061728345698629469530077932541521870102279760384499807979877285590410184415905645947383083105790145978931820171516152080500903184835361062491319185763169442515370923471198674337350461697251811045075909288347136691842306340831907917252439136412062563991015509661175647955551494200111528584410842714112893660931587222547527616371447626907477263138994491219951425656610431931653530106776137603833078393623616256283714563444092455070819135182372571411642399666607859039700751818268082294407317787468307510454272859459361639319979293997084018517407055270237114922624894768464359698724807022283865063570179483291145554841647601059067178556847880390815917137788528020328496013081698320174206083993477134242184345417718684421898434176286183306074297397337394378635818040034822140823705679673305304460208977733857268729121898133230944150931434375503975562627800112089417314200987543199614195325678616295902673204032176076607741253741011953899538950353479401701480978109520837367985644204216226079933908944509320472574034339086658841246013841750123876174304679348186657771224594878774792577476351726916884715747652858200960751333538695549872163988000264532075579235359661317563583521988757053827631636808305880569746716283687194118275915928060447077646581456256839985578728945837051179362571449947348159120582527720210320816824370932805266651927288698009547480142504810428454261511435444743728876175627914098669648063196082808198168469420588173819431297620345075913670651853432169177514148111886459795089429969643832554329992461199712957262962023969219032890174902935953126450366971415811499887844992885605846137934153585373646778724962248920989408566923423587556265193045579464470040331860146021474495993513170797583044448771741365214872568116252634674100076242158561453923395526895656905772931330601248536544975755715095764080696461966467575052492961263728205392340905646916958065447157660255882585819023423114809694122214668524218426504844940638948658914245639927512262303170595924131913084701462263664582335366579733760671407937763694121917898012253202550794445927090056988580987161070251889864283474072790532666000445210799879898795369575601310701000600506735376838711381823879045908375392524259853266319554558572588187561880636974923425500452774001254800799279088468508982839057565328297629505098869916759252131884099115322420686108894783264515139811150209926303957155203500393727027411079117369478937095384712003637406693041168456532590381021805048371107896453595203099293812662714637405025074568828822557880697107157708023383177045107932793985761637095123260953060223303469977176881187266346286506759842379165512015006845041184833055602957447462579518605453908265316222905883648379800344280559713700655734203702709055921414200515024650167935251509501402436061376649103597691145127922934267080064403467326795745195948481361947814886969942673557755096669771873496442918230266249855317268651317823644283800930551559885321061219165671786041281110803227612135737813344806675638712573522540330326752464442386379900620750588198544947113799155493133901793000917834934968229504797669239833050649010268588703408635567999483106225365924725096344849106407354596440471549184675431400247646054497566794504464730489228246171177238763846374129323806353067143453547105684101405874350776205012855998370519788550563353055706151297118603093875039708128437347187128159250402631828887145334311373552557223689628363908560011768895131535294161055044642175226187415342324320677763066911181419980149855416104489931529489458659833547172890548612497344779808640595096229937705251106163138658308234789274625008958442163643654994384491346591453337999940340102822545663315950182058410804877289936327981680704769212059417689650218871786818104993012530393359782797076272952876972564899611799589468478404319021053066185948310785346220896419939008967567342765319314502669727526379972481519742277811246822238899767398834228515625e-4951
-1.82259976594123730126420296680970990819952540784678167186049024351418584431669886840478035431291360259862367367360176555098349281631101608498675403779490450274191129058896583928461263190281677987831078128299170536447015989677676363429562039997708640550775926919152302738435771122464765292985913410713131103376617773042203403962987686984411316948595140667733210597864690600010838133614601613871681951542280276489775942764960612766058558174381456923146501775692637508015664228929367328342904167452656185259699435199165429391997316125073430122973318829343522821181735512119859732943017878403356723899138210986814640887564778026842288063392332395425873162546186801975636139070797668304819972220170105852674422401098888180221895434381162451705845464727526614177730212750823552425549507762484741018808753638726079896241463208233641468961241718926107442376223082667022657044926746945053999973304249789647043354111258394904631316614206681676861518285530333635550805084849345427276340804672339278791177264322833523245464353153129378096510959641978734303986620037096633539629329212395162630085725125582600936685277823883492820153083593049415051104450437620211914690606070787926358977364081411635544299722928735751692643879771301240039585999097767207595829950175191441110017783298397938554546884420461552538187244104722816024213635806139907491818083029479760454178844362711626647761487494632027538147971912063924809690969103877295273058627398067023490884558283804713066036286365630374146882657021080984305152976459971071596872478304966869803153760915112192273767083898623101906331345170408354325877269319107750447803297770519645747631196394042357976659226774333324024028170376571419266465026123884210852547563237372731787743310739247077115755551931534219571260621965209529206118711148614230326874252623232432768485954951338025914378049849860538923653349006471371371975851619548239568383911087481548770985671906958133943927799958876422544137402326929408872363515336911744925148845142650068227520261364354697002916289429272868432749597813293152504173604381153301045168945974496048759541471080100519101973888604170033075957748634771829115251095545428834602408676747944708548838154240391870140692461377047103665770055763116743840798104372065112827921945625030361510289100654183705651174880622260739758549192434399417410164472062845437778260804090757560281944655628120766454222846704757309223464545058305531743779508241780347081470374488718989636990233738212174195604234593588461272325314215528265459543623864312796269176427251818027542711345978562318056661295241015095829415854218885612968394742320564741129353791774349282275541494026428939134920627812463726111753054622717119310116356020391377016695730659609458715794206834400971798313683173521572022151606820588780251530071841853198634516520873759366510045598375024838080906130739822646856203519935194543445776352574523286837269888247054743973982471908128830717347432604265401234817912837829289728424665952102694142190409017939355538720903773940059325978870813594819158491785411281829232728432185130930121677446908186036638626917272725653250577033788275532848525020676860268503396244010460868170366183668422400245220420698887085348274712352039989322593091109423678562877840971664204374301183812473393474181569023692824311977350780165916130639182603434989926970020331865584136555767033892083012035521577557018520518779278646965154203692177035106027598152525747997287067958495583828773920163969005601017367414626907539916022639742121376325089842645593155408913831923616011893504143113588169809756975685615156809718301077041526572845529202418627301258888257023010355646157596158820107337643411098344495769079824062658034841113036159712976090652715172861118398396463438153644617763942735713912193155539153353006222951965776408842015246576140657437291217544606529750759900127860216624160777572354875625503811168240060144404381782532731747344361636381195322953833511355431708115960517850363668467732859378452319744244754189705176591797980699728768894888776273098873237375908148750504573178096251637132279732290029080034917390851159718996069867384057524634361867451078210323154806935160062513887899020538632350719578957221218762625988338233522900425764882381207240722674803484256371990031477603784632430434075343952218821448873158758760259077397922975757953735064291924684701700383120505009176657075834209273037908753324078050945056651597552104952664855941872449222161542832136880323939394014264995176092751280620673551723331208577960453876924923755340564701453016713590166028324696751231085985884240222167593347334526263303037916609526590361628275094514687712979547371657019216768348669940844962684915105995807144581550267466768607900288997226458836794359699020464423731084729515154927619118848472118259301156549275391180883502559594450767573982988933806622483582100752977021911865196145152803953417231772013838628271297216496382745313147623777787545601193971231801073102166081571418283792593282745084673717170570311045377504502284479416196840733756305173220061186402909252416023762563344143764956029112654501658894183721617190636706196102146327745427411573664267478610548114494490049701326681466073235027601469575864652759810903283362563811874506460304920716945160547124445139612696233397054113663378176432693167172174324788120020498949799252604115536513853848262142313920128414259368279443832662271152360297173930646598210564674468705978287574339360244225115375618646198655959556280703437804726344639166084401515545027901284172772594924370056965764537173873096051299395266611814969942972446937104374365814436535553437638172469618344861812949854558849812664215334381772718093108970359582607762182530978586011606431206539270246528340251461663568777312665664372314290610998078251132725518693529082410739556958543548525453707936098381671273577525790074909555360813881034617350711745676369290608241723750100354970106149571977139199099246359065033480164509524755309789212426564987013135305339916928676198868262047064684760709433781635772354068612627551149096062556283756591960503706614301481072163106357293601120215712910962780320764010922253732701739505753777925668721137680859409919296558240509140850139708613990151410104328354063372667467067274819461968988824720951115052103399330025052273347500202856736346707384583901599334942268514999353369220365516871691405825741537268724538008583607648929752017570278626326151302560754685495028393678419262128727319250428386913197576633827464717820878289888579781924835957478890210814594606277052757358686187249587833483622951068755564437706268645919720898812154651410735166469301589965697476758067194636020452303250497949048947399883127275733209713104883264862130618398438300031458732794354541218179182692182949013878301564321481423815928645752291194790291300506635648891720930673414441649427368858727539840128657434212664708614252838891346368857902932357270177886061675600124771866970699942139129985509310786171897907713767025490553617452052324190314230443669713785943929520934640464416671176139062034948722091493965189712072792638835666067743532362554736033778616139422395438938944605811706580880420836614049374657066594246393012966219639062789307544592960174860630795820249954853388936995742898065294246733938102175776059529094912831231797891546390571057749606999349996810181557492618640128215744807587466320221438600412521428466916484908092508563270571335405686177916252953143575335641923049301557353017574575315800626626939667724977283350476378690544602400232622622606984439469645646912594417064906111761643056936695157678048364605212059547317525838488465251538119345419979627752159611803463974561223291334210165604062771592587817061728345698629469530077932541521870102279760384499807979877285590410184415905645947383083105790145978931820171516152080500903184835361062491319185763169442515370923471198674337350461697251811045075909288347136691842306340831907917252439136412062563991015509661175647955551494200111528584410842714112893660931587222547527616371447626907477263138994491219951425656610431931653530106776137603833078393623616256283714563444092455070819135182372571411642399666607859039700751818268082294407317787468307510454272859459361639319979293997084018517407055270237114922624894768464359698724807022283865063570179483291145554841647601059067178556847880390815917137788528020328496013081698320174206083993477134242184345417718684421898434176286183306074297397337394378635818040034822140823705679673305304460208977733857268729121898133230944150931434375503975562627800112089417314200987543199614195325678616295902673204032176076607741253741011953899538950353479401701480978109520837367985644204216226079933908944509320472574034339086658841246013841750123876174304679348186657771224594878774792577476351726916884715747652858200960751333538695549872163988000264532075579235359661317563583521988757053827631636808305880569746716283687194118275915928060447077646581456256839985578728945837051179362571449947348159120582527720210320816824370932805266651927288698009547480142504810428454261511435444743728876175627914098669648063196082808198168469420588173819431297620345075913670651853432169177514148111886459795089429969643832554329992461199712957262962023969219032890174902935953126450366971415811499887844992885605846137934153585373646778724962248920989408566923423587556265193045579464470040331860146021474495993513170797583044448771741365214872568116252634674100076242158561453923395526895656905772931330601248536544975755715095764080696461966467575052492961263728205392340905646916958065447157660255882585819023423114809694122214668524218426504844940638948658914245639927512262303170595924131913084701462263664582335366579733760671407937763694121917898012253202550794445927090056988580987161070251889864283474072790532666000445210799879898795369575601310701000600506735376838711381823879045908375392524259853266319554558572588187561880636974923425500452774001254800799279088468508982839057565328297629505098869916759252131884099115322420686108894783264515139811150209926303957155203500393727027411079117369478937095384712003637406693041168456532590381021805048371107896453595203099293812662714637405025074568828822557880697107157708023383177045107932793985761637095123260953060223303469977176881187266346286506759842379165512015006845041184833055602957447462579518605453908265316222905883648379800344280559713700655734203702709055921414200515024650167935251509501402436061376649103597691145127922934267080064403467326795745195948481361947814886969942673557755096669771873496442918230266249855317268651317823644283800930551559885321061219165671786041281110803227612135737813344806675638712573522540330326752464442386379900620750588198544947113799155493133901793000917834934968229504797669239833050649010268588703408635567999483106225365924725096344849106407354596440471549184675431400247646054497566794504464730489228246171177238763846374129323806353067143453547105684101405874350776205012855998370519788550563353055706151297118603093875039708128437347187128159250402631828887145334311373552557223689628363908560011768895131535294161055044642175226187415342324320677763066911181419980149855416104489931529489458659833547172890548612497344779808640595096229937705251106163138658308234789274625008958442163643654994384491346591453337999940340102822545663315950182058410804877289936327981680704769212059417689650218871786818104993012530393359782797076272952876972564899611799589468478404319021053066185948310785346220896419939008967567342765319314502669727526379972481519742277811246822238899767398834228515626e-4951
--1.82259976594123730126420296680970990819952540784678167186049024351418584431669886840478035431291360259862367367360176555098349281631101608498675403779490450274191129058896583928461263190281677987831078128299170536447015989677676363429562039997708640550775926919152302738435771122464765292985913410713131103376617773042203403962987686984411316948595140667733210597864690600010838133614601613871681951542280276489775942764960612766058558174381456923146501775692637508015664228929367328342904167452656185259699435199165429391997316125073430122973318829343522821181735512119859732943017878403356723899138210986814640887564778026842288063392332395425873162546186801975636139070797668304819972220170105852674422401098888180221895434381162451705845464727526614177730212750823552425549507762484741018808753638726079896241463208233641468961241718926107442376223082667022657044926746945053999973304249789647043354111258394904631316614206681676861518285530333635550805084849345427276340804672339278791177264322833523245464353153129378096510959641978734303986620037096633539629329212395162630085725125582600936685277823883492820153083593049415051104450437620211914690606070787926358977364081411635544299722928735751692643879771301240039585999097767207595829950175191441110017783298397938554546884420461552538187244104722816024213635806139907491818083029479760454178844362711626647761487494632027538147971912063924809690969103877295273058627398067023490884558283804713066036286365630374146882657021080984305152976459971071596872478304966869803153760915112192273767083898623101906331345170408354325877269319107750447803297770519645747631196394042357976659226774333324024028170376571419266465026123884210852547563237372731787743310739247077115755551931534219571260621965209529206118711148614230326874252623232432768485954951338025914378049849860538923653349006471371371975851619548239568383911087481548770985671906958133943927799958876422544137402326929408872363515336911744925148845142650068227520261364354697002916289429272868432749597813293152504173604381153301045168945974496048759541471080100519101973888604170033075957748634771829115251095545428834602408676747944708548838154240391870140692461377047103665770055763116743840798104372065112827921945625030361510289100654183705651174880622260739758549192434399417410164472062845437778260804090757560281944655628120766454222846704757309223464545058305531743779508241780347081470374488718989636990233738212174195604234593588461272325314215528265459543623864312796269176427251818027542711345978562318056661295241015095829415854218885612968394742320564741129353791774349282275541494026428939134920627812463726111753054622717119310116356020391377016695730659609458715794206834400971798313683173521572022151606820588780251530071841853198634516520873759366510045598375024838080906130739822646856203519935194543445776352574523286837269888247054743973982471908128830717347432604265401234817912837829289728424665952102694142190409017939355538720903773940059325978870813594819158491785411281829232728432185130930121677446908186036638626917272725653250577033788275532848525020676860268503396244010460868170366183668422400245220420698887085348274712352039989322593091109423678562877840971664204374301183812473393474181569023692824311977350780165916130639182603434989926970020331865584136555767033892083012035521577557018520518779278646965154203692177035106027598152525747997287067958495583828773920163969005601017367414626907539916022639742121376325089842645593155408913831923616011893504143113588169809756975685615156809718301077041526572845529202418627301258888257023010355646157596158820107337643411098344495769079824062658034841113036159712976090652715172861118398396463438153644617763942735713912193155539153353006222951965776408842015246576140657437291217544606529750759900127860216624160777572354875625503811168240060144404381782532731747344361636381195322953833511355431708115960517850363668467732859378452319744244754189705176591797980699728768894888776273098873237375908148750504573178096251637132279732290029080034917390851159718996069867384057524634361867451078210323154806935160062513887899020538632350719578957221218762625988338233522900425764882381207240722674803484256371990031477603784632430434075343952218821448873158758760259077397922975757953735064291924684701700383120505009176657075834209273037908753324078050945056651597552104952664855941872449222161542832136880323939394014264995176092751280620673551723331208577960453876924923755340564701453016713590166028324696751231085985884240222167593347334526263303037916609526590361628275094514687712979547371657019216768348669940844962684915105995807144581550267466768607900288997226458836794359699020464423731084729515154927619118848472118259301156549275391180883502559594450767573982988933806622483582100752977021911865196145152803953417231772013838628271297216496382745313147623777787545601193971231801073102166081571418283792593282745084673717170570311045377504502284479416196840733756305173220061186402909252416023762563344143764956029112654501658894183721617190636706196102146327745427411573664267478610548114494490049701326681466073235027601469575864652759810903283362563811874506460304920716945160547124445139612696233397054113663378176432693167172174324788120020498949799252604115536513853848262142313920128414259368279443832662271152360297173930646598210564674468705978287574339360244225115375618646198655959556280703437804726344639166084401515545027901284172772594924370056965764537173873096051299395266611814969942972446937104374365814436535553437638172469618344861812949854558849812664215334381772718093108970359582607762182530978586011606431206539270246528340251461663568777312665664372314290610998078251132725518693529082410739556958543548525453707936098381671273577525790074909555360813881034617350711745676369290608241723750100354970106149571977139199099246359065033480164509524755309789212426564987013135305339916928676198868262047064684760709433781635772354068612627551149096062556283756591960503706614301481072163106357293601120215712910962780320764010922253732701739505753777925668721137680859409919296558240509140850139708613990151410104328354063372667467067274819461968988824720951115052103399330025052273347500202856736346707384583901599334942268514999353369220365516871691405825741537268724538008583607648929752017570278626326151302560754685495028393678419262128727319250428386913197576633827464717820878289888579781924835957478890210814594606277052757358686187249587833483622951068755564437706268645919720898812154651410735166469301589965697476758067194636020452303250497949048947399883127275733209713104883264862130618398438300031458732794354541218179182692182949013878301564321481423815928645752291194790291300506635648891720930673414441649427368858727539840128657434212664708614252838891346368857902932357270177886061675600124771866970699942139129985509310786171897907713767025490553617452052324190314230443669713785943929520934640464416671176139062034948722091493965189712072792638835666067743532362554736033778616139422395438938944605811706580880420836614049374657066594246393012966219639062789307544592960174860630795820249954853388936995742898065294246733938102175776059529094912831231797891546390571057749606999349996810181557492618640128215744807587466320221438600412521428466916484908092508563270571335405686177916252953143575335641923049301557353017574575315800626626939667724977283350476378690544602400232622622606984439469645646912594417064906111761643056936695157678048364605212059547317525838488465251538119345419979627752159611803463974561223291334210165604062771592587817061728345698629469530077932541521870102279760384499807979877285590410184415905645947383083105790145978931820171516152080500903184835361062491319185763169442515370923471198674337350461697251811045075909288347136691842306340831907917252439136412062563991015509661175647955551494200111528584410842714112893660931587222547527616371447626907477263138994491219951425656610431931653530106776137603833078393623616256283714563444092455070819135182372571411642399666607859039700751818268082294407317787468307510454272859459361639319979293997084018517407055270237114922624894768464359698724807022283865063570179483291145554841647601059067178556847880390815917137788528020328496013081698320174206083993477134242184345417718684421898434176286183306074297397337394378635818040034822140823705679673305304460208977733857268729121898133230944150931434375503975562627800112089417314200987543199614195325678616295902673204032176076607741253741011953899538950353479401701480978109520837367985644204216226079933908944509320472574034339086658841246013841750123876174304679348186657771224594878774792577476351726916884715747652858200960751333538695549872163988000264532075579235359661317563583521988757053827631636808305880569746716283687194118275915928060447077646581456256839985578728945837051179362571449947348159120582527720210320816824370932805266651927288698009547480142504810428454261511435444743728876175627914098669648063196082808198168469420588173819431297620345075913670651853432169177514148111886459795089429969643832554329992461199712957262962023969219032890174902935953126450366971415811499887844992885605846137934153585373646778724962248920989408566923423587556265193045579464470040331860146021474495993513170797583044448771741365214872568116252634674100076242158561453923395526895656905772931330601248536544975755715095764080696461966467575052492961263728205392340905646916958065447157660255882585819023423114809694122214668524218426504844940638948658914245639927512262303170595924131913084701462263664582335366579733760671407937763694121917898012253202550794445927090056988580987161070251889864283474072790532666000445210799879898795369575601310701000600506735376838711381823879045908375392524259853266319554558572588187561880636974923425500452774001254800799279088468508982839057565328297629505098869916759252131884099115322420686108894783264515139811150209926303957155203500393727027411079117369478937095384712003637406693041168456532590381021805048371107896453595203099293812662714637405025074568828822557880697107157708023383177045107932793985761637095123260953060223303469977176881187266346286506759842379165512015006845041184833055602957447462579518605453908265316222905883648379800344280559713700655734203702709055921414200515024650167935251509501402436061376649103597691145127922934267080064403467326795745195948481361947814886969942673557755096669771873496442918230266249855317268651317823644283800930551559885321061219165671786041281110803227612135737813344806675638712573522540330326752464442386379900620750588198544947113799155493133901793000917834934968229504797669239833050649010268588703408635567999483106225365924725096344849106407354596440471549184675431400247646054497566794504464730489228246171177238763846374129323806353067143453547105684101405874350776205012855998370519788550563353055706151297118603093875039708128437347187128159250402631828887145334311373552557223689628363908560011768895131535294161055044642175226187415342324320677763066911181419980149855416104489931529489458659833547172890548612497344779808640595096229937705251106163138658308234789274625008958442163643654994384491346591453337999940340102822545663315950182058410804877289936327981680704769212059417689650218871786818104993012530393359782797076272952876972564899611799589468478404319021053066185948310785346220896419939008967567342765319314502669727526379972481519742277811246822238899767398834228515624e-4951
--1.82259976594123730126420296680970990819952540784678167186049024351418584431669886840478035431291360259862367367360176555098349281631101608498675403779490450274191129058896583928461263190281677987831078128299170536447015989677676363429562039997708640550775926919152302738435771122464765292985913410713131103376617773042203403962987686984411316948595140667733210597864690600010838133614601613871681951542280276489775942764960612766058558174381456923146501775692637508015664228929367328342904167452656185259699435199165429391997316125073430122973318829343522821181735512119859732943017878403356723899138210986814640887564778026842288063392332395425873162546186801975636139070797668304819972220170105852674422401098888180221895434381162451705845464727526614177730212750823552425549507762484741018808753638726079896241463208233641468961241718926107442376223082667022657044926746945053999973304249789647043354111258394904631316614206681676861518285530333635550805084849345427276340804672339278791177264322833523245464353153129378096510959641978734303986620037096633539629329212395162630085725125582600936685277823883492820153083593049415051104450437620211914690606070787926358977364081411635544299722928735751692643879771301240039585999097767207595829950175191441110017783298397938554546884420461552538187244104722816024213635806139907491818083029479760454178844362711626647761487494632027538147971912063924809690969103877295273058627398067023490884558283804713066036286365630374146882657021080984305152976459971071596872478304966869803153760915112192273767083898623101906331345170408354325877269319107750447803297770519645747631196394042357976659226774333324024028170376571419266465026123884210852547563237372731787743310739247077115755551931534219571260621965209529206118711148614230326874252623232432768485954951338025914378049849860538923653349006471371371975851619548239568383911087481548770985671906958133943927799958876422544137402326929408872363515336911744925148845142650068227520261364354697002916289429272868432749597813293152504173604381153301045168945974496048759541471080100519101973888604170033075957748634771829115251095545428834602408676747944708548838154240391870140692461377047103665770055763116743840798104372065112827921945625030361510289100654183705651174880622260739758549192434399417410164472062845437778260804090757560281944655628120766454222846704757309223464545058305531743779508241780347081470374488718989636990233738212174195604234593588461272325314215528265459543623864312796269176427251818027542711345978562318056661295241015095829415854218885612968394742320564741129353791774349282275541494026428939134920627812463726111753054622717119310116356020391377016695730659609458715794206834400971798313683173521572022151606820588780251530071841853198634516520873759366510045598375024838080906130739822646856203519935194543445776352574523286837269888247054743973982471908128830717347432604265401234817912837829289728424665952102694142190409017939355538720903773940059325978870813594819158491785411281829232728432185130930121677446908186036638626917272725653250577033788275532848525020676860268503396244010460868170366183668422400245220420698887085348274712352039989322593091109423678562877840971664204374301183812473393474181569023692824311977350780165916130639182603434989926970020331865584136555767033892083012035521577557018520518779278646965154203692177035106027598152525747997287067958495583828773920163969005601017367414626907539916022639742121376325089842645593155408913831923616011893504143113588169809756975685615156809718301077041526572845529202418627301258888257023010355646157596158820107337643411098344495769079824062658034841113036159712976090652715172861118398396463438153644617763942735713912193155539153353006222951965776408842015246576140657437291217544606529750759900127860216624160777572354875625503811168240060144404381782532731747344361636381195322953833511355431708115960517850363668467732859378452319744244754189705176591797980699728768894888776273098873237375908148750504573178096251637132279732290029080034917390851159718996069867384057524634361867451078210323154806935160062513887899020538632350719578957221218762625988338233522900425764882381207240722674803484256371990031477603784632430434075343952218821448873158758760259077397922975757953735064291924684701700383120505009176657075834209273037908753324078050945056651597552104952664855941872449222161542832136880323939394014264995176092751280620673551723331208577960453876924923755340564701453016713590166028324696751231085985884240222167593347334526263303037916609526590361628275094514687712979547371657019216768348669940844962684915105995807144581550267466768607900288997226458836794359699020464423731084729515154927619118848472118259301156549275391180883502559594450767573982988933806622483582100752977021911865196145152803953417231772013838628271297216496382745313147623777787545601193971231801073102166081571418283792593282745084673717170570311045377504502284479416196840733756305173220061186402909252416023762563344143764956029112654501658894183721617190636706196102146327745427411573664267478610548114494490049701326681466073235027601469575864652759810903283362563811874506460304920716945160547124445139612696233397054113663378176432693167172174324788120020498949799252604115536513853848262142313920128414259368279443832662271152360297173930646598210564674468705978287574339360244225115375618646198655959556280703437804726344639166084401515545027901284172772594924370056965764537173873096051299395266611814969942972446937104374365814436535553437638172469618344861812949854558849812664215334381772718093108970359582607762182530978586011606431206539270246528340251461663568777312665664372314290610998078251132725518693529082410739556958543548525453707936098381671273577525790074909555360813881034617350711745676369290608241723750100354970106149571977139199099246359065033480164509524755309789212426564987013135305339916928676198868262047064684760709433781635772354068612627551149096062556283756591960503706614301481072163106357293601120215712910962780320764010922253732701739505753777925668721137680859409919296558240509140850139708613990151410104328354063372667467067274819461968988824720951115052103399330025052273347500202856736346707384583901599334942268514999353369220365516871691405825741537268724538008583607648929752017570278626326151302560754685495028393678419262128727319250428386913197576633827464717820878289888579781924835957478890210814594606277052757358686187249587833483622951068755564437706268645919720898812154651410735166469301589965697476758067194636020452303250497949048947399883127275733209713104883264862130618398438300031458732794354541218179182692182949013878301564321481423815928645752291194790291300506635648891720930673414441649427368858727539840128657434212664708614252838891346368857902932357270177886061675600124771866970699942139129985509310786171897907713767025490553617452052324190314230443669713785943929520934640464416671176139062034948722091493965189712072792638835666067743532362554736033778616139422395438938944605811706580880420836614049374657066594246393012966219639062789307544592960174860630795820249954853388936995742898065294246733938102175776059529094912831231797891546390571057749606999349996810181557492618640128215744807587466320221438600412521428466916484908092508563270571335405686177916252953143575335641923049301557353017574575315800626626939667724977283350476378690544602400232622622606984439469645646912594417064906111761643056936695157678048364605212059547317525838488465251538119345419979627752159611803463974561223291334210165604062771592587817061728345698629469530077932541521870102279760384499807979877285590410184415905645947383083105790145978931820171516152080500903184835361062491319185763169442515370923471198674337350461697251811045075909288347136691842306340831907917252439136412062563991015509661175647955551494200111528584410842714112893660931587222547527616371447626907477263138994491219951425656610431931653530106776137603833078393623616256283714563444092455070819135182372571411642399666607859039700751818268082294407317787468307510454272859459361639319979293997084018517407055270237114922624894768464359698724807022283865063570179483291145554841647601059067178556847880390815917137788528020328496013081698320174206083993477134242184345417718684421898434176286183306074297397337394378635818040034822140823705679673305304460208977733857268729121898133230944150931434375503975562627800112089417314200987543199614195325678616295902673204032176076607741253741011953899538950353479401701480978109520837367985644204216226079933908944509320472574034339086658841246013841750123876174304679348186657771224594878774792577476351726916884715747652858200960751333538695549872163988000264532075579235359661317563583521988757053827631636808305880569746716283687194118275915928060447077646581456256839985578728945837051179362571449947348159120582527720210320816824370932805266651927288698009547480142504810428454261511435444743728876175627914098669648063196082808198168469420588173819431297620345075913670651853432169177514148111886459795089429969643832554329992461199712957262962023969219032890174902935953126450366971415811499887844992885605846137934153585373646778724962248920989408566923423587556265193045579464470040331860146021474495993513170797583044448771741365214872568116252634674100076242158561453923395526895656905772931330601248536544975755715095764080696461966467575052492961263728205392340905646916958065447157660255882585819023423114809694122214668524218426504844940638948658914245639927512262303170595924131913084701462263664582335366579733760671407937763694121917898012253202550794445927090056988580987161070251889864283474072790532666000445210799879898795369575601310701000600506735376838711381823879045908375392524259853266319554558572588187561880636974923425500452774001254800799279088468508982839057565328297629505098869916759252131884099115322420686108894783264515139811150209926303957155203500393727027411079117369478937095384712003637406693041168456532590381021805048371107896453595203099293812662714637405025074568828822557880697107157708023383177045107932793985761637095123260953060223303469977176881187266346286506759842379165512015006845041184833055602957447462579518605453908265316222905883648379800344280559713700655734203702709055921414200515024650167935251509501402436061376649103597691145127922934267080064403467326795745195948481361947814886969942673557755096669771873496442918230266249855317268651317823644283800930551559885321061219165671786041281110803227612135737813344806675638712573522540330326752464442386379900620750588198544947113799155493133901793000917834934968229504797669239833050649010268588703408635567999483106225365924725096344849106407354596440471549184675431400247646054497566794504464730489228246171177238763846374129323806353067143453547105684101405874350776205012855998370519788550563353055706151297118603093875039708128437347187128159250402631828887145334311373552557223689628363908560011768895131535294161055044642175226187415342324320677763066911181419980149855416104489931529489458659833547172890548612497344779808640595096229937705251106163138658308234789274625008958442163643654994384491346591453337999940340102822545663315950182058410804877289936327981680704769212059417689650218871786818104993012530393359782797076272952876972564899611799589468478404319021053066185948310785346220896419939008967567342765319314502669727526379972481519742277811246822238899767398834228515625e-4951
--1.82259976594123730126420296680970990819952540784678167186049024351418584431669886840478035431291360259862367367360176555098349281631101608498675403779490450274191129058896583928461263190281677987831078128299170536447015989677676363429562039997708640550775926919152302738435771122464765292985913410713131103376617773042203403962987686984411316948595140667733210597864690600010838133614601613871681951542280276489775942764960612766058558174381456923146501775692637508015664228929367328342904167452656185259699435199165429391997316125073430122973318829343522821181735512119859732943017878403356723899138210986814640887564778026842288063392332395425873162546186801975636139070797668304819972220170105852674422401098888180221895434381162451705845464727526614177730212750823552425549507762484741018808753638726079896241463208233641468961241718926107442376223082667022657044926746945053999973304249789647043354111258394904631316614206681676861518285530333635550805084849345427276340804672339278791177264322833523245464353153129378096510959641978734303986620037096633539629329212395162630085725125582600936685277823883492820153083593049415051104450437620211914690606070787926358977364081411635544299722928735751692643879771301240039585999097767207595829950175191441110017783298397938554546884420461552538187244104722816024213635806139907491818083029479760454178844362711626647761487494632027538147971912063924809690969103877295273058627398067023490884558283804713066036286365630374146882657021080984305152976459971071596872478304966869803153760915112192273767083898623101906331345170408354325877269319107750447803297770519645747631196394042357976659226774333324024028170376571419266465026123884210852547563237372731787743310739247077115755551931534219571260621965209529206118711148614230326874252623232432768485954951338025914378049849860538923653349006471371371975851619548239568383911087481548770985671906958133943927799958876422544137402326929408872363515336911744925148845142650068227520261364354697002916289429272868432749597813293152504173604381153301045168945974496048759541471080100519101973888604170033075957748634771829115251095545428834602408676747944708548838154240391870140692461377047103665770055763116743840798104372065112827921945625030361510289100654183705651174880622260739758549192434399417410164472062845437778260804090757560281944655628120766454222846704757309223464545058305531743779508241780347081470374488718989636990233738212174195604234593588461272325314215528265459543623864312796269176427251818027542711345978562318056661295241015095829415854218885612968394742320564741129353791774349282275541494026428939134920627812463726111753054622717119310116356020391377016695730659609458715794206834400971798313683173521572022151606820588780251530071841853198634516520873759366510045598375024838080906130739822646856203519935194543445776352574523286837269888247054743973982471908128830717347432604265401234817912837829289728424665952102694142190409017939355538720903773940059325978870813594819158491785411281829232728432185130930121677446908186036638626917272725653250577033788275532848525020676860268503396244010460868170366183668422400245220420698887085348274712352039989322593091109423678562877840971664204374301183812473393474181569023692824311977350780165916130639182603434989926970020331865584136555767033892083012035521577557018520518779278646965154203692177035106027598152525747997287067958495583828773920163969005601017367414626907539916022639742121376325089842645593155408913831923616011893504143113588169809756975685615156809718301077041526572845529202418627301258888257023010355646157596158820107337643411098344495769079824062658034841113036159712976090652715172861118398396463438153644617763942735713912193155539153353006222951965776408842015246576140657437291217544606529750759900127860216624160777572354875625503811168240060144404381782532731747344361636381195322953833511355431708115960517850363668467732859378452319744244754189705176591797980699728768894888776273098873237375908148750504573178096251637132279732290029080034917390851159718996069867384057524634361867451078210323154806935160062513887899020538632350719578957221218762625988338233522900425764882381207240722674803484256371990031477603784632430434075343952218821448873158758760259077397922975757953735064291924684701700383120505009176657075834209273037908753324078050945056651597552104952664855941872449222161542832136880323939394014264995176092751280620673551723331208577960453876924923755340564701453016713590166028324696751231085985884240222167593347334526263303037916609526590361628275094514687712979547371657019216768348669940844962684915105995807144581550267466768607900288997226458836794359699020464423731084729515154927619118848472118259301156549275391180883502559594450767573982988933806622483582100752977021911865196145152803953417231772013838628271297216496382745313147623777787545601193971231801073102166081571418283792593282745084673717170570311045377504502284479416196840733756305173220061186402909252416023762563344143764956029112654501658894183721617190636706196102146327745427411573664267478610548114494490049701326681466073235027601469575864652759810903283362563811874506460304920716945160547124445139612696233397054113663378176432693167172174324788120020498949799252604115536513853848262142313920128414259368279443832662271152360297173930646598210564674468705978287574339360244225115375618646198655959556280703437804726344639166084401515545027901284172772594924370056965764537173873096051299395266611814969942972446937104374365814436535553437638172469618344861812949854558849812664215334381772718093108970359582607762182530978586011606431206539270246528340251461663568777312665664372314290610998078251132725518693529082410739556958543548525453707936098381671273577525790074909555360813881034617350711745676369290608241723750100354970106149571977139199099246359065033480164509524755309789212426564987013135305339916928676198868262047064684760709433781635772354068612627551149096062556283756591960503706614301481072163106357293601120215712910962780320764010922253732701739505753777925668721137680859409919296558240509140850139708613990151410104328354063372667467067274819461968988824720951115052103399330025052273347500202856736346707384583901599334942268514999353369220365516871691405825741537268724538008583607648929752017570278626326151302560754685495028393678419262128727319250428386913197576633827464717820878289888579781924835957478890210814594606277052757358686187249587833483622951068755564437706268645919720898812154651410735166469301589965697476758067194636020452303250497949048947399883127275733209713104883264862130618398438300031458732794354541218179182692182949013878301564321481423815928645752291194790291300506635648891720930673414441649427368858727539840128657434212664708614252838891346368857902932357270177886061675600124771866970699942139129985509310786171897907713767025490553617452052324190314230443669713785943929520934640464416671176139062034948722091493965189712072792638835666067743532362554736033778616139422395438938944605811706580880420836614049374657066594246393012966219639062789307544592960174860630795820249954853388936995742898065294246733938102175776059529094912831231797891546390571057749606999349996810181557492618640128215744807587466320221438600412521428466916484908092508563270571335405686177916252953143575335641923049301557353017574575315800626626939667724977283350476378690544602400232622622606984439469645646912594417064906111761643056936695157678048364605212059547317525838488465251538119345419979627752159611803463974561223291334210165604062771592587817061728345698629469530077932541521870102279760384499807979877285590410184415905645947383083105790145978931820171516152080500903184835361062491319185763169442515370923471198674337350461697251811045075909288347136691842306340831907917252439136412062563991015509661175647955551494200111528584410842714112893660931587222547527616371447626907477263138994491219951425656610431931653530106776137603833078393623616256283714563444092455070819135182372571411642399666607859039700751818268082294407317787468307510454272859459361639319979293997084018517407055270237114922624894768464359698724807022283865063570179483291145554841647601059067178556847880390815917137788528020328496013081698320174206083993477134242184345417718684421898434176286183306074297397337394378635818040034822140823705679673305304460208977733857268729121898133230944150931434375503975562627800112089417314200987543199614195325678616295902673204032176076607741253741011953899538950353479401701480978109520837367985644204216226079933908944509320472574034339086658841246013841750123876174304679348186657771224594878774792577476351726916884715747652858200960751333538695549872163988000264532075579235359661317563583521988757053827631636808305880569746716283687194118275915928060447077646581456256839985578728945837051179362571449947348159120582527720210320816824370932805266651927288698009547480142504810428454261511435444743728876175627914098669648063196082808198168469420588173819431297620345075913670651853432169177514148111886459795089429969643832554329992461199712957262962023969219032890174902935953126450366971415811499887844992885605846137934153585373646778724962248920989408566923423587556265193045579464470040331860146021474495993513170797583044448771741365214872568116252634674100076242158561453923395526895656905772931330601248536544975755715095764080696461966467575052492961263728205392340905646916958065447157660255882585819023423114809694122214668524218426504844940638948658914245639927512262303170595924131913084701462263664582335366579733760671407937763694121917898012253202550794445927090056988580987161070251889864283474072790532666000445210799879898795369575601310701000600506735376838711381823879045908375392524259853266319554558572588187561880636974923425500452774001254800799279088468508982839057565328297629505098869916759252131884099115322420686108894783264515139811150209926303957155203500393727027411079117369478937095384712003637406693041168456532590381021805048371107896453595203099293812662714637405025074568828822557880697107157708023383177045107932793985761637095123260953060223303469977176881187266346286506759842379165512015006845041184833055602957447462579518605453908265316222905883648379800344280559713700655734203702709055921414200515024650167935251509501402436061376649103597691145127922934267080064403467326795745195948481361947814886969942673557755096669771873496442918230266249855317268651317823644283800930551559885321061219165671786041281110803227612135737813344806675638712573522540330326752464442386379900620750588198544947113799155493133901793000917834934968229504797669239833050649010268588703408635567999483106225365924725096344849106407354596440471549184675431400247646054497566794504464730489228246171177238763846374129323806353067143453547105684101405874350776205012855998370519788550563353055706151297118603093875039708128437347187128159250402631828887145334311373552557223689628363908560011768895131535294161055044642175226187415342324320677763066911181419980149855416104489931529489458659833547172890548612497344779808640595096229937705251106163138658308234789274625008958442163643654994384491346591453337999940340102822545663315950182058410804877289936327981680704769212059417689650218871786818104993012530393359782797076272952876972564899611799589468478404319021053066185948310785346220896419939008967567342765319314502669727526379972481519742277811246822238899767398834228515626e-4951
-9.11299882970618650632101483404854954099762703923390835930245121757092922158349434202390177156456801299311836836800882775491746408155508042493377018897452251370955645294482919642306315951408389939155390641495852682235079948388381817147810199988543202753879634595761513692178855612323826464929567053565655516883088865211017019814938434922056584742975703338666052989323453000054190668073008069358409757711401382448879713824803063830292790871907284615732508878463187540078321144646836641714520837263280926298497175995827146959986580625367150614866594146717614105908677560599298664715089392016783619495691054934073204437823890134211440316961661977129365812730934009878180695353988341524099861100850529263372112005494440901109477171905812258529227323637633070888651063754117762127747538812423705094043768193630399481207316041168207344806208594630537211881115413335113285224633734725269999866521248948235216770556291974523156583071033408384307591427651668177754025424246727136381704023361696393955886321614167616227321765765646890482554798209893671519933100185483167698146646061975813150428625627913004683426389119417464100765417965247075255522252188101059573453030353939631794886820407058177721498614643678758463219398856506200197929995488836037979149750875957205550088916491989692772734422102307762690936220523614080121068179030699537459090415147398802270894221813558133238807437473160137690739859560319624048454845519386476365293136990335117454422791419023565330181431828151870734413285105404921525764882299855357984362391524834349015768804575560961368835419493115509531656725852041771629386346595538752239016488852598228738155981970211789883296133871666620120140851882857096332325130619421054262737816186863658938716553696235385578777759657671097856303109826047646030593555743071151634371263116162163842429774756690129571890249249302694618266745032356856859879258097741197841919555437407743854928359534790669719638999794382112720687011634647044361817576684558724625744225713250341137601306821773485014581447146364342163747989066465762520868021905766505225844729872480243797707355400502595509869443020850165379788743173859145576255477727144173012043383739723542744190771201959350703462306885235518328850278815583719203990521860325564139609728125151807551445503270918528255874403111303698792745962171997087050822360314227188891304020453787801409723278140603832271114233523786546117322725291527658718897541208901735407351872443594948184951168691060870978021172967942306361626571077641327297718119321563981345882136259090137713556729892811590283306476205075479147079271094428064841973711602823705646768958871746411377707470132144695674603139062318630558765273113585596550581780101956885083478653298047293578971034172004858991568415867607860110758034102943901257650359209265993172582604368796832550227991875124190404530653699113234281017599675972717228881762872616434186349441235273719869912359540644153586737163021327006174089564189146448642123329760513470710952045089696777693604518869700296629894354067974095792458927056409146163642160925654650608387234540930183193134586363628266252885168941377664242625103384301342516981220052304340851830918342112001226102103494435426741373561760199946612965455547118392814389204858321021871505919062366967370907845118464121559886753900829580653195913017174949634850101659327920682778835169460415060177607887785092602593896393234825771018460885175530137990762628739986435339792477919143869600819845028005086837073134537699580113198710606881625449213227965777044569159618080059467520715567940849048784878428075784048591505385207632864227646012093136506294441285115051778230787980794100536688217055491722478845399120313290174205565180798564880453263575864305591991982317190768223088819713678569560965777695766765031114759828882044210076232880703287186456087723032648753799500639301083120803887861774378127519055841200300722021908912663658736721808181905976614769167556777158540579802589251818342338664296892261598721223770948525882958989903498643844474443881365494366186879540743752522865890481258185661398661450145400174586954255798594980349336920287623171809337255391051615774034675800312569439495102693161753597894786106093813129941691167614502128824411906036203613374017421281859950157388018923162152170376719761094107244365793793801295386989614878789768675321459623423508501915602525045883285379171046365189543766620390254725283257987760524763324279709362246110807714160684401619696970071324975880463756403103367758616656042889802269384624618776702823507265083567950830141623483756155429929421201110837966736672631316515189583047632951808141375472573438564897736858285096083841743349704224813424575529979035722907751337333843039501444986132294183971798495102322118655423647575774638095594242360591296505782746376955904417512797972253837869914944669033112417910503764885109559325980725764019767086158860069193141356486082481913726565738118888937728005969856159005365510830407857091418962966413725423368585852851555226887522511422397080984203668781525866100305932014546262080118812816720718824780145563272508294470918608085953183530980510731638727137057868321337393052740572472450248506633407330366175138007347879323263799054516416812819059372532301524603584725802735622225698063481166985270568316890882163465835860871623940600102494748996263020577682569269241310711569600642071296841397219163311355761801485869653232991052823372343529891437871696801221125576878093230993279797781403517189023631723195830422007577725139506420863862974621850284828822685869365480256496976333059074849714862234685521871829072182677767188190862348091724309064749272794249063321076671908863590465544851797913038810912654892930058032156032696351232641701257308317843886563328321861571453054990391255663627593467645412053697784792717742627268539680491908356367887628950374547776804069405173086753558728381846453041208618750501774850530747859885695995496231795325167400822547623776548946062132824935065676526699584643380994341310235323423803547168908178861770343063137755745480312781418782959802518533071507405360815531786468005601078564554813901603820054611268663508697528768889628343605688404297049596482791202545704250698543069950757050521641770316863337335336374097309844944123604755575260516996650125261366737501014283681733536922919507996674711342574996766846101827584358457029128707686343622690042918038244648760087851393131630756512803773427475141968392096310643636596252141934565987883169137323589104391449442898909624179787394451054072973031385263786793430936247939167418114755343777822188531343229598604494060773257053675832346507949828487383790335973180102261516252489745244736999415636378666048565524416324310653091992191500157293663971772706090895913460914745069391507821607407119079643228761455973951456502533178244458604653367072208247136844293637699200643287171063323543071264194456731844289514661786350889430308378000623859334853499710695649927546553930859489538568835127452768087260261620951571152218348568929719647604673202322083355880695310174743610457469825948560363963194178330338717661812773680168893080697111977194694723029058532904402104183070246873285332971231965064831098195313946537722964800874303153979101249774266944684978714490326471233669690510878880297645474564156158989457731952855288748034996749984050907787463093200641078724037937331601107193002062607142334582424540462542816352856677028430889581264765717876678209615246507786765087872876579003133134698338624886416752381893452723012001163113113034922197348228234562972085324530558808215284683475788390241823026060297736587629192442326257690596727099898138760798059017319872806116456671050828020313857962939085308641728493147347650389662707609350511398801922499039899386427952050922079528229736915415528950729894659100857580760402504515924176805312456595928815847212576854617355993371686752308486259055225379546441735683459211531704159539586262195682060312819955077548305878239777757471000557642922054213570564468304657936112737638081857238134537386315694972456099757128283052159658267650533880688019165391968118081281418572817220462275354095675911862857058211998333039295198503759091340411472036588937341537552271364297296808196599896469985420092587035276351185574613124473842321798493624035111419325317850897416455727774208238005295335892784239401954079585688942640101642480065408491600871030419967385671210921727088593422109492170881430916530371486986686971893179090200174110704118528398366526522301044888669286343645609490666154720754657171877519877813139000560447086571004937715998070976628393081479513366020160880383038706268705059769497694751767397008507404890547604186839928221021081130399669544722546602362870171695433294206230069208750619380871523396740933288856122974393873962887381758634584423578738264291004803756667693477749360819940001322660377896176798306587817917609943785269138158184041529402848733581418435970591379579640302235388232907281284199927893644729185255896812857249736740795602912638601051604084121854664026333259636443490047737400712524052142271307557177223718644380878139570493348240315980414040990842347102940869097156488101725379568353259267160845887570740559432298975447149848219162771649962305998564786314810119846095164450874514679765632251834857079057499439224964428029230689670767926868233893624811244604947042834617117937781325965227897322350201659300730107372479967565853987915222243858706826074362840581263173370500381210792807269616977634478284528864656653006242682724878778575478820403482309832337875262464806318641026961704528234584790327235788301279412929095117115574048470611073342621092132524224703194743294571228199637561311515852979620659565423507311318322911676832898668803357039688818470609589490061266012753972229635450284942904935805351259449321417370363952663330002226053999399493976847878006553505003002533676884193556909119395229541876962621299266331597772792862940937809403184874617127502263870006274003996395442342544914195287826641488147525494349583796260659420495576612103430544473916322575699055751049631519785776017501968635137055395586847394685476923560018187033465205842282662951905109025241855539482267976015496469063313573187025125372844144112789403485535788540116915885225539663969928808185475616304765301116517349885884405936331731432533799211895827560075034225205924165278014787237312897593027269541326581114529418241899001721402798568503278671018513545279607071002575123250839676257547507012180306883245517988455725639614671335400322017336633978725979742406809739074434849713367788775483348859367482214591151331249276586343256589118221419004652757799426605306095828358930206405554016138060678689066724033378193562867612701651633762322211931899503103752940992724735568995777465669508965004589174674841147523988346199165253245051342943517043177839997415531126829623625481724245532036772982202357745923377157001238230272487833972522323652446141230855886193819231870646619031765335717267735528420507029371753881025064279991852598942752816765278530756485593015469375198540642186735935640796252013159144435726671556867762786118448141819542800058844475657676470805275223210876130937076711621603388815334555907099900749277080522449657647447293299167735864452743062486723899043202975481149688526255530815693291541173946373125044792210818218274971922456732957266689999701700514112728316579750910292054024386449681639908403523846060297088448251094358934090524965062651966798913985381364764384862824498058997947342392021595105265330929741553926731104482099695044837836713826596572513348637631899862407598711389056234111194498836994171142578124e-4952
-9.11299882970618650632101483404854954099762703923390835930245121757092922158349434202390177156456801299311836836800882775491746408155508042493377018897452251370955645294482919642306315951408389939155390641495852682235079948388381817147810199988543202753879634595761513692178855612323826464929567053565655516883088865211017019814938434922056584742975703338666052989323453000054190668073008069358409757711401382448879713824803063830292790871907284615732508878463187540078321144646836641714520837263280926298497175995827146959986580625367150614866594146717614105908677560599298664715089392016783619495691054934073204437823890134211440316961661977129365812730934009878180695353988341524099861100850529263372112005494440901109477171905812258529227323637633070888651063754117762127747538812423705094043768193630399481207316041168207344806208594630537211881115413335113285224633734725269999866521248948235216770556291974523156583071033408384307591427651668177754025424246727136381704023361696393955886321614167616227321765765646890482554798209893671519933100185483167698146646061975813150428625627913004683426389119417464100765417965247075255522252188101059573453030353939631794886820407058177721498614643678758463219398856506200197929995488836037979149750875957205550088916491989692772734422102307762690936220523614080121068179030699537459090415147398802270894221813558133238807437473160137690739859560319624048454845519386476365293136990335117454422791419023565330181431828151870734413285105404921525764882299855357984362391524834349015768804575560961368835419493115509531656725852041771629386346595538752239016488852598228738155981970211789883296133871666620120140851882857096332325130619421054262737816186863658938716553696235385578777759657671097856303109826047646030593555743071151634371263116162163842429774756690129571890249249302694618266745032356856859879258097741197841919555437407743854928359534790669719638999794382112720687011634647044361817576684558724625744225713250341137601306821773485014581447146364342163747989066465762520868021905766505225844729872480243797707355400502595509869443020850165379788743173859145576255477727144173012043383739723542744190771201959350703462306885235518328850278815583719203990521860325564139609728125151807551445503270918528255874403111303698792745962171997087050822360314227188891304020453787801409723278140603832271114233523786546117322725291527658718897541208901735407351872443594948184951168691060870978021172967942306361626571077641327297718119321563981345882136259090137713556729892811590283306476205075479147079271094428064841973711602823705646768958871746411377707470132144695674603139062318630558765273113585596550581780101956885083478653298047293578971034172004858991568415867607860110758034102943901257650359209265993172582604368796832550227991875124190404530653699113234281017599675972717228881762872616434186349441235273719869912359540644153586737163021327006174089564189146448642123329760513470710952045089696777693604518869700296629894354067974095792458927056409146163642160925654650608387234540930183193134586363628266252885168941377664242625103384301342516981220052304340851830918342112001226102103494435426741373561760199946612965455547118392814389204858321021871505919062366967370907845118464121559886753900829580653195913017174949634850101659327920682778835169460415060177607887785092602593896393234825771018460885175530137990762628739986435339792477919143869600819845028005086837073134537699580113198710606881625449213227965777044569159618080059467520715567940849048784878428075784048591505385207632864227646012093136506294441285115051778230787980794100536688217055491722478845399120313290174205565180798564880453263575864305591991982317190768223088819713678569560965777695766765031114759828882044210076232880703287186456087723032648753799500639301083120803887861774378127519055841200300722021908912663658736721808181905976614769167556777158540579802589251818342338664296892261598721223770948525882958989903498643844474443881365494366186879540743752522865890481258185661398661450145400174586954255798594980349336920287623171809337255391051615774034675800312569439495102693161753597894786106093813129941691167614502128824411906036203613374017421281859950157388018923162152170376719761094107244365793793801295386989614878789768675321459623423508501915602525045883285379171046365189543766620390254725283257987760524763324279709362246110807714160684401619696970071324975880463756403103367758616656042889802269384624618776702823507265083567950830141623483756155429929421201110837966736672631316515189583047632951808141375472573438564897736858285096083841743349704224813424575529979035722907751337333843039501444986132294183971798495102322118655423647575774638095594242360591296505782746376955904417512797972253837869914944669033112417910503764885109559325980725764019767086158860069193141356486082481913726565738118888937728005969856159005365510830407857091418962966413725423368585852851555226887522511422397080984203668781525866100305932014546262080118812816720718824780145563272508294470918608085953183530980510731638727137057868321337393052740572472450248506633407330366175138007347879323263799054516416812819059372532301524603584725802735622225698063481166985270568316890882163465835860871623940600102494748996263020577682569269241310711569600642071296841397219163311355761801485869653232991052823372343529891437871696801221125576878093230993279797781403517189023631723195830422007577725139506420863862974621850284828822685869365480256496976333059074849714862234685521871829072182677767188190862348091724309064749272794249063321076671908863590465544851797913038810912654892930058032156032696351232641701257308317843886563328321861571453054990391255663627593467645412053697784792717742627268539680491908356367887628950374547776804069405173086753558728381846453041208618750501774850530747859885695995496231795325167400822547623776548946062132824935065676526699584643380994341310235323423803547168908178861770343063137755745480312781418782959802518533071507405360815531786468005601078564554813901603820054611268663508697528768889628343605688404297049596482791202545704250698543069950757050521641770316863337335336374097309844944123604755575260516996650125261366737501014283681733536922919507996674711342574996766846101827584358457029128707686343622690042918038244648760087851393131630756512803773427475141968392096310643636596252141934565987883169137323589104391449442898909624179787394451054072973031385263786793430936247939167418114755343777822188531343229598604494060773257053675832346507949828487383790335973180102261516252489745244736999415636378666048565524416324310653091992191500157293663971772706090895913460914745069391507821607407119079643228761455973951456502533178244458604653367072208247136844293637699200643287171063323543071264194456731844289514661786350889430308378000623859334853499710695649927546553930859489538568835127452768087260261620951571152218348568929719647604673202322083355880695310174743610457469825948560363963194178330338717661812773680168893080697111977194694723029058532904402104183070246873285332971231965064831098195313946537722964800874303153979101249774266944684978714490326471233669690510878880297645474564156158989457731952855288748034996749984050907787463093200641078724037937331601107193002062607142334582424540462542816352856677028430889581264765717876678209615246507786765087872876579003133134698338624886416752381893452723012001163113113034922197348228234562972085324530558808215284683475788390241823026060297736587629192442326257690596727099898138760798059017319872806116456671050828020313857962939085308641728493147347650389662707609350511398801922499039899386427952050922079528229736915415528950729894659100857580760402504515924176805312456595928815847212576854617355993371686752308486259055225379546441735683459211531704159539586262195682060312819955077548305878239777757471000557642922054213570564468304657936112737638081857238134537386315694972456099757128283052159658267650533880688019165391968118081281418572817220462275354095675911862857058211998333039295198503759091340411472036588937341537552271364297296808196599896469985420092587035276351185574613124473842321798493624035111419325317850897416455727774208238005295335892784239401954079585688942640101642480065408491600871030419967385671210921727088593422109492170881430916530371486986686971893179090200174110704118528398366526522301044888669286343645609490666154720754657171877519877813139000560447086571004937715998070976628393081479513366020160880383038706268705059769497694751767397008507404890547604186839928221021081130399669544722546602362870171695433294206230069208750619380871523396740933288856122974393873962887381758634584423578738264291004803756667693477749360819940001322660377896176798306587817917609943785269138158184041529402848733581418435970591379579640302235388232907281284199927893644729185255896812857249736740795602912638601051604084121854664026333259636443490047737400712524052142271307557177223718644380878139570493348240315980414040990842347102940869097156488101725379568353259267160845887570740559432298975447149848219162771649962305998564786314810119846095164450874514679765632251834857079057499439224964428029230689670767926868233893624811244604947042834617117937781325965227897322350201659300730107372479967565853987915222243858706826074362840581263173370500381210792807269616977634478284528864656653006242682724878778575478820403482309832337875262464806318641026961704528234584790327235788301279412929095117115574048470611073342621092132524224703194743294571228199637561311515852979620659565423507311318322911676832898668803357039688818470609589490061266012753972229635450284942904935805351259449321417370363952663330002226053999399493976847878006553505003002533676884193556909119395229541876962621299266331597772792862940937809403184874617127502263870006274003996395442342544914195287826641488147525494349583796260659420495576612103430544473916322575699055751049631519785776017501968635137055395586847394685476923560018187033465205842282662951905109025241855539482267976015496469063313573187025125372844144112789403485535788540116915885225539663969928808185475616304765301116517349885884405936331731432533799211895827560075034225205924165278014787237312897593027269541326581114529418241899001721402798568503278671018513545279607071002575123250839676257547507012180306883245517988455725639614671335400322017336633978725979742406809739074434849713367788775483348859367482214591151331249276586343256589118221419004652757799426605306095828358930206405554016138060678689066724033378193562867612701651633762322211931899503103752940992724735568995777465669508965004589174674841147523988346199165253245051342943517043177839997415531126829623625481724245532036772982202357745923377157001238230272487833972522323652446141230855886193819231870646619031765335717267735528420507029371753881025064279991852598942752816765278530756485593015469375198540642186735935640796252013159144435726671556867762786118448141819542800058844475657676470805275223210876130937076711621603388815334555907099900749277080522449657647447293299167735864452743062486723899043202975481149688526255530815693291541173946373125044792210818218274971922456732957266689999701700514112728316579750910292054024386449681639908403523846060297088448251094358934090524965062651966798913985381364764384862824498058997947342392021595105265330929741553926731104482099695044837836713826596572513348637631899862407598711389056234111194498836994171142578125e-4952
-9.11299882970618650632101483404854954099762703923390835930245121757092922158349434202390177156456801299311836836800882775491746408155508042493377018897452251370955645294482919642306315951408389939155390641495852682235079948388381817147810199988543202753879634595761513692178855612323826464929567053565655516883088865211017019814938434922056584742975703338666052989323453000054190668073008069358409757711401382448879713824803063830292790871907284615732508878463187540078321144646836641714520837263280926298497175995827146959986580625367150614866594146717614105908677560599298664715089392016783619495691054934073204437823890134211440316961661977129365812730934009878180695353988341524099861100850529263372112005494440901109477171905812258529227323637633070888651063754117762127747538812423705094043768193630399481207316041168207344806208594630537211881115413335113285224633734725269999866521248948235216770556291974523156583071033408384307591427651668177754025424246727136381704023361696393955886321614167616227321765765646890482554798209893671519933100185483167698146646061975813150428625627913004683426389119417464100765417965247075255522252188101059573453030353939631794886820407058177721498614643678758463219398856506200197929995488836037979149750875957205550088916491989692772734422102307762690936220523614080121068179030699537459090415147398802270894221813558133238807437473160137690739859560319624048454845519386476365293136990335117454422791419023565330181431828151870734413285105404921525764882299855357984362391524834349015768804575560961368835419493115509531656725852041771629386346595538752239016488852598228738155981970211789883296133871666620120140851882857096332325130619421054262737816186863658938716553696235385578777759657671097856303109826047646030593555743071151634371263116162163842429774756690129571890249249302694618266745032356856859879258097741197841919555437407743854928359534790669719638999794382112720687011634647044361817576684558724625744225713250341137601306821773485014581447146364342163747989066465762520868021905766505225844729872480243797707355400502595509869443020850165379788743173859145576255477727144173012043383739723542744190771201959350703462306885235518328850278815583719203990521860325564139609728125151807551445503270918528255874403111303698792745962171997087050822360314227188891304020453787801409723278140603832271114233523786546117322725291527658718897541208901735407351872443594948184951168691060870978021172967942306361626571077641327297718119321563981345882136259090137713556729892811590283306476205075479147079271094428064841973711602823705646768958871746411377707470132144695674603139062318630558765273113585596550581780101956885083478653298047293578971034172004858991568415867607860110758034102943901257650359209265993172582604368796832550227991875124190404530653699113234281017599675972717228881762872616434186349441235273719869912359540644153586737163021327006174089564189146448642123329760513470710952045089696777693604518869700296629894354067974095792458927056409146163642160925654650608387234540930183193134586363628266252885168941377664242625103384301342516981220052304340851830918342112001226102103494435426741373561760199946612965455547118392814389204858321021871505919062366967370907845118464121559886753900829580653195913017174949634850101659327920682778835169460415060177607887785092602593896393234825771018460885175530137990762628739986435339792477919143869600819845028005086837073134537699580113198710606881625449213227965777044569159618080059467520715567940849048784878428075784048591505385207632864227646012093136506294441285115051778230787980794100536688217055491722478845399120313290174205565180798564880453263575864305591991982317190768223088819713678569560965777695766765031114759828882044210076232880703287186456087723032648753799500639301083120803887861774378127519055841200300722021908912663658736721808181905976614769167556777158540579802589251818342338664296892261598721223770948525882958989903498643844474443881365494366186879540743752522865890481258185661398661450145400174586954255798594980349336920287623171809337255391051615774034675800312569439495102693161753597894786106093813129941691167614502128824411906036203613374017421281859950157388018923162152170376719761094107244365793793801295386989614878789768675321459623423508501915602525045883285379171046365189543766620390254725283257987760524763324279709362246110807714160684401619696970071324975880463756403103367758616656042889802269384624618776702823507265083567950830141623483756155429929421201110837966736672631316515189583047632951808141375472573438564897736858285096083841743349704224813424575529979035722907751337333843039501444986132294183971798495102322118655423647575774638095594242360591296505782746376955904417512797972253837869914944669033112417910503764885109559325980725764019767086158860069193141356486082481913726565738118888937728005969856159005365510830407857091418962966413725423368585852851555226887522511422397080984203668781525866100305932014546262080118812816720718824780145563272508294470918608085953183530980510731638727137057868321337393052740572472450248506633407330366175138007347879323263799054516416812819059372532301524603584725802735622225698063481166985270568316890882163465835860871623940600102494748996263020577682569269241310711569600642071296841397219163311355761801485869653232991052823372343529891437871696801221125576878093230993279797781403517189023631723195830422007577725139506420863862974621850284828822685869365480256496976333059074849714862234685521871829072182677767188190862348091724309064749272794249063321076671908863590465544851797913038810912654892930058032156032696351232641701257308317843886563328321861571453054990391255663627593467645412053697784792717742627268539680491908356367887628950374547776804069405173086753558728381846453041208618750501774850530747859885695995496231795325167400822547623776548946062132824935065676526699584643380994341310235323423803547168908178861770343063137755745480312781418782959802518533071507405360815531786468005601078564554813901603820054611268663508697528768889628343605688404297049596482791202545704250698543069950757050521641770316863337335336374097309844944123604755575260516996650125261366737501014283681733536922919507996674711342574996766846101827584358457029128707686343622690042918038244648760087851393131630756512803773427475141968392096310643636596252141934565987883169137323589104391449442898909624179787394451054072973031385263786793430936247939167418114755343777822188531343229598604494060773257053675832346507949828487383790335973180102261516252489745244736999415636378666048565524416324310653091992191500157293663971772706090895913460914745069391507821607407119079643228761455973951456502533178244458604653367072208247136844293637699200643287171063323543071264194456731844289514661786350889430308378000623859334853499710695649927546553930859489538568835127452768087260261620951571152218348568929719647604673202322083355880695310174743610457469825948560363963194178330338717661812773680168893080697111977194694723029058532904402104183070246873285332971231965064831098195313946537722964800874303153979101249774266944684978714490326471233669690510878880297645474564156158989457731952855288748034996749984050907787463093200641078724037937331601107193002062607142334582424540462542816352856677028430889581264765717876678209615246507786765087872876579003133134698338624886416752381893452723012001163113113034922197348228234562972085324530558808215284683475788390241823026060297736587629192442326257690596727099898138760798059017319872806116456671050828020313857962939085308641728493147347650389662707609350511398801922499039899386427952050922079528229736915415528950729894659100857580760402504515924176805312456595928815847212576854617355993371686752308486259055225379546441735683459211531704159539586262195682060312819955077548305878239777757471000557642922054213570564468304657936112737638081857238134537386315694972456099757128283052159658267650533880688019165391968118081281418572817220462275354095675911862857058211998333039295198503759091340411472036588937341537552271364297296808196599896469985420092587035276351185574613124473842321798493624035111419325317850897416455727774208238005295335892784239401954079585688942640101642480065408491600871030419967385671210921727088593422109492170881430916530371486986686971893179090200174110704118528398366526522301044888669286343645609490666154720754657171877519877813139000560447086571004937715998070976628393081479513366020160880383038706268705059769497694751767397008507404890547604186839928221021081130399669544722546602362870171695433294206230069208750619380871523396740933288856122974393873962887381758634584423578738264291004803756667693477749360819940001322660377896176798306587817917609943785269138158184041529402848733581418435970591379579640302235388232907281284199927893644729185255896812857249736740795602912638601051604084121854664026333259636443490047737400712524052142271307557177223718644380878139570493348240315980414040990842347102940869097156488101725379568353259267160845887570740559432298975447149848219162771649962305998564786314810119846095164450874514679765632251834857079057499439224964428029230689670767926868233893624811244604947042834617117937781325965227897322350201659300730107372479967565853987915222243858706826074362840581263173370500381210792807269616977634478284528864656653006242682724878778575478820403482309832337875262464806318641026961704528234584790327235788301279412929095117115574048470611073342621092132524224703194743294571228199637561311515852979620659565423507311318322911676832898668803357039688818470609589490061266012753972229635450284942904935805351259449321417370363952663330002226053999399493976847878006553505003002533676884193556909119395229541876962621299266331597772792862940937809403184874617127502263870006274003996395442342544914195287826641488147525494349583796260659420495576612103430544473916322575699055751049631519785776017501968635137055395586847394685476923560018187033465205842282662951905109025241855539482267976015496469063313573187025125372844144112789403485535788540116915885225539663969928808185475616304765301116517349885884405936331731432533799211895827560075034225205924165278014787237312897593027269541326581114529418241899001721402798568503278671018513545279607071002575123250839676257547507012180306883245517988455725639614671335400322017336633978725979742406809739074434849713367788775483348859367482214591151331249276586343256589118221419004652757799426605306095828358930206405554016138060678689066724033378193562867612701651633762322211931899503103752940992724735568995777465669508965004589174674841147523988346199165253245051342943517043177839997415531126829623625481724245532036772982202357745923377157001238230272487833972522323652446141230855886193819231870646619031765335717267735528420507029371753881025064279991852598942752816765278530756485593015469375198540642186735935640796252013159144435726671556867762786118448141819542800058844475657676470805275223210876130937076711621603388815334555907099900749277080522449657647447293299167735864452743062486723899043202975481149688526255530815693291541173946373125044792210818218274971922456732957266689999701700514112728316579750910292054024386449681639908403523846060297088448251094358934090524965062651966798913985381364764384862824498058997947342392021595105265330929741553926731104482099695044837836713826596572513348637631899862407598711389056234111194498836994171142578126e-4952
--9.11299882970618650632101483404854954099762703923390835930245121757092922158349434202390177156456801299311836836800882775491746408155508042493377018897452251370955645294482919642306315951408389939155390641495852682235079948388381817147810199988543202753879634595761513692178855612323826464929567053565655516883088865211017019814938434922056584742975703338666052989323453000054190668073008069358409757711401382448879713824803063830292790871907284615732508878463187540078321144646836641714520837263280926298497175995827146959986580625367150614866594146717614105908677560599298664715089392016783619495691054934073204437823890134211440316961661977129365812730934009878180695353988341524099861100850529263372112005494440901109477171905812258529227323637633070888651063754117762127747538812423705094043768193630399481207316041168207344806208594630537211881115413335113285224633734725269999866521248948235216770556291974523156583071033408384307591427651668177754025424246727136381704023361696393955886321614167616227321765765646890482554798209893671519933100185483167698146646061975813150428625627913004683426389119417464100765417965247075255522252188101059573453030353939631794886820407058177721498614643678758463219398856506200197929995488836037979149750875957205550088916491989692772734422102307762690936220523614080121068179030699537459090415147398802270894221813558133238807437473160137690739859560319624048454845519386476365293136990335117454422791419023565330181431828151870734413285105404921525764882299855357984362391524834349015768804575560961368835419493115509531656725852041771629386346595538752239016488852598228738155981970211789883296133871666620120140851882857096332325130619421054262737816186863658938716553696235385578777759657671097856303109826047646030593555743071151634371263116162163842429774756690129571890249249302694618266745032356856859879258097741197841919555437407743854928359534790669719638999794382112720687011634647044361817576684558724625744225713250341137601306821773485014581447146364342163747989066465762520868021905766505225844729872480243797707355400502595509869443020850165379788743173859145576255477727144173012043383739723542744190771201959350703462306885235518328850278815583719203990521860325564139609728125151807551445503270918528255874403111303698792745962171997087050822360314227188891304020453787801409723278140603832271114233523786546117322725291527658718897541208901735407351872443594948184951168691060870978021172967942306361626571077641327297718119321563981345882136259090137713556729892811590283306476205075479147079271094428064841973711602823705646768958871746411377707470132144695674603139062318630558765273113585596550581780101956885083478653298047293578971034172004858991568415867607860110758034102943901257650359209265993172582604368796832550227991875124190404530653699113234281017599675972717228881762872616434186349441235273719869912359540644153586737163021327006174089564189146448642123329760513470710952045089696777693604518869700296629894354067974095792458927056409146163642160925654650608387234540930183193134586363628266252885168941377664242625103384301342516981220052304340851830918342112001226102103494435426741373561760199946612965455547118392814389204858321021871505919062366967370907845118464121559886753900829580653195913017174949634850101659327920682778835169460415060177607887785092602593896393234825771018460885175530137990762628739986435339792477919143869600819845028005086837073134537699580113198710606881625449213227965777044569159618080059467520715567940849048784878428075784048591505385207632864227646012093136506294441285115051778230787980794100536688217055491722478845399120313290174205565180798564880453263575864305591991982317190768223088819713678569560965777695766765031114759828882044210076232880703287186456087723032648753799500639301083120803887861774378127519055841200300722021908912663658736721808181905976614769167556777158540579802589251818342338664296892261598721223770948525882958989903498643844474443881365494366186879540743752522865890481258185661398661450145400174586954255798594980349336920287623171809337255391051615774034675800312569439495102693161753597894786106093813129941691167614502128824411906036203613374017421281859950157388018923162152170376719761094107244365793793801295386989614878789768675321459623423508501915602525045883285379171046365189543766620390254725283257987760524763324279709362246110807714160684401619696970071324975880463756403103367758616656042889802269384624618776702823507265083567950830141623483756155429929421201110837966736672631316515189583047632951808141375472573438564897736858285096083841743349704224813424575529979035722907751337333843039501444986132294183971798495102322118655423647575774638095594242360591296505782746376955904417512797972253837869914944669033112417910503764885109559325980725764019767086158860069193141356486082481913726565738118888937728005969856159005365510830407857091418962966413725423368585852851555226887522511422397080984203668781525866100305932014546262080118812816720718824780145563272508294470918608085953183530980510731638727137057868321337393052740572472450248506633407330366175138007347879323263799054516416812819059372532301524603584725802735622225698063481166985270568316890882163465835860871623940600102494748996263020577682569269241310711569600642071296841397219163311355761801485869653232991052823372343529891437871696801221125576878093230993279797781403517189023631723195830422007577725139506420863862974621850284828822685869365480256496976333059074849714862234685521871829072182677767188190862348091724309064749272794249063321076671908863590465544851797913038810912654892930058032156032696351232641701257308317843886563328321861571453054990391255663627593467645412053697784792717742627268539680491908356367887628950374547776804069405173086753558728381846453041208618750501774850530747859885695995496231795325167400822547623776548946062132824935065676526699584643380994341310235323423803547168908178861770343063137755745480312781418782959802518533071507405360815531786468005601078564554813901603820054611268663508697528768889628343605688404297049596482791202545704250698543069950757050521641770316863337335336374097309844944123604755575260516996650125261366737501014283681733536922919507996674711342574996766846101827584358457029128707686343622690042918038244648760087851393131630756512803773427475141968392096310643636596252141934565987883169137323589104391449442898909624179787394451054072973031385263786793430936247939167418114755343777822188531343229598604494060773257053675832346507949828487383790335973180102261516252489745244736999415636378666048565524416324310653091992191500157293663971772706090895913460914745069391507821607407119079643228761455973951456502533178244458604653367072208247136844293637699200643287171063323543071264194456731844289514661786350889430308378000623859334853499710695649927546553930859489538568835127452768087260261620951571152218348568929719647604673202322083355880695310174743610457469825948560363963194178330338717661812773680168893080697111977194694723029058532904402104183070246873285332971231965064831098195313946537722964800874303153979101249774266944684978714490326471233669690510878880297645474564156158989457731952855288748034996749984050907787463093200641078724037937331601107193002062607142334582424540462542816352856677028430889581264765717876678209615246507786765087872876579003133134698338624886416752381893452723012001163113113034922197348228234562972085324530558808215284683475788390241823026060297736587629192442326257690596727099898138760798059017319872806116456671050828020313857962939085308641728493147347650389662707609350511398801922499039899386427952050922079528229736915415528950729894659100857580760402504515924176805312456595928815847212576854617355993371686752308486259055225379546441735683459211531704159539586262195682060312819955077548305878239777757471000557642922054213570564468304657936112737638081857238134537386315694972456099757128283052159658267650533880688019165391968118081281418572817220462275354095675911862857058211998333039295198503759091340411472036588937341537552271364297296808196599896469985420092587035276351185574613124473842321798493624035111419325317850897416455727774208238005295335892784239401954079585688942640101642480065408491600871030419967385671210921727088593422109492170881430916530371486986686971893179090200174110704118528398366526522301044888669286343645609490666154720754657171877519877813139000560447086571004937715998070976628393081479513366020160880383038706268705059769497694751767397008507404890547604186839928221021081130399669544722546602362870171695433294206230069208750619380871523396740933288856122974393873962887381758634584423578738264291004803756667693477749360819940001322660377896176798306587817917609943785269138158184041529402848733581418435970591379579640302235388232907281284199927893644729185255896812857249736740795602912638601051604084121854664026333259636443490047737400712524052142271307557177223718644380878139570493348240315980414040990842347102940869097156488101725379568353259267160845887570740559432298975447149848219162771649962305998564786314810119846095164450874514679765632251834857079057499439224964428029230689670767926868233893624811244604947042834617117937781325965227897322350201659300730107372479967565853987915222243858706826074362840581263173370500381210792807269616977634478284528864656653006242682724878778575478820403482309832337875262464806318641026961704528234584790327235788301279412929095117115574048470611073342621092132524224703194743294571228199637561311515852979620659565423507311318322911676832898668803357039688818470609589490061266012753972229635450284942904935805351259449321417370363952663330002226053999399493976847878006553505003002533676884193556909119395229541876962621299266331597772792862940937809403184874617127502263870006274003996395442342544914195287826641488147525494349583796260659420495576612103430544473916322575699055751049631519785776017501968635137055395586847394685476923560018187033465205842282662951905109025241855539482267976015496469063313573187025125372844144112789403485535788540116915885225539663969928808185475616304765301116517349885884405936331731432533799211895827560075034225205924165278014787237312897593027269541326581114529418241899001721402798568503278671018513545279607071002575123250839676257547507012180306883245517988455725639614671335400322017336633978725979742406809739074434849713367788775483348859367482214591151331249276586343256589118221419004652757799426605306095828358930206405554016138060678689066724033378193562867612701651633762322211931899503103752940992724735568995777465669508965004589174674841147523988346199165253245051342943517043177839997415531126829623625481724245532036772982202357745923377157001238230272487833972522323652446141230855886193819231870646619031765335717267735528420507029371753881025064279991852598942752816765278530756485593015469375198540642186735935640796252013159144435726671556867762786118448141819542800058844475657676470805275223210876130937076711621603388815334555907099900749277080522449657647447293299167735864452743062486723899043202975481149688526255530815693291541173946373125044792210818218274971922456732957266689999701700514112728316579750910292054024386449681639908403523846060297088448251094358934090524965062651966798913985381364764384862824498058997947342392021595105265330929741553926731104482099695044837836713826596572513348637631899862407598711389056234111194498836994171142578124e-4952
--9.11299882970618650632101483404854954099762703923390835930245121757092922158349434202390177156456801299311836836800882775491746408155508042493377018897452251370955645294482919642306315951408389939155390641495852682235079948388381817147810199988543202753879634595761513692178855612323826464929567053565655516883088865211017019814938434922056584742975703338666052989323453000054190668073008069358409757711401382448879713824803063830292790871907284615732508878463187540078321144646836641714520837263280926298497175995827146959986580625367150614866594146717614105908677560599298664715089392016783619495691054934073204437823890134211440316961661977129365812730934009878180695353988341524099861100850529263372112005494440901109477171905812258529227323637633070888651063754117762127747538812423705094043768193630399481207316041168207344806208594630537211881115413335113285224633734725269999866521248948235216770556291974523156583071033408384307591427651668177754025424246727136381704023361696393955886321614167616227321765765646890482554798209893671519933100185483167698146646061975813150428625627913004683426389119417464100765417965247075255522252188101059573453030353939631794886820407058177721498614643678758463219398856506200197929995488836037979149750875957205550088916491989692772734422102307762690936220523614080121068179030699537459090415147398802270894221813558133238807437473160137690739859560319624048454845519386476365293136990335117454422791419023565330181431828151870734413285105404921525764882299855357984362391524834349015768804575560961368835419493115509531656725852041771629386346595538752239016488852598228738155981970211789883296133871666620120140851882857096332325130619421054262737816186863658938716553696235385578777759657671097856303109826047646030593555743071151634371263116162163842429774756690129571890249249302694618266745032356856859879258097741197841919555437407743854928359534790669719638999794382112720687011634647044361817576684558724625744225713250341137601306821773485014581447146364342163747989066465762520868021905766505225844729872480243797707355400502595509869443020850165379788743173859145576255477727144173012043383739723542744190771201959350703462306885235518328850278815583719203990521860325564139609728125151807551445503270918528255874403111303698792745962171997087050822360314227188891304020453787801409723278140603832271114233523786546117322725291527658718897541208901735407351872443594948184951168691060870978021172967942306361626571077641327297718119321563981345882136259090137713556729892811590283306476205075479147079271094428064841973711602823705646768958871746411377707470132144695674603139062318630558765273113585596550581780101956885083478653298047293578971034172004858991568415867607860110758034102943901257650359209265993172582604368796832550227991875124190404530653699113234281017599675972717228881762872616434186349441235273719869912359540644153586737163021327006174089564189146448642123329760513470710952045089696777693604518869700296629894354067974095792458927056409146163642160925654650608387234540930183193134586363628266252885168941377664242625103384301342516981220052304340851830918342112001226102103494435426741373561760199946612965455547118392814389204858321021871505919062366967370907845118464121559886753900829580653195913017174949634850101659327920682778835169460415060177607887785092602593896393234825771018460885175530137990762628739986435339792477919143869600819845028005086837073134537699580113198710606881625449213227965777044569159618080059467520715567940849048784878428075784048591505385207632864227646012093136506294441285115051778230787980794100536688217055491722478845399120313290174205565180798564880453263575864305591991982317190768223088819713678569560965777695766765031114759828882044210076232880703287186456087723032648753799500639301083120803887861774378127519055841200300722021908912663658736721808181905976614769167556777158540579802589251818342338664296892261598721223770948525882958989903498643844474443881365494366186879540743752522865890481258185661398661450145400174586954255798594980349336920287623171809337255391051615774034675800312569439495102693161753597894786106093813129941691167614502128824411906036203613374017421281859950157388018923162152170376719761094107244365793793801295386989614878789768675321459623423508501915602525045883285379171046365189543766620390254725283257987760524763324279709362246110807714160684401619696970071324975880463756403103367758616656042889802269384624618776702823507265083567950830141623483756155429929421201110837966736672631316515189583047632951808141375472573438564897736858285096083841743349704224813424575529979035722907751337333843039501444986132294183971798495102322118655423647575774638095594242360591296505782746376955904417512797972253837869914944669033112417910503764885109559325980725764019767086158860069193141356486082481913726565738118888937728005969856159005365510830407857091418962966413725423368585852851555226887522511422397080984203668781525866100305932014546262080118812816720718824780145563272508294470918608085953183530980510731638727137057868321337393052740572472450248506633407330366175138007347879323263799054516416812819059372532301524603584725802735622225698063481166985270568316890882163465835860871623940600102494748996263020577682569269241310711569600642071296841397219163311355761801485869653232991052823372343529891437871696801221125576878093230993279797781403517189023631723195830422007577725139506420863862974621850284828822685869365480256496976333059074849714862234685521871829072182677767188190862348091724309064749272794249063321076671908863590465544851797913038810912654892930058032156032696351232641701257308317843886563328321861571453054990391255663627593467645412053697784792717742627268539680491908356367887628950374547776804069405173086753558728381846453041208618750501774850530747859885695995496231795325167400822547623776548946062132824935065676526699584643380994341310235323423803547168908178861770343063137755745480312781418782959802518533071507405360815531786468005601078564554813901603820054611268663508697528768889628343605688404297049596482791202545704250698543069950757050521641770316863337335336374097309844944123604755575260516996650125261366737501014283681733536922919507996674711342574996766846101827584358457029128707686343622690042918038244648760087851393131630756512803773427475141968392096310643636596252141934565987883169137323589104391449442898909624179787394451054072973031385263786793430936247939167418114755343777822188531343229598604494060773257053675832346507949828487383790335973180102261516252489745244736999415636378666048565524416324310653091992191500157293663971772706090895913460914745069391507821607407119079643228761455973951456502533178244458604653367072208247136844293637699200643287171063323543071264194456731844289514661786350889430308378000623859334853499710695649927546553930859489538568835127452768087260261620951571152218348568929719647604673202322083355880695310174743610457469825948560363963194178330338717661812773680168893080697111977194694723029058532904402104183070246873285332971231965064831098195313946537722964800874303153979101249774266944684978714490326471233669690510878880297645474564156158989457731952855288748034996749984050907787463093200641078724037937331601107193002062607142334582424540462542816352856677028430889581264765717876678209615246507786765087872876579003133134698338624886416752381893452723012001163113113034922197348228234562972085324530558808215284683475788390241823026060297736587629192442326257690596727099898138760798059017319872806116456671050828020313857962939085308641728493147347650389662707609350511398801922499039899386427952050922079528229736915415528950729894659100857580760402504515924176805312456595928815847212576854617355993371686752308486259055225379546441735683459211531704159539586262195682060312819955077548305878239777757471000557642922054213570564468304657936112737638081857238134537386315694972456099757128283052159658267650533880688019165391968118081281418572817220462275354095675911862857058211998333039295198503759091340411472036588937341537552271364297296808196599896469985420092587035276351185574613124473842321798493624035111419325317850897416455727774208238005295335892784239401954079585688942640101642480065408491600871030419967385671210921727088593422109492170881430916530371486986686971893179090200174110704118528398366526522301044888669286343645609490666154720754657171877519877813139000560447086571004937715998070976628393081479513366020160880383038706268705059769497694751767397008507404890547604186839928221021081130399669544722546602362870171695433294206230069208750619380871523396740933288856122974393873962887381758634584423578738264291004803756667693477749360819940001322660377896176798306587817917609943785269138158184041529402848733581418435970591379579640302235388232907281284199927893644729185255896812857249736740795602912638601051604084121854664026333259636443490047737400712524052142271307557177223718644380878139570493348240315980414040990842347102940869097156488101725379568353259267160845887570740559432298975447149848219162771649962305998564786314810119846095164450874514679765632251834857079057499439224964428029230689670767926868233893624811244604947042834617117937781325965227897322350201659300730107372479967565853987915222243858706826074362840581263173370500381210792807269616977634478284528864656653006242682724878778575478820403482309832337875262464806318641026961704528234584790327235788301279412929095117115574048470611073342621092132524224703194743294571228199637561311515852979620659565423507311318322911676832898668803357039688818470609589490061266012753972229635450284942904935805351259449321417370363952663330002226053999399493976847878006553505003002533676884193556909119395229541876962621299266331597772792862940937809403184874617127502263870006274003996395442342544914195287826641488147525494349583796260659420495576612103430544473916322575699055751049631519785776017501968635137055395586847394685476923560018187033465205842282662951905109025241855539482267976015496469063313573187025125372844144112789403485535788540116915885225539663969928808185475616304765301116517349885884405936331731432533799211895827560075034225205924165278014787237312897593027269541326581114529418241899001721402798568503278671018513545279607071002575123250839676257547507012180306883245517988455725639614671335400322017336633978725979742406809739074434849713367788775483348859367482214591151331249276586343256589118221419004652757799426605306095828358930206405554016138060678689066724033378193562867612701651633762322211931899503103752940992724735568995777465669508965004589174674841147523988346199165253245051342943517043177839997415531126829623625481724245532036772982202357745923377157001238230272487833972522323652446141230855886193819231870646619031765335717267735528420507029371753881025064279991852598942752816765278530756485593015469375198540642186735935640796252013159144435726671556867762786118448141819542800058844475657676470805275223210876130937076711621603388815334555907099900749277080522449657647447293299167735864452743062486723899043202975481149688526255530815693291541173946373125044792210818218274971922456732957266689999701700514112728316579750910292054024386449681639908403523846060297088448251094358934090524965062651966798913985381364764384862824498058997947342392021595105265330929741553926731104482099695044837836713826596572513348637631899862407598711389056234111194498836994171142578125e-4952
--9.11299882970618650632101483404854954099762703923390835930245121757092922158349434202390177156456801299311836836800882775491746408155508042493377018897452251370955645294482919642306315951408389939155390641495852682235079948388381817147810199988543202753879634595761513692178855612323826464929567053565655516883088865211017019814938434922056584742975703338666052989323453000054190668073008069358409757711401382448879713824803063830292790871907284615732508878463187540078321144646836641714520837263280926298497175995827146959986580625367150614866594146717614105908677560599298664715089392016783619495691054934073204437823890134211440316961661977129365812730934009878180695353988341524099861100850529263372112005494440901109477171905812258529227323637633070888651063754117762127747538812423705094043768193630399481207316041168207344806208594630537211881115413335113285224633734725269999866521248948235216770556291974523156583071033408384307591427651668177754025424246727136381704023361696393955886321614167616227321765765646890482554798209893671519933100185483167698146646061975813150428625627913004683426389119417464100765417965247075255522252188101059573453030353939631794886820407058177721498614643678758463219398856506200197929995488836037979149750875957205550088916491989692772734422102307762690936220523614080121068179030699537459090415147398802270894221813558133238807437473160137690739859560319624048454845519386476365293136990335117454422791419023565330181431828151870734413285105404921525764882299855357984362391524834349015768804575560961368835419493115509531656725852041771629386346595538752239016488852598228738155981970211789883296133871666620120140851882857096332325130619421054262737816186863658938716553696235385578777759657671097856303109826047646030593555743071151634371263116162163842429774756690129571890249249302694618266745032356856859879258097741197841919555437407743854928359534790669719638999794382112720687011634647044361817576684558724625744225713250341137601306821773485014581447146364342163747989066465762520868021905766505225844729872480243797707355400502595509869443020850165379788743173859145576255477727144173012043383739723542744190771201959350703462306885235518328850278815583719203990521860325564139609728125151807551445503270918528255874403111303698792745962171997087050822360314227188891304020453787801409723278140603832271114233523786546117322725291527658718897541208901735407351872443594948184951168691060870978021172967942306361626571077641327297718119321563981345882136259090137713556729892811590283306476205075479147079271094428064841973711602823705646768958871746411377707470132144695674603139062318630558765273113585596550581780101956885083478653298047293578971034172004858991568415867607860110758034102943901257650359209265993172582604368796832550227991875124190404530653699113234281017599675972717228881762872616434186349441235273719869912359540644153586737163021327006174089564189146448642123329760513470710952045089696777693604518869700296629894354067974095792458927056409146163642160925654650608387234540930183193134586363628266252885168941377664242625103384301342516981220052304340851830918342112001226102103494435426741373561760199946612965455547118392814389204858321021871505919062366967370907845118464121559886753900829580653195913017174949634850101659327920682778835169460415060177607887785092602593896393234825771018460885175530137990762628739986435339792477919143869600819845028005086837073134537699580113198710606881625449213227965777044569159618080059467520715567940849048784878428075784048591505385207632864227646012093136506294441285115051778230787980794100536688217055491722478845399120313290174205565180798564880453263575864305591991982317190768223088819713678569560965777695766765031114759828882044210076232880703287186456087723032648753799500639301083120803887861774378127519055841200300722021908912663658736721808181905976614769167556777158540579802589251818342338664296892261598721223770948525882958989903498643844474443881365494366186879540743752522865890481258185661398661450145400174586954255798594980349336920287623171809337255391051615774034675800312569439495102693161753597894786106093813129941691167614502128824411906036203613374017421281859950157388018923162152170376719761094107244365793793801295386989614878789768675321459623423508501915602525045883285379171046365189543766620390254725283257987760524763324279709362246110807714160684401619696970071324975880463756403103367758616656042889802269384624618776702823507265083567950830141623483756155429929421201110837966736672631316515189583047632951808141375472573438564897736858285096083841743349704224813424575529979035722907751337333843039501444986132294183971798495102322118655423647575774638095594242360591296505782746376955904417512797972253837869914944669033112417910503764885109559325980725764019767086158860069193141356486082481913726565738118888937728005969856159005365510830407857091418962966413725423368585852851555226887522511422397080984203668781525866100305932014546262080118812816720718824780145563272508294470918608085953183530980510731638727137057868321337393052740572472450248506633407330366175138007347879323263799054516416812819059372532301524603584725802735622225698063481166985270568316890882163465835860871623940600102494748996263020577682569269241310711569600642071296841397219163311355761801485869653232991052823372343529891437871696801221125576878093230993279797781403517189023631723195830422007577725139506420863862974621850284828822685869365480256496976333059074849714862234685521871829072182677767188190862348091724309064749272794249063321076671908863590465544851797913038810912654892930058032156032696351232641701257308317843886563328321861571453054990391255663627593467645412053697784792717742627268539680491908356367887628950374547776804069405173086753558728381846453041208618750501774850530747859885695995496231795325167400822547623776548946062132824935065676526699584643380994341310235323423803547168908178861770343063137755745480312781418782959802518533071507405360815531786468005601078564554813901603820054611268663508697528768889628343605688404297049596482791202545704250698543069950757050521641770316863337335336374097309844944123604755575260516996650125261366737501014283681733536922919507996674711342574996766846101827584358457029128707686343622690042918038244648760087851393131630756512803773427475141968392096310643636596252141934565987883169137323589104391449442898909624179787394451054072973031385263786793430936247939167418114755343777822188531343229598604494060773257053675832346507949828487383790335973180102261516252489745244736999415636378666048565524416324310653091992191500157293663971772706090895913460914745069391507821607407119079643228761455973951456502533178244458604653367072208247136844293637699200643287171063323543071264194456731844289514661786350889430308378000623859334853499710695649927546553930859489538568835127452768087260261620951571152218348568929719647604673202322083355880695310174743610457469825948560363963194178330338717661812773680168893080697111977194694723029058532904402104183070246873285332971231965064831098195313946537722964800874303153979101249774266944684978714490326471233669690510878880297645474564156158989457731952855288748034996749984050907787463093200641078724037937331601107193002062607142334582424540462542816352856677028430889581264765717876678209615246507786765087872876579003133134698338624886416752381893452723012001163113113034922197348228234562972085324530558808215284683475788390241823026060297736587629192442326257690596727099898138760798059017319872806116456671050828020313857962939085308641728493147347650389662707609350511398801922499039899386427952050922079528229736915415528950729894659100857580760402504515924176805312456595928815847212576854617355993371686752308486259055225379546441735683459211531704159539586262195682060312819955077548305878239777757471000557642922054213570564468304657936112737638081857238134537386315694972456099757128283052159658267650533880688019165391968118081281418572817220462275354095675911862857058211998333039295198503759091340411472036588937341537552271364297296808196599896469985420092587035276351185574613124473842321798493624035111419325317850897416455727774208238005295335892784239401954079585688942640101642480065408491600871030419967385671210921727088593422109492170881430916530371486986686971893179090200174110704118528398366526522301044888669286343645609490666154720754657171877519877813139000560447086571004937715998070976628393081479513366020160880383038706268705059769497694751767397008507404890547604186839928221021081130399669544722546602362870171695433294206230069208750619380871523396740933288856122974393873962887381758634584423578738264291004803756667693477749360819940001322660377896176798306587817917609943785269138158184041529402848733581418435970591379579640302235388232907281284199927893644729185255896812857249736740795602912638601051604084121854664026333259636443490047737400712524052142271307557177223718644380878139570493348240315980414040990842347102940869097156488101725379568353259267160845887570740559432298975447149848219162771649962305998564786314810119846095164450874514679765632251834857079057499439224964428029230689670767926868233893624811244604947042834617117937781325965227897322350201659300730107372479967565853987915222243858706826074362840581263173370500381210792807269616977634478284528864656653006242682724878778575478820403482309832337875262464806318641026961704528234584790327235788301279412929095117115574048470611073342621092132524224703194743294571228199637561311515852979620659565423507311318322911676832898668803357039688818470609589490061266012753972229635450284942904935805351259449321417370363952663330002226053999399493976847878006553505003002533676884193556909119395229541876962621299266331597772792862940937809403184874617127502263870006274003996395442342544914195287826641488147525494349583796260659420495576612103430544473916322575699055751049631519785776017501968635137055395586847394685476923560018187033465205842282662951905109025241855539482267976015496469063313573187025125372844144112789403485535788540116915885225539663969928808185475616304765301116517349885884405936331731432533799211895827560075034225205924165278014787237312897593027269541326581114529418241899001721402798568503278671018513545279607071002575123250839676257547507012180306883245517988455725639614671335400322017336633978725979742406809739074434849713367788775483348859367482214591151331249276586343256589118221419004652757799426605306095828358930206405554016138060678689066724033378193562867612701651633762322211931899503103752940992724735568995777465669508965004589174674841147523988346199165253245051342943517043177839997415531126829623625481724245532036772982202357745923377157001238230272487833972522323652446141230855886193819231870646619031765335717267735528420507029371753881025064279991852598942752816765278530756485593015469375198540642186735935640796252013159144435726671556867762786118448141819542800058844475657676470805275223210876130937076711621603388815334555907099900749277080522449657647447293299167735864452743062486723899043202975481149688526255530815693291541173946373125044792210818218274971922456732957266689999701700514112728316579750910292054024386449681639908403523846060297088448251094358934090524965062651966798913985381364764384862824498058997947342392021595105265330929741553926731104482099695044837836713826596572513348637631899862407598711389056234111194498836994171142578126e-4952
-3.237587559719012555462219479113823276249784669017340504844942194598519770062059685508835745638324970127939070738424059838293609943191271023342555035986308991521396355375667467208367312819235870119724263252776995195727778126085574034035411017344128491238136414394551514178668780674015531193282296319913113495953953933831631032855605791532328598034154166422617226534880263244723830482289656875701701315902175019974435037627824356684033058939701577883356651733717468531204705842607568803666569711421917525834491783583598401321476176752039857173551930268891446850107760584333855521475305010940756813993214730850216669600967698749412592167692757446422169965426483919224341062751152057061076522973232731542382055087239368522167656194830741819605276971705738272393130698937532095725613383807312946395184980707534803490003540251394324459987958400939111001126190861523615485938285497714410609640798273816511769391568591823198476415765275534341709798367687043373145262933998108452661682659942586304978413812755518166239176614473815940025342279575304159493260770068030636885746695206392378276051948759263882079389379666940357441139816661913198656187703463519723262653223919257185751827493927586153153792077729913353547954808876263400200663495414360816863385220457719546338953323399286762099558324132103460225580066817535680886906060858264089074120360391613368274811868067637495154569071591624185979937989402513750464346904036668477876379544221432800037599944499161940321774835027752710681217554286366043661491013593886229615614494736186475932160549630939390542165126494166960681499481651861215529870984381726203476917507560266886692644952355421814201350137351435237036912624414444992497142303802423605897110605364956579914507108584002230524766331348271456591814078599780820974961968314684496428310691542272663818486132771177670874927831510002443658417608078383611526899905533629456904234997116303929427262032216072887961072267850618234492852606488522739744757845004694461812790342894353802938671928834585447328398711684245164703625580196678024410303542544534512706792134908369873605619756775207191558754413381571756431003248529020572648048946458999967788526617126349345966896362376841092268841417781414969315002419192181972121568811432459128737128140063645558482525300089060238860392371092102688097987915838860882370022268312322882235690785726190915062699382576041643741555139697348927957856990969985342299599797431503615312038393069808777315725367497595040966093808407117316369389112216628231869173217637452855462790553030636920487796465880633399632793882734473382168542596184679158149228725004404714293460752371865436947855237307240001863573081174929166645758276081272685156100195420794154740486637315823136798695124738873328565945598241199335059398955049459449844741098478330319112865980346771381982151154499846478545530650091824164892591396650703633600023191521502618379988693800703884555191647864959327260468892793195316578510173816406054364319294906641284764788384683586662382042642852654156477478700779123584369965723284711409361741235548687181052639639279285373139084165798451899763979500837428077782309910703522399860010310321116623028924118238023770381424894162717815296210097245221769714495449744327945091943394325259297771090128969600269822520904193880119094781214175887316220311309028456568749910010962366586834018403242866721783519806933018588077977626913774236680220258524711348037750591646286531625306510583751929280541119187219596706615736304036444366663256426643903386694536649648686380122198677895751002327229059364018755164517060321515091173358005987498359799467138817648881479418623694683454881683746841149715181334498096967702613110590140231345676956141227850879905018558219984441819798054463206764413100251255775535830770535620946159535406497134759043192647996190512978586496199656070707105117773853504277795024754647024165589129442822627147868917463795166386552921913398878270019905147510849518894114102536073369047160130990411626048426437835295683097278297774735181045158616674564080237813146623269215019613231938626758927531490945029356207933289363847181438902539297057969524961348607844569521442237914899100699610921669921572167164875488132527187949318543809703388178931170799769792886086681284964861608656928109305369539955846964197786677053847603962194721523867993048528558551380823699291873352033111096244814245789620930756114228971363838828108534030152031715929722499546436547773404017947035596936338462103946797525667033935433489292620531649199724400832489751788129365426568881328357966337292439204382537174357675404105580244018783685041224798457022189315692175787257287203633134300759209060570319508886475377719911176071302732819878165468592717406388218727585026352127436844762994722826390779737322113768842482160812973100323673863050234437722898796145596181862320550301285861980052194863780743808106946940079349630782676930197134206259739125377941060751175427888774493677478593805682322173891730311959284895178856039354015035864931073602059531001572891528828982167810245343327388887928886208615327002834690068636094325052251429781641267821367266715283643659749152264457938319185148303604827363623405060374573505789923003843438436174489383805098509083722050766328250349793203837202162624690093533478114438810603140565070517669964629947543608404988178019652088162307525611931821066493746994641048066011859814337589829896549720562117090677291541318153057715167624128318297771376531788973088699647168159229805877415594828532539839967464064556647594705830374653113373530876658380240145380423210673778776803592627231257495817394581607796277282644312510714532297108722017217547317744900647318022108570947064304280100418971450552007356891519523293614416944016354756866350050833501416942505071203810116719053430543531027953437436446745566839242129860410443198862219469972163224971258348314341755015213118628882713134766297624091644805801186976152536913514712919240503721680740586016832099946807466311777189050656676962849581383790904722087478646766320517056183581970236248227413322748304134245717987665377396011236706627320817654565682680006957454759981618023476448544673508068369492066566895437050571584345511070959483898938738225050292533674383091612495407126805381796487365892131916426837522671623266627483065655765705534239355214893395905702329340402794052884259146049064629582075576563307670749189662176976725361937046200576007893814439695301892528761187544161389682003509216791271836545495416676148151145195082668323677621182991451835324281863619641773620601014510950996746726615703771971266687151564427772359427340566909351858654807999781808513034680104078196607462166928018863385629928965649243954503391493597963417955268639606791452833692467872935741940362479842688642227725662504694679557678170929873774151037857807219938356152056997839625453727441947651198316190826615266016347740875615970031428012228328190610356706715662722241878767131224669837573607121539572299329404101274463156060298348931678277361174057097484704587036227686110677413094941011961262438027467952964727129462752693949019764164538344775554466171428121848999818969114034332797672927989107710137279281184295118233855942385256333164153378143279674287318136458207166174996112638689535976047617221520910027427485161965702038805161865494457444594178063766957037428053543239915792369877811053417485684498667123216132006378630814477106813088898563644909178779463295955587688067277368683836470612208483299572260344016516194247232298740800342116589984844356688576984553507410293250093945014209879983314562948451929862241009275783684229669718641013736581856815277185073259140534024850924787544871716174654424640728091372513505922826813145390369149590652886241000625495880523771672395227312971578042522330551788256261683080675549820375567692574152956993944504349004617185470945673049153218968830613586193253490318451871770642617802890083608004460414305421033261048294750210470303202846332054952531617433058538758154347087854561609738141615145103748777579733574989673510104836750248325511777237502526995647687215364262385606217553691332159421351598905950537513518351520709657614578131639854432532002236696200855408766520105076378983345708235918180749273124590433024519869147132931932462703067876214268579940066030521414045386366551780718510535469417760242493782392451178913322503092692423649855756521279456558275339921490892868856862895022564047205838132429286600764536839036698193759634186899291274131934296059833048690594627623595320676097721540716472990950611858372856271872423573251506230042608074167903809812264198034505185435990821356377966484742250577592243727298923187891299404854048446822719928239317254073429532989089675503790372464487057264894107613242300912487070053676379388189496900004239731820229886894053019610823763957809819187948639826973433528683168917360632750040517847686479093538683816924213175672979768822065627696943474914020483056384006872835738311110986586149510661361915342172527409078742250880056867149831149121019729847242037335904440063130981999650700416787683293610119590221942974317455716336227454789239793488032299063316588917505912406020220045264868457718282165158892171630470709599503997282778168097827497383884195820921583645621293941200045604062174334998171535030513366277293714389988219756129580868518167923841173364269774889246694435264051484911461988227011238661037602452710188911900438270362280391121270021679247152879324195035694278071477495720447513017171148877312193736366348711630105507365864598069586257026976295714123943691621672377694552248018987680338612382795605985191106112971398796002636340393693119651973344711646854574482999700397952536878348512983782198330513744803168936076427075943787200489575435147989033386529956551570669047103070223076797892329848058499725632813524581372640746415923016932853954152472487866287318545051065376430120748079948860283261855738836955246188128622509828635867225708782966017423170535046509131388753895013061151387840089512861842615441729962315731301087767989000918136617870582141517330935619268642915983553727587587676791953536960714236687847602589538927962585440961131240218794236944630211930970546118745080346860636620310193382167597465544174488399379683716417891139157575146359165023126594124268610800205258776019000550873739401445303129974560221438061891795442780328126230093178952504570380957199592993338719686487798275474853570100033092481743129836527369756194343789131822069107283156271772679863538216891518713732520976834628418347371261368933454629405371869789752684339805368137450825001203521193642598238954329102258317328098581116978343883611320940814793654745807336162557057195523274610323601685712314930799144191673243832283659669368716126815118360353441303009936083544193524336572930768154506567477565558211143508568396203781879592033787429012753106951129653074630840496376302289668286168325299592504054003803917262600195834001336180158836765599057537979745423711070158871650976475924365707758401328959478791343481250979029363644046972556422294698558561670817595994409985323205913035009923360820734795546082012200697671744573982535291905800552837118327702125018691644774560916230166739307705017656065679867259837178918123254219579594535869171376148397610005870749992910355727569593729567789260479930835305112462727870603529547312621720559953074675620549217314861961905983960910846471569192459257648138212674016814845327496495507412976753381357634960529826817906824433858135485518651632270319927880227571858035210375443324098235463619647723862420557582355632137583370066602155641218235815280874570372436217877316899649287051943247206509113311767578124e-4966
-3.237587559719012555462219479113823276249784669017340504844942194598519770062059685508835745638324970127939070738424059838293609943191271023342555035986308991521396355375667467208367312819235870119724263252776995195727778126085574034035411017344128491238136414394551514178668780674015531193282296319913113495953953933831631032855605791532328598034154166422617226534880263244723830482289656875701701315902175019974435037627824356684033058939701577883356651733717468531204705842607568803666569711421917525834491783583598401321476176752039857173551930268891446850107760584333855521475305010940756813993214730850216669600967698749412592167692757446422169965426483919224341062751152057061076522973232731542382055087239368522167656194830741819605276971705738272393130698937532095725613383807312946395184980707534803490003540251394324459987958400939111001126190861523615485938285497714410609640798273816511769391568591823198476415765275534341709798367687043373145262933998108452661682659942586304978413812755518166239176614473815940025342279575304159493260770068030636885746695206392378276051948759263882079389379666940357441139816661913198656187703463519723262653223919257185751827493927586153153792077729913353547954808876263400200663495414360816863385220457719546338953323399286762099558324132103460225580066817535680886906060858264089074120360391613368274811868067637495154569071591624185979937989402513750464346904036668477876379544221432800037599944499161940321774835027752710681217554286366043661491013593886229615614494736186475932160549630939390542165126494166960681499481651861215529870984381726203476917507560266886692644952355421814201350137351435237036912624414444992497142303802423605897110605364956579914507108584002230524766331348271456591814078599780820974961968314684496428310691542272663818486132771177670874927831510002443658417608078383611526899905533629456904234997116303929427262032216072887961072267850618234492852606488522739744757845004694461812790342894353802938671928834585447328398711684245164703625580196678024410303542544534512706792134908369873605619756775207191558754413381571756431003248529020572648048946458999967788526617126349345966896362376841092268841417781414969315002419192181972121568811432459128737128140063645558482525300089060238860392371092102688097987915838860882370022268312322882235690785726190915062699382576041643741555139697348927957856990969985342299599797431503615312038393069808777315725367497595040966093808407117316369389112216628231869173217637452855462790553030636920487796465880633399632793882734473382168542596184679158149228725004404714293460752371865436947855237307240001863573081174929166645758276081272685156100195420794154740486637315823136798695124738873328565945598241199335059398955049459449844741098478330319112865980346771381982151154499846478545530650091824164892591396650703633600023191521502618379988693800703884555191647864959327260468892793195316578510173816406054364319294906641284764788384683586662382042642852654156477478700779123584369965723284711409361741235548687181052639639279285373139084165798451899763979500837428077782309910703522399860010310321116623028924118238023770381424894162717815296210097245221769714495449744327945091943394325259297771090128969600269822520904193880119094781214175887316220311309028456568749910010962366586834018403242866721783519806933018588077977626913774236680220258524711348037750591646286531625306510583751929280541119187219596706615736304036444366663256426643903386694536649648686380122198677895751002327229059364018755164517060321515091173358005987498359799467138817648881479418623694683454881683746841149715181334498096967702613110590140231345676956141227850879905018558219984441819798054463206764413100251255775535830770535620946159535406497134759043192647996190512978586496199656070707105117773853504277795024754647024165589129442822627147868917463795166386552921913398878270019905147510849518894114102536073369047160130990411626048426437835295683097278297774735181045158616674564080237813146623269215019613231938626758927531490945029356207933289363847181438902539297057969524961348607844569521442237914899100699610921669921572167164875488132527187949318543809703388178931170799769792886086681284964861608656928109305369539955846964197786677053847603962194721523867993048528558551380823699291873352033111096244814245789620930756114228971363838828108534030152031715929722499546436547773404017947035596936338462103946797525667033935433489292620531649199724400832489751788129365426568881328357966337292439204382537174357675404105580244018783685041224798457022189315692175787257287203633134300759209060570319508886475377719911176071302732819878165468592717406388218727585026352127436844762994722826390779737322113768842482160812973100323673863050234437722898796145596181862320550301285861980052194863780743808106946940079349630782676930197134206259739125377941060751175427888774493677478593805682322173891730311959284895178856039354015035864931073602059531001572891528828982167810245343327388887928886208615327002834690068636094325052251429781641267821367266715283643659749152264457938319185148303604827363623405060374573505789923003843438436174489383805098509083722050766328250349793203837202162624690093533478114438810603140565070517669964629947543608404988178019652088162307525611931821066493746994641048066011859814337589829896549720562117090677291541318153057715167624128318297771376531788973088699647168159229805877415594828532539839967464064556647594705830374653113373530876658380240145380423210673778776803592627231257495817394581607796277282644312510714532297108722017217547317744900647318022108570947064304280100418971450552007356891519523293614416944016354756866350050833501416942505071203810116719053430543531027953437436446745566839242129860410443198862219469972163224971258348314341755015213118628882713134766297624091644805801186976152536913514712919240503721680740586016832099946807466311777189050656676962849581383790904722087478646766320517056183581970236248227413322748304134245717987665377396011236706627320817654565682680006957454759981618023476448544673508068369492066566895437050571584345511070959483898938738225050292533674383091612495407126805381796487365892131916426837522671623266627483065655765705534239355214893395905702329340402794052884259146049064629582075576563307670749189662176976725361937046200576007893814439695301892528761187544161389682003509216791271836545495416676148151145195082668323677621182991451835324281863619641773620601014510950996746726615703771971266687151564427772359427340566909351858654807999781808513034680104078196607462166928018863385629928965649243954503391493597963417955268639606791452833692467872935741940362479842688642227725662504694679557678170929873774151037857807219938356152056997839625453727441947651198316190826615266016347740875615970031428012228328190610356706715662722241878767131224669837573607121539572299329404101274463156060298348931678277361174057097484704587036227686110677413094941011961262438027467952964727129462752693949019764164538344775554466171428121848999818969114034332797672927989107710137279281184295118233855942385256333164153378143279674287318136458207166174996112638689535976047617221520910027427485161965702038805161865494457444594178063766957037428053543239915792369877811053417485684498667123216132006378630814477106813088898563644909178779463295955587688067277368683836470612208483299572260344016516194247232298740800342116589984844356688576984553507410293250093945014209879983314562948451929862241009275783684229669718641013736581856815277185073259140534024850924787544871716174654424640728091372513505922826813145390369149590652886241000625495880523771672395227312971578042522330551788256261683080675549820375567692574152956993944504349004617185470945673049153218968830613586193253490318451871770642617802890083608004460414305421033261048294750210470303202846332054952531617433058538758154347087854561609738141615145103748777579733574989673510104836750248325511777237502526995647687215364262385606217553691332159421351598905950537513518351520709657614578131639854432532002236696200855408766520105076378983345708235918180749273124590433024519869147132931932462703067876214268579940066030521414045386366551780718510535469417760242493782392451178913322503092692423649855756521279456558275339921490892868856862895022564047205838132429286600764536839036698193759634186899291274131934296059833048690594627623595320676097721540716472990950611858372856271872423573251506230042608074167903809812264198034505185435990821356377966484742250577592243727298923187891299404854048446822719928239317254073429532989089675503790372464487057264894107613242300912487070053676379388189496900004239731820229886894053019610823763957809819187948639826973433528683168917360632750040517847686479093538683816924213175672979768822065627696943474914020483056384006872835738311110986586149510661361915342172527409078742250880056867149831149121019729847242037335904440063130981999650700416787683293610119590221942974317455716336227454789239793488032299063316588917505912406020220045264868457718282165158892171630470709599503997282778168097827497383884195820921583645621293941200045604062174334998171535030513366277293714389988219756129580868518167923841173364269774889246694435264051484911461988227011238661037602452710188911900438270362280391121270021679247152879324195035694278071477495720447513017171148877312193736366348711630105507365864598069586257026976295714123943691621672377694552248018987680338612382795605985191106112971398796002636340393693119651973344711646854574482999700397952536878348512983782198330513744803168936076427075943787200489575435147989033386529956551570669047103070223076797892329848058499725632813524581372640746415923016932853954152472487866287318545051065376430120748079948860283261855738836955246188128622509828635867225708782966017423170535046509131388753895013061151387840089512861842615441729962315731301087767989000918136617870582141517330935619268642915983553727587587676791953536960714236687847602589538927962585440961131240218794236944630211930970546118745080346860636620310193382167597465544174488399379683716417891139157575146359165023126594124268610800205258776019000550873739401445303129974560221438061891795442780328126230093178952504570380957199592993338719686487798275474853570100033092481743129836527369756194343789131822069107283156271772679863538216891518713732520976834628418347371261368933454629405371869789752684339805368137450825001203521193642598238954329102258317328098581116978343883611320940814793654745807336162557057195523274610323601685712314930799144191673243832283659669368716126815118360353441303009936083544193524336572930768154506567477565558211143508568396203781879592033787429012753106951129653074630840496376302289668286168325299592504054003803917262600195834001336180158836765599057537979745423711070158871650976475924365707758401328959478791343481250979029363644046972556422294698558561670817595994409985323205913035009923360820734795546082012200697671744573982535291905800552837118327702125018691644774560916230166739307705017656065679867259837178918123254219579594535869171376148397610005870749992910355727569593729567789260479930835305112462727870603529547312621720559953074675620549217314861961905983960910846471569192459257648138212674016814845327496495507412976753381357634960529826817906824433858135485518651632270319927880227571858035210375443324098235463619647723862420557582355632137583370066602155641218235815280874570372436217877316899649287051943247206509113311767578125e-4966
-3.237587559719012555462219479113823276249784669017340504844942194598519770062059685508835745638324970127939070738424059838293609943191271023342555035986308991521396355375667467208367312819235870119724263252776995195727778126085574034035411017344128491238136414394551514178668780674015531193282296319913113495953953933831631032855605791532328598034154166422617226534880263244723830482289656875701701315902175019974435037627824356684033058939701577883356651733717468531204705842607568803666569711421917525834491783583598401321476176752039857173551930268891446850107760584333855521475305010940756813993214730850216669600967698749412592167692757446422169965426483919224341062751152057061076522973232731542382055087239368522167656194830741819605276971705738272393130698937532095725613383807312946395184980707534803490003540251394324459987958400939111001126190861523615485938285497714410609640798273816511769391568591823198476415765275534341709798367687043373145262933998108452661682659942586304978413812755518166239176614473815940025342279575304159493260770068030636885746695206392378276051948759263882079389379666940357441139816661913198656187703463519723262653223919257185751827493927586153153792077729913353547954808876263400200663495414360816863385220457719546338953323399286762099558324132103460225580066817535680886906060858264089074120360391613368274811868067637495154569071591624185979937989402513750464346904036668477876379544221432800037599944499161940321774835027752710681217554286366043661491013593886229615614494736186475932160549630939390542165126494166960681499481651861215529870984381726203476917507560266886692644952355421814201350137351435237036912624414444992497142303802423605897110605364956579914507108584002230524766331348271456591814078599780820974961968314684496428310691542272663818486132771177670874927831510002443658417608078383611526899905533629456904234997116303929427262032216072887961072267850618234492852606488522739744757845004694461812790342894353802938671928834585447328398711684245164703625580196678024410303542544534512706792134908369873605619756775207191558754413381571756431003248529020572648048946458999967788526617126349345966896362376841092268841417781414969315002419192181972121568811432459128737128140063645558482525300089060238860392371092102688097987915838860882370022268312322882235690785726190915062699382576041643741555139697348927957856990969985342299599797431503615312038393069808777315725367497595040966093808407117316369389112216628231869173217637452855462790553030636920487796465880633399632793882734473382168542596184679158149228725004404714293460752371865436947855237307240001863573081174929166645758276081272685156100195420794154740486637315823136798695124738873328565945598241199335059398955049459449844741098478330319112865980346771381982151154499846478545530650091824164892591396650703633600023191521502618379988693800703884555191647864959327260468892793195316578510173816406054364319294906641284764788384683586662382042642852654156477478700779123584369965723284711409361741235548687181052639639279285373139084165798451899763979500837428077782309910703522399860010310321116623028924118238023770381424894162717815296210097245221769714495449744327945091943394325259297771090128969600269822520904193880119094781214175887316220311309028456568749910010962366586834018403242866721783519806933018588077977626913774236680220258524711348037750591646286531625306510583751929280541119187219596706615736304036444366663256426643903386694536649648686380122198677895751002327229059364018755164517060321515091173358005987498359799467138817648881479418623694683454881683746841149715181334498096967702613110590140231345676956141227850879905018558219984441819798054463206764413100251255775535830770535620946159535406497134759043192647996190512978586496199656070707105117773853504277795024754647024165589129442822627147868917463795166386552921913398878270019905147510849518894114102536073369047160130990411626048426437835295683097278297774735181045158616674564080237813146623269215019613231938626758927531490945029356207933289363847181438902539297057969524961348607844569521442237914899100699610921669921572167164875488132527187949318543809703388178931170799769792886086681284964861608656928109305369539955846964197786677053847603962194721523867993048528558551380823699291873352033111096244814245789620930756114228971363838828108534030152031715929722499546436547773404017947035596936338462103946797525667033935433489292620531649199724400832489751788129365426568881328357966337292439204382537174357675404105580244018783685041224798457022189315692175787257287203633134300759209060570319508886475377719911176071302732819878165468592717406388218727585026352127436844762994722826390779737322113768842482160812973100323673863050234437722898796145596181862320550301285861980052194863780743808106946940079349630782676930197134206259739125377941060751175427888774493677478593805682322173891730311959284895178856039354015035864931073602059531001572891528828982167810245343327388887928886208615327002834690068636094325052251429781641267821367266715283643659749152264457938319185148303604827363623405060374573505789923003843438436174489383805098509083722050766328250349793203837202162624690093533478114438810603140565070517669964629947543608404988178019652088162307525611931821066493746994641048066011859814337589829896549720562117090677291541318153057715167624128318297771376531788973088699647168159229805877415594828532539839967464064556647594705830374653113373530876658380240145380423210673778776803592627231257495817394581607796277282644312510714532297108722017217547317744900647318022108570947064304280100418971450552007356891519523293614416944016354756866350050833501416942505071203810116719053430543531027953437436446745566839242129860410443198862219469972163224971258348314341755015213118628882713134766297624091644805801186976152536913514712919240503721680740586016832099946807466311777189050656676962849581383790904722087478646766320517056183581970236248227413322748304134245717987665377396011236706627320817654565682680006957454759981618023476448544673508068369492066566895437050571584345511070959483898938738225050292533674383091612495407126805381796487365892131916426837522671623266627483065655765705534239355214893395905702329340402794052884259146049064629582075576563307670749189662176976725361937046200576007893814439695301892528761187544161389682003509216791271836545495416676148151145195082668323677621182991451835324281863619641773620601014510950996746726615703771971266687151564427772359427340566909351858654807999781808513034680104078196607462166928018863385629928965649243954503391493597963417955268639606791452833692467872935741940362479842688642227725662504694679557678170929873774151037857807219938356152056997839625453727441947651198316190826615266016347740875615970031428012228328190610356706715662722241878767131224669837573607121539572299329404101274463156060298348931678277361174057097484704587036227686110677413094941011961262438027467952964727129462752693949019764164538344775554466171428121848999818969114034332797672927989107710137279281184295118233855942385256333164153378143279674287318136458207166174996112638689535976047617221520910027427485161965702038805161865494457444594178063766957037428053543239915792369877811053417485684498667123216132006378630814477106813088898563644909178779463295955587688067277368683836470612208483299572260344016516194247232298740800342116589984844356688576984553507410293250093945014209879983314562948451929862241009275783684229669718641013736581856815277185073259140534024850924787544871716174654424640728091372513505922826813145390369149590652886241000625495880523771672395227312971578042522330551788256261683080675549820375567692574152956993944504349004617185470945673049153218968830613586193253490318451871770642617802890083608004460414305421033261048294750210470303202846332054952531617433058538758154347087854561609738141615145103748777579733574989673510104836750248325511777237502526995647687215364262385606217553691332159421351598905950537513518351520709657614578131639854432532002236696200855408766520105076378983345708235918180749273124590433024519869147132931932462703067876214268579940066030521414045386366551780718510535469417760242493782392451178913322503092692423649855756521279456558275339921490892868856862895022564047205838132429286600764536839036698193759634186899291274131934296059833048690594627623595320676097721540716472990950611858372856271872423573251506230042608074167903809812264198034505185435990821356377966484742250577592243727298923187891299404854048446822719928239317254073429532989089675503790372464487057264894107613242300912487070053676379388189496900004239731820229886894053019610823763957809819187948639826973433528683168917360632750040517847686479093538683816924213175672979768822065627696943474914020483056384006872835738311110986586149510661361915342172527409078742250880056867149831149121019729847242037335904440063130981999650700416787683293610119590221942974317455716336227454789239793488032299063316588917505912406020220045264868457718282165158892171630470709599503997282778168097827497383884195820921583645621293941200045604062174334998171535030513366277293714389988219756129580868518167923841173364269774889246694435264051484911461988227011238661037602452710188911900438270362280391121270021679247152879324195035694278071477495720447513017171148877312193736366348711630105507365864598069586257026976295714123943691621672377694552248018987680338612382795605985191106112971398796002636340393693119651973344711646854574482999700397952536878348512983782198330513744803168936076427075943787200489575435147989033386529956551570669047103070223076797892329848058499725632813524581372640746415923016932853954152472487866287318545051065376430120748079948860283261855738836955246188128622509828635867225708782966017423170535046509131388753895013061151387840089512861842615441729962315731301087767989000918136617870582141517330935619268642915983553727587587676791953536960714236687847602589538927962585440961131240218794236944630211930970546118745080346860636620310193382167597465544174488399379683716417891139157575146359165023126594124268610800205258776019000550873739401445303129974560221438061891795442780328126230093178952504570380957199592993338719686487798275474853570100033092481743129836527369756194343789131822069107283156271772679863538216891518713732520976834628418347371261368933454629405371869789752684339805368137450825001203521193642598238954329102258317328098581116978343883611320940814793654745807336162557057195523274610323601685712314930799144191673243832283659669368716126815118360353441303009936083544193524336572930768154506567477565558211143508568396203781879592033787429012753106951129653074630840496376302289668286168325299592504054003803917262600195834001336180158836765599057537979745423711070158871650976475924365707758401328959478791343481250979029363644046972556422294698558561670817595994409985323205913035009923360820734795546082012200697671744573982535291905800552837118327702125018691644774560916230166739307705017656065679867259837178918123254219579594535869171376148397610005870749992910355727569593729567789260479930835305112462727870603529547312621720559953074675620549217314861961905983960910846471569192459257648138212674016814845327496495507412976753381357634960529826817906824433858135485518651632270319927880227571858035210375443324098235463619647723862420557582355632137583370066602155641218235815280874570372436217877316899649287051943247206509113311767578126e-4966
--3.237587559719012555462219479113823276249784669017340504844942194598519770062059685508835745638324970127939070738424059838293609943191271023342555035986308991521396355375667467208367312819235870119724263252776995195727778126085574034035411017344128491238136414394551514178668780674015531193282296319913113495953953933831631032855605791532328598034154166422617226534880263244723830482289656875701701315902175019974435037627824356684033058939701577883356651733717468531204705842607568803666569711421917525834491783583598401321476176752039857173551930268891446850107760584333855521475305010940756813993214730850216669600967698749412592167692757446422169965426483919224341062751152057061076522973232731542382055087239368522167656194830741819605276971705738272393130698937532095725613383807312946395184980707534803490003540251394324459987958400939111001126190861523615485938285497714410609640798273816511769391568591823198476415765275534341709798367687043373145262933998108452661682659942586304978413812755518166239176614473815940025342279575304159493260770068030636885746695206392378276051948759263882079389379666940357441139816661913198656187703463519723262653223919257185751827493927586153153792077729913353547954808876263400200663495414360816863385220457719546338953323399286762099558324132103460225580066817535680886906060858264089074120360391613368274811868067637495154569071591624185979937989402513750464346904036668477876379544221432800037599944499161940321774835027752710681217554286366043661491013593886229615614494736186475932160549630939390542165126494166960681499481651861215529870984381726203476917507560266886692644952355421814201350137351435237036912624414444992497142303802423605897110605364956579914507108584002230524766331348271456591814078599780820974961968314684496428310691542272663818486132771177670874927831510002443658417608078383611526899905533629456904234997116303929427262032216072887961072267850618234492852606488522739744757845004694461812790342894353802938671928834585447328398711684245164703625580196678024410303542544534512706792134908369873605619756775207191558754413381571756431003248529020572648048946458999967788526617126349345966896362376841092268841417781414969315002419192181972121568811432459128737128140063645558482525300089060238860392371092102688097987915838860882370022268312322882235690785726190915062699382576041643741555139697348927957856990969985342299599797431503615312038393069808777315725367497595040966093808407117316369389112216628231869173217637452855462790553030636920487796465880633399632793882734473382168542596184679158149228725004404714293460752371865436947855237307240001863573081174929166645758276081272685156100195420794154740486637315823136798695124738873328565945598241199335059398955049459449844741098478330319112865980346771381982151154499846478545530650091824164892591396650703633600023191521502618379988693800703884555191647864959327260468892793195316578510173816406054364319294906641284764788384683586662382042642852654156477478700779123584369965723284711409361741235548687181052639639279285373139084165798451899763979500837428077782309910703522399860010310321116623028924118238023770381424894162717815296210097245221769714495449744327945091943394325259297771090128969600269822520904193880119094781214175887316220311309028456568749910010962366586834018403242866721783519806933018588077977626913774236680220258524711348037750591646286531625306510583751929280541119187219596706615736304036444366663256426643903386694536649648686380122198677895751002327229059364018755164517060321515091173358005987498359799467138817648881479418623694683454881683746841149715181334498096967702613110590140231345676956141227850879905018558219984441819798054463206764413100251255775535830770535620946159535406497134759043192647996190512978586496199656070707105117773853504277795024754647024165589129442822627147868917463795166386552921913398878270019905147510849518894114102536073369047160130990411626048426437835295683097278297774735181045158616674564080237813146623269215019613231938626758927531490945029356207933289363847181438902539297057969524961348607844569521442237914899100699610921669921572167164875488132527187949318543809703388178931170799769792886086681284964861608656928109305369539955846964197786677053847603962194721523867993048528558551380823699291873352033111096244814245789620930756114228971363838828108534030152031715929722499546436547773404017947035596936338462103946797525667033935433489292620531649199724400832489751788129365426568881328357966337292439204382537174357675404105580244018783685041224798457022189315692175787257287203633134300759209060570319508886475377719911176071302732819878165468592717406388218727585026352127436844762994722826390779737322113768842482160812973100323673863050234437722898796145596181862320550301285861980052194863780743808106946940079349630782676930197134206259739125377941060751175427888774493677478593805682322173891730311959284895178856039354015035864931073602059531001572891528828982167810245343327388887928886208615327002834690068636094325052251429781641267821367266715283643659749152264457938319185148303604827363623405060374573505789923003843438436174489383805098509083722050766328250349793203837202162624690093533478114438810603140565070517669964629947543608404988178019652088162307525611931821066493746994641048066011859814337589829896549720562117090677291541318153057715167624128318297771376531788973088699647168159229805877415594828532539839967464064556647594705830374653113373530876658380240145380423210673778776803592627231257495817394581607796277282644312510714532297108722017217547317744900647318022108570947064304280100418971450552007356891519523293614416944016354756866350050833501416942505071203810116719053430543531027953437436446745566839242129860410443198862219469972163224971258348314341755015213118628882713134766297624091644805801186976152536913514712919240503721680740586016832099946807466311777189050656676962849581383790904722087478646766320517056183581970236248227413322748304134245717987665377396011236706627320817654565682680006957454759981618023476448544673508068369492066566895437050571584345511070959483898938738225050292533674383091612495407126805381796487365892131916426837522671623266627483065655765705534239355214893395905702329340402794052884259146049064629582075576563307670749189662176976725361937046200576007893814439695301892528761187544161389682003509216791271836545495416676148151145195082668323677621182991451835324281863619641773620601014510950996746726615703771971266687151564427772359427340566909351858654807999781808513034680104078196607462166928018863385629928965649243954503391493597963417955268639606791452833692467872935741940362479842688642227725662504694679557678170929873774151037857807219938356152056997839625453727441947651198316190826615266016347740875615970031428012228328190610356706715662722241878767131224669837573607121539572299329404101274463156060298348931678277361174057097484704587036227686110677413094941011961262438027467952964727129462752693949019764164538344775554466171428121848999818969114034332797672927989107710137279281184295118233855942385256333164153378143279674287318136458207166174996112638689535976047617221520910027427485161965702038805161865494457444594178063766957037428053543239915792369877811053417485684498667123216132006378630814477106813088898563644909178779463295955587688067277368683836470612208483299572260344016516194247232298740800342116589984844356688576984553507410293250093945014209879983314562948451929862241009275783684229669718641013736581856815277185073259140534024850924787544871716174654424640728091372513505922826813145390369149590652886241000625495880523771672395227312971578042522330551788256261683080675549820375567692574152956993944504349004617185470945673049153218968830613586193253490318451871770642617802890083608004460414305421033261048294750210470303202846332054952531617433058538758154347087854561609738141615145103748777579733574989673510104836750248325511777237502526995647687215364262385606217553691332159421351598905950537513518351520709657614578131639854432532002236696200855408766520105076378983345708235918180749273124590433024519869147132931932462703067876214268579940066030521414045386366551780718510535469417760242493782392451178913322503092692423649855756521279456558275339921490892868856862895022564047205838132429286600764536839036698193759634186899291274131934296059833048690594627623595320676097721540716472990950611858372856271872423573251506230042608074167903809812264198034505185435990821356377966484742250577592243727298923187891299404854048446822719928239317254073429532989089675503790372464487057264894107613242300912487070053676379388189496900004239731820229886894053019610823763957809819187948639826973433528683168917360632750040517847686479093538683816924213175672979768822065627696943474914020483056384006872835738311110986586149510661361915342172527409078742250880056867149831149121019729847242037335904440063130981999650700416787683293610119590221942974317455716336227454789239793488032299063316588917505912406020220045264868457718282165158892171630470709599503997282778168097827497383884195820921583645621293941200045604062174334998171535030513366277293714389988219756129580868518167923841173364269774889246694435264051484911461988227011238661037602452710188911900438270362280391121270021679247152879324195035694278071477495720447513017171148877312193736366348711630105507365864598069586257026976295714123943691621672377694552248018987680338612382795605985191106112971398796002636340393693119651973344711646854574482999700397952536878348512983782198330513744803168936076427075943787200489575435147989033386529956551570669047103070223076797892329848058499725632813524581372640746415923016932853954152472487866287318545051065376430120748079948860283261855738836955246188128622509828635867225708782966017423170535046509131388753895013061151387840089512861842615441729962315731301087767989000918136617870582141517330935619268642915983553727587587676791953536960714236687847602589538927962585440961131240218794236944630211930970546118745080346860636620310193382167597465544174488399379683716417891139157575146359165023126594124268610800205258776019000550873739401445303129974560221438061891795442780328126230093178952504570380957199592993338719686487798275474853570100033092481743129836527369756194343789131822069107283156271772679863538216891518713732520976834628418347371261368933454629405371869789752684339805368137450825001203521193642598238954329102258317328098581116978343883611320940814793654745807336162557057195523274610323601685712314930799144191673243832283659669368716126815118360353441303009936083544193524336572930768154506567477565558211143508568396203781879592033787429012753106951129653074630840496376302289668286168325299592504054003803917262600195834001336180158836765599057537979745423711070158871650976475924365707758401328959478791343481250979029363644046972556422294698558561670817595994409985323205913035009923360820734795546082012200697671744573982535291905800552837118327702125018691644774560916230166739307705017656065679867259837178918123254219579594535869171376148397610005870749992910355727569593729567789260479930835305112462727870603529547312621720559953074675620549217314861961905983960910846471569192459257648138212674016814845327496495507412976753381357634960529826817906824433858135485518651632270319927880227571858035210375443324098235463619647723862420557582355632137583370066602155641218235815280874570372436217877316899649287051943247206509113311767578124e-4966
--3.237587559719012555462219479113823276249784669017340504844942194598519770062059685508835745638324970127939070738424059838293609943191271023342555035986308991521396355375667467208367312819235870119724263252776995195727778126085574034035411017344128491238136414394551514178668780674015531193282296319913113495953953933831631032855605791532328598034154166422617226534880263244723830482289656875701701315902175019974435037627824356684033058939701577883356651733717468531204705842607568803666569711421917525834491783583598401321476176752039857173551930268891446850107760584333855521475305010940756813993214730850216669600967698749412592167692757446422169965426483919224341062751152057061076522973232731542382055087239368522167656194830741819605276971705738272393130698937532095725613383807312946395184980707534803490003540251394324459987958400939111001126190861523615485938285497714410609640798273816511769391568591823198476415765275534341709798367687043373145262933998108452661682659942586304978413812755518166239176614473815940025342279575304159493260770068030636885746695206392378276051948759263882079389379666940357441139816661913198656187703463519723262653223919257185751827493927586153153792077729913353547954808876263400200663495414360816863385220457719546338953323399286762099558324132103460225580066817535680886906060858264089074120360391613368274811868067637495154569071591624185979937989402513750464346904036668477876379544221432800037599944499161940321774835027752710681217554286366043661491013593886229615614494736186475932160549630939390542165126494166960681499481651861215529870984381726203476917507560266886692644952355421814201350137351435237036912624414444992497142303802423605897110605364956579914507108584002230524766331348271456591814078599780820974961968314684496428310691542272663818486132771177670874927831510002443658417608078383611526899905533629456904234997116303929427262032216072887961072267850618234492852606488522739744757845004694461812790342894353802938671928834585447328398711684245164703625580196678024410303542544534512706792134908369873605619756775207191558754413381571756431003248529020572648048946458999967788526617126349345966896362376841092268841417781414969315002419192181972121568811432459128737128140063645558482525300089060238860392371092102688097987915838860882370022268312322882235690785726190915062699382576041643741555139697348927957856990969985342299599797431503615312038393069808777315725367497595040966093808407117316369389112216628231869173217637452855462790553030636920487796465880633399632793882734473382168542596184679158149228725004404714293460752371865436947855237307240001863573081174929166645758276081272685156100195420794154740486637315823136798695124738873328565945598241199335059398955049459449844741098478330319112865980346771381982151154499846478545530650091824164892591396650703633600023191521502618379988693800703884555191647864959327260468892793195316578510173816406054364319294906641284764788384683586662382042642852654156477478700779123584369965723284711409361741235548687181052639639279285373139084165798451899763979500837428077782309910703522399860010310321116623028924118238023770381424894162717815296210097245221769714495449744327945091943394325259297771090128969600269822520904193880119094781214175887316220311309028456568749910010962366586834018403242866721783519806933018588077977626913774236680220258524711348037750591646286531625306510583751929280541119187219596706615736304036444366663256426643903386694536649648686380122198677895751002327229059364018755164517060321515091173358005987498359799467138817648881479418623694683454881683746841149715181334498096967702613110590140231345676956141227850879905018558219984441819798054463206764413100251255775535830770535620946159535406497134759043192647996190512978586496199656070707105117773853504277795024754647024165589129442822627147868917463795166386552921913398878270019905147510849518894114102536073369047160130990411626048426437835295683097278297774735181045158616674564080237813146623269215019613231938626758927531490945029356207933289363847181438902539297057969524961348607844569521442237914899100699610921669921572167164875488132527187949318543809703388178931170799769792886086681284964861608656928109305369539955846964197786677053847603962194721523867993048528558551380823699291873352033111096244814245789620930756114228971363838828108534030152031715929722499546436547773404017947035596936338462103946797525667033935433489292620531649199724400832489751788129365426568881328357966337292439204382537174357675404105580244018783685041224798457022189315692175787257287203633134300759209060570319508886475377719911176071302732819878165468592717406388218727585026352127436844762994722826390779737322113768842482160812973100323673863050234437722898796145596181862320550301285861980052194863780743808106946940079349630782676930197134206259739125377941060751175427888774493677478593805682322173891730311959284895178856039354015035864931073602059531001572891528828982167810245343327388887928886208615327002834690068636094325052251429781641267821367266715283643659749152264457938319185148303604827363623405060374573505789923003843438436174489383805098509083722050766328250349793203837202162624690093533478114438810603140565070517669964629947543608404988178019652088162307525611931821066493746994641048066011859814337589829896549720562117090677291541318153057715167624128318297771376531788973088699647168159229805877415594828532539839967464064556647594705830374653113373530876658380240145380423210673778776803592627231257495817394581607796277282644312510714532297108722017217547317744900647318022108570947064304280100418971450552007356891519523293614416944016354756866350050833501416942505071203810116719053430543531027953437436446745566839242129860410443198862219469972163224971258348314341755015213118628882713134766297624091644805801186976152536913514712919240503721680740586016832099946807466311777189050656676962849581383790904722087478646766320517056183581970236248227413322748304134245717987665377396011236706627320817654565682680006957454759981618023476448544673508068369492066566895437050571584345511070959483898938738225050292533674383091612495407126805381796487365892131916426837522671623266627483065655765705534239355214893395905702329340402794052884259146049064629582075576563307670749189662176976725361937046200576007893814439695301892528761187544161389682003509216791271836545495416676148151145195082668323677621182991451835324281863619641773620601014510950996746726615703771971266687151564427772359427340566909351858654807999781808513034680104078196607462166928018863385629928965649243954503391493597963417955268639606791452833692467872935741940362479842688642227725662504694679557678170929873774151037857807219938356152056997839625453727441947651198316190826615266016347740875615970031428012228328190610356706715662722241878767131224669837573607121539572299329404101274463156060298348931678277361174057097484704587036227686110677413094941011961262438027467952964727129462752693949019764164538344775554466171428121848999818969114034332797672927989107710137279281184295118233855942385256333164153378143279674287318136458207166174996112638689535976047617221520910027427485161965702038805161865494457444594178063766957037428053543239915792369877811053417485684498667123216132006378630814477106813088898563644909178779463295955587688067277368683836470612208483299572260344016516194247232298740800342116589984844356688576984553507410293250093945014209879983314562948451929862241009275783684229669718641013736581856815277185073259140534024850924787544871716174654424640728091372513505922826813145390369149590652886241000625495880523771672395227312971578042522330551788256261683080675549820375567692574152956993944504349004617185470945673049153218968830613586193253490318451871770642617802890083608004460414305421033261048294750210470303202846332054952531617433058538758154347087854561609738141615145103748777579733574989673510104836750248325511777237502526995647687215364262385606217553691332159421351598905950537513518351520709657614578131639854432532002236696200855408766520105076378983345708235918180749273124590433024519869147132931932462703067876214268579940066030521414045386366551780718510535469417760242493782392451178913322503092692423649855756521279456558275339921490892868856862895022564047205838132429286600764536839036698193759634186899291274131934296059833048690594627623595320676097721540716472990950611858372856271872423573251506230042608074167903809812264198034505185435990821356377966484742250577592243727298923187891299404854048446822719928239317254073429532989089675503790372464487057264894107613242300912487070053676379388189496900004239731820229886894053019610823763957809819187948639826973433528683168917360632750040517847686479093538683816924213175672979768822065627696943474914020483056384006872835738311110986586149510661361915342172527409078742250880056867149831149121019729847242037335904440063130981999650700416787683293610119590221942974317455716336227454789239793488032299063316588917505912406020220045264868457718282165158892171630470709599503997282778168097827497383884195820921583645621293941200045604062174334998171535030513366277293714389988219756129580868518167923841173364269774889246694435264051484911461988227011238661037602452710188911900438270362280391121270021679247152879324195035694278071477495720447513017171148877312193736366348711630105507365864598069586257026976295714123943691621672377694552248018987680338612382795605985191106112971398796002636340393693119651973344711646854574482999700397952536878348512983782198330513744803168936076427075943787200489575435147989033386529956551570669047103070223076797892329848058499725632813524581372640746415923016932853954152472487866287318545051065376430120748079948860283261855738836955246188128622509828635867225708782966017423170535046509131388753895013061151387840089512861842615441729962315731301087767989000918136617870582141517330935619268642915983553727587587676791953536960714236687847602589538927962585440961131240218794236944630211930970546118745080346860636620310193382167597465544174488399379683716417891139157575146359165023126594124268610800205258776019000550873739401445303129974560221438061891795442780328126230093178952504570380957199592993338719686487798275474853570100033092481743129836527369756194343789131822069107283156271772679863538216891518713732520976834628418347371261368933454629405371869789752684339805368137450825001203521193642598238954329102258317328098581116978343883611320940814793654745807336162557057195523274610323601685712314930799144191673243832283659669368716126815118360353441303009936083544193524336572930768154506567477565558211143508568396203781879592033787429012753106951129653074630840496376302289668286168325299592504054003803917262600195834001336180158836765599057537979745423711070158871650976475924365707758401328959478791343481250979029363644046972556422294698558561670817595994409985323205913035009923360820734795546082012200697671744573982535291905800552837118327702125018691644774560916230166739307705017656065679867259837178918123254219579594535869171376148397610005870749992910355727569593729567789260479930835305112462727870603529547312621720559953074675620549217314861961905983960910846471569192459257648138212674016814845327496495507412976753381357634960529826817906824433858135485518651632270319927880227571858035210375443324098235463619647723862420557582355632137583370066602155641218235815280874570372436217877316899649287051943247206509113311767578125e-4966
--3.237587559719012555462219479113823276249784669017340504844942194598519770062059685508835745638324970127939070738424059838293609943191271023342555035986308991521396355375667467208367312819235870119724263252776995195727778126085574034035411017344128491238136414394551514178668780674015531193282296319913113495953953933831631032855605791532328598034154166422617226534880263244723830482289656875701701315902175019974435037627824356684033058939701577883356651733717468531204705842607568803666569711421917525834491783583598401321476176752039857173551930268891446850107760584333855521475305010940756813993214730850216669600967698749412592167692757446422169965426483919224341062751152057061076522973232731542382055087239368522167656194830741819605276971705738272393130698937532095725613383807312946395184980707534803490003540251394324459987958400939111001126190861523615485938285497714410609640798273816511769391568591823198476415765275534341709798367687043373145262933998108452661682659942586304978413812755518166239176614473815940025342279575304159493260770068030636885746695206392378276051948759263882079389379666940357441139816661913198656187703463519723262653223919257185751827493927586153153792077729913353547954808876263400200663495414360816863385220457719546338953323399286762099558324132103460225580066817535680886906060858264089074120360391613368274811868067637495154569071591624185979937989402513750464346904036668477876379544221432800037599944499161940321774835027752710681217554286366043661491013593886229615614494736186475932160549630939390542165126494166960681499481651861215529870984381726203476917507560266886692644952355421814201350137351435237036912624414444992497142303802423605897110605364956579914507108584002230524766331348271456591814078599780820974961968314684496428310691542272663818486132771177670874927831510002443658417608078383611526899905533629456904234997116303929427262032216072887961072267850618234492852606488522739744757845004694461812790342894353802938671928834585447328398711684245164703625580196678024410303542544534512706792134908369873605619756775207191558754413381571756431003248529020572648048946458999967788526617126349345966896362376841092268841417781414969315002419192181972121568811432459128737128140063645558482525300089060238860392371092102688097987915838860882370022268312322882235690785726190915062699382576041643741555139697348927957856990969985342299599797431503615312038393069808777315725367497595040966093808407117316369389112216628231869173217637452855462790553030636920487796465880633399632793882734473382168542596184679158149228725004404714293460752371865436947855237307240001863573081174929166645758276081272685156100195420794154740486637315823136798695124738873328565945598241199335059398955049459449844741098478330319112865980346771381982151154499846478545530650091824164892591396650703633600023191521502618379988693800703884555191647864959327260468892793195316578510173816406054364319294906641284764788384683586662382042642852654156477478700779123584369965723284711409361741235548687181052639639279285373139084165798451899763979500837428077782309910703522399860010310321116623028924118238023770381424894162717815296210097245221769714495449744327945091943394325259297771090128969600269822520904193880119094781214175887316220311309028456568749910010962366586834018403242866721783519806933018588077977626913774236680220258524711348037750591646286531625306510583751929280541119187219596706615736304036444366663256426643903386694536649648686380122198677895751002327229059364018755164517060321515091173358005987498359799467138817648881479418623694683454881683746841149715181334498096967702613110590140231345676956141227850879905018558219984441819798054463206764413100251255775535830770535620946159535406497134759043192647996190512978586496199656070707105117773853504277795024754647024165589129442822627147868917463795166386552921913398878270019905147510849518894114102536073369047160130990411626048426437835295683097278297774735181045158616674564080237813146623269215019613231938626758927531490945029356207933289363847181438902539297057969524961348607844569521442237914899100699610921669921572167164875488132527187949318543809703388178931170799769792886086681284964861608656928109305369539955846964197786677053847603962194721523867993048528558551380823699291873352033111096244814245789620930756114228971363838828108534030152031715929722499546436547773404017947035596936338462103946797525667033935433489292620531649199724400832489751788129365426568881328357966337292439204382537174357675404105580244018783685041224798457022189315692175787257287203633134300759209060570319508886475377719911176071302732819878165468592717406388218727585026352127436844762994722826390779737322113768842482160812973100323673863050234437722898796145596181862320550301285861980052194863780743808106946940079349630782676930197134206259739125377941060751175427888774493677478593805682322173891730311959284895178856039354015035864931073602059531001572891528828982167810245343327388887928886208615327002834690068636094325052251429781641267821367266715283643659749152264457938319185148303604827363623405060374573505789923003843438436174489383805098509083722050766328250349793203837202162624690093533478114438810603140565070517669964629947543608404988178019652088162307525611931821066493746994641048066011859814337589829896549720562117090677291541318153057715167624128318297771376531788973088699647168159229805877415594828532539839967464064556647594705830374653113373530876658380240145380423210673778776803592627231257495817394581607796277282644312510714532297108722017217547317744900647318022108570947064304280100418971450552007356891519523293614416944016354756866350050833501416942505071203810116719053430543531027953437436446745566839242129860410443198862219469972163224971258348314341755015213118628882713134766297624091644805801186976152536913514712919240503721680740586016832099946807466311777189050656676962849581383790904722087478646766320517056183581970236248227413322748304134245717987665377396011236706627320817654565682680006957454759981618023476448544673508068369492066566895437050571584345511070959483898938738225050292533674383091612495407126805381796487365892131916426837522671623266627483065655765705534239355214893395905702329340402794052884259146049064629582075576563307670749189662176976725361937046200576007893814439695301892528761187544161389682003509216791271836545495416676148151145195082668323677621182991451835324281863619641773620601014510950996746726615703771971266687151564427772359427340566909351858654807999781808513034680104078196607462166928018863385629928965649243954503391493597963417955268639606791452833692467872935741940362479842688642227725662504694679557678170929873774151037857807219938356152056997839625453727441947651198316190826615266016347740875615970031428012228328190610356706715662722241878767131224669837573607121539572299329404101274463156060298348931678277361174057097484704587036227686110677413094941011961262438027467952964727129462752693949019764164538344775554466171428121848999818969114034332797672927989107710137279281184295118233855942385256333164153378143279674287318136458207166174996112638689535976047617221520910027427485161965702038805161865494457444594178063766957037428053543239915792369877811053417485684498667123216132006378630814477106813088898563644909178779463295955587688067277368683836470612208483299572260344016516194247232298740800342116589984844356688576984553507410293250093945014209879983314562948451929862241009275783684229669718641013736581856815277185073259140534024850924787544871716174654424640728091372513505922826813145390369149590652886241000625495880523771672395227312971578042522330551788256261683080675549820375567692574152956993944504349004617185470945673049153218968830613586193253490318451871770642617802890083608004460414305421033261048294750210470303202846332054952531617433058538758154347087854561609738141615145103748777579733574989673510104836750248325511777237502526995647687215364262385606217553691332159421351598905950537513518351520709657614578131639854432532002236696200855408766520105076378983345708235918180749273124590433024519869147132931932462703067876214268579940066030521414045386366551780718510535469417760242493782392451178913322503092692423649855756521279456558275339921490892868856862895022564047205838132429286600764536839036698193759634186899291274131934296059833048690594627623595320676097721540716472990950611858372856271872423573251506230042608074167903809812264198034505185435990821356377966484742250577592243727298923187891299404854048446822719928239317254073429532989089675503790372464487057264894107613242300912487070053676379388189496900004239731820229886894053019610823763957809819187948639826973433528683168917360632750040517847686479093538683816924213175672979768822065627696943474914020483056384006872835738311110986586149510661361915342172527409078742250880056867149831149121019729847242037335904440063130981999650700416787683293610119590221942974317455716336227454789239793488032299063316588917505912406020220045264868457718282165158892171630470709599503997282778168097827497383884195820921583645621293941200045604062174334998171535030513366277293714389988219756129580868518167923841173364269774889246694435264051484911461988227011238661037602452710188911900438270362280391121270021679247152879324195035694278071477495720447513017171148877312193736366348711630105507365864598069586257026976295714123943691621672377694552248018987680338612382795605985191106112971398796002636340393693119651973344711646854574482999700397952536878348512983782198330513744803168936076427075943787200489575435147989033386529956551570669047103070223076797892329848058499725632813524581372640746415923016932853954152472487866287318545051065376430120748079948860283261855738836955246188128622509828635867225708782966017423170535046509131388753895013061151387840089512861842615441729962315731301087767989000918136617870582141517330935619268642915983553727587587676791953536960714236687847602589538927962585440961131240218794236944630211930970546118745080346860636620310193382167597465544174488399379683716417891139157575146359165023126594124268610800205258776019000550873739401445303129974560221438061891795442780328126230093178952504570380957199592993338719686487798275474853570100033092481743129836527369756194343789131822069107283156271772679863538216891518713732520976834628418347371261368933454629405371869789752684339805368137450825001203521193642598238954329102258317328098581116978343883611320940814793654745807336162557057195523274610323601685712314930799144191673243832283659669368716126815118360353441303009936083544193524336572930768154506567477565558211143508568396203781879592033787429012753106951129653074630840496376302289668286168325299592504054003803917262600195834001336180158836765599057537979745423711070158871650976475924365707758401328959478791343481250979029363644046972556422294698558561670817595994409985323205913035009923360820734795546082012200697671744573982535291905800552837118327702125018691644774560916230166739307705017656065679867259837178918123254219579594535869171376148397610005870749992910355727569593729567789260479930835305112462727870603529547312621720559953074675620549217314861961905983960910846471569192459257648138212674016814845327496495507412976753381357634960529826817906824433858135485518651632270319927880227571858035210375443324098235463619647723862420557582355632137583370066602155641218235815280874570372436217877316899649287051943247206509113311767578126e-4966
diff --git a/stdlib/tst-strtod-round-data.h b/stdlib/tst-strtod-round-data.h
deleted file mode 100644
index fc09bc9117..0000000000
--- a/stdlib/tst-strtod-round-data.h
+++ /dev/null
@@ -1,11584 +0,0 @@
-/* This file was generated by gen-tst-strtod-round.c from tst-strtod-round-data. */
-static const struct test tests[] = {
- TEST ("3.518437208883201171875E+013",
- false,
- 0x2p+44,
- 0x2p+44,
- 0x2p+44,
- 0x2.000004p+44,
- false,
- 0x2.0000000000002p+44,
- 0x2.0000000000004p+44,
- 0x2.0000000000002p+44,
- 0x2.0000000000004p+44,
- true,
- 0x2.0000000000003p+44,
- 0x2.0000000000003p+44,
- 0x2.0000000000003p+44,
- 0x2.0000000000003p+44,
- true,
- 0x2.0000000000003p+44,
- 0x2.0000000000003p+44,
- 0x2.0000000000003p+44,
- 0x2.0000000000003p+44,
- true,
- 0x2.0000000000003p+44,
- 0x2.0000000000003p+44,
- 0x2.0000000000003p+44,
- 0x2.0000000000003p+44,
- true,
- 0x2.0000000000003p+44,
- 0x2.0000000000003p+44,
- 0x2.0000000000003p+44,
- 0x2.0000000000003p+44),
- TEST ("1.00000005960464477550",
- false,
- 0x1p+0,
- 0x1.000002p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.0000010000001p+0,
- false,
- 0x1.0000010000000002p+0,
- 0x1.0000010000000002p+0,
- 0x1.0000010000000002p+0,
- 0x1.0000010000000004p+0,
- false,
- 0x1.0000010000000002p+0,
- 0x1.0000010000000002p+0,
- 0x1.0000010000000002p+0,
- 0x1.0000010000000004p+0,
- false,
- 0x1.0000010000000002048242f2ffp+0,
- 0x1.0000010000000002048242f2ff8p+0,
- 0x1.0000010000000002048242f2ffp+0,
- 0x1.0000010000000002048242f2ff8p+0,
- false,
- 0x1.0000010000000002048242f2ff66p+0,
- 0x1.0000010000000002048242f2ff67p+0,
- 0x1.0000010000000002048242f2ff66p+0,
- 0x1.0000010000000002048242f2ff67p+0),
- TEST ("1.0000000596046447755",
- false,
- 0x1p+0,
- 0x1.000002p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.0000010000001p+0,
- false,
- 0x1.0000010000000002p+0,
- 0x1.0000010000000002p+0,
- 0x1.0000010000000002p+0,
- 0x1.0000010000000004p+0,
- false,
- 0x1.0000010000000002p+0,
- 0x1.0000010000000002p+0,
- 0x1.0000010000000002p+0,
- 0x1.0000010000000004p+0,
- false,
- 0x1.0000010000000002048242f2ffp+0,
- 0x1.0000010000000002048242f2ff8p+0,
- 0x1.0000010000000002048242f2ffp+0,
- 0x1.0000010000000002048242f2ff8p+0,
- false,
- 0x1.0000010000000002048242f2ff66p+0,
- 0x1.0000010000000002048242f2ff67p+0,
- 0x1.0000010000000002048242f2ff66p+0,
- 0x1.0000010000000002048242f2ff67p+0),
- TEST ("1.000000059604644776",
- false,
- 0x1p+0,
- 0x1.000002p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.0000010000001p+0,
- false,
- 0x1.000001000000000ap+0,
- 0x1.000001000000000cp+0,
- 0x1.000001000000000ap+0,
- 0x1.000001000000000cp+0,
- false,
- 0x1.000001000000000ap+0,
- 0x1.000001000000000cp+0,
- 0x1.000001000000000ap+0,
- 0x1.000001000000000cp+0,
- false,
- 0x1.000001000000000b3db12bdc21p+0,
- 0x1.000001000000000b3db12bdc21p+0,
- 0x1.000001000000000b3db12bdc21p+0,
- 0x1.000001000000000b3db12bdc218p+0,
- false,
- 0x1.000001000000000b3db12bdc213cp+0,
- 0x1.000001000000000b3db12bdc213dp+0,
- 0x1.000001000000000b3db12bdc213cp+0,
- 0x1.000001000000000b3db12bdc213dp+0),
- TEST ("1.000000059604644775",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000000fffffffp+0,
- 0x1.000001p+0,
- 0x1.000000fffffffp+0,
- 0x1.000001p+0,
- false,
- 0x1.000000fffffffff8p+0,
- 0x1.000000fffffffff8p+0,
- 0x1.000000fffffffff8p+0,
- 0x1.000000fffffffffap+0,
- false,
- 0x1.000000fffffffff8p+0,
- 0x1.000000fffffffff8p+0,
- 0x1.000000fffffffff8p+0,
- 0x1.000000fffffffffap+0,
- false,
- 0x1.000000fffffffff8cb535a09dd8p+0,
- 0x1.000000fffffffff8cb535a09dd8p+0,
- 0x1.000000fffffffff8cb535a09dd8p+0,
- 0x1.000000fffffffff8cb535a09dep+0,
- false,
- 0x1.000000fffffffff8cb535a09dd9p+0,
- 0x1.000000fffffffff8cb535a09dd91p+0,
- 0x1.000000fffffffff8cb535a09dd9p+0,
- 0x1.000000fffffffff8cb535a09dd91p+0),
- TEST ("1.00000005960464478",
- false,
- 0x1p+0,
- 0x1.000002p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.0000010000001p+0,
- false,
- 0x1.0000010000000054p+0,
- 0x1.0000010000000056p+0,
- 0x1.0000010000000054p+0,
- 0x1.0000010000000056p+0,
- false,
- 0x1.0000010000000054p+0,
- 0x1.0000010000000056p+0,
- 0x1.0000010000000054p+0,
- 0x1.0000010000000056p+0,
- false,
- 0x1.0000010000000055072873252f8p+0,
- 0x1.0000010000000055072873253p+0,
- 0x1.0000010000000055072873252f8p+0,
- 0x1.0000010000000055072873253p+0,
- false,
- 0x1.0000010000000055072873252febp+0,
- 0x1.0000010000000055072873252febp+0,
- 0x1.0000010000000055072873252febp+0,
- 0x1.0000010000000055072873252fecp+0),
- TEST ("1.0000000596046448",
- false,
- 0x1p+0,
- 0x1.000002p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.0000010000001p+0,
- false,
- 0x1.00000100000001c4p+0,
- 0x1.00000100000001c6p+0,
- 0x1.00000100000001c4p+0,
- 0x1.00000100000001c6p+0,
- false,
- 0x1.00000100000001c4p+0,
- 0x1.00000100000001c6p+0,
- 0x1.00000100000001c4p+0,
- 0x1.00000100000001c6p+0,
- false,
- 0x1.00000100000001c5f67cd79279p+0,
- 0x1.00000100000001c5f67cd792798p+0,
- 0x1.00000100000001c5f67cd79279p+0,
- 0x1.00000100000001c5f67cd792798p+0,
- false,
- 0x1.00000100000001c5f67cd7927953p+0,
- 0x1.00000100000001c5f67cd7927954p+0,
- 0x1.00000100000001c5f67cd7927953p+0,
- 0x1.00000100000001c5f67cd7927954p+0),
- TEST ("1.000000059604645",
- false,
- 0x1p+0,
- 0x1.000002p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.0000010000001p+0,
- 0x1.0000010000001p+0,
- 0x1.0000010000001p+0,
- 0x1.0000010000002p+0,
- false,
- 0x1.000001000000102ep+0,
- 0x1.000001000000103p+0,
- 0x1.000001000000102ep+0,
- 0x1.000001000000103p+0,
- false,
- 0x1.000001000000102ep+0,
- 0x1.000001000000103p+0,
- 0x1.000001000000102ep+0,
- 0x1.000001000000103p+0,
- false,
- 0x1.000001000000102f4fc8c3d757p+0,
- 0x1.000001000000102f4fc8c3d7578p+0,
- 0x1.000001000000102f4fc8c3d757p+0,
- 0x1.000001000000102f4fc8c3d7578p+0,
- false,
- 0x1.000001000000102f4fc8c3d75769p+0,
- 0x1.000001000000102f4fc8c3d75769p+0,
- 0x1.000001000000102f4fc8c3d75769p+0,
- 0x1.000001000000102f4fc8c3d7576ap+0),
- TEST ("1.00000005960464",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000000fffffeap+0,
- 0x1.000000fffffeap+0,
- 0x1.000000fffffeap+0,
- 0x1.000000fffffebp+0,
- false,
- 0x1.000000fffffea7e4p+0,
- 0x1.000000fffffea7e6p+0,
- 0x1.000000fffffea7e4p+0,
- 0x1.000000fffffea7e6p+0,
- false,
- 0x1.000000fffffea7e4p+0,
- 0x1.000000fffffea7e6p+0,
- 0x1.000000fffffea7e4p+0,
- 0x1.000000fffffea7e6p+0,
- false,
- 0x1.000000fffffea7e5975eb11da7p+0,
- 0x1.000000fffffea7e5975eb11da78p+0,
- 0x1.000000fffffea7e5975eb11da7p+0,
- 0x1.000000fffffea7e5975eb11da78p+0,
- false,
- 0x1.000000fffffea7e5975eb11da74ap+0,
- 0x1.000000fffffea7e5975eb11da74bp+0,
- 0x1.000000fffffea7e5975eb11da74ap+0,
- 0x1.000000fffffea7e5975eb11da74bp+0),
- TEST ("1.0000000596046",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000000fffff36p+0,
- 0x1.000000fffff36p+0,
- 0x1.000000fffff36p+0,
- 0x1.000000fffff37p+0,
- false,
- 0x1.000000fffff36596p+0,
- 0x1.000000fffff36598p+0,
- 0x1.000000fffff36596p+0,
- 0x1.000000fffff36598p+0,
- false,
- 0x1.000000fffff36596p+0,
- 0x1.000000fffff36598p+0,
- 0x1.000000fffff36596p+0,
- 0x1.000000fffff36598p+0,
- false,
- 0x1.000000fffff36597d40e1b5026p+0,
- 0x1.000000fffff36597d40e1b50268p+0,
- 0x1.000000fffff36597d40e1b5026p+0,
- 0x1.000000fffff36597d40e1b50268p+0,
- false,
- 0x1.000000fffff36597d40e1b502655p+0,
- 0x1.000000fffff36597d40e1b502656p+0,
- 0x1.000000fffff36597d40e1b502655p+0,
- 0x1.000000fffff36597d40e1b502656p+0),
- TEST ("1.000000059605",
- false,
- 0x1p+0,
- 0x1.000002p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000001000063fp+0,
- 0x1.000001000064p+0,
- 0x1.000001000063fp+0,
- 0x1.000001000064p+0,
- false,
- 0x1.000001000063fcap+0,
- 0x1.000001000063fca2p+0,
- 0x1.000001000063fcap+0,
- 0x1.000001000063fca2p+0,
- false,
- 0x1.000001000063fcap+0,
- 0x1.000001000063fca2p+0,
- 0x1.000001000063fcap+0,
- 0x1.000001000063fca2p+0,
- false,
- 0x1.000001000063fca17533f5572f8p+0,
- 0x1.000001000063fca17533f5573p+0,
- 0x1.000001000063fca17533f5572f8p+0,
- 0x1.000001000063fca17533f5573p+0,
- false,
- 0x1.000001000063fca17533f5572fe9p+0,
- 0x1.000001000063fca17533f5572feap+0,
- 0x1.000001000063fca17533f5572fe9p+0,
- 0x1.000001000063fca17533f5572feap+0),
- TEST ("1.00000005960",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000000fffae49p+0,
- 0x1.000000fffae4ap+0,
- 0x1.000000fffae49p+0,
- 0x1.000000fffae4ap+0,
- false,
- 0x1.000000fffae49ca8p+0,
- 0x1.000000fffae49caap+0,
- 0x1.000000fffae49ca8p+0,
- 0x1.000000fffae49caap+0,
- false,
- 0x1.000000fffae49ca8p+0,
- 0x1.000000fffae49caap+0,
- 0x1.000000fffae49ca8p+0,
- 0x1.000000fffae49caap+0,
- false,
- 0x1.000000fffae49ca916dacfff38p+0,
- 0x1.000000fffae49ca916dacfff38p+0,
- 0x1.000000fffae49ca916dacfff38p+0,
- 0x1.000000fffae49ca916dacfff388p+0,
- false,
- 0x1.000000fffae49ca916dacfff382dp+0,
- 0x1.000000fffae49ca916dacfff382dp+0,
- 0x1.000000fffae49ca916dacfff382dp+0,
- 0x1.000000fffae49ca916dacfff382ep+0),
- TEST ("1.0000000596",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000000fffae49p+0,
- 0x1.000000fffae4ap+0,
- 0x1.000000fffae49p+0,
- 0x1.000000fffae4ap+0,
- false,
- 0x1.000000fffae49ca8p+0,
- 0x1.000000fffae49caap+0,
- 0x1.000000fffae49ca8p+0,
- 0x1.000000fffae49caap+0,
- false,
- 0x1.000000fffae49ca8p+0,
- 0x1.000000fffae49caap+0,
- 0x1.000000fffae49ca8p+0,
- 0x1.000000fffae49caap+0,
- false,
- 0x1.000000fffae49ca916dacfff38p+0,
- 0x1.000000fffae49ca916dacfff38p+0,
- 0x1.000000fffae49ca916dacfff38p+0,
- 0x1.000000fffae49ca916dacfff388p+0,
- false,
- 0x1.000000fffae49ca916dacfff382dp+0,
- 0x1.000000fffae49ca916dacfff382dp+0,
- 0x1.000000fffae49ca916dacfff382dp+0,
- 0x1.000000fffae49ca916dacfff382ep+0),
- TEST ("1.000000060",
- false,
- 0x1p+0,
- 0x1.000002p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.00000101b2b29p+0,
- 0x1.00000101b2b2ap+0,
- 0x1.00000101b2b29p+0,
- 0x1.00000101b2b2ap+0,
- false,
- 0x1.00000101b2b29a46p+0,
- 0x1.00000101b2b29a46p+0,
- 0x1.00000101b2b29a46p+0,
- 0x1.00000101b2b29a48p+0,
- false,
- 0x1.00000101b2b29a46p+0,
- 0x1.00000101b2b29a46p+0,
- 0x1.00000101b2b29a46p+0,
- 0x1.00000101b2b29a48p+0,
- false,
- 0x1.00000101b2b29a4692b67b7ca3p+0,
- 0x1.00000101b2b29a4692b67b7ca3p+0,
- 0x1.00000101b2b29a4692b67b7ca3p+0,
- 0x1.00000101b2b29a4692b67b7ca38p+0,
- false,
- 0x1.00000101b2b29a4692b67b7ca313p+0,
- 0x1.00000101b2b29a4692b67b7ca314p+0,
- 0x1.00000101b2b29a4692b67b7ca313p+0,
- 0x1.00000101b2b29a4692b67b7ca314p+0),
- TEST ("1.00000006",
- false,
- 0x1p+0,
- 0x1.000002p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.00000101b2b29p+0,
- 0x1.00000101b2b2ap+0,
- 0x1.00000101b2b29p+0,
- 0x1.00000101b2b2ap+0,
- false,
- 0x1.00000101b2b29a46p+0,
- 0x1.00000101b2b29a46p+0,
- 0x1.00000101b2b29a46p+0,
- 0x1.00000101b2b29a48p+0,
- false,
- 0x1.00000101b2b29a46p+0,
- 0x1.00000101b2b29a46p+0,
- 0x1.00000101b2b29a46p+0,
- 0x1.00000101b2b29a48p+0,
- false,
- 0x1.00000101b2b29a4692b67b7ca3p+0,
- 0x1.00000101b2b29a4692b67b7ca3p+0,
- 0x1.00000101b2b29a4692b67b7ca3p+0,
- 0x1.00000101b2b29a4692b67b7ca38p+0,
- false,
- 0x1.00000101b2b29a4692b67b7ca313p+0,
- 0x1.00000101b2b29a4692b67b7ca314p+0,
- 0x1.00000101b2b29a4692b67b7ca313p+0,
- 0x1.00000101b2b29a4692b67b7ca314p+0),
- TEST ("1.0000001",
- false,
- 0x1p+0,
- 0x1.000002p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000001ad7f29ap+0,
- 0x1.000001ad7f29bp+0,
- 0x1.000001ad7f29ap+0,
- 0x1.000001ad7f29bp+0,
- false,
- 0x1.000001ad7f29abcap+0,
- 0x1.000001ad7f29abcap+0,
- 0x1.000001ad7f29abcap+0,
- 0x1.000001ad7f29abccp+0,
- false,
- 0x1.000001ad7f29abcap+0,
- 0x1.000001ad7f29abcap+0,
- 0x1.000001ad7f29abcap+0,
- 0x1.000001ad7f29abccp+0,
- false,
- 0x1.000001ad7f29abcaf485787a65p+0,
- 0x1.000001ad7f29abcaf485787a65p+0,
- 0x1.000001ad7f29abcaf485787a65p+0,
- 0x1.000001ad7f29abcaf485787a658p+0,
- false,
- 0x1.000001ad7f29abcaf485787a652p+0,
- 0x1.000001ad7f29abcaf485787a6521p+0,
- 0x1.000001ad7f29abcaf485787a652p+0,
- 0x1.000001ad7f29abcaf485787a6521p+0),
- TEST ("1.000000",
- true,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- true,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- true,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- true,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- true,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- true,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0),
- TEST ("1.00000000000000011113",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1p+0,
- 0x1.0000000000001p+0,
- 0x1p+0,
- 0x1.0000000000001p+0,
- false,
- 0x1.00000000000008p+0,
- 0x1.0000000000000802p+0,
- 0x1.00000000000008p+0,
- 0x1.0000000000000802p+0,
- false,
- 0x1.00000000000008p+0,
- 0x1.0000000000000802p+0,
- 0x1.00000000000008p+0,
- 0x1.0000000000000802p+0,
- false,
- 0x1.0000000000000801fc96557232p+0,
- 0x1.0000000000000801fc96557232p+0,
- 0x1.0000000000000801fc96557232p+0,
- 0x1.0000000000000801fc965572328p+0,
- false,
- 0x1.0000000000000801fc9655723222p+0,
- 0x1.0000000000000801fc9655723222p+0,
- 0x1.0000000000000801fc9655723222p+0,
- 0x1.0000000000000801fc9655723223p+0),
- TEST ("1.00000000000000011103",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1p+0,
- 0x1.0000000000001p+0,
- 0x1p+0,
- 0x1.0000000000001p+0,
- false,
- 0x1.00000000000008p+0,
- 0x1.00000000000008p+0,
- 0x1.00000000000008p+0,
- 0x1.0000000000000802p+0,
- false,
- 0x1.00000000000008p+0,
- 0x1.00000000000008p+0,
- 0x1.00000000000008p+0,
- 0x1.0000000000000802p+0,
- false,
- 0x1.00000000000008002459c076c48p+0,
- 0x1.00000000000008002459c076c5p+0,
- 0x1.00000000000008002459c076c48p+0,
- 0x1.00000000000008002459c076c5p+0,
- false,
- 0x1.00000000000008002459c076c4f7p+0,
- 0x1.00000000000008002459c076c4f8p+0,
- 0x1.00000000000008002459c076c4f7p+0,
- 0x1.00000000000008002459c076c4f8p+0),
- TEST ("1.00000000000000011102",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.0000000000001p+0,
- false,
- 0x1.00000000000007fep+0,
- 0x1.00000000000008p+0,
- 0x1.00000000000007fep+0,
- 0x1.00000000000008p+0,
- false,
- 0x1.00000000000007fep+0,
- 0x1.00000000000008p+0,
- 0x1.00000000000007fep+0,
- 0x1.00000000000008p+0,
- false,
- 0x1.00000000000007fff5207e5dap+0,
- 0x1.00000000000007fff5207e5da08p+0,
- 0x1.00000000000007fff5207e5dap+0,
- 0x1.00000000000007fff5207e5da08p+0,
- false,
- 0x1.00000000000007fff5207e5da073p+0,
- 0x1.00000000000007fff5207e5da073p+0,
- 0x1.00000000000007fff5207e5da073p+0,
- 0x1.00000000000007fff5207e5da074p+0),
- TEST ("1.00000000000000011101",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.0000000000001p+0,
- false,
- 0x1.00000000000007fep+0,
- 0x1.00000000000008p+0,
- 0x1.00000000000007fep+0,
- 0x1.00000000000008p+0,
- false,
- 0x1.00000000000007fep+0,
- 0x1.00000000000008p+0,
- 0x1.00000000000007fep+0,
- 0x1.00000000000008p+0,
- false,
- 0x1.00000000000007ffc5e73c447b8p+0,
- 0x1.00000000000007ffc5e73c447cp+0,
- 0x1.00000000000007ffc5e73c447b8p+0,
- 0x1.00000000000007ffc5e73c447cp+0,
- false,
- 0x1.00000000000007ffc5e73c447befp+0,
- 0x1.00000000000007ffc5e73c447befp+0,
- 0x1.00000000000007ffc5e73c447befp+0,
- 0x1.00000000000007ffc5e73c447bfp+0),
- TEST ("1.0000000000000001111",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1p+0,
- 0x1.0000000000001p+0,
- 0x1p+0,
- 0x1.0000000000001p+0,
- false,
- 0x1.00000000000008p+0,
- 0x1.0000000000000802p+0,
- 0x1.00000000000008p+0,
- 0x1.0000000000000802p+0,
- false,
- 0x1.00000000000008p+0,
- 0x1.0000000000000802p+0,
- 0x1.00000000000008p+0,
- 0x1.0000000000000802p+0,
- false,
- 0x1.00000000000008016eea8f26c48p+0,
- 0x1.00000000000008016eea8f26c48p+0,
- 0x1.00000000000008016eea8f26c48p+0,
- 0x1.00000000000008016eea8f26c5p+0,
- false,
- 0x1.00000000000008016eea8f26c495p+0,
- 0x1.00000000000008016eea8f26c496p+0,
- 0x1.00000000000008016eea8f26c495p+0,
- 0x1.00000000000008016eea8f26c496p+0),
- TEST ("1.000000000000000111",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.0000000000001p+0,
- false,
- 0x1.00000000000007fep+0,
- 0x1.00000000000008p+0,
- 0x1.00000000000007fep+0,
- 0x1.00000000000008p+0,
- false,
- 0x1.00000000000007fep+0,
- 0x1.00000000000008p+0,
- 0x1.00000000000007fep+0,
- 0x1.00000000000008p+0,
- false,
- 0x1.00000000000007ff96adfa2b57p+0,
- 0x1.00000000000007ff96adfa2b578p+0,
- 0x1.00000000000007ff96adfa2b57p+0,
- 0x1.00000000000007ff96adfa2b578p+0,
- false,
- 0x1.00000000000007ff96adfa2b576ap+0,
- 0x1.00000000000007ff96adfa2b576bp+0,
- 0x1.00000000000007ff96adfa2b576ap+0,
- 0x1.00000000000007ff96adfa2b576bp+0),
- TEST ("1.00000000000000011",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.0000000000001p+0,
- false,
- 0x1.00000000000007ecp+0,
- 0x1.00000000000007eep+0,
- 0x1.00000000000007ecp+0,
- 0x1.00000000000007eep+0,
- false,
- 0x1.00000000000007ecp+0,
- 0x1.00000000000007eep+0,
- 0x1.00000000000007ecp+0,
- 0x1.00000000000007eep+0,
- false,
- 0x1.00000000000007ed24502859138p+0,
- 0x1.00000000000007ed24502859138p+0,
- 0x1.00000000000007ed24502859138p+0,
- 0x1.00000000000007ed2450285914p+0,
- false,
- 0x1.00000000000007ed2450285913bfp+0,
- 0x1.00000000000007ed2450285913bfp+0,
- 0x1.00000000000007ed2450285913bfp+0,
- 0x1.00000000000007ed2450285913cp+0),
- TEST ("1.0000000000000001",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.0000000000001p+0,
- false,
- 0x1.0000000000000734p+0,
- 0x1.0000000000000734p+0,
- 0x1.0000000000000734p+0,
- 0x1.0000000000000736p+0,
- false,
- 0x1.0000000000000734p+0,
- 0x1.0000000000000734p+0,
- 0x1.0000000000000734p+0,
- 0x1.0000000000000736p+0,
- false,
- 0x1.0000000000000734aca5f6226fp+0,
- 0x1.0000000000000734aca5f6226fp+0,
- 0x1.0000000000000734aca5f6226fp+0,
- 0x1.0000000000000734aca5f6226f8p+0,
- false,
- 0x1.0000000000000734aca5f6226f0ap+0,
- 0x1.0000000000000734aca5f6226f0bp+0,
- 0x1.0000000000000734aca5f6226f0ap+0,
- 0x1.0000000000000734aca5f6226f0bp+0),
- TEST ("3929201589819414e-25",
- false,
- 0x1.b0053p-32,
- 0x1.b00532p-32,
- 0x1.b0053p-32,
- 0x1.b00532p-32,
- false,
- 0x1.b005314e2421ep-32,
- 0x1.b005314e2421ep-32,
- 0x1.b005314e2421ep-32,
- 0x1.b005314e2421fp-32,
- false,
- 0x1.b005314e2421e7fep-32,
- 0x1.b005314e2421e8p-32,
- 0x1.b005314e2421e7fep-32,
- 0x1.b005314e2421e8p-32,
- false,
- 0x1.b005314e2421e7fep-32,
- 0x1.b005314e2421e8p-32,
- 0x1.b005314e2421e7fep-32,
- 0x1.b005314e2421e8p-32,
- false,
- 0x1.b005314e2421e7ffb472840c5ap-32,
- 0x1.b005314e2421e7ffb472840c5a8p-32,
- 0x1.b005314e2421e7ffb472840c5ap-32,
- 0x1.b005314e2421e7ffb472840c5a8p-32,
- false,
- 0x1.b005314e2421e7ffb472840c5a6ep-32,
- 0x1.b005314e2421e7ffb472840c5a6fp-32,
- 0x1.b005314e2421e7ffb472840c5a6ep-32,
- 0x1.b005314e2421e7ffb472840c5a6fp-32),
- TEST ("0.0000000000000000000000000000000000000000000021019476964872"
- "256063855943749348741969203929128147736576356024258346866240"
- "28790902229957282543182373046875",
- false,
- 0x8p-152,
- 0x1p-148,
- 0x8p-152,
- 0x1p-148,
- true,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- true,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- true,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- true,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- true,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152),
- TEST ("1.00000005960464477539062499",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000000fffffffp+0,
- 0x1.000001p+0,
- 0x1.000000fffffffp+0,
- 0x1.000001p+0,
- false,
- 0x1.000000fffffffffep+0,
- 0x1.000001p+0,
- 0x1.000000fffffffffep+0,
- 0x1.000001p+0,
- false,
- 0x1.000000fffffffffep+0,
- 0x1.000001p+0,
- 0x1.000000fffffffffep+0,
- 0x1.000001p+0,
- false,
- 0x1.000000fffffffffffffffce7b78p+0,
- 0x1.000000fffffffffffffffce7b8p+0,
- 0x1.000000fffffffffffffffce7b78p+0,
- 0x1.000000fffffffffffffffce7b8p+0,
- false,
- 0x1.000000fffffffffffffffce7b7e7p+0,
- 0x1.000000fffffffffffffffce7b7e7p+0,
- 0x1.000000fffffffffffffffce7b7e7p+0,
- 0x1.000000fffffffffffffffce7b7e8p+0),
- TEST ("1.000000059604644775390625",
- false,
- 0x1p+0,
- 0x1p+0,
- 0x1p+0,
- 0x1.000002p+0,
- true,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- true,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- true,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- true,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- true,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0),
- TEST ("1.00000005960464477539062501",
- false,
- 0x1p+0,
- 0x1.000002p+0,
- 0x1p+0,
- 0x1.000002p+0,
- false,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.0000010000001p+0,
- false,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.0000010000000002p+0,
- false,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.000001p+0,
- 0x1.0000010000000002p+0,
- false,
- 0x1.00000100000000000000031848p+0,
- 0x1.00000100000000000000031848p+0,
- 0x1.00000100000000000000031848p+0,
- 0x1.000001000000000000000318488p+0,
- false,
- 0x1.0000010000000000000003184818p+0,
- 0x1.0000010000000000000003184819p+0,
- 0x1.0000010000000000000003184818p+0,
- 0x1.0000010000000000000003184819p+0),
- TEST ("1.00000011920928955078125",
- true,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0,
- true,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0,
- true,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0,
- true,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0,
- true,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0,
- true,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0),
- TEST ("1.00000017881393432617187499",
- false,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000002p+0,
- 0x1.000004p+0,
- false,
- 0x1.000002fffffffp+0,
- 0x1.000003p+0,
- 0x1.000002fffffffp+0,
- 0x1.000003p+0,
- false,
- 0x1.000002fffffffffep+0,
- 0x1.000003p+0,
- 0x1.000002fffffffffep+0,
- 0x1.000003p+0,
- false,
- 0x1.000002fffffffffep+0,
- 0x1.000003p+0,
- 0x1.000002fffffffffep+0,
- 0x1.000003p+0,
- false,
- 0x1.000002fffffffffffffffce7b78p+0,
- 0x1.000002fffffffffffffffce7b8p+0,
- 0x1.000002fffffffffffffffce7b78p+0,
- 0x1.000002fffffffffffffffce7b8p+0,
- false,
- 0x1.000002fffffffffffffffce7b7e7p+0,
- 0x1.000002fffffffffffffffce7b7e7p+0,
- 0x1.000002fffffffffffffffce7b7e7p+0,
- 0x1.000002fffffffffffffffce7b7e8p+0),
- TEST ("1.000000178813934326171875",
- false,
- 0x1.000002p+0,
- 0x1.000004p+0,
- 0x1.000002p+0,
- 0x1.000004p+0,
- true,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0,
- true,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0,
- true,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0,
- true,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0,
- true,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0),
- TEST ("1.00000017881393432617187501",
- false,
- 0x1.000002p+0,
- 0x1.000004p+0,
- 0x1.000002p+0,
- 0x1.000004p+0,
- false,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.0000030000001p+0,
- false,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.0000030000000002p+0,
- false,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.000003p+0,
- 0x1.0000030000000002p+0,
- false,
- 0x1.00000300000000000000031848p+0,
- 0x1.00000300000000000000031848p+0,
- 0x1.00000300000000000000031848p+0,
- 0x1.000003000000000000000318488p+0,
- false,
- 0x1.0000030000000000000003184818p+0,
- 0x1.0000030000000000000003184819p+0,
- 0x1.0000030000000000000003184818p+0,
- 0x1.0000030000000000000003184819p+0),
- TEST ("1.0000002384185791015625",
- true,
- 0x1.000004p+0,
- 0x1.000004p+0,
- 0x1.000004p+0,
- 0x1.000004p+0,
- true,
- 0x1.000004p+0,
- 0x1.000004p+0,
- 0x1.000004p+0,
- 0x1.000004p+0,
- true,
- 0x1.000004p+0,
- 0x1.000004p+0,
- 0x1.000004p+0,
- 0x1.000004p+0,
- true,
- 0x1.000004p+0,
- 0x1.000004p+0,
- 0x1.000004p+0,
- 0x1.000004p+0,
- true,
- 0x1.000004p+0,
- 0x1.000004p+0,
- 0x1.000004p+0,
- 0x1.000004p+0,
- true,
- 0x1.000004p+0,
- 0x1.000004p+0,
- 0x1.000004p+0,
- 0x1.000004p+0),
- TEST ("1.08420217248550443400745280086994171142578125e-19",
- true,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- true,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- true,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- true,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- true,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- true,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64),
- TEST ("1.0842022371089897897127399001987457793916291848290711641311"
- "645507812499e-19",
- false,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- 0x2.000004p-64,
- false,
- 0x2.000001ffffffep-64,
- 0x2.000002p-64,
- 0x2.000001ffffffep-64,
- 0x2.000002p-64,
- false,
- 0x2.000001fffffffffcp-64,
- 0x2.000002p-64,
- 0x2.000001fffffffffcp-64,
- 0x2.000002p-64,
- false,
- 0x2.000001fffffffffcp-64,
- 0x2.000002p-64,
- 0x2.000001fffffffffcp-64,
- 0x2.000002p-64,
- false,
- 0x2.000001ffffffffffffffffffffp-64,
- 0x2.000002p-64,
- 0x2.000001ffffffffffffffffffffp-64,
- 0x2.000002p-64,
- false,
- 0x2.000001fffffffffffffffffffffep-64,
- 0x2.000002p-64,
- 0x2.000001fffffffffffffffffffffep-64,
- 0x2.000002p-64),
- TEST ("1.0842022371089897897127399001987457793916291848290711641311"
- "6455078125e-19",
- false,
- 0x2p-64,
- 0x2p-64,
- 0x2p-64,
- 0x2.000004p-64,
- true,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- true,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- true,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- true,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- true,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64),
- TEST ("1.0842022371089897897127399001987457793916291848290711641311"
- "645507812501e-19",
- false,
- 0x2p-64,
- 0x2.000004p-64,
- 0x2p-64,
- 0x2.000004p-64,
- false,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.0000020000002p-64,
- false,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.0000020000000004p-64,
- false,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.0000020000000004p-64,
- false,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.00000200000000000000000001p-64,
- false,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.000002p-64,
- 0x2.0000020000000000000000000002p-64),
- TEST ("1.0842023017324751454180269995275498473574771196581423282623"
- "291015625e-19",
- true,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64,
- true,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64,
- true,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64,
- true,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64,
- true,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64,
- true,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64),
- TEST ("1.0842023663559605011233140988563539153233250544872134923934"
- "936523437499e-19",
- false,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000004p-64,
- 0x2.000008p-64,
- false,
- 0x2.000005ffffffep-64,
- 0x2.000006p-64,
- 0x2.000005ffffffep-64,
- 0x2.000006p-64,
- false,
- 0x2.000005fffffffffcp-64,
- 0x2.000006p-64,
- 0x2.000005fffffffffcp-64,
- 0x2.000006p-64,
- false,
- 0x2.000005fffffffffcp-64,
- 0x2.000006p-64,
- 0x2.000005fffffffffcp-64,
- 0x2.000006p-64,
- false,
- 0x2.000005ffffffffffffffffffffp-64,
- 0x2.000006p-64,
- 0x2.000005ffffffffffffffffffffp-64,
- 0x2.000006p-64,
- false,
- 0x2.000005fffffffffffffffffffffep-64,
- 0x2.000006p-64,
- 0x2.000005fffffffffffffffffffffep-64,
- 0x2.000006p-64),
- TEST ("1.0842023663559605011233140988563539153233250544872134923934"
- "9365234375e-19",
- false,
- 0x2.000004p-64,
- 0x2.000008p-64,
- 0x2.000004p-64,
- 0x2.000008p-64,
- true,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- true,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- true,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- true,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- true,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64),
- TEST ("1.0842023663559605011233140988563539153233250544872134923934"
- "936523437501e-19",
- false,
- 0x2.000004p-64,
- 0x2.000008p-64,
- 0x2.000004p-64,
- 0x2.000008p-64,
- false,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.0000060000002p-64,
- false,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.0000060000000004p-64,
- false,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.0000060000000004p-64,
- false,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.00000600000000000000000001p-64,
- false,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.000006p-64,
- 0x2.0000060000000000000000000002p-64),
- TEST ("1.0842024309794458568286011981851579832891729893162846565246"
- "58203125e-19",
- true,
- 0x2.000008p-64,
- 0x2.000008p-64,
- 0x2.000008p-64,
- 0x2.000008p-64,
- true,
- 0x2.000008p-64,
- 0x2.000008p-64,
- 0x2.000008p-64,
- 0x2.000008p-64,
- true,
- 0x2.000008p-64,
- 0x2.000008p-64,
- 0x2.000008p-64,
- 0x2.000008p-64,
- true,
- 0x2.000008p-64,
- 0x2.000008p-64,
- 0x2.000008p-64,
- 0x2.000008p-64,
- true,
- 0x2.000008p-64,
- 0x2.000008p-64,
- 0x2.000008p-64,
- 0x2.000008p-64,
- true,
- 0x2.000008p-64,
- 0x2.000008p-64,
- 0x2.000008p-64,
- 0x2.000008p-64),
- TEST ("7.5231638452626400509999138382223723380394595633413601376560"
- "1092018187046051025390625e-37",
- true,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- true,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- true,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- true,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- true,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- true,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120),
- TEST ("7.5231642936781486349413765338158389908126215730251815381410"
- "578824437213052434003657253924757242202758789062499e-37",
- false,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- 0x1.000002p-120,
- false,
- 0x1.000000fffffffp-120,
- 0x1.000001p-120,
- 0x1.000000fffffffp-120,
- 0x1.000001p-120,
- false,
- 0x1.000000fffffffffep-120,
- 0x1.000001p-120,
- 0x1.000000fffffffffep-120,
- 0x1.000001p-120,
- false,
- 0x1.000000fffffffffep-120,
- 0x1.000001p-120,
- 0x1.000000fffffffffep-120,
- 0x1.000001p-120,
- false,
- 0x1.000000ffffffffffffffffffff8p-120,
- 0x1.000001p-120,
- 0x1.000000ffffffffffffffffffff8p-120,
- 0x1.000001p-120,
- false,
- 0x1.000000ffffffffffffffffffffffp-120,
- 0x1.000001p-120,
- 0x1.000000ffffffffffffffffffffffp-120,
- 0x1.000001p-120),
- TEST ("7.5231642936781486349413765338158389908126215730251815381410"
- "5788244372130524340036572539247572422027587890625e-37",
- false,
- 0x1p-120,
- 0x1p-120,
- 0x1p-120,
- 0x1.000002p-120,
- true,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- true,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- true,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- true,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- true,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120),
- TEST ("7.5231642936781486349413765338158389908126215730251815381410"
- "578824437213052434003657253924757242202758789062501e-37",
- false,
- 0x1p-120,
- 0x1.000002p-120,
- 0x1p-120,
- 0x1.000002p-120,
- false,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.0000010000001p-120,
- false,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.0000010000000002p-120,
- false,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.0000010000000002p-120,
- false,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001000000000000000000008p-120,
- false,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.000001p-120,
- 0x1.0000010000000000000000000001p-120),
- TEST ("7.5231647420936572188828392294093056435857835827090029386261"
- "048447055721499765468252007849514484405517578125e-37",
- true,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120,
- true,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120,
- true,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120,
- true,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120,
- true,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120,
- true,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120),
- TEST ("7.5231651905091658028243019250027722963589455923928243391111"
- "518069674229947096932846761774271726608276367187499e-37",
- false,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000002p-120,
- 0x1.000004p-120,
- false,
- 0x1.000002fffffffp-120,
- 0x1.000003p-120,
- 0x1.000002fffffffp-120,
- 0x1.000003p-120,
- false,
- 0x1.000002fffffffffep-120,
- 0x1.000003p-120,
- 0x1.000002fffffffffep-120,
- 0x1.000003p-120,
- false,
- 0x1.000002fffffffffep-120,
- 0x1.000003p-120,
- 0x1.000002fffffffffep-120,
- 0x1.000003p-120,
- false,
- 0x1.000002ffffffffffffffffffff8p-120,
- 0x1.000003p-120,
- 0x1.000002ffffffffffffffffffff8p-120,
- 0x1.000003p-120,
- false,
- 0x1.000002ffffffffffffffffffffffp-120,
- 0x1.000003p-120,
- 0x1.000002ffffffffffffffffffffffp-120,
- 0x1.000003p-120),
- TEST ("7.5231651905091658028243019250027722963589455923928243391111"
- "5180696742299470969328467617742717266082763671875e-37",
- false,
- 0x1.000002p-120,
- 0x1.000004p-120,
- 0x1.000002p-120,
- 0x1.000004p-120,
- true,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- true,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- true,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- true,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- true,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120),
- TEST ("7.5231651905091658028243019250027722963589455923928243391111"
- "518069674229947096932846761774271726608276367187501e-37",
- false,
- 0x1.000002p-120,
- 0x1.000004p-120,
- 0x1.000002p-120,
- 0x1.000004p-120,
- false,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.0000030000001p-120,
- false,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.0000030000000002p-120,
- false,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.0000030000000002p-120,
- false,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003000000000000000000008p-120,
- false,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.000003p-120,
- 0x1.0000030000000000000000000001p-120),
- TEST ("7.5231656389246743867657646205962389491321076020766457395961"
- "98769229273839442839744151569902896881103515625e-37",
- true,
- 0x1.000004p-120,
- 0x1.000004p-120,
- 0x1.000004p-120,
- 0x1.000004p-120,
- true,
- 0x1.000004p-120,
- 0x1.000004p-120,
- 0x1.000004p-120,
- 0x1.000004p-120,
- true,
- 0x1.000004p-120,
- 0x1.000004p-120,
- 0x1.000004p-120,
- 0x1.000004p-120,
- true,
- 0x1.000004p-120,
- 0x1.000004p-120,
- 0x1.000004p-120,
- 0x1.000004p-120,
- true,
- 0x1.000004p-120,
- 0x1.000004p-120,
- 0x1.000004p-120,
- 0x1.000004p-120,
- true,
- 0x1.000004p-120,
- 0x1.000004p-120,
- 0x1.000004p-120,
- 0x1.000004p-120),
- TEST ("340282356779733661637539395458142568447.999",
- false,
- 0xf.fffffp+124,
- 0xf.fffffp+124,
- 0xf.fffffp+124,
- INF,
- false,
- 0xf.fffff7ffffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff7ffffff8p+124,
- 0xf.fffff8p+124,
- false,
- 0xf.fffff7fffffffffp+124,
- 0xf.fffff8p+124,
- 0xf.fffff7fffffffffp+124,
- 0xf.fffff8p+124,
- false,
- 0xf.fffff7fffffffffp+124,
- 0xf.fffff8p+124,
- 0xf.fffff7fffffffffp+124,
- 0xf.fffff8p+124,
- false,
- 0xf.fffff7fffffffffffffffffffcp+124,
- 0xf.fffff8p+124,
- 0xf.fffff7fffffffffffffffffffcp+124,
- 0xf.fffff8p+124,
- false,
- 0xf.fffff7fffffffffffffffffffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff7fffffffffffffffffffff8p+124,
- 0xf.fffff8p+124),
- TEST ("340282356779733661637539395458142568448",
- false,
- 0xf.fffffp+124,
- INF,
- 0xf.fffffp+124,
- INF,
- true,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- true,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- true,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- true,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- true,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124),
- TEST ("340282356779733661637539395458142568448.001",
- false,
- 0xf.fffffp+124,
- INF,
- 0xf.fffffp+124,
- INF,
- false,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff80000008p+124,
- false,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8000000001p+124,
- false,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8000000001p+124,
- false,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff800000000000000000004p+124,
- false,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff8p+124,
- 0xf.fffff80000000000000000000008p+124),
- TEST ("-340282356779733661637539395458142568447.999",
- false,
- -INF,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- false,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff7ffffff8p+124,
- -0xf.fffff7ffffff8p+124,
- false,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff7fffffffffp+124,
- -0xf.fffff7fffffffffp+124,
- false,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff7fffffffffp+124,
- -0xf.fffff7fffffffffp+124,
- false,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff7fffffffffffffffffffcp+124,
- -0xf.fffff7fffffffffffffffffffcp+124,
- false,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff7fffffffffffffffffffff8p+124,
- -0xf.fffff7fffffffffffffffffffff8p+124),
- TEST ("-340282356779733661637539395458142568448",
- false,
- -INF,
- -INF,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- true,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- true,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- true,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- true,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- true,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124),
- TEST ("-340282356779733661637539395458142568448.001",
- false,
- -INF,
- -INF,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- false,
- -0xf.fffff80000008p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- false,
- -0xf.fffff8000000001p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- false,
- -0xf.fffff8000000001p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- false,
- -0xf.fffff800000000000000000004p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- false,
- -0xf.fffff80000000000000000000008p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124,
- -0xf.fffff8p+124),
- TEST ("179769313486231580793728971405303415079934132710037826936173"
- "778980444968292764750946649017977587207096330286416692887910"
- "946555547851940402630657488671505820681908902000708383676273"
- "854845817711531764475730270069855571366959622842914819860834"
- "936475292719074168444365510704342711559699508093042880177904"
- "174497791.999",
- false,
- 0xf.fffffp+124,
- INF,
- 0xf.fffffp+124,
- INF,
- false,
- 0xf.ffffffffffff8p+1020,
- 0xf.ffffffffffff8p+1020,
- 0xf.ffffffffffff8p+1020,
- INF,
- false,
- 0xf.ffffffffffffbffp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffbffp+1020,
- 0xf.ffffffffffffcp+1020,
- false,
- 0xf.ffffffffffffbffp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffbffp+1020,
- 0xf.ffffffffffffcp+1020,
- false,
- 0xf.ffffffffffffbffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffbffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- false,
- 0xf.ffffffffffffbffffffffffffff8p+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffbffffffffffffff8p+1020,
- 0xf.ffffffffffffcp+1020),
- TEST ("179769313486231580793728971405303415079934132710037826936173"
- "778980444968292764750946649017977587207096330286416692887910"
- "946555547851940402630657488671505820681908902000708383676273"
- "854845817711531764475730270069855571366959622842914819860834"
- "936475292719074168444365510704342711559699508093042880177904"
- "174497792",
- false,
- 0xf.fffffp+124,
- INF,
- 0xf.fffffp+124,
- INF,
- false,
- 0xf.ffffffffffff8p+1020,
- INF,
- 0xf.ffffffffffff8p+1020,
- INF,
- true,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- true,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- false,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- true,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020),
- TEST ("179769313486231580793728971405303415079934132710037826936173"
- "778980444968292764750946649017977587207096330286416692887910"
- "946555547851940402630657488671505820681908902000708383676273"
- "854845817711531764475730270069855571366959622842914819860834"
- "936475292719074168444365510704342711559699508093042880177904"
- "174497792.001",
- false,
- 0xf.fffffp+124,
- INF,
- 0xf.fffffp+124,
- INF,
- false,
- 0xf.ffffffffffff8p+1020,
- INF,
- 0xf.ffffffffffff8p+1020,
- INF,
- false,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffc01p+1020,
- false,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffc01p+1020,
- false,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffc0000000000004p+1020,
- false,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffcp+1020,
- 0xf.ffffffffffffc000000000000008p+1020),
- TEST ("-17976931348623158079372897140530341507993413271003782693617"
- "377898044496829276475094664901797758720709633028641669288791"
- "094655554785194040263065748867150582068190890200070838367627"
- "385484581771153176447573027006985557136695962284291481986083"
- "493647529271907416844436551070434271155969950809304288017790"
- "4174497791.999",
- false,
- -INF,
- -INF,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- false,
- -INF,
- -0xf.ffffffffffff8p+1020,
- -0xf.ffffffffffff8p+1020,
- -0xf.ffffffffffff8p+1020,
- false,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffbffp+1020,
- -0xf.ffffffffffffbffp+1020,
- false,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffbffp+1020,
- -0xf.ffffffffffffbffp+1020,
- false,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffbffffffffffffcp+1020,
- -0xf.ffffffffffffbffffffffffffcp+1020,
- false,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffbffffffffffffff8p+1020,
- -0xf.ffffffffffffbffffffffffffff8p+1020),
- TEST ("-17976931348623158079372897140530341507993413271003782693617"
- "377898044496829276475094664901797758720709633028641669288791"
- "094655554785194040263065748867150582068190890200070838367627"
- "385484581771153176447573027006985557136695962284291481986083"
- "493647529271907416844436551070434271155969950809304288017790"
- "4174497792",
- false,
- -INF,
- -INF,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- false,
- -INF,
- -INF,
- -0xf.ffffffffffff8p+1020,
- -0xf.ffffffffffff8p+1020,
- true,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- true,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- false,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- true,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020),
- TEST ("-17976931348623158079372897140530341507993413271003782693617"
- "377898044496829276475094664901797758720709633028641669288791"
- "094655554785194040263065748867150582068190890200070838367627"
- "385484581771153176447573027006985557136695962284291481986083"
- "493647529271907416844436551070434271155969950809304288017790"
- "4174497792.001",
- false,
- -INF,
- -INF,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- false,
- -INF,
- -INF,
- -0xf.ffffffffffff8p+1020,
- -0xf.ffffffffffff8p+1020,
- false,
- -0xf.ffffffffffffc01p+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- false,
- -0xf.ffffffffffffc01p+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- false,
- -0xf.ffffffffffffc0000000000004p+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- false,
- -0xf.ffffffffffffc000000000000008p+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020,
- -0xf.ffffffffffffcp+1020),
- TEST ("118973149535723176505351158982948866796625400469556721895649"
- "927756249918185172720476044944290457046138433056764616744328"
- "666255526748948793023632513609765434237723241753648908036202"
- "958495124648560574092817813661123067421904850038181180520787"
- "720310726881239888580817051703268776757919551260442611296993"
- "969730906497042135737359373754818979106457807539652027804156"
- "491987771033211787185996492320631117543475322122625353433719"
- "930462950413766867781210335973022293561007134342532563356262"
- "609267460063335819387905541393759243547993474715549691352074"
- "891450084783459970660481689991674771307443551458551137274603"
- "094678907537177579699931235422786658780337099286207273033150"
- "295133847635735008945346069635452157254692607776538304457707"
- "598289220004738023060594798392660507455937428888763514661408"
- "758068906506527143720723156203739676372818578090840614216621"
- "704787774611256823213431325634056809505691175988424606654072"
- "823115950827627377808673574181547198668714142143234447550206"
- "269197545774263993130119778810659043621312707109068433886162"
- "877222844491518930341896313561238988520360803607534987178305"
- "043520937299838173444083502027340452162582038296009574808809"
- "658742434897860755961343752419543802653239216337103370292742"
- "935497502474626454559729017094560234867236701379230234809843"
- "263739640909561388493227725171983531003154799850580375254640"
- "686684370650275318316632539920970969803838872914424760535111"
- "444864748847573042963569291679400178896696862026500700279826"
- "635302471702206627303799047632971460017199544567373231610376"
- "256879987134317934150014443436145710546137924490489525241523"
- "018271239906743645663976778059895127442517397682525944430951"
- "907648109952479454685655581652571021331761401038962049122047"
- "111009185757383743827811254014770944602713378187451095200132"
- "611700632386420792585207954137064426995712656449343534120120"
- "770857498813673742586478583964512406030930704197486727636333"
- "837001863610516286928300891774383071105022919314408502968809"
- "463848377324668014115592383521324785361676372582468085716775"
- "183709078048790084022838728361454734650904480489014369184979"
- "256497738392744524915616501449487520501300124861778269881261"
- "335544037735715125808986359728419859776521586683035924100574"
- "850554368935873803132428446524362913648833348768663733118103"
- "918959060412499201797234385239260504905744357611987327994540"
- "083286019952793692265006211633524675976369938866409689573287"
- "599490442761701229217689614343727392339547174221615984024864"
- "635625680108391566720681134647098412863051374760613506003971"
- "759070209697293081442875903240426975910170967179075646317814"
- "394978762382183679266247724762405284284971833355044962214065"
- "895558105408175131247181971272672247996246595857705695208092"
- "816044125822560989770526261449460733912621692806952140652061"
- "911968824328747339453822511902787546522099225623311147726504"
- "972617425102845212076162056723650625826928778132002074035405"
- "250631109426611640681070927283430486232053929420514345435713"
- "131387967949326001734866894273047449417824913738789829732833"
- "683358900903818016968127085077418070951770702999663693968324"
- "004781728763310108379440442854174041581191669623267749855519"
- "774427387794278666183504498843857475877442235608736818515722"
- "862733587905866015455830953591207040129558473662150426884726"
- "759522376583586317425575669726781893104752341432891868770513"
- "406836036136374264038296610854599454591170582569741798904328"
- "676755131072831974295435585611673171096113833795735888591844"
- "569864166955969416680807491722688418115891753669917660968752"
- "228842669182040018336152355940915579955628386232949747891257"
- "526145783057949776122896048841308261113063674538553146663451"
- "574384023903569848640351704415703922683108552880537081027404"
- "397775617608412295293311763789489900990611859125572525530349"
- "278319943261304784125553748811339225969956465404836696490782"
- "500903694674135036899321686023782466034636817818347651623601"
- "663129318574761269352028560641266614840108083315301260274558"
- "575087296910384815285134460531715154639604115052348665171547"
- "251609075784863196403541944155425166776423403472211742139313"
- "210299896884252707306862499895115691675551238140467142819537"
- "867343414276518703858928008759955391140729958278175965217739"
- "826511218924463113077693598006228365514899236789515147503266"
- "616268809617626228164916917150602464494142485507467876173251"
- "398398846807079309227567538802476335624194115637802439400050"
- "221934368975949846684026462252790745597563393487879954351820"
- "652138303761879543933808642920064500206512003954563931569820"
- "114768348051593629274325149906343853129692245386396887281599"
- "735312588117968646270517005121997466606469447530616465384255"
- "826304380842850779833108567141643769616400809617173972138187"
- "711971431230616321035038259922624655396612597024040812967444"
- "207673594478417900666764580589685104809363813759667069693701"
- "069921295791929938093722225050956280798177934138468414654728"
- "631498256418191041953123619406060363406390776140155709737059"
- "125898120366007955506160309553860446596202876233728025871625"
- "578031503869424406179027994752890226443351619365453243328968"
- "8740976918527.999",
- false,
- 0xf.fffffp+124,
- INF,
- 0xf.fffffp+124,
- INF,
- false,
- 0xf.ffffffffffff8p+1020,
- INF,
- 0xf.ffffffffffff8p+1020,
- INF,
- false,
- 0xf.fffffffffffffffp+16380,
- 0xf.fffffffffffffffp+16380,
- 0xf.fffffffffffffffp+16380,
- INF,
- false,
- 0xf.fffffffffffffffp+16380,
- 0xf.fffffffffffffffp+16380,
- 0xf.fffffffffffffffp+16380,
- INF,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020,
- INF,
- 0xf.fffffffffffffffffffffffffcp+1020,
- INF,
- false,
- 0xf.fffffffffffffff7fffffffffff8p+16380,
- 0xf.fffffffffffffff8p+16380,
- 0xf.fffffffffffffff7fffffffffff8p+16380,
- 0xf.fffffffffffffff8p+16380),
- TEST ("118973149535723176505351158982948866796625400469556721895649"
- "927756249918185172720476044944290457046138433056764616744328"
- "666255526748948793023632513609765434237723241753648908036202"
- "958495124648560574092817813661123067421904850038181180520787"
- "720310726881239888580817051703268776757919551260442611296993"
- "969730906497042135737359373754818979106457807539652027804156"
- "491987771033211787185996492320631117543475322122625353433719"
- "930462950413766867781210335973022293561007134342532563356262"
- "609267460063335819387905541393759243547993474715549691352074"
- "891450084783459970660481689991674771307443551458551137274603"
- "094678907537177579699931235422786658780337099286207273033150"
- "295133847635735008945346069635452157254692607776538304457707"
- "598289220004738023060594798392660507455937428888763514661408"
- "758068906506527143720723156203739676372818578090840614216621"
- "704787774611256823213431325634056809505691175988424606654072"
- "823115950827627377808673574181547198668714142143234447550206"
- "269197545774263993130119778810659043621312707109068433886162"
- "877222844491518930341896313561238988520360803607534987178305"
- "043520937299838173444083502027340452162582038296009574808809"
- "658742434897860755961343752419543802653239216337103370292742"
- "935497502474626454559729017094560234867236701379230234809843"
- "263739640909561388493227725171983531003154799850580375254640"
- "686684370650275318316632539920970969803838872914424760535111"
- "444864748847573042963569291679400178896696862026500700279826"
- "635302471702206627303799047632971460017199544567373231610376"
- "256879987134317934150014443436145710546137924490489525241523"
- "018271239906743645663976778059895127442517397682525944430951"
- "907648109952479454685655581652571021331761401038962049122047"
- "111009185757383743827811254014770944602713378187451095200132"
- "611700632386420792585207954137064426995712656449343534120120"
- "770857498813673742586478583964512406030930704197486727636333"
- "837001863610516286928300891774383071105022919314408502968809"
- "463848377324668014115592383521324785361676372582468085716775"
- "183709078048790084022838728361454734650904480489014369184979"
- "256497738392744524915616501449487520501300124861778269881261"
- "335544037735715125808986359728419859776521586683035924100574"
- "850554368935873803132428446524362913648833348768663733118103"
- "918959060412499201797234385239260504905744357611987327994540"
- "083286019952793692265006211633524675976369938866409689573287"
- "599490442761701229217689614343727392339547174221615984024864"
- "635625680108391566720681134647098412863051374760613506003971"
- "759070209697293081442875903240426975910170967179075646317814"
- "394978762382183679266247724762405284284971833355044962214065"
- "895558105408175131247181971272672247996246595857705695208092"
- "816044125822560989770526261449460733912621692806952140652061"
- "911968824328747339453822511902787546522099225623311147726504"
- "972617425102845212076162056723650625826928778132002074035405"
- "250631109426611640681070927283430486232053929420514345435713"
- "131387967949326001734866894273047449417824913738789829732833"
- "683358900903818016968127085077418070951770702999663693968324"
- "004781728763310108379440442854174041581191669623267749855519"
- "774427387794278666183504498843857475877442235608736818515722"
- "862733587905866015455830953591207040129558473662150426884726"
- "759522376583586317425575669726781893104752341432891868770513"
- "406836036136374264038296610854599454591170582569741798904328"
- "676755131072831974295435585611673171096113833795735888591844"
- "569864166955969416680807491722688418115891753669917660968752"
- "228842669182040018336152355940915579955628386232949747891257"
- "526145783057949776122896048841308261113063674538553146663451"
- "574384023903569848640351704415703922683108552880537081027404"
- "397775617608412295293311763789489900990611859125572525530349"
- "278319943261304784125553748811339225969956465404836696490782"
- "500903694674135036899321686023782466034636817818347651623601"
- "663129318574761269352028560641266614840108083315301260274558"
- "575087296910384815285134460531715154639604115052348665171547"
- "251609075784863196403541944155425166776423403472211742139313"
- "210299896884252707306862499895115691675551238140467142819537"
- "867343414276518703858928008759955391140729958278175965217739"
- "826511218924463113077693598006228365514899236789515147503266"
- "616268809617626228164916917150602464494142485507467876173251"
- "398398846807079309227567538802476335624194115637802439400050"
- "221934368975949846684026462252790745597563393487879954351820"
- "652138303761879543933808642920064500206512003954563931569820"
- "114768348051593629274325149906343853129692245386396887281599"
- "735312588117968646270517005121997466606469447530616465384255"
- "826304380842850779833108567141643769616400809617173972138187"
- "711971431230616321035038259922624655396612597024040812967444"
- "207673594478417900666764580589685104809363813759667069693701"
- "069921295791929938093722225050956280798177934138468414654728"
- "631498256418191041953123619406060363406390776140155709737059"
- "125898120366007955506160309553860446596202876233728025871625"
- "578031503869424406179027994752890226443351619365453243328968"
- "8740976918528",
- false,
- 0xf.fffffp+124,
- INF,
- 0xf.fffffp+124,
- INF,
- false,
- 0xf.ffffffffffff8p+1020,
- INF,
- 0xf.ffffffffffff8p+1020,
- INF,
- false,
- 0xf.fffffffffffffffp+16380,
- INF,
- 0xf.fffffffffffffffp+16380,
- INF,
- false,
- 0xf.fffffffffffffffp+16380,
- INF,
- 0xf.fffffffffffffffp+16380,
- INF,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020,
- INF,
- 0xf.fffffffffffffffffffffffffcp+1020,
- INF,
- true,
- 0xf.fffffffffffffff8p+16380,
- 0xf.fffffffffffffff8p+16380,
- 0xf.fffffffffffffff8p+16380,
- 0xf.fffffffffffffff8p+16380),
- TEST ("118973149535723176505351158982948866796625400469556721895649"
- "927756249918185172720476044944290457046138433056764616744328"
- "666255526748948793023632513609765434237723241753648908036202"
- "958495124648560574092817813661123067421904850038181180520787"
- "720310726881239888580817051703268776757919551260442611296993"
- "969730906497042135737359373754818979106457807539652027804156"
- "491987771033211787185996492320631117543475322122625353433719"
- "930462950413766867781210335973022293561007134342532563356262"
- "609267460063335819387905541393759243547993474715549691352074"
- "891450084783459970660481689991674771307443551458551137274603"
- "094678907537177579699931235422786658780337099286207273033150"
- "295133847635735008945346069635452157254692607776538304457707"
- "598289220004738023060594798392660507455937428888763514661408"
- "758068906506527143720723156203739676372818578090840614216621"
- "704787774611256823213431325634056809505691175988424606654072"
- "823115950827627377808673574181547198668714142143234447550206"
- "269197545774263993130119778810659043621312707109068433886162"
- "877222844491518930341896313561238988520360803607534987178305"
- "043520937299838173444083502027340452162582038296009574808809"
- "658742434897860755961343752419543802653239216337103370292742"
- "935497502474626454559729017094560234867236701379230234809843"
- "263739640909561388493227725171983531003154799850580375254640"
- "686684370650275318316632539920970969803838872914424760535111"
- "444864748847573042963569291679400178896696862026500700279826"
- "635302471702206627303799047632971460017199544567373231610376"
- "256879987134317934150014443436145710546137924490489525241523"
- "018271239906743645663976778059895127442517397682525944430951"
- "907648109952479454685655581652571021331761401038962049122047"
- "111009185757383743827811254014770944602713378187451095200132"
- "611700632386420792585207954137064426995712656449343534120120"
- "770857498813673742586478583964512406030930704197486727636333"
- "837001863610516286928300891774383071105022919314408502968809"
- "463848377324668014115592383521324785361676372582468085716775"
- "183709078048790084022838728361454734650904480489014369184979"
- "256497738392744524915616501449487520501300124861778269881261"
- "335544037735715125808986359728419859776521586683035924100574"
- "850554368935873803132428446524362913648833348768663733118103"
- "918959060412499201797234385239260504905744357611987327994540"
- "083286019952793692265006211633524675976369938866409689573287"
- "599490442761701229217689614343727392339547174221615984024864"
- "635625680108391566720681134647098412863051374760613506003971"
- "759070209697293081442875903240426975910170967179075646317814"
- "394978762382183679266247724762405284284971833355044962214065"
- "895558105408175131247181971272672247996246595857705695208092"
- "816044125822560989770526261449460733912621692806952140652061"
- "911968824328747339453822511902787546522099225623311147726504"
- "972617425102845212076162056723650625826928778132002074035405"
- "250631109426611640681070927283430486232053929420514345435713"
- "131387967949326001734866894273047449417824913738789829732833"
- "683358900903818016968127085077418070951770702999663693968324"
- "004781728763310108379440442854174041581191669623267749855519"
- "774427387794278666183504498843857475877442235608736818515722"
- "862733587905866015455830953591207040129558473662150426884726"
- "759522376583586317425575669726781893104752341432891868770513"
- "406836036136374264038296610854599454591170582569741798904328"
- "676755131072831974295435585611673171096113833795735888591844"
- "569864166955969416680807491722688418115891753669917660968752"
- "228842669182040018336152355940915579955628386232949747891257"
- "526145783057949776122896048841308261113063674538553146663451"
- "574384023903569848640351704415703922683108552880537081027404"
- "397775617608412295293311763789489900990611859125572525530349"
- "278319943261304784125553748811339225969956465404836696490782"
- "500903694674135036899321686023782466034636817818347651623601"
- "663129318574761269352028560641266614840108083315301260274558"
- "575087296910384815285134460531715154639604115052348665171547"
- "251609075784863196403541944155425166776423403472211742139313"
- "210299896884252707306862499895115691675551238140467142819537"
- "867343414276518703858928008759955391140729958278175965217739"
- "826511218924463113077693598006228365514899236789515147503266"
- "616268809617626228164916917150602464494142485507467876173251"
- "398398846807079309227567538802476335624194115637802439400050"
- "221934368975949846684026462252790745597563393487879954351820"
- "652138303761879543933808642920064500206512003954563931569820"
- "114768348051593629274325149906343853129692245386396887281599"
- "735312588117968646270517005121997466606469447530616465384255"
- "826304380842850779833108567141643769616400809617173972138187"
- "711971431230616321035038259922624655396612597024040812967444"
- "207673594478417900666764580589685104809363813759667069693701"
- "069921295791929938093722225050956280798177934138468414654728"
- "631498256418191041953123619406060363406390776140155709737059"
- "125898120366007955506160309553860446596202876233728025871625"
- "578031503869424406179027994752890226443351619365453243328968"
- "8740976918528.001",
- false,
- 0xf.fffffp+124,
- INF,
- 0xf.fffffp+124,
- INF,
- false,
- 0xf.ffffffffffff8p+1020,
- INF,
- 0xf.ffffffffffff8p+1020,
- INF,
- false,
- 0xf.fffffffffffffffp+16380,
- INF,
- 0xf.fffffffffffffffp+16380,
- INF,
- false,
- 0xf.fffffffffffffffp+16380,
- INF,
- 0xf.fffffffffffffffp+16380,
- INF,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020,
- INF,
- 0xf.fffffffffffffffffffffffffcp+1020,
- INF,
- false,
- 0xf.fffffffffffffff8p+16380,
- 0xf.fffffffffffffff8p+16380,
- 0xf.fffffffffffffff8p+16380,
- 0xf.fffffffffffffff8000000000008p+16380),
- TEST ("-11897314953572317650535115898294886679662540046955672189564"
- "992775624991818517272047604494429045704613843305676461674432"
- "866625552674894879302363251360976543423772324175364890803620"
- "295849512464856057409281781366112306742190485003818118052078"
- "772031072688123988858081705170326877675791955126044261129699"
- "396973090649704213573735937375481897910645780753965202780415"
- "649198777103321178718599649232063111754347532212262535343371"
- "993046295041376686778121033597302229356100713434253256335626"
- "260926746006333581938790554139375924354799347471554969135207"
- "489145008478345997066048168999167477130744355145855113727460"
- "309467890753717757969993123542278665878033709928620727303315"
- "029513384763573500894534606963545215725469260777653830445770"
- "759828922000473802306059479839266050745593742888876351466140"
- "875806890650652714372072315620373967637281857809084061421662"
- "170478777461125682321343132563405680950569117598842460665407"
- "282311595082762737780867357418154719866871414214323444755020"
- "626919754577426399313011977881065904362131270710906843388616"
- "287722284449151893034189631356123898852036080360753498717830"
- "504352093729983817344408350202734045216258203829600957480880"
- "965874243489786075596134375241954380265323921633710337029274"
- "293549750247462645455972901709456023486723670137923023480984"
- "326373964090956138849322772517198353100315479985058037525464"
- "068668437065027531831663253992097096980383887291442476053511"
- "144486474884757304296356929167940017889669686202650070027982"
- "663530247170220662730379904763297146001719954456737323161037"
- "625687998713431793415001444343614571054613792449048952524152"
- "301827123990674364566397677805989512744251739768252594443095"
- "190764810995247945468565558165257102133176140103896204912204"
- "711100918575738374382781125401477094460271337818745109520013"
- "261170063238642079258520795413706442699571265644934353412012"
- "077085749881367374258647858396451240603093070419748672763633"
- "383700186361051628692830089177438307110502291931440850296880"
- "946384837732466801411559238352132478536167637258246808571677"
- "518370907804879008402283872836145473465090448048901436918497"
- "925649773839274452491561650144948752050130012486177826988126"
- "133554403773571512580898635972841985977652158668303592410057"
- "485055436893587380313242844652436291364883334876866373311810"
- "391895906041249920179723438523926050490574435761198732799454"
- "008328601995279369226500621163352467597636993886640968957328"
- "759949044276170122921768961434372739233954717422161598402486"
- "463562568010839156672068113464709841286305137476061350600397"
- "175907020969729308144287590324042697591017096717907564631781"
- "439497876238218367926624772476240528428497183335504496221406"
- "589555810540817513124718197127267224799624659585770569520809"
- "281604412582256098977052626144946073391262169280695214065206"
- "191196882432874733945382251190278754652209922562331114772650"
- "497261742510284521207616205672365062582692877813200207403540"
- "525063110942661164068107092728343048623205392942051434543571"
- "313138796794932600173486689427304744941782491373878982973283"
- "368335890090381801696812708507741807095177070299966369396832"
- "400478172876331010837944044285417404158119166962326774985551"
- "977442738779427866618350449884385747587744223560873681851572"
- "286273358790586601545583095359120704012955847366215042688472"
- "675952237658358631742557566972678189310475234143289186877051"
- "340683603613637426403829661085459945459117058256974179890432"
- "867675513107283197429543558561167317109611383379573588859184"
- "456986416695596941668080749172268841811589175366991766096875"
- "222884266918204001833615235594091557995562838623294974789125"
- "752614578305794977612289604884130826111306367453855314666345"
- "157438402390356984864035170441570392268310855288053708102740"
- "439777561760841229529331176378948990099061185912557252553034"
- "927831994326130478412555374881133922596995646540483669649078"
- "250090369467413503689932168602378246603463681781834765162360"
- "166312931857476126935202856064126661484010808331530126027455"
- "857508729691038481528513446053171515463960411505234866517154"
- "725160907578486319640354194415542516677642340347221174213931"
- "321029989688425270730686249989511569167555123814046714281953"
- "786734341427651870385892800875995539114072995827817596521773"
- "982651121892446311307769359800622836551489923678951514750326"
- "661626880961762622816491691715060246449414248550746787617325"
- "139839884680707930922756753880247633562419411563780243940005"
- "022193436897594984668402646225279074559756339348787995435182"
- "065213830376187954393380864292006450020651200395456393156982"
- "011476834805159362927432514990634385312969224538639688728159"
- "973531258811796864627051700512199746660646944753061646538425"
- "582630438084285077983310856714164376961640080961717397213818"
- "771197143123061632103503825992262465539661259702404081296744"
- "420767359447841790066676458058968510480936381375966706969370"
- "106992129579192993809372222505095628079817793413846841465472"
- "863149825641819104195312361940606036340639077614015570973705"
- "912589812036600795550616030955386044659620287623372802587162"
- "557803150386942440617902799475289022644335161936545324332896"
- "88740976918527.999",
- false,
- -INF,
- -INF,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- false,
- -INF,
- -INF,
- -0xf.ffffffffffff8p+1020,
- -0xf.ffffffffffff8p+1020,
- false,
- -INF,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- false,
- -INF,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffffffffffffcp+1020,
- -0xf.fffffffffffffffffffffffffcp+1020,
- false,
- -0xf.fffffffffffffff8p+16380,
- -0xf.fffffffffffffff8p+16380,
- -0xf.fffffffffffffff7fffffffffff8p+16380,
- -0xf.fffffffffffffff7fffffffffff8p+16380),
- TEST ("-11897314953572317650535115898294886679662540046955672189564"
- "992775624991818517272047604494429045704613843305676461674432"
- "866625552674894879302363251360976543423772324175364890803620"
- "295849512464856057409281781366112306742190485003818118052078"
- "772031072688123988858081705170326877675791955126044261129699"
- "396973090649704213573735937375481897910645780753965202780415"
- "649198777103321178718599649232063111754347532212262535343371"
- "993046295041376686778121033597302229356100713434253256335626"
- "260926746006333581938790554139375924354799347471554969135207"
- "489145008478345997066048168999167477130744355145855113727460"
- "309467890753717757969993123542278665878033709928620727303315"
- "029513384763573500894534606963545215725469260777653830445770"
- "759828922000473802306059479839266050745593742888876351466140"
- "875806890650652714372072315620373967637281857809084061421662"
- "170478777461125682321343132563405680950569117598842460665407"
- "282311595082762737780867357418154719866871414214323444755020"
- "626919754577426399313011977881065904362131270710906843388616"
- "287722284449151893034189631356123898852036080360753498717830"
- "504352093729983817344408350202734045216258203829600957480880"
- "965874243489786075596134375241954380265323921633710337029274"
- "293549750247462645455972901709456023486723670137923023480984"
- "326373964090956138849322772517198353100315479985058037525464"
- "068668437065027531831663253992097096980383887291442476053511"
- "144486474884757304296356929167940017889669686202650070027982"
- "663530247170220662730379904763297146001719954456737323161037"
- "625687998713431793415001444343614571054613792449048952524152"
- "301827123990674364566397677805989512744251739768252594443095"
- "190764810995247945468565558165257102133176140103896204912204"
- "711100918575738374382781125401477094460271337818745109520013"
- "261170063238642079258520795413706442699571265644934353412012"
- "077085749881367374258647858396451240603093070419748672763633"
- "383700186361051628692830089177438307110502291931440850296880"
- "946384837732466801411559238352132478536167637258246808571677"
- "518370907804879008402283872836145473465090448048901436918497"
- "925649773839274452491561650144948752050130012486177826988126"
- "133554403773571512580898635972841985977652158668303592410057"
- "485055436893587380313242844652436291364883334876866373311810"
- "391895906041249920179723438523926050490574435761198732799454"
- "008328601995279369226500621163352467597636993886640968957328"
- "759949044276170122921768961434372739233954717422161598402486"
- "463562568010839156672068113464709841286305137476061350600397"
- "175907020969729308144287590324042697591017096717907564631781"
- "439497876238218367926624772476240528428497183335504496221406"
- "589555810540817513124718197127267224799624659585770569520809"
- "281604412582256098977052626144946073391262169280695214065206"
- "191196882432874733945382251190278754652209922562331114772650"
- "497261742510284521207616205672365062582692877813200207403540"
- "525063110942661164068107092728343048623205392942051434543571"
- "313138796794932600173486689427304744941782491373878982973283"
- "368335890090381801696812708507741807095177070299966369396832"
- "400478172876331010837944044285417404158119166962326774985551"
- "977442738779427866618350449884385747587744223560873681851572"
- "286273358790586601545583095359120704012955847366215042688472"
- "675952237658358631742557566972678189310475234143289186877051"
- "340683603613637426403829661085459945459117058256974179890432"
- "867675513107283197429543558561167317109611383379573588859184"
- "456986416695596941668080749172268841811589175366991766096875"
- "222884266918204001833615235594091557995562838623294974789125"
- "752614578305794977612289604884130826111306367453855314666345"
- "157438402390356984864035170441570392268310855288053708102740"
- "439777561760841229529331176378948990099061185912557252553034"
- "927831994326130478412555374881133922596995646540483669649078"
- "250090369467413503689932168602378246603463681781834765162360"
- "166312931857476126935202856064126661484010808331530126027455"
- "857508729691038481528513446053171515463960411505234866517154"
- "725160907578486319640354194415542516677642340347221174213931"
- "321029989688425270730686249989511569167555123814046714281953"
- "786734341427651870385892800875995539114072995827817596521773"
- "982651121892446311307769359800622836551489923678951514750326"
- "661626880961762622816491691715060246449414248550746787617325"
- "139839884680707930922756753880247633562419411563780243940005"
- "022193436897594984668402646225279074559756339348787995435182"
- "065213830376187954393380864292006450020651200395456393156982"
- "011476834805159362927432514990634385312969224538639688728159"
- "973531258811796864627051700512199746660646944753061646538425"
- "582630438084285077983310856714164376961640080961717397213818"
- "771197143123061632103503825992262465539661259702404081296744"
- "420767359447841790066676458058968510480936381375966706969370"
- "106992129579192993809372222505095628079817793413846841465472"
- "863149825641819104195312361940606036340639077614015570973705"
- "912589812036600795550616030955386044659620287623372802587162"
- "557803150386942440617902799475289022644335161936545324332896"
- "88740976918528",
- false,
- -INF,
- -INF,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- false,
- -INF,
- -INF,
- -0xf.ffffffffffff8p+1020,
- -0xf.ffffffffffff8p+1020,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffffffffffffcp+1020,
- -0xf.fffffffffffffffffffffffffcp+1020,
- true,
- -0xf.fffffffffffffff8p+16380,
- -0xf.fffffffffffffff8p+16380,
- -0xf.fffffffffffffff8p+16380,
- -0xf.fffffffffffffff8p+16380),
- TEST ("-11897314953572317650535115898294886679662540046955672189564"
- "992775624991818517272047604494429045704613843305676461674432"
- "866625552674894879302363251360976543423772324175364890803620"
- "295849512464856057409281781366112306742190485003818118052078"
- "772031072688123988858081705170326877675791955126044261129699"
- "396973090649704213573735937375481897910645780753965202780415"
- "649198777103321178718599649232063111754347532212262535343371"
- "993046295041376686778121033597302229356100713434253256335626"
- "260926746006333581938790554139375924354799347471554969135207"
- "489145008478345997066048168999167477130744355145855113727460"
- "309467890753717757969993123542278665878033709928620727303315"
- "029513384763573500894534606963545215725469260777653830445770"
- "759828922000473802306059479839266050745593742888876351466140"
- "875806890650652714372072315620373967637281857809084061421662"
- "170478777461125682321343132563405680950569117598842460665407"
- "282311595082762737780867357418154719866871414214323444755020"
- "626919754577426399313011977881065904362131270710906843388616"
- "287722284449151893034189631356123898852036080360753498717830"
- "504352093729983817344408350202734045216258203829600957480880"
- "965874243489786075596134375241954380265323921633710337029274"
- "293549750247462645455972901709456023486723670137923023480984"
- "326373964090956138849322772517198353100315479985058037525464"
- "068668437065027531831663253992097096980383887291442476053511"
- "144486474884757304296356929167940017889669686202650070027982"
- "663530247170220662730379904763297146001719954456737323161037"
- "625687998713431793415001444343614571054613792449048952524152"
- "301827123990674364566397677805989512744251739768252594443095"
- "190764810995247945468565558165257102133176140103896204912204"
- "711100918575738374382781125401477094460271337818745109520013"
- "261170063238642079258520795413706442699571265644934353412012"
- "077085749881367374258647858396451240603093070419748672763633"
- "383700186361051628692830089177438307110502291931440850296880"
- "946384837732466801411559238352132478536167637258246808571677"
- "518370907804879008402283872836145473465090448048901436918497"
- "925649773839274452491561650144948752050130012486177826988126"
- "133554403773571512580898635972841985977652158668303592410057"
- "485055436893587380313242844652436291364883334876866373311810"
- "391895906041249920179723438523926050490574435761198732799454"
- "008328601995279369226500621163352467597636993886640968957328"
- "759949044276170122921768961434372739233954717422161598402486"
- "463562568010839156672068113464709841286305137476061350600397"
- "175907020969729308144287590324042697591017096717907564631781"
- "439497876238218367926624772476240528428497183335504496221406"
- "589555810540817513124718197127267224799624659585770569520809"
- "281604412582256098977052626144946073391262169280695214065206"
- "191196882432874733945382251190278754652209922562331114772650"
- "497261742510284521207616205672365062582692877813200207403540"
- "525063110942661164068107092728343048623205392942051434543571"
- "313138796794932600173486689427304744941782491373878982973283"
- "368335890090381801696812708507741807095177070299966369396832"
- "400478172876331010837944044285417404158119166962326774985551"
- "977442738779427866618350449884385747587744223560873681851572"
- "286273358790586601545583095359120704012955847366215042688472"
- "675952237658358631742557566972678189310475234143289186877051"
- "340683603613637426403829661085459945459117058256974179890432"
- "867675513107283197429543558561167317109611383379573588859184"
- "456986416695596941668080749172268841811589175366991766096875"
- "222884266918204001833615235594091557995562838623294974789125"
- "752614578305794977612289604884130826111306367453855314666345"
- "157438402390356984864035170441570392268310855288053708102740"
- "439777561760841229529331176378948990099061185912557252553034"
- "927831994326130478412555374881133922596995646540483669649078"
- "250090369467413503689932168602378246603463681781834765162360"
- "166312931857476126935202856064126661484010808331530126027455"
- "857508729691038481528513446053171515463960411505234866517154"
- "725160907578486319640354194415542516677642340347221174213931"
- "321029989688425270730686249989511569167555123814046714281953"
- "786734341427651870385892800875995539114072995827817596521773"
- "982651121892446311307769359800622836551489923678951514750326"
- "661626880961762622816491691715060246449414248550746787617325"
- "139839884680707930922756753880247633562419411563780243940005"
- "022193436897594984668402646225279074559756339348787995435182"
- "065213830376187954393380864292006450020651200395456393156982"
- "011476834805159362927432514990634385312969224538639688728159"
- "973531258811796864627051700512199746660646944753061646538425"
- "582630438084285077983310856714164376961640080961717397213818"
- "771197143123061632103503825992262465539661259702404081296744"
- "420767359447841790066676458058968510480936381375966706969370"
- "106992129579192993809372222505095628079817793413846841465472"
- "863149825641819104195312361940606036340639077614015570973705"
- "912589812036600795550616030955386044659620287623372802587162"
- "557803150386942440617902799475289022644335161936545324332896"
- "88740976918528.001",
- false,
- -INF,
- -INF,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- false,
- -INF,
- -INF,
- -0xf.ffffffffffff8p+1020,
- -0xf.ffffffffffff8p+1020,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffffffffffffcp+1020,
- -0xf.fffffffffffffffffffffffffcp+1020,
- false,
- -0xf.fffffffffffffff8000000000008p+16380,
- -0xf.fffffffffffffff8p+16380,
- -0xf.fffffffffffffff8p+16380,
- -0xf.fffffffffffffff8p+16380),
- TEST ("118973149535723176508575932662800707347995686986910214150118"
- "685272271246896789803961473130416053705672050873552479421805"
- "932646640744124594447361172514341324846716679654551308018400"
- "452551246797021031695590308415421099521962856162050274568841"
- "297915828747574343774874752902176710049525787625138678906010"
- "048638212027057374683542842282633896097240913572043788690878"
- "561421008447838407815393303366617352859876685151925036335142"
- "606462825839541908847139311166770091872983498508632067665424"
- "131663456011801988221011933744533095583591952713287509471572"
- "005635584655570174753698625195967118200265238753375268656404"
- "300638718932246773699829720984119713851462400809295266529707"
- "450603039675996477317034685632764277790214944500590950459817"
- "905458649624723235138950801408157339866516893477731877579183"
- "713595679581558427625325833939652897845282019149923069371763"
- "621014587926698827182969408373803807712292191282429102445352"
- "493434039402290243933941906906661090602900960765874258303002"
- "994639315656152078708796474719793763077934223746582725715380"
- "546621026022818892467551940977566283266498758568504813830755"
- "715585325649227824857891916443381390920079346240984072859876"
- "394789650127468861490822526766717770136680743866932662343305"
- "821821344306240809967537078707691232937387041140557168161956"
- "672595323950666742010786584275766171661791973302251394804664"
- "351065107886557299707326005651230394674710597929211000345040"
- "748992483614253006562424867893567074606589931788062200063807"
- "336740036940230215831403322125165368742446805152078682411506"
- "081843753974005583111391605547148303480887461773984314393817"
- "233328426227146997925421743280885595916487699461777590949432"
- "536021389649845214065322016198143547250143861460313408300535"
- "800647014276175548485543791298383644643679669618879907720347"
- "361578030001247419574448359597988425487829219851305162204925"
- "876422580754230478244492592334149461342828532046897137732862"
- "560405101567370570895662663174689131741739602970845694214086"
- "383402465037069569640956912385125748139813888875258203003486"
- "978747055202810394072908580324008598756993885667142200558137"
- "216665049755676940757442911860295559656788759871904662758651"
- "106796978788783386988295123326864580419821595430891867179378"
- "372968821128698879468814267529461494723425453808822356093436"
- "114567635804621183162768389034017821036515461700163537265334"
- "837042272659885702600247792917728828912373907035369136531164"
- "551871575024551077026080114197652598224677403885378544255851"
- "452142889211152237506343909351748731538683443195842912801950"
- "740929058503113127929421291089844021925400931905939216271347"
- "501989193058654389516377770771439860033940981826669939750630"
- "966060749188986231404992238674933998516958950824840538996637"
- "227947236848099456610159878061379742621311380927234118601003"
- "068752002060437285024623575047782086630607224900910789188204"
- "422115342157245494745974521832782208601602710639261482504706"
- "793704189474198047840288064399210243702202724597107455534275"
- "321401119382263147115748905050195256886082040192083380490209"
- "648570353905656303876661710430922155024620842080323610266391"
- "819853291160589645614945256684769911320943457402697573094119"
- "430125589389298495428377185239916427991844172165080029177729"
- "625180644077484441695092005844026411665118679537869781924378"
- "377060887769389297625907410934020531742739577183152327119791"
- "567636713426904553654134937766951789571845662564530364234831"
- "655818811851573018210173773037253988893680153247404060131255"
- "432297982534770778617218088583998040670598195597843579610890"
- "315316606725381521608825464438386306376596459107591134507541"
- "153403024199191222328259713530472683187873517955642380703639"
- "029816037096049042094836437281075965243968431839386959736989"
- "889027924230006904683050305965712585804355337311372959487108"
- "794286031594805559334414767793211932142402860019029250966461"
- "933621763149049802791695077716375242516443825235146860078555"
- "453142397983479144560015010889077242726183149587493050950967"
- "941488752366197740591478464591650201477772717579831983405962"
- "171742164889284586217913115136227964861078958766284010901639"
- "781256012341028188155836968476480842715858962105341815444164"
- "696766584018508513610260777540911573496315580383328678958350"
- "148157337222619548467971967434956296433870815461340134721800"
- "205755114983399523323106573720732056659216468891205124203527"
- "449961814733926916757607468806003312492414061695431041238453"
- "023522795690830184799840657478014435335788410588338795921829"
- "674102072285495410088727730494748054715270026371111466557692"
- "092596172401951206117443077191868585496116051853795368595736"
- "003882511620497061598923985774687093334185939744167238203676"
- "453052472980823976562293117120372063945943890666325365061961"
- "022928215929070357135085816756816486043117613837876554929621"
- "856269743752885605649447338817178927896144473776360438797900"
- "366212779802747593450564030114752479071739585723270865632758"
- "495434839556211713523098602573445161475191311400514062427097"
- "780117858230840648695846140902244217544683559565818359212130"
- "972233447491583165728635513802591543441145939539353470970452"
- "5536550715391.999",
- false,
- 0xf.fffffp+124,
- INF,
- 0xf.fffffp+124,
- INF,
- false,
- 0xf.ffffffffffff8p+1020,
- INF,
- 0xf.ffffffffffff8p+1020,
- INF,
- false,
- 0xf.fffffffffffffffp+16380,
- INF,
- 0xf.fffffffffffffffp+16380,
- INF,
- false,
- 0xf.fffffffffffffffp+16380,
- INF,
- 0xf.fffffffffffffffp+16380,
- INF,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020,
- INF,
- 0xf.fffffffffffffffffffffffffcp+1020,
- INF,
- false,
- 0xf.fffffffffffffffffffffffffff8p+16380,
- 0xf.fffffffffffffffffffffffffff8p+16380,
- 0xf.fffffffffffffffffffffffffff8p+16380,
- INF),
- TEST ("118973149535723176508575932662800707347995686986910214150118"
- "685272271246896789803961473130416053705672050873552479421805"
- "932646640744124594447361172514341324846716679654551308018400"
- "452551246797021031695590308415421099521962856162050274568841"
- "297915828747574343774874752902176710049525787625138678906010"
- "048638212027057374683542842282633896097240913572043788690878"
- "561421008447838407815393303366617352859876685151925036335142"
- "606462825839541908847139311166770091872983498508632067665424"
- "131663456011801988221011933744533095583591952713287509471572"
- "005635584655570174753698625195967118200265238753375268656404"
- "300638718932246773699829720984119713851462400809295266529707"
- "450603039675996477317034685632764277790214944500590950459817"
- "905458649624723235138950801408157339866516893477731877579183"
- "713595679581558427625325833939652897845282019149923069371763"
- "621014587926698827182969408373803807712292191282429102445352"
- "493434039402290243933941906906661090602900960765874258303002"
- "994639315656152078708796474719793763077934223746582725715380"
- "546621026022818892467551940977566283266498758568504813830755"
- "715585325649227824857891916443381390920079346240984072859876"
- "394789650127468861490822526766717770136680743866932662343305"
- "821821344306240809967537078707691232937387041140557168161956"
- "672595323950666742010786584275766171661791973302251394804664"
- "351065107886557299707326005651230394674710597929211000345040"
- "748992483614253006562424867893567074606589931788062200063807"
- "336740036940230215831403322125165368742446805152078682411506"
- "081843753974005583111391605547148303480887461773984314393817"
- "233328426227146997925421743280885595916487699461777590949432"
- "536021389649845214065322016198143547250143861460313408300535"
- "800647014276175548485543791298383644643679669618879907720347"
- "361578030001247419574448359597988425487829219851305162204925"
- "876422580754230478244492592334149461342828532046897137732862"
- "560405101567370570895662663174689131741739602970845694214086"
- "383402465037069569640956912385125748139813888875258203003486"
- "978747055202810394072908580324008598756993885667142200558137"
- "216665049755676940757442911860295559656788759871904662758651"
- "106796978788783386988295123326864580419821595430891867179378"
- "372968821128698879468814267529461494723425453808822356093436"
- "114567635804621183162768389034017821036515461700163537265334"
- "837042272659885702600247792917728828912373907035369136531164"
- "551871575024551077026080114197652598224677403885378544255851"
- "452142889211152237506343909351748731538683443195842912801950"
- "740929058503113127929421291089844021925400931905939216271347"
- "501989193058654389516377770771439860033940981826669939750630"
- "966060749188986231404992238674933998516958950824840538996637"
- "227947236848099456610159878061379742621311380927234118601003"
- "068752002060437285024623575047782086630607224900910789188204"
- "422115342157245494745974521832782208601602710639261482504706"
- "793704189474198047840288064399210243702202724597107455534275"
- "321401119382263147115748905050195256886082040192083380490209"
- "648570353905656303876661710430922155024620842080323610266391"
- "819853291160589645614945256684769911320943457402697573094119"
- "430125589389298495428377185239916427991844172165080029177729"
- "625180644077484441695092005844026411665118679537869781924378"
- "377060887769389297625907410934020531742739577183152327119791"
- "567636713426904553654134937766951789571845662564530364234831"
- "655818811851573018210173773037253988893680153247404060131255"
- "432297982534770778617218088583998040670598195597843579610890"
- "315316606725381521608825464438386306376596459107591134507541"
- "153403024199191222328259713530472683187873517955642380703639"
- "029816037096049042094836437281075965243968431839386959736989"
- "889027924230006904683050305965712585804355337311372959487108"
- "794286031594805559334414767793211932142402860019029250966461"
- "933621763149049802791695077716375242516443825235146860078555"
- "453142397983479144560015010889077242726183149587493050950967"
- "941488752366197740591478464591650201477772717579831983405962"
- "171742164889284586217913115136227964861078958766284010901639"
- "781256012341028188155836968476480842715858962105341815444164"
- "696766584018508513610260777540911573496315580383328678958350"
- "148157337222619548467971967434956296433870815461340134721800"
- "205755114983399523323106573720732056659216468891205124203527"
- "449961814733926916757607468806003312492414061695431041238453"
- "023522795690830184799840657478014435335788410588338795921829"
- "674102072285495410088727730494748054715270026371111466557692"
- "092596172401951206117443077191868585496116051853795368595736"
- "003882511620497061598923985774687093334185939744167238203676"
- "453052472980823976562293117120372063945943890666325365061961"
- "022928215929070357135085816756816486043117613837876554929621"
- "856269743752885605649447338817178927896144473776360438797900"
- "366212779802747593450564030114752479071739585723270865632758"
- "495434839556211713523098602573445161475191311400514062427097"
- "780117858230840648695846140902244217544683559565818359212130"
- "972233447491583165728635513802591543441145939539353470970452"
- "5536550715392",
- false,
- 0xf.fffffp+124,
- INF,
- 0xf.fffffp+124,
- INF,
- false,
- 0xf.ffffffffffff8p+1020,
- INF,
- 0xf.ffffffffffff8p+1020,
- INF,
- false,
- 0xf.fffffffffffffffp+16380,
- INF,
- 0xf.fffffffffffffffp+16380,
- INF,
- false,
- 0xf.fffffffffffffffp+16380,
- INF,
- 0xf.fffffffffffffffp+16380,
- INF,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020,
- INF,
- 0xf.fffffffffffffffffffffffffcp+1020,
- INF,
- false,
- 0xf.fffffffffffffffffffffffffff8p+16380,
- INF,
- 0xf.fffffffffffffffffffffffffff8p+16380,
- INF),
- TEST ("118973149535723176508575932662800707347995686986910214150118"
- "685272271246896789803961473130416053705672050873552479421805"
- "932646640744124594447361172514341324846716679654551308018400"
- "452551246797021031695590308415421099521962856162050274568841"
- "297915828747574343774874752902176710049525787625138678906010"
- "048638212027057374683542842282633896097240913572043788690878"
- "561421008447838407815393303366617352859876685151925036335142"
- "606462825839541908847139311166770091872983498508632067665424"
- "131663456011801988221011933744533095583591952713287509471572"
- "005635584655570174753698625195967118200265238753375268656404"
- "300638718932246773699829720984119713851462400809295266529707"
- "450603039675996477317034685632764277790214944500590950459817"
- "905458649624723235138950801408157339866516893477731877579183"
- "713595679581558427625325833939652897845282019149923069371763"
- "621014587926698827182969408373803807712292191282429102445352"
- "493434039402290243933941906906661090602900960765874258303002"
- "994639315656152078708796474719793763077934223746582725715380"
- "546621026022818892467551940977566283266498758568504813830755"
- "715585325649227824857891916443381390920079346240984072859876"
- "394789650127468861490822526766717770136680743866932662343305"
- "821821344306240809967537078707691232937387041140557168161956"
- "672595323950666742010786584275766171661791973302251394804664"
- "351065107886557299707326005651230394674710597929211000345040"
- "748992483614253006562424867893567074606589931788062200063807"
- "336740036940230215831403322125165368742446805152078682411506"
- "081843753974005583111391605547148303480887461773984314393817"
- "233328426227146997925421743280885595916487699461777590949432"
- "536021389649845214065322016198143547250143861460313408300535"
- "800647014276175548485543791298383644643679669618879907720347"
- "361578030001247419574448359597988425487829219851305162204925"
- "876422580754230478244492592334149461342828532046897137732862"
- "560405101567370570895662663174689131741739602970845694214086"
- "383402465037069569640956912385125748139813888875258203003486"
- "978747055202810394072908580324008598756993885667142200558137"
- "216665049755676940757442911860295559656788759871904662758651"
- "106796978788783386988295123326864580419821595430891867179378"
- "372968821128698879468814267529461494723425453808822356093436"
- "114567635804621183162768389034017821036515461700163537265334"
- "837042272659885702600247792917728828912373907035369136531164"
- "551871575024551077026080114197652598224677403885378544255851"
- "452142889211152237506343909351748731538683443195842912801950"
- "740929058503113127929421291089844021925400931905939216271347"
- "501989193058654389516377770771439860033940981826669939750630"
- "966060749188986231404992238674933998516958950824840538996637"
- "227947236848099456610159878061379742621311380927234118601003"
- "068752002060437285024623575047782086630607224900910789188204"
- "422115342157245494745974521832782208601602710639261482504706"
- "793704189474198047840288064399210243702202724597107455534275"
- "321401119382263147115748905050195256886082040192083380490209"
- "648570353905656303876661710430922155024620842080323610266391"
- "819853291160589645614945256684769911320943457402697573094119"
- "430125589389298495428377185239916427991844172165080029177729"
- "625180644077484441695092005844026411665118679537869781924378"
- "377060887769389297625907410934020531742739577183152327119791"
- "567636713426904553654134937766951789571845662564530364234831"
- "655818811851573018210173773037253988893680153247404060131255"
- "432297982534770778617218088583998040670598195597843579610890"
- "315316606725381521608825464438386306376596459107591134507541"
- "153403024199191222328259713530472683187873517955642380703639"
- "029816037096049042094836437281075965243968431839386959736989"
- "889027924230006904683050305965712585804355337311372959487108"
- "794286031594805559334414767793211932142402860019029250966461"
- "933621763149049802791695077716375242516443825235146860078555"
- "453142397983479144560015010889077242726183149587493050950967"
- "941488752366197740591478464591650201477772717579831983405962"
- "171742164889284586217913115136227964861078958766284010901639"
- "781256012341028188155836968476480842715858962105341815444164"
- "696766584018508513610260777540911573496315580383328678958350"
- "148157337222619548467971967434956296433870815461340134721800"
- "205755114983399523323106573720732056659216468891205124203527"
- "449961814733926916757607468806003312492414061695431041238453"
- "023522795690830184799840657478014435335788410588338795921829"
- "674102072285495410088727730494748054715270026371111466557692"
- "092596172401951206117443077191868585496116051853795368595736"
- "003882511620497061598923985774687093334185939744167238203676"
- "453052472980823976562293117120372063945943890666325365061961"
- "022928215929070357135085816756816486043117613837876554929621"
- "856269743752885605649447338817178927896144473776360438797900"
- "366212779802747593450564030114752479071739585723270865632758"
- "495434839556211713523098602573445161475191311400514062427097"
- "780117858230840648695846140902244217544683559565818359212130"
- "972233447491583165728635513802591543441145939539353470970452"
- "5536550715392.001",
- false,
- 0xf.fffffp+124,
- INF,
- 0xf.fffffp+124,
- INF,
- false,
- 0xf.ffffffffffff8p+1020,
- INF,
- 0xf.ffffffffffff8p+1020,
- INF,
- false,
- 0xf.fffffffffffffffp+16380,
- INF,
- 0xf.fffffffffffffffp+16380,
- INF,
- false,
- 0xf.fffffffffffffffp+16380,
- INF,
- 0xf.fffffffffffffffp+16380,
- INF,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020,
- INF,
- 0xf.fffffffffffffffffffffffffcp+1020,
- INF,
- false,
- 0xf.fffffffffffffffffffffffffff8p+16380,
- INF,
- 0xf.fffffffffffffffffffffffffff8p+16380,
- INF),
- TEST ("-11897314953572317650857593266280070734799568698691021415011"
- "868527227124689678980396147313041605370567205087355247942180"
- "593264664074412459444736117251434132484671667965455130801840"
- "045255124679702103169559030841542109952196285616205027456884"
- "129791582874757434377487475290217671004952578762513867890601"
- "004863821202705737468354284228263389609724091357204378869087"
- "856142100844783840781539330336661735285987668515192503633514"
- "260646282583954190884713931116677009187298349850863206766542"
- "413166345601180198822101193374453309558359195271328750947157"
- "200563558465557017475369862519596711820026523875337526865640"
- "430063871893224677369982972098411971385146240080929526652970"
- "745060303967599647731703468563276427779021494450059095045981"
- "790545864962472323513895080140815733986651689347773187757918"
- "371359567958155842762532583393965289784528201914992306937176"
- "362101458792669882718296940837380380771229219128242910244535"
- "249343403940229024393394190690666109060290096076587425830300"
- "299463931565615207870879647471979376307793422374658272571538"
- "054662102602281889246755194097756628326649875856850481383075"
- "571558532564922782485789191644338139092007934624098407285987"
- "639478965012746886149082252676671777013668074386693266234330"
- "582182134430624080996753707870769123293738704114055716816195"
- "667259532395066674201078658427576617166179197330225139480466"
- "435106510788655729970732600565123039467471059792921100034504"
- "074899248361425300656242486789356707460658993178806220006380"
- "733674003694023021583140332212516536874244680515207868241150"
- "608184375397400558311139160554714830348088746177398431439381"
- "723332842622714699792542174328088559591648769946177759094943"
- "253602138964984521406532201619814354725014386146031340830053"
- "580064701427617554848554379129838364464367966961887990772034"
- "736157803000124741957444835959798842548782921985130516220492"
- "587642258075423047824449259233414946134282853204689713773286"
- "256040510156737057089566266317468913174173960297084569421408"
- "638340246503706956964095691238512574813981388887525820300348"
- "697874705520281039407290858032400859875699388566714220055813"
- "721666504975567694075744291186029555965678875987190466275865"
- "110679697878878338698829512332686458041982159543089186717937"
- "837296882112869887946881426752946149472342545380882235609343"
- "611456763580462118316276838903401782103651546170016353726533"
- "483704227265988570260024779291772882891237390703536913653116"
- "455187157502455107702608011419765259822467740388537854425585"
- "145214288921115223750634390935174873153868344319584291280195"
- "074092905850311312792942129108984402192540093190593921627134"
- "750198919305865438951637777077143986003394098182666993975063"
- "096606074918898623140499223867493399851695895082484053899663"
- "722794723684809945661015987806137974262131138092723411860100"
- "306875200206043728502462357504778208663060722490091078918820"
- "442211534215724549474597452183278220860160271063926148250470"
- "679370418947419804784028806439921024370220272459710745553427"
- "532140111938226314711574890505019525688608204019208338049020"
- "964857035390565630387666171043092215502462084208032361026639"
- "181985329116058964561494525668476991132094345740269757309411"
- "943012558938929849542837718523991642799184417216508002917772"
- "962518064407748444169509200584402641166511867953786978192437"
- "837706088776938929762590741093402053174273957718315232711979"
- "156763671342690455365413493776695178957184566256453036423483"
- "165581881185157301821017377303725398889368015324740406013125"
- "543229798253477077861721808858399804067059819559784357961089"
- "031531660672538152160882546443838630637659645910759113450754"
- "115340302419919122232825971353047268318787351795564238070363"
- "902981603709604904209483643728107596524396843183938695973698"
- "988902792423000690468305030596571258580435533731137295948710"
- "879428603159480555933441476779321193214240286001902925096646"
- "193362176314904980279169507771637524251644382523514686007855"
- "545314239798347914456001501088907724272618314958749305095096"
- "794148875236619774059147846459165020147777271757983198340596"
- "217174216488928458621791311513622796486107895876628401090163"
- "978125601234102818815583696847648084271585896210534181544416"
- "469676658401850851361026077754091157349631558038332867895835"
- "014815733722261954846797196743495629643387081546134013472180"
- "020575511498339952332310657372073205665921646889120512420352"
- "744996181473392691675760746880600331249241406169543104123845"
- "302352279569083018479984065747801443533578841058833879592182"
- "967410207228549541008872773049474805471527002637111146655769"
- "209259617240195120611744307719186858549611605185379536859573"
- "600388251162049706159892398577468709333418593974416723820367"
- "645305247298082397656229311712037206394594389066632536506196"
- "102292821592907035713508581675681648604311761383787655492962"
- "185626974375288560564944733881717892789614447377636043879790"
- "036621277980274759345056403011475247907173958572327086563275"
- "849543483955621171352309860257344516147519131140051406242709"
- "778011785823084064869584614090224421754468355956581835921213"
- "097223344749158316572863551380259154344114593953935347097045"
- "25536550715391.999",
- false,
- -INF,
- -INF,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- false,
- -INF,
- -INF,
- -0xf.ffffffffffff8p+1020,
- -0xf.ffffffffffff8p+1020,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffffffffffffcp+1020,
- -0xf.fffffffffffffffffffffffffcp+1020,
- false,
- -INF,
- -0xf.fffffffffffffffffffffffffff8p+16380,
- -0xf.fffffffffffffffffffffffffff8p+16380,
- -0xf.fffffffffffffffffffffffffff8p+16380),
- TEST ("-11897314953572317650857593266280070734799568698691021415011"
- "868527227124689678980396147313041605370567205087355247942180"
- "593264664074412459444736117251434132484671667965455130801840"
- "045255124679702103169559030841542109952196285616205027456884"
- "129791582874757434377487475290217671004952578762513867890601"
- "004863821202705737468354284228263389609724091357204378869087"
- "856142100844783840781539330336661735285987668515192503633514"
- "260646282583954190884713931116677009187298349850863206766542"
- "413166345601180198822101193374453309558359195271328750947157"
- "200563558465557017475369862519596711820026523875337526865640"
- "430063871893224677369982972098411971385146240080929526652970"
- "745060303967599647731703468563276427779021494450059095045981"
- "790545864962472323513895080140815733986651689347773187757918"
- "371359567958155842762532583393965289784528201914992306937176"
- "362101458792669882718296940837380380771229219128242910244535"
- "249343403940229024393394190690666109060290096076587425830300"
- "299463931565615207870879647471979376307793422374658272571538"
- "054662102602281889246755194097756628326649875856850481383075"
- "571558532564922782485789191644338139092007934624098407285987"
- "639478965012746886149082252676671777013668074386693266234330"
- "582182134430624080996753707870769123293738704114055716816195"
- "667259532395066674201078658427576617166179197330225139480466"
- "435106510788655729970732600565123039467471059792921100034504"
- "074899248361425300656242486789356707460658993178806220006380"
- "733674003694023021583140332212516536874244680515207868241150"
- "608184375397400558311139160554714830348088746177398431439381"
- "723332842622714699792542174328088559591648769946177759094943"
- "253602138964984521406532201619814354725014386146031340830053"
- "580064701427617554848554379129838364464367966961887990772034"
- "736157803000124741957444835959798842548782921985130516220492"
- "587642258075423047824449259233414946134282853204689713773286"
- "256040510156737057089566266317468913174173960297084569421408"
- "638340246503706956964095691238512574813981388887525820300348"
- "697874705520281039407290858032400859875699388566714220055813"
- "721666504975567694075744291186029555965678875987190466275865"
- "110679697878878338698829512332686458041982159543089186717937"
- "837296882112869887946881426752946149472342545380882235609343"
- "611456763580462118316276838903401782103651546170016353726533"
- "483704227265988570260024779291772882891237390703536913653116"
- "455187157502455107702608011419765259822467740388537854425585"
- "145214288921115223750634390935174873153868344319584291280195"
- "074092905850311312792942129108984402192540093190593921627134"
- "750198919305865438951637777077143986003394098182666993975063"
- "096606074918898623140499223867493399851695895082484053899663"
- "722794723684809945661015987806137974262131138092723411860100"
- "306875200206043728502462357504778208663060722490091078918820"
- "442211534215724549474597452183278220860160271063926148250470"
- "679370418947419804784028806439921024370220272459710745553427"
- "532140111938226314711574890505019525688608204019208338049020"
- "964857035390565630387666171043092215502462084208032361026639"
- "181985329116058964561494525668476991132094345740269757309411"
- "943012558938929849542837718523991642799184417216508002917772"
- "962518064407748444169509200584402641166511867953786978192437"
- "837706088776938929762590741093402053174273957718315232711979"
- "156763671342690455365413493776695178957184566256453036423483"
- "165581881185157301821017377303725398889368015324740406013125"
- "543229798253477077861721808858399804067059819559784357961089"
- "031531660672538152160882546443838630637659645910759113450754"
- "115340302419919122232825971353047268318787351795564238070363"
- "902981603709604904209483643728107596524396843183938695973698"
- "988902792423000690468305030596571258580435533731137295948710"
- "879428603159480555933441476779321193214240286001902925096646"
- "193362176314904980279169507771637524251644382523514686007855"
- "545314239798347914456001501088907724272618314958749305095096"
- "794148875236619774059147846459165020147777271757983198340596"
- "217174216488928458621791311513622796486107895876628401090163"
- "978125601234102818815583696847648084271585896210534181544416"
- "469676658401850851361026077754091157349631558038332867895835"
- "014815733722261954846797196743495629643387081546134013472180"
- "020575511498339952332310657372073205665921646889120512420352"
- "744996181473392691675760746880600331249241406169543104123845"
- "302352279569083018479984065747801443533578841058833879592182"
- "967410207228549541008872773049474805471527002637111146655769"
- "209259617240195120611744307719186858549611605185379536859573"
- "600388251162049706159892398577468709333418593974416723820367"
- "645305247298082397656229311712037206394594389066632536506196"
- "102292821592907035713508581675681648604311761383787655492962"
- "185626974375288560564944733881717892789614447377636043879790"
- "036621277980274759345056403011475247907173958572327086563275"
- "849543483955621171352309860257344516147519131140051406242709"
- "778011785823084064869584614090224421754468355956581835921213"
- "097223344749158316572863551380259154344114593953935347097045"
- "25536550715392",
- false,
- -INF,
- -INF,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- false,
- -INF,
- -INF,
- -0xf.ffffffffffff8p+1020,
- -0xf.ffffffffffff8p+1020,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffffffffffffcp+1020,
- -0xf.fffffffffffffffffffffffffcp+1020,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffffffffffffff8p+16380,
- -0xf.fffffffffffffffffffffffffff8p+16380),
- TEST ("-11897314953572317650857593266280070734799568698691021415011"
- "868527227124689678980396147313041605370567205087355247942180"
- "593264664074412459444736117251434132484671667965455130801840"
- "045255124679702103169559030841542109952196285616205027456884"
- "129791582874757434377487475290217671004952578762513867890601"
- "004863821202705737468354284228263389609724091357204378869087"
- "856142100844783840781539330336661735285987668515192503633514"
- "260646282583954190884713931116677009187298349850863206766542"
- "413166345601180198822101193374453309558359195271328750947157"
- "200563558465557017475369862519596711820026523875337526865640"
- "430063871893224677369982972098411971385146240080929526652970"
- "745060303967599647731703468563276427779021494450059095045981"
- "790545864962472323513895080140815733986651689347773187757918"
- "371359567958155842762532583393965289784528201914992306937176"
- "362101458792669882718296940837380380771229219128242910244535"
- "249343403940229024393394190690666109060290096076587425830300"
- "299463931565615207870879647471979376307793422374658272571538"
- "054662102602281889246755194097756628326649875856850481383075"
- "571558532564922782485789191644338139092007934624098407285987"
- "639478965012746886149082252676671777013668074386693266234330"
- "582182134430624080996753707870769123293738704114055716816195"
- "667259532395066674201078658427576617166179197330225139480466"
- "435106510788655729970732600565123039467471059792921100034504"
- "074899248361425300656242486789356707460658993178806220006380"
- "733674003694023021583140332212516536874244680515207868241150"
- "608184375397400558311139160554714830348088746177398431439381"
- "723332842622714699792542174328088559591648769946177759094943"
- "253602138964984521406532201619814354725014386146031340830053"
- "580064701427617554848554379129838364464367966961887990772034"
- "736157803000124741957444835959798842548782921985130516220492"
- "587642258075423047824449259233414946134282853204689713773286"
- "256040510156737057089566266317468913174173960297084569421408"
- "638340246503706956964095691238512574813981388887525820300348"
- "697874705520281039407290858032400859875699388566714220055813"
- "721666504975567694075744291186029555965678875987190466275865"
- "110679697878878338698829512332686458041982159543089186717937"
- "837296882112869887946881426752946149472342545380882235609343"
- "611456763580462118316276838903401782103651546170016353726533"
- "483704227265988570260024779291772882891237390703536913653116"
- "455187157502455107702608011419765259822467740388537854425585"
- "145214288921115223750634390935174873153868344319584291280195"
- "074092905850311312792942129108984402192540093190593921627134"
- "750198919305865438951637777077143986003394098182666993975063"
- "096606074918898623140499223867493399851695895082484053899663"
- "722794723684809945661015987806137974262131138092723411860100"
- "306875200206043728502462357504778208663060722490091078918820"
- "442211534215724549474597452183278220860160271063926148250470"
- "679370418947419804784028806439921024370220272459710745553427"
- "532140111938226314711574890505019525688608204019208338049020"
- "964857035390565630387666171043092215502462084208032361026639"
- "181985329116058964561494525668476991132094345740269757309411"
- "943012558938929849542837718523991642799184417216508002917772"
- "962518064407748444169509200584402641166511867953786978192437"
- "837706088776938929762590741093402053174273957718315232711979"
- "156763671342690455365413493776695178957184566256453036423483"
- "165581881185157301821017377303725398889368015324740406013125"
- "543229798253477077861721808858399804067059819559784357961089"
- "031531660672538152160882546443838630637659645910759113450754"
- "115340302419919122232825971353047268318787351795564238070363"
- "902981603709604904209483643728107596524396843183938695973698"
- "988902792423000690468305030596571258580435533731137295948710"
- "879428603159480555933441476779321193214240286001902925096646"
- "193362176314904980279169507771637524251644382523514686007855"
- "545314239798347914456001501088907724272618314958749305095096"
- "794148875236619774059147846459165020147777271757983198340596"
- "217174216488928458621791311513622796486107895876628401090163"
- "978125601234102818815583696847648084271585896210534181544416"
- "469676658401850851361026077754091157349631558038332867895835"
- "014815733722261954846797196743495629643387081546134013472180"
- "020575511498339952332310657372073205665921646889120512420352"
- "744996181473392691675760746880600331249241406169543104123845"
- "302352279569083018479984065747801443533578841058833879592182"
- "967410207228549541008872773049474805471527002637111146655769"
- "209259617240195120611744307719186858549611605185379536859573"
- "600388251162049706159892398577468709333418593974416723820367"
- "645305247298082397656229311712037206394594389066632536506196"
- "102292821592907035713508581675681648604311761383787655492962"
- "185626974375288560564944733881717892789614447377636043879790"
- "036621277980274759345056403011475247907173958572327086563275"
- "849543483955621171352309860257344516147519131140051406242709"
- "778011785823084064869584614090224421754468355956581835921213"
- "097223344749158316572863551380259154344114593953935347097045"
- "25536550715392.001",
- false,
- -INF,
- -INF,
- -0xf.fffffp+124,
- -0xf.fffffp+124,
- false,
- -INF,
- -INF,
- -0xf.ffffffffffff8p+1020,
- -0xf.ffffffffffff8p+1020,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffp+16380,
- -0xf.fffffffffffffffp+16380,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffffffffffffcp+1020,
- -0xf.fffffffffffffffffffffffffcp+1020,
- false,
- -INF,
- -INF,
- -0xf.fffffffffffffffffffffffffff8p+16380,
- -0xf.fffffffffffffffffffffffffff8p+16380),
- TEST ("2.1019476964872256063855943749348741969203929128147736576356"
- "0242583468662402879090222995728254318237304687499e-45",
- false,
- 0x8p-152,
- 0x8p-152,
- 0x8p-152,
- 0x1p-148,
- false,
- 0xb.ffffffffffff8p-152,
- 0xcp-152,
- 0xb.ffffffffffff8p-152,
- 0xcp-152,
- false,
- 0xb.fffffffffffffffp-152,
- 0xcp-152,
- 0xb.fffffffffffffffp-152,
- 0xcp-152,
- false,
- 0xb.fffffffffffffffp-152,
- 0xcp-152,
- 0xb.fffffffffffffffp-152,
- 0xcp-152,
- false,
- 0xb.fffffffffffffffffffffffffcp-152,
- 0xcp-152,
- 0xb.fffffffffffffffffffffffffcp-152,
- 0xcp-152,
- false,
- 0xb.fffffffffffffffffffffffffff8p-152,
- 0xcp-152,
- 0xb.fffffffffffffffffffffffffff8p-152,
- 0xcp-152),
- TEST ("2.1019476964872256063855943749348741969203929128147736576356"
- "02425834686624028790902229957282543182373046875e-45",
- false,
- 0x8p-152,
- 0x1p-148,
- 0x8p-152,
- 0x1p-148,
- true,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- true,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- true,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- true,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- true,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152),
- TEST ("2.1019476964872256063855943749348741969203929128147736576356"
- "0242583468662402879090222995728254318237304687501e-45",
- false,
- 0x8p-152,
- 0x1p-148,
- 0x8p-152,
- 0x1p-148,
- false,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xc.0000000000008p-152,
- false,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xc.000000000000001p-152,
- false,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xc.000000000000001p-152,
- false,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xc.00000000000000000000000004p-152,
- false,
- 0xcp-152,
- 0xcp-152,
- 0xcp-152,
- 0xc.0000000000000000000000000008p-152),
- TEST ("-2.101947696487225606385594374934874196920392912814773657635"
- "60242583468662402879090222995728254318237304687499e-45",
- false,
- -0x1p-148,
- -0x8p-152,
- -0x8p-152,
- -0x8p-152,
- false,
- -0xcp-152,
- -0xcp-152,
- -0xb.ffffffffffff8p-152,
- -0xb.ffffffffffff8p-152,
- false,
- -0xcp-152,
- -0xcp-152,
- -0xb.fffffffffffffffp-152,
- -0xb.fffffffffffffffp-152,
- false,
- -0xcp-152,
- -0xcp-152,
- -0xb.fffffffffffffffp-152,
- -0xb.fffffffffffffffp-152,
- false,
- -0xcp-152,
- -0xcp-152,
- -0xb.fffffffffffffffffffffffffcp-152,
- -0xb.fffffffffffffffffffffffffcp-152,
- false,
- -0xcp-152,
- -0xcp-152,
- -0xb.fffffffffffffffffffffffffff8p-152,
- -0xb.fffffffffffffffffffffffffff8p-152),
- TEST ("-2.101947696487225606385594374934874196920392912814773657635"
- "602425834686624028790902229957282543182373046875e-45",
- false,
- -0x1p-148,
- -0x1p-148,
- -0x8p-152,
- -0x8p-152,
- true,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- true,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- true,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- true,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- true,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152),
- TEST ("-2.101947696487225606385594374934874196920392912814773657635"
- "60242583468662402879090222995728254318237304687501e-45",
- false,
- -0x1p-148,
- -0x1p-148,
- -0x8p-152,
- -0x8p-152,
- false,
- -0xc.0000000000008p-152,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- false,
- -0xc.000000000000001p-152,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- false,
- -0xc.000000000000001p-152,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- false,
- -0xc.00000000000000000000000004p-152,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152,
- false,
- -0xc.0000000000000000000000000008p-152,
- -0xcp-152,
- -0xcp-152,
- -0xcp-152),
- TEST ("3.5032461608120426773093239582247903282006548546912894293926"
- "7070972447770671465150371659547090530395507812499e-45",
- false,
- 0x1p-148,
- 0x1p-148,
- 0x1p-148,
- 0x1.8p-148,
- false,
- 0x1.3ffffffffffffp-148,
- 0x1.4p-148,
- 0x1.3ffffffffffffp-148,
- 0x1.4p-148,
- false,
- 0x1.3ffffffffffffffep-148,
- 0x1.4p-148,
- 0x1.3ffffffffffffffep-148,
- 0x1.4p-148,
- false,
- 0x1.3ffffffffffffffep-148,
- 0x1.4p-148,
- 0x1.3ffffffffffffffep-148,
- 0x1.4p-148,
- false,
- 0x1.3fffffffffffffffffffffffff8p-148,
- 0x1.4p-148,
- 0x1.3fffffffffffffffffffffffff8p-148,
- 0x1.4p-148,
- false,
- 0x1.3fffffffffffffffffffffffffffp-148,
- 0x1.4p-148,
- 0x1.3fffffffffffffffffffffffffffp-148,
- 0x1.4p-148),
- TEST ("3.5032461608120426773093239582247903282006548546912894293926"
- "70709724477706714651503716595470905303955078125e-45",
- false,
- 0x1p-148,
- 0x1p-148,
- 0x1p-148,
- 0x1.8p-148,
- true,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- true,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- true,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- true,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- true,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148),
- TEST ("3.5032461608120426773093239582247903282006548546912894293926"
- "7070972447770671465150371659547090530395507812501e-45",
- false,
- 0x1p-148,
- 0x1.8p-148,
- 0x1p-148,
- 0x1.8p-148,
- false,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4000000000001p-148,
- false,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4000000000000002p-148,
- false,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4000000000000002p-148,
- false,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.400000000000000000000000008p-148,
- false,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4p-148,
- 0x1.4000000000000000000000000001p-148),
- TEST ("-3.503246160812042677309323958224790328200654854691289429392"
- "67070972447770671465150371659547090530395507812499e-45",
- false,
- -0x1.8p-148,
- -0x1p-148,
- -0x1p-148,
- -0x1p-148,
- false,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.3ffffffffffffp-148,
- -0x1.3ffffffffffffp-148,
- false,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.3ffffffffffffffep-148,
- -0x1.3ffffffffffffffep-148,
- false,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.3ffffffffffffffep-148,
- -0x1.3ffffffffffffffep-148,
- false,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.3fffffffffffffffffffffffff8p-148,
- -0x1.3fffffffffffffffffffffffff8p-148,
- false,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.3fffffffffffffffffffffffffffp-148,
- -0x1.3fffffffffffffffffffffffffffp-148),
- TEST ("-3.503246160812042677309323958224790328200654854691289429392"
- "670709724477706714651503716595470905303955078125e-45",
- false,
- -0x1.8p-148,
- -0x1p-148,
- -0x1p-148,
- -0x1p-148,
- true,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- true,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- true,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- true,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- true,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148),
- TEST ("-3.503246160812042677309323958224790328200654854691289429392"
- "67070972447770671465150371659547090530395507812501e-45",
- false,
- -0x1.8p-148,
- -0x1.8p-148,
- -0x1p-148,
- -0x1p-148,
- false,
- -0x1.4000000000001p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- false,
- -0x1.4000000000000002p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- false,
- -0x1.4000000000000002p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- false,
- -0x1.400000000000000000000000008p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- false,
- -0x1.4000000000000000000000000001p-148,
- -0x1.4p-148,
- -0x1.4p-148,
- -0x1.4p-148),
- TEST ("7.4109846876186981626485318930233205854758970392148714663837"
- "852375101326090531312779794975454245398856969484704316857659"
- "638998506553390969459816219401617281718945106978546710679176"
- "872575177347315553307795408549809608457500958111373034747658"
- "096871009590975442271004757307809711118935784838675653998783"
- "503015228055934046593739791790738723868299395818481660169122"
- "019456499931289798411362062484498678713572180352209017023903"
- "285791732520220528974020802906854021606612375549983402671300"
- "035812486479041385743401875520901590172592547146296175134159"
- "774938718574737870961645638908718119841271673056017045493004"
- "705269590165763776884908267986972573366521765567941072508764"
- "337560846003984904972149117463085539556354188641513168478436"
- "31308023759629577398300170898437499e-324",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x4p-1076,
- 0x4p-1076,
- 0x4p-1076,
- 0x8p-1076,
- false,
- 0x5.fffffffffffffff8p-1076,
- 0x6p-1076,
- 0x5.fffffffffffffff8p-1076,
- 0x6p-1076,
- false,
- 0x5.fffffffffffffff8p-1076,
- 0x6p-1076,
- 0x5.fffffffffffffff8p-1076,
- 0x6p-1076,
- false,
- 0x4p-1076,
- 0x4p-1076,
- 0x4p-1076,
- 0x8p-1076,
- false,
- 0x5.fffffffffffffffffffffffffffcp-1076,
- 0x6p-1076,
- 0x5.fffffffffffffffffffffffffffcp-1076,
- 0x6p-1076),
- TEST ("7.4109846876186981626485318930233205854758970392148714663837"
- "852375101326090531312779794975454245398856969484704316857659"
- "638998506553390969459816219401617281718945106978546710679176"
- "872575177347315553307795408549809608457500958111373034747658"
- "096871009590975442271004757307809711118935784838675653998783"
- "503015228055934046593739791790738723868299395818481660169122"
- "019456499931289798411362062484498678713572180352209017023903"
- "285791732520220528974020802906854021606612375549983402671300"
- "035812486479041385743401875520901590172592547146296175134159"
- "774938718574737870961645638908718119841271673056017045493004"
- "705269590165763776884908267986972573366521765567941072508764"
- "337560846003984904972149117463085539556354188641513168478436"
- "313080237596295773983001708984375e-324",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x4p-1076,
- 0x8p-1076,
- 0x4p-1076,
- 0x8p-1076,
- true,
- 0x6p-1076,
- 0x6p-1076,
- 0x6p-1076,
- 0x6p-1076,
- true,
- 0x6p-1076,
- 0x6p-1076,
- 0x6p-1076,
- 0x6p-1076,
- false,
- 0x4p-1076,
- 0x8p-1076,
- 0x4p-1076,
- 0x8p-1076,
- true,
- 0x6p-1076,
- 0x6p-1076,
- 0x6p-1076,
- 0x6p-1076),
- TEST ("7.4109846876186981626485318930233205854758970392148714663837"
- "852375101326090531312779794975454245398856969484704316857659"
- "638998506553390969459816219401617281718945106978546710679176"
- "872575177347315553307795408549809608457500958111373034747658"
- "096871009590975442271004757307809711118935784838675653998783"
- "503015228055934046593739791790738723868299395818481660169122"
- "019456499931289798411362062484498678713572180352209017023903"
- "285791732520220528974020802906854021606612375549983402671300"
- "035812486479041385743401875520901590172592547146296175134159"
- "774938718574737870961645638908718119841271673056017045493004"
- "705269590165763776884908267986972573366521765567941072508764"
- "337560846003984904972149117463085539556354188641513168478436"
- "31308023759629577398300170898437501e-324",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x4p-1076,
- 0x8p-1076,
- 0x4p-1076,
- 0x8p-1076,
- false,
- 0x6p-1076,
- 0x6p-1076,
- 0x6p-1076,
- 0x6.0000000000000008p-1076,
- false,
- 0x6p-1076,
- 0x6p-1076,
- 0x6p-1076,
- 0x6.0000000000000008p-1076,
- false,
- 0x4p-1076,
- 0x8p-1076,
- 0x4p-1076,
- 0x8p-1076,
- false,
- 0x6p-1076,
- 0x6p-1076,
- 0x6p-1076,
- 0x6.0000000000000000000000000004p-1076),
- TEST ("-7.410984687618698162648531893023320585475897039214871466383"
- "785237510132609053131277979497545424539885696948470431685765"
- "963899850655339096945981621940161728171894510697854671067917"
- "687257517734731555330779540854980960845750095811137303474765"
- "809687100959097544227100475730780971111893578483867565399878"
- "350301522805593404659373979179073872386829939581848166016912"
- "201945649993128979841136206248449867871357218035220901702390"
- "328579173252022052897402080290685402160661237554998340267130"
- "003581248647904138574340187552090159017259254714629617513415"
- "977493871857473787096164563890871811984127167305601704549300"
- "470526959016576377688490826798697257336652176556794107250876"
- "433756084600398490497214911746308553955635418864151316847843"
- "631308023759629577398300170898437499e-324",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-1076,
- -0x4p-1076,
- -0x4p-1076,
- -0x4p-1076,
- false,
- -0x6p-1076,
- -0x6p-1076,
- -0x5.fffffffffffffff8p-1076,
- -0x5.fffffffffffffff8p-1076,
- false,
- -0x6p-1076,
- -0x6p-1076,
- -0x5.fffffffffffffff8p-1076,
- -0x5.fffffffffffffff8p-1076,
- false,
- -0x8p-1076,
- -0x4p-1076,
- -0x4p-1076,
- -0x4p-1076,
- false,
- -0x6p-1076,
- -0x6p-1076,
- -0x5.fffffffffffffffffffffffffffcp-1076,
- -0x5.fffffffffffffffffffffffffffcp-1076),
- TEST ("-7.410984687618698162648531893023320585475897039214871466383"
- "785237510132609053131277979497545424539885696948470431685765"
- "963899850655339096945981621940161728171894510697854671067917"
- "687257517734731555330779540854980960845750095811137303474765"
- "809687100959097544227100475730780971111893578483867565399878"
- "350301522805593404659373979179073872386829939581848166016912"
- "201945649993128979841136206248449867871357218035220901702390"
- "328579173252022052897402080290685402160661237554998340267130"
- "003581248647904138574340187552090159017259254714629617513415"
- "977493871857473787096164563890871811984127167305601704549300"
- "470526959016576377688490826798697257336652176556794107250876"
- "433756084600398490497214911746308553955635418864151316847843"
- "6313080237596295773983001708984375e-324",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-1076,
- -0x8p-1076,
- -0x4p-1076,
- -0x4p-1076,
- true,
- -0x6p-1076,
- -0x6p-1076,
- -0x6p-1076,
- -0x6p-1076,
- true,
- -0x6p-1076,
- -0x6p-1076,
- -0x6p-1076,
- -0x6p-1076,
- false,
- -0x8p-1076,
- -0x8p-1076,
- -0x4p-1076,
- -0x4p-1076,
- true,
- -0x6p-1076,
- -0x6p-1076,
- -0x6p-1076,
- -0x6p-1076),
- TEST ("-7.410984687618698162648531893023320585475897039214871466383"
- "785237510132609053131277979497545424539885696948470431685765"
- "963899850655339096945981621940161728171894510697854671067917"
- "687257517734731555330779540854980960845750095811137303474765"
- "809687100959097544227100475730780971111893578483867565399878"
- "350301522805593404659373979179073872386829939581848166016912"
- "201945649993128979841136206248449867871357218035220901702390"
- "328579173252022052897402080290685402160661237554998340267130"
- "003581248647904138574340187552090159017259254714629617513415"
- "977493871857473787096164563890871811984127167305601704549300"
- "470526959016576377688490826798697257336652176556794107250876"
- "433756084600398490497214911746308553955635418864151316847843"
- "631308023759629577398300170898437501e-324",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-1076,
- -0x8p-1076,
- -0x4p-1076,
- -0x4p-1076,
- false,
- -0x6.0000000000000008p-1076,
- -0x6p-1076,
- -0x6p-1076,
- -0x6p-1076,
- false,
- -0x6.0000000000000008p-1076,
- -0x6p-1076,
- -0x6p-1076,
- -0x6p-1076,
- false,
- -0x8p-1076,
- -0x8p-1076,
- -0x4p-1076,
- -0x4p-1076,
- false,
- -0x6.0000000000000000000000000004p-1076,
- -0x6p-1076,
- -0x6p-1076,
- -0x6p-1076),
- TEST ("5.4677992978237119037926089004291297245985762235403450155814"
- "707305425575329500966052143410629387408077958710210208052966"
- "529504784489330482549602621133847135082257338717668975178538"
- "378957084503396349323438489751160934104796903302909028868611"
- "999312592165232778075745690821530731336739429587895774023213"
- "939331012985331912661021188896306095323395084578542200319963"
- "179359407180003251440084380484161504585462684082946932782829"
- "488183829817567452314437076943950532707791252404699268678810"
- "198502871250235796855577909830559749628817599194837522029036"
- "891995648803056846354520653635957919882905363521007017169741"
- "463296044392266269433408052686419017699718627761948763856040"
- "592690841721239300491445991666051031755802326720329666454066"
- "568630314348735511753639418257984253319063825247065727664852"
- "328745422305642626091617823968872438962470092440688372515677"
- "832232712866924800106797113478024083516199991991274936894113"
- "006233377518471389394984262004503058455485659100090665241525"
- "454803628182902241401701783637353179296850056973639305945938"
- "813428953287892593620291195986011128990061888798763718548789"
- "025717537674780281005583347165047846045925077914824515331335"
- "131286063574407181821236377907693209224423490663289916878620"
- "725507793163931390372011875799729330162278748985052557432333"
- "005334989519381566364065326138465761456173231416844807264090"
- "741841972247545424908843928136253653308813487994328446248389"
- "608261444391573619177442907290731163188581917588219420107047"
- "265367485141413919810885909689112244064797106324295291545892"
- "937991321479061743491490060940946128274533657682130125169586"
- "930571899403551122506297763180795732325134340989331155893724"
- "289358918212707392997768032299997207208451112971425779939507"
- "837165263255764268971211819536322993221774123134726665579460"
- "265871378186589562858761835613344584269098062275786969729830"
- "545786485401407774313414954958161677096004701941411411592755"
- "485864471870515173326244464631295701572087440183178339987662"
- "926763241220698078822661709054601073523477544653542795020468"
- "256078409306409100874886828781860529824879343987945751252081"
- "314345990313550683792348814627862441324030155730592166581251"
- "009922787324590431548734575328663628650380722603024383412564"
- "651446272117561042207738413114131099731016728935023152239431"
- "311619533848376583687509108453086730196255111695352464186678"
- "221927564757730319825223049341618853631333478241227227268084"
- "583396688436229936266854011427192767039363517491659523133852"
- "472534104124441112346615696891097070121463652258681270378076"
- "538381697594264658479637863087159293838880752928175545408262"
- "813403793568695416998388572304528748824756265665683890518422"
- "696169422338806137532304784682662448207928681740476188343739"
- "117833525916386815135793034906806117413105008719197882837614"
- "738262050320291539494104952056471606645482046176634075459021"
- "552555959590354956262127809953013679512507451424271839221946"
- "794056861055980558363033732905772356986051180966474116423192"
- "194741572438649215204229781279620370445373851348786918527399"
- "785630808242657122705381806661616271132182017797793661244078"
- "445747547535623384548769818529655539279036503234072455810991"
- "588075181817695975173110136482659854557506203058080551018873"
- "203138260451109855100526720073566126209666125604482413705611"
- "996796777927332827103568863352291499261312290355143742018042"
- "254470707107847293593205234049774839191754781030496978091006"
- "099559675240966730110167624903610656473267105556155633783594"
- "089546261107653110531808279445757724399186120387548675148632"
- "176049190701680305210224388072261974806791922636412897526952"
- "793677946622674149577084803568051242934076450942927092705684"
- "547042915490323112457971853658760725588190377666477106903106"
- "693847278847646032201293023329503348730723947218797410452333"
- "910847913892827195814551858335519518939031446093385329182820"
- "714173657946661746005901866885589732922652604573972842197231"
- "187365263381958925227970038358064987248233271706462687651143"
- "350472018043321314534759819524203308490914358596886150053406"
- "629512434788155355109100540319857813535695923273426256911552"
- "977539394209918630668466632881929661971212772444625151371953"
- "428875491139683919687008724010475217255347915698820960215217"
- "257390308560235323463096946442080548018754166369706161589705"
- "215873687166365628787796501470056870127729464714362172216802"
- "441045276911597009443281135389729130222603185665646434661947"
- "627628077723219376892727386120519287577405410510114936151502"
- "752997122750262781911372625997223415283516995479265631485799"
- "456782561734766648462849641064097181818204279498552827825384"
- "186202065516999362573388136163077477126602169410435905014077"
- "049808497409025369325795765272066650278004200357878990911374"
- "982857977108488482528354406313893864211497105765030504600982"
- "253488805474531798742143374465080240030582370086699167937651"
- "038307909706139327119325418854546478285735654541635477790346"
- "964782617354265050767878335230272194896680141986745074630225"
- "893106573559558843545841186025169531604151588481389164948914"
- "823593944287133336263680358191369540321930649824471425485137"
- "777984823525402115151171093313613251350685343824859052220126"
- "891551966018355920872775724807128769003243129486808733796350"
- "497668255116485157191011858830643898323628223472099280243583"
- "164434348347014910398004439821970508280440872759395827943270"
- "985008769143562351938091476215083548164137333541883808870019"
- "116234099013452929807950151652297436436006149684939775781234"
- "660954156154478642694176038524277810483833149798681345708089"
- "152179193979463169402340611793486272301808073267534612685593"
- "859596787866884211031341417903391749825320454663508370385251"
- "831778477311017089729361152161928815389818579983544490982891"
- "734081131312309744330960666031291451740885503458543884956367"
- "654943799264600314531815427932691107874782328654759293575803"
- "481929361961781073958502075438499070633193799699311694287183"
- "299423475339817655608058724723221867087563064557636112380829"
- "514501382073257737022472866608244164310385205213523702910787"
- "182472517125030106491031844871593141759729773907719510044049"
- "352857426592936763727969496103940591601975078602859660478614"
- "119405428212830134490731706220583788265344728818766885126977"
- "588151111984290444321648931907188080336064713873288834096229"
- "203276676119810521851726133377700616341304257822975788967472"
- "152742255041912584197045423031298506219011800240120182445838"
- "590696647416285334515631019799007515682004250060857020904012"
- "215375170479800482680554499806010766109655061507421747722461"
- "180617361402575082294678925605271083587897845390768226405648"
- "508518103525778638618195775128516073959272990148239415346263"
- "486966573934577450787243667063244378381883115827207605856174"
- "876350045086885320626669331311880593775916269643646395423220"
- "549940790476989709243027420158390806135690975149384714684219"
- "964938182719962913931464979458639185519531490009437619838306"
- "362365453754807654884704163490469296444427144778593725687358"
- "437087390151990694667516279202024332494828210657618261952038"
- "597230263799412584275851667403910657370879707181053365818502"
- "680037431560091209982641738995652793235851569372314130107647"
- "166085235615697257094269133100914135783178856280392139325001"
- "352841718610484616627448189556913621837791650699820323059708"
- "766420810133584841826718631681683381743511974264126250984214"
- "812397119978273917903889865891718836792263377888052458189238"
- "746074986456016681098722869419588274020181430652732817858728"
- "473849369539367463917171317324882099804999043054467247785592"
- "038464723442276239896066431580123756428540074945472427752568"
- "981171400621705853374875885943072600692576914790467205905272"
- "372594740187988081900317493185005142913607163380720069786786"
- "782095331840893694073778325119471833528492917081008547303414"
- "509381563617864195257751546539575461435803625993888325647883"
- "541039192368366987400263049681218831477776345118518503709588"
- "840859023379762456561030683928115349942393963185677123055324"
- "771693784214924931737043793679546051454845624150270955450608"
- "318747395755728950832754611277041359602301205138509175543313"
- "522772786504141007552691902249572375175731740923618769197304"
- "652898352694386665448260033458575323252814233868098279476166"
- "764258284911434288072243178941698347365985427696983129579496"
- "059032032841281149923518087084876885114369033227736521245740"
- "554711771423492719899982357711910225545480424688322195336240"
- "492253136281857837808491795993788199125205555222116581071134"
- "476787468430539307909617442106685159519071053844987343666452"
- "494280317720153567054364117244775141336558406098548803924509"
- "496052261825198043140272655303625315605326569530252885854991"
- "822289219201218313590745412010446642247111703901991591338062"
- "693320157180618736569439969283245279430312651192668788340033"
- "626825194260296262959884258597703584888770801961209652822982"
- "322376122303586169861685106043820510444293432856251210395693"
- "261264867823980172683352796141772210301725997652373804152525"
- "037162852291403804455997331367378463632437773242905518075065"
- "414724295857460288225400061608664961649196400079359622673770"
- "607898395269075056596627116148289491042491764170924014885106"
- "158235482774778418134123293974436877051995673618683751115353"
- "808771434984204447736174758316063096245047311279841579995578"
- "186609402864244042751443128536278453430633423118662852688374"
- "229600894418958824842459450540826176452145829389286103522774"
- "101195556029650753254244433565937938526828990893149766298997"
- "738359913887178888607190765709867052470880785937935110091424"
- "743449966353497865681753841380246075612094033617488674676296"
- "822570077027076266879557913673839341012099558043806442348798"
- "053951239274913334631522409564461770434875790402230022872647"
- "568436177018658068697071731879399180374560963492726714528729"
- "224208938589940272515747888379118461617702271694075087419634"
- "147298076764775745707026934442908236664400557265527951453482"
- "191684597674273691978253678690951178777239573925410438679099"
- "374700609973920128201422381329108236575369403675960765238333"
- "778127017096574296148321075566959285042221837159799800133563"
- "239963969638610872680393210300180152020613051613414547163713"
- "772512617757277955979895866367571776456268564191092477027650"
- "135832200376440239783726540552694851717269598489288851529660"
- "975027775639565229734596726205832668434979354541943345062977"
- "891187146561050118118108223323735210843681128615413601091222"
- "007912350536959777114306541514511332368936078560929788143798"
- "814391221507522370648646767364209132147312407014953113532379"
- "838195728491128536978285918066991040993153064356179903885952"
- "027952713749653604502053512355449916680887234238773855581636"
- "172479594866871765094513940103284167914110196720261110812716"
- "776424260154507395050380575452850420730818412994731079307343"
- "538376880280124019321040198038723558784544408584344466090982"
- "802067326529000931562048932875469079874956595180595395347093"
- "285140279165467965596318365749701535812384333240968283640721"
- "344003442002691613772056762099098025739332715913970186225176"
- "459563484134139746647940170537900275350480490468851439300771"
- "949915194703080576611022590670399844931867609777417528903454"
- "731922206378932141464755402629420074293816349270038351339419"
- "146768473851353171629153912238797141905920143036064131705230"
- "421762305232861503856799511155936565169005916711845389135580"
- "928162511912438531204156138447775120789548666143600293412065"
- "767167106888509172568003530668539460588248316513392652567856"
- "224602697296203328920073354425994044956624831346979458846837"
- "597950064151867164583749203433942592178528868981311575331848"
- "941597492470436782387502687532649093096498315347403977436001"
- "399982102030846763698994785054617523241463186980898394504211"
- "430763617825306895065661536045431497903759118007934839122881"
- "885863091769469883539876840543521295706315919855784493235603"
- "866268925981702690270202829595794350800918257913991744455922"
- "683343374046671669930219650268554687499e-4951",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x8p-16448,
- 0x8p-16448,
- 0x8p-16448,
- 0x1p-16444,
- false,
- 0x8p-16448,
- 0xcp-16448,
- 0x8p-16448,
- 0xcp-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0xb.fffffffffffcp-16448,
- 0xcp-16448,
- 0xb.fffffffffffcp-16448,
- 0xcp-16448),
- TEST ("5.4677992978237119037926089004291297245985762235403450155814"
- "707305425575329500966052143410629387408077958710210208052966"
- "529504784489330482549602621133847135082257338717668975178538"
- "378957084503396349323438489751160934104796903302909028868611"
- "999312592165232778075745690821530731336739429587895774023213"
- "939331012985331912661021188896306095323395084578542200319963"
- "179359407180003251440084380484161504585462684082946932782829"
- "488183829817567452314437076943950532707791252404699268678810"
- "198502871250235796855577909830559749628817599194837522029036"
- "891995648803056846354520653635957919882905363521007017169741"
- "463296044392266269433408052686419017699718627761948763856040"
- "592690841721239300491445991666051031755802326720329666454066"
- "568630314348735511753639418257984253319063825247065727664852"
- "328745422305642626091617823968872438962470092440688372515677"
- "832232712866924800106797113478024083516199991991274936894113"
- "006233377518471389394984262004503058455485659100090665241525"
- "454803628182902241401701783637353179296850056973639305945938"
- "813428953287892593620291195986011128990061888798763718548789"
- "025717537674780281005583347165047846045925077914824515331335"
- "131286063574407181821236377907693209224423490663289916878620"
- "725507793163931390372011875799729330162278748985052557432333"
- "005334989519381566364065326138465761456173231416844807264090"
- "741841972247545424908843928136253653308813487994328446248389"
- "608261444391573619177442907290731163188581917588219420107047"
- "265367485141413919810885909689112244064797106324295291545892"
- "937991321479061743491490060940946128274533657682130125169586"
- "930571899403551122506297763180795732325134340989331155893724"
- "289358918212707392997768032299997207208451112971425779939507"
- "837165263255764268971211819536322993221774123134726665579460"
- "265871378186589562858761835613344584269098062275786969729830"
- "545786485401407774313414954958161677096004701941411411592755"
- "485864471870515173326244464631295701572087440183178339987662"
- "926763241220698078822661709054601073523477544653542795020468"
- "256078409306409100874886828781860529824879343987945751252081"
- "314345990313550683792348814627862441324030155730592166581251"
- "009922787324590431548734575328663628650380722603024383412564"
- "651446272117561042207738413114131099731016728935023152239431"
- "311619533848376583687509108453086730196255111695352464186678"
- "221927564757730319825223049341618853631333478241227227268084"
- "583396688436229936266854011427192767039363517491659523133852"
- "472534104124441112346615696891097070121463652258681270378076"
- "538381697594264658479637863087159293838880752928175545408262"
- "813403793568695416998388572304528748824756265665683890518422"
- "696169422338806137532304784682662448207928681740476188343739"
- "117833525916386815135793034906806117413105008719197882837614"
- "738262050320291539494104952056471606645482046176634075459021"
- "552555959590354956262127809953013679512507451424271839221946"
- "794056861055980558363033732905772356986051180966474116423192"
- "194741572438649215204229781279620370445373851348786918527399"
- "785630808242657122705381806661616271132182017797793661244078"
- "445747547535623384548769818529655539279036503234072455810991"
- "588075181817695975173110136482659854557506203058080551018873"
- "203138260451109855100526720073566126209666125604482413705611"
- "996796777927332827103568863352291499261312290355143742018042"
- "254470707107847293593205234049774839191754781030496978091006"
- "099559675240966730110167624903610656473267105556155633783594"
- "089546261107653110531808279445757724399186120387548675148632"
- "176049190701680305210224388072261974806791922636412897526952"
- "793677946622674149577084803568051242934076450942927092705684"
- "547042915490323112457971853658760725588190377666477106903106"
- "693847278847646032201293023329503348730723947218797410452333"
- "910847913892827195814551858335519518939031446093385329182820"
- "714173657946661746005901866885589732922652604573972842197231"
- "187365263381958925227970038358064987248233271706462687651143"
- "350472018043321314534759819524203308490914358596886150053406"
- "629512434788155355109100540319857813535695923273426256911552"
- "977539394209918630668466632881929661971212772444625151371953"
- "428875491139683919687008724010475217255347915698820960215217"
- "257390308560235323463096946442080548018754166369706161589705"
- "215873687166365628787796501470056870127729464714362172216802"
- "441045276911597009443281135389729130222603185665646434661947"
- "627628077723219376892727386120519287577405410510114936151502"
- "752997122750262781911372625997223415283516995479265631485799"
- "456782561734766648462849641064097181818204279498552827825384"
- "186202065516999362573388136163077477126602169410435905014077"
- "049808497409025369325795765272066650278004200357878990911374"
- "982857977108488482528354406313893864211497105765030504600982"
- "253488805474531798742143374465080240030582370086699167937651"
- "038307909706139327119325418854546478285735654541635477790346"
- "964782617354265050767878335230272194896680141986745074630225"
- "893106573559558843545841186025169531604151588481389164948914"
- "823593944287133336263680358191369540321930649824471425485137"
- "777984823525402115151171093313613251350685343824859052220126"
- "891551966018355920872775724807128769003243129486808733796350"
- "497668255116485157191011858830643898323628223472099280243583"
- "164434348347014910398004439821970508280440872759395827943270"
- "985008769143562351938091476215083548164137333541883808870019"
- "116234099013452929807950151652297436436006149684939775781234"
- "660954156154478642694176038524277810483833149798681345708089"
- "152179193979463169402340611793486272301808073267534612685593"
- "859596787866884211031341417903391749825320454663508370385251"
- "831778477311017089729361152161928815389818579983544490982891"
- "734081131312309744330960666031291451740885503458543884956367"
- "654943799264600314531815427932691107874782328654759293575803"
- "481929361961781073958502075438499070633193799699311694287183"
- "299423475339817655608058724723221867087563064557636112380829"
- "514501382073257737022472866608244164310385205213523702910787"
- "182472517125030106491031844871593141759729773907719510044049"
- "352857426592936763727969496103940591601975078602859660478614"
- "119405428212830134490731706220583788265344728818766885126977"
- "588151111984290444321648931907188080336064713873288834096229"
- "203276676119810521851726133377700616341304257822975788967472"
- "152742255041912584197045423031298506219011800240120182445838"
- "590696647416285334515631019799007515682004250060857020904012"
- "215375170479800482680554499806010766109655061507421747722461"
- "180617361402575082294678925605271083587897845390768226405648"
- "508518103525778638618195775128516073959272990148239415346263"
- "486966573934577450787243667063244378381883115827207605856174"
- "876350045086885320626669331311880593775916269643646395423220"
- "549940790476989709243027420158390806135690975149384714684219"
- "964938182719962913931464979458639185519531490009437619838306"
- "362365453754807654884704163490469296444427144778593725687358"
- "437087390151990694667516279202024332494828210657618261952038"
- "597230263799412584275851667403910657370879707181053365818502"
- "680037431560091209982641738995652793235851569372314130107647"
- "166085235615697257094269133100914135783178856280392139325001"
- "352841718610484616627448189556913621837791650699820323059708"
- "766420810133584841826718631681683381743511974264126250984214"
- "812397119978273917903889865891718836792263377888052458189238"
- "746074986456016681098722869419588274020181430652732817858728"
- "473849369539367463917171317324882099804999043054467247785592"
- "038464723442276239896066431580123756428540074945472427752568"
- "981171400621705853374875885943072600692576914790467205905272"
- "372594740187988081900317493185005142913607163380720069786786"
- "782095331840893694073778325119471833528492917081008547303414"
- "509381563617864195257751546539575461435803625993888325647883"
- "541039192368366987400263049681218831477776345118518503709588"
- "840859023379762456561030683928115349942393963185677123055324"
- "771693784214924931737043793679546051454845624150270955450608"
- "318747395755728950832754611277041359602301205138509175543313"
- "522772786504141007552691902249572375175731740923618769197304"
- "652898352694386665448260033458575323252814233868098279476166"
- "764258284911434288072243178941698347365985427696983129579496"
- "059032032841281149923518087084876885114369033227736521245740"
- "554711771423492719899982357711910225545480424688322195336240"
- "492253136281857837808491795993788199125205555222116581071134"
- "476787468430539307909617442106685159519071053844987343666452"
- "494280317720153567054364117244775141336558406098548803924509"
- "496052261825198043140272655303625315605326569530252885854991"
- "822289219201218313590745412010446642247111703901991591338062"
- "693320157180618736569439969283245279430312651192668788340033"
- "626825194260296262959884258597703584888770801961209652822982"
- "322376122303586169861685106043820510444293432856251210395693"
- "261264867823980172683352796141772210301725997652373804152525"
- "037162852291403804455997331367378463632437773242905518075065"
- "414724295857460288225400061608664961649196400079359622673770"
- "607898395269075056596627116148289491042491764170924014885106"
- "158235482774778418134123293974436877051995673618683751115353"
- "808771434984204447736174758316063096245047311279841579995578"
- "186609402864244042751443128536278453430633423118662852688374"
- "229600894418958824842459450540826176452145829389286103522774"
- "101195556029650753254244433565937938526828990893149766298997"
- "738359913887178888607190765709867052470880785937935110091424"
- "743449966353497865681753841380246075612094033617488674676296"
- "822570077027076266879557913673839341012099558043806442348798"
- "053951239274913334631522409564461770434875790402230022872647"
- "568436177018658068697071731879399180374560963492726714528729"
- "224208938589940272515747888379118461617702271694075087419634"
- "147298076764775745707026934442908236664400557265527951453482"
- "191684597674273691978253678690951178777239573925410438679099"
- "374700609973920128201422381329108236575369403675960765238333"
- "778127017096574296148321075566959285042221837159799800133563"
- "239963969638610872680393210300180152020613051613414547163713"
- "772512617757277955979895866367571776456268564191092477027650"
- "135832200376440239783726540552694851717269598489288851529660"
- "975027775639565229734596726205832668434979354541943345062977"
- "891187146561050118118108223323735210843681128615413601091222"
- "007912350536959777114306541514511332368936078560929788143798"
- "814391221507522370648646767364209132147312407014953113532379"
- "838195728491128536978285918066991040993153064356179903885952"
- "027952713749653604502053512355449916680887234238773855581636"
- "172479594866871765094513940103284167914110196720261110812716"
- "776424260154507395050380575452850420730818412994731079307343"
- "538376880280124019321040198038723558784544408584344466090982"
- "802067326529000931562048932875469079874956595180595395347093"
- "285140279165467965596318365749701535812384333240968283640721"
- "344003442002691613772056762099098025739332715913970186225176"
- "459563484134139746647940170537900275350480490468851439300771"
- "949915194703080576611022590670399844931867609777417528903454"
- "731922206378932141464755402629420074293816349270038351339419"
- "146768473851353171629153912238797141905920143036064131705230"
- "421762305232861503856799511155936565169005916711845389135580"
- "928162511912438531204156138447775120789548666143600293412065"
- "767167106888509172568003530668539460588248316513392652567856"
- "224602697296203328920073354425994044956624831346979458846837"
- "597950064151867164583749203433942592178528868981311575331848"
- "941597492470436782387502687532649093096498315347403977436001"
- "399982102030846763698994785054617523241463186980898394504211"
- "430763617825306895065661536045431497903759118007934839122881"
- "885863091769469883539876840543521295706315919855784493235603"
- "866268925981702690270202829595794350800918257913991744455922"
- "6833433740466716699302196502685546875e-4951",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x8p-16448,
- 0x1p-16444,
- 0x8p-16448,
- 0x1p-16444,
- true,
- 0xcp-16448,
- 0xcp-16448,
- 0xcp-16448,
- 0xcp-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- true,
- 0xcp-16448,
- 0xcp-16448,
- 0xcp-16448,
- 0xcp-16448),
- TEST ("5.4677992978237119037926089004291297245985762235403450155814"
- "707305425575329500966052143410629387408077958710210208052966"
- "529504784489330482549602621133847135082257338717668975178538"
- "378957084503396349323438489751160934104796903302909028868611"
- "999312592165232778075745690821530731336739429587895774023213"
- "939331012985331912661021188896306095323395084578542200319963"
- "179359407180003251440084380484161504585462684082946932782829"
- "488183829817567452314437076943950532707791252404699268678810"
- "198502871250235796855577909830559749628817599194837522029036"
- "891995648803056846354520653635957919882905363521007017169741"
- "463296044392266269433408052686419017699718627761948763856040"
- "592690841721239300491445991666051031755802326720329666454066"
- "568630314348735511753639418257984253319063825247065727664852"
- "328745422305642626091617823968872438962470092440688372515677"
- "832232712866924800106797113478024083516199991991274936894113"
- "006233377518471389394984262004503058455485659100090665241525"
- "454803628182902241401701783637353179296850056973639305945938"
- "813428953287892593620291195986011128990061888798763718548789"
- "025717537674780281005583347165047846045925077914824515331335"
- "131286063574407181821236377907693209224423490663289916878620"
- "725507793163931390372011875799729330162278748985052557432333"
- "005334989519381566364065326138465761456173231416844807264090"
- "741841972247545424908843928136253653308813487994328446248389"
- "608261444391573619177442907290731163188581917588219420107047"
- "265367485141413919810885909689112244064797106324295291545892"
- "937991321479061743491490060940946128274533657682130125169586"
- "930571899403551122506297763180795732325134340989331155893724"
- "289358918212707392997768032299997207208451112971425779939507"
- "837165263255764268971211819536322993221774123134726665579460"
- "265871378186589562858761835613344584269098062275786969729830"
- "545786485401407774313414954958161677096004701941411411592755"
- "485864471870515173326244464631295701572087440183178339987662"
- "926763241220698078822661709054601073523477544653542795020468"
- "256078409306409100874886828781860529824879343987945751252081"
- "314345990313550683792348814627862441324030155730592166581251"
- "009922787324590431548734575328663628650380722603024383412564"
- "651446272117561042207738413114131099731016728935023152239431"
- "311619533848376583687509108453086730196255111695352464186678"
- "221927564757730319825223049341618853631333478241227227268084"
- "583396688436229936266854011427192767039363517491659523133852"
- "472534104124441112346615696891097070121463652258681270378076"
- "538381697594264658479637863087159293838880752928175545408262"
- "813403793568695416998388572304528748824756265665683890518422"
- "696169422338806137532304784682662448207928681740476188343739"
- "117833525916386815135793034906806117413105008719197882837614"
- "738262050320291539494104952056471606645482046176634075459021"
- "552555959590354956262127809953013679512507451424271839221946"
- "794056861055980558363033732905772356986051180966474116423192"
- "194741572438649215204229781279620370445373851348786918527399"
- "785630808242657122705381806661616271132182017797793661244078"
- "445747547535623384548769818529655539279036503234072455810991"
- "588075181817695975173110136482659854557506203058080551018873"
- "203138260451109855100526720073566126209666125604482413705611"
- "996796777927332827103568863352291499261312290355143742018042"
- "254470707107847293593205234049774839191754781030496978091006"
- "099559675240966730110167624903610656473267105556155633783594"
- "089546261107653110531808279445757724399186120387548675148632"
- "176049190701680305210224388072261974806791922636412897526952"
- "793677946622674149577084803568051242934076450942927092705684"
- "547042915490323112457971853658760725588190377666477106903106"
- "693847278847646032201293023329503348730723947218797410452333"
- "910847913892827195814551858335519518939031446093385329182820"
- "714173657946661746005901866885589732922652604573972842197231"
- "187365263381958925227970038358064987248233271706462687651143"
- "350472018043321314534759819524203308490914358596886150053406"
- "629512434788155355109100540319857813535695923273426256911552"
- "977539394209918630668466632881929661971212772444625151371953"
- "428875491139683919687008724010475217255347915698820960215217"
- "257390308560235323463096946442080548018754166369706161589705"
- "215873687166365628787796501470056870127729464714362172216802"
- "441045276911597009443281135389729130222603185665646434661947"
- "627628077723219376892727386120519287577405410510114936151502"
- "752997122750262781911372625997223415283516995479265631485799"
- "456782561734766648462849641064097181818204279498552827825384"
- "186202065516999362573388136163077477126602169410435905014077"
- "049808497409025369325795765272066650278004200357878990911374"
- "982857977108488482528354406313893864211497105765030504600982"
- "253488805474531798742143374465080240030582370086699167937651"
- "038307909706139327119325418854546478285735654541635477790346"
- "964782617354265050767878335230272194896680141986745074630225"
- "893106573559558843545841186025169531604151588481389164948914"
- "823593944287133336263680358191369540321930649824471425485137"
- "777984823525402115151171093313613251350685343824859052220126"
- "891551966018355920872775724807128769003243129486808733796350"
- "497668255116485157191011858830643898323628223472099280243583"
- "164434348347014910398004439821970508280440872759395827943270"
- "985008769143562351938091476215083548164137333541883808870019"
- "116234099013452929807950151652297436436006149684939775781234"
- "660954156154478642694176038524277810483833149798681345708089"
- "152179193979463169402340611793486272301808073267534612685593"
- "859596787866884211031341417903391749825320454663508370385251"
- "831778477311017089729361152161928815389818579983544490982891"
- "734081131312309744330960666031291451740885503458543884956367"
- "654943799264600314531815427932691107874782328654759293575803"
- "481929361961781073958502075438499070633193799699311694287183"
- "299423475339817655608058724723221867087563064557636112380829"
- "514501382073257737022472866608244164310385205213523702910787"
- "182472517125030106491031844871593141759729773907719510044049"
- "352857426592936763727969496103940591601975078602859660478614"
- "119405428212830134490731706220583788265344728818766885126977"
- "588151111984290444321648931907188080336064713873288834096229"
- "203276676119810521851726133377700616341304257822975788967472"
- "152742255041912584197045423031298506219011800240120182445838"
- "590696647416285334515631019799007515682004250060857020904012"
- "215375170479800482680554499806010766109655061507421747722461"
- "180617361402575082294678925605271083587897845390768226405648"
- "508518103525778638618195775128516073959272990148239415346263"
- "486966573934577450787243667063244378381883115827207605856174"
- "876350045086885320626669331311880593775916269643646395423220"
- "549940790476989709243027420158390806135690975149384714684219"
- "964938182719962913931464979458639185519531490009437619838306"
- "362365453754807654884704163490469296444427144778593725687358"
- "437087390151990694667516279202024332494828210657618261952038"
- "597230263799412584275851667403910657370879707181053365818502"
- "680037431560091209982641738995652793235851569372314130107647"
- "166085235615697257094269133100914135783178856280392139325001"
- "352841718610484616627448189556913621837791650699820323059708"
- "766420810133584841826718631681683381743511974264126250984214"
- "812397119978273917903889865891718836792263377888052458189238"
- "746074986456016681098722869419588274020181430652732817858728"
- "473849369539367463917171317324882099804999043054467247785592"
- "038464723442276239896066431580123756428540074945472427752568"
- "981171400621705853374875885943072600692576914790467205905272"
- "372594740187988081900317493185005142913607163380720069786786"
- "782095331840893694073778325119471833528492917081008547303414"
- "509381563617864195257751546539575461435803625993888325647883"
- "541039192368366987400263049681218831477776345118518503709588"
- "840859023379762456561030683928115349942393963185677123055324"
- "771693784214924931737043793679546051454845624150270955450608"
- "318747395755728950832754611277041359602301205138509175543313"
- "522772786504141007552691902249572375175731740923618769197304"
- "652898352694386665448260033458575323252814233868098279476166"
- "764258284911434288072243178941698347365985427696983129579496"
- "059032032841281149923518087084876885114369033227736521245740"
- "554711771423492719899982357711910225545480424688322195336240"
- "492253136281857837808491795993788199125205555222116581071134"
- "476787468430539307909617442106685159519071053844987343666452"
- "494280317720153567054364117244775141336558406098548803924509"
- "496052261825198043140272655303625315605326569530252885854991"
- "822289219201218313590745412010446642247111703901991591338062"
- "693320157180618736569439969283245279430312651192668788340033"
- "626825194260296262959884258597703584888770801961209652822982"
- "322376122303586169861685106043820510444293432856251210395693"
- "261264867823980172683352796141772210301725997652373804152525"
- "037162852291403804455997331367378463632437773242905518075065"
- "414724295857460288225400061608664961649196400079359622673770"
- "607898395269075056596627116148289491042491764170924014885106"
- "158235482774778418134123293974436877051995673618683751115353"
- "808771434984204447736174758316063096245047311279841579995578"
- "186609402864244042751443128536278453430633423118662852688374"
- "229600894418958824842459450540826176452145829389286103522774"
- "101195556029650753254244433565937938526828990893149766298997"
- "738359913887178888607190765709867052470880785937935110091424"
- "743449966353497865681753841380246075612094033617488674676296"
- "822570077027076266879557913673839341012099558043806442348798"
- "053951239274913334631522409564461770434875790402230022872647"
- "568436177018658068697071731879399180374560963492726714528729"
- "224208938589940272515747888379118461617702271694075087419634"
- "147298076764775745707026934442908236664400557265527951453482"
- "191684597674273691978253678690951178777239573925410438679099"
- "374700609973920128201422381329108236575369403675960765238333"
- "778127017096574296148321075566959285042221837159799800133563"
- "239963969638610872680393210300180152020613051613414547163713"
- "772512617757277955979895866367571776456268564191092477027650"
- "135832200376440239783726540552694851717269598489288851529660"
- "975027775639565229734596726205832668434979354541943345062977"
- "891187146561050118118108223323735210843681128615413601091222"
- "007912350536959777114306541514511332368936078560929788143798"
- "814391221507522370648646767364209132147312407014953113532379"
- "838195728491128536978285918066991040993153064356179903885952"
- "027952713749653604502053512355449916680887234238773855581636"
- "172479594866871765094513940103284167914110196720261110812716"
- "776424260154507395050380575452850420730818412994731079307343"
- "538376880280124019321040198038723558784544408584344466090982"
- "802067326529000931562048932875469079874956595180595395347093"
- "285140279165467965596318365749701535812384333240968283640721"
- "344003442002691613772056762099098025739332715913970186225176"
- "459563484134139746647940170537900275350480490468851439300771"
- "949915194703080576611022590670399844931867609777417528903454"
- "731922206378932141464755402629420074293816349270038351339419"
- "146768473851353171629153912238797141905920143036064131705230"
- "421762305232861503856799511155936565169005916711845389135580"
- "928162511912438531204156138447775120789548666143600293412065"
- "767167106888509172568003530668539460588248316513392652567856"
- "224602697296203328920073354425994044956624831346979458846837"
- "597950064151867164583749203433942592178528868981311575331848"
- "941597492470436782387502687532649093096498315347403977436001"
- "399982102030846763698994785054617523241463186980898394504211"
- "430763617825306895065661536045431497903759118007934839122881"
- "885863091769469883539876840543521295706315919855784493235603"
- "866268925981702690270202829595794350800918257913991744455922"
- "683343374046671669930219650268554687501e-4951",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x8p-16448,
- 0x1p-16444,
- 0x8p-16448,
- 0x1p-16444,
- false,
- 0xcp-16448,
- 0xcp-16448,
- 0xcp-16448,
- 0x1p-16444,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0xcp-16448,
- 0xcp-16448,
- 0xcp-16448,
- 0xc.000000000004p-16448),
- TEST ("-5.467799297823711903792608900429129724598576223540345015581"
- "470730542557532950096605214341062938740807795871021020805296"
- "652950478448933048254960262113384713508225733871766897517853"
- "837895708450339634932343848975116093410479690330290902886861"
- "199931259216523277807574569082153073133673942958789577402321"
- "393933101298533191266102118889630609532339508457854220031996"
- "317935940718000325144008438048416150458546268408294693278282"
- "948818382981756745231443707694395053270779125240469926867881"
- "019850287125023579685557790983055974962881759919483752202903"
- "689199564880305684635452065363595791988290536352100701716974"
- "146329604439226626943340805268641901769971862776194876385604"
- "059269084172123930049144599166605103175580232672032966645406"
- "656863031434873551175363941825798425331906382524706572766485"
- "232874542230564262609161782396887243896247009244068837251567"
- "783223271286692480010679711347802408351619999199127493689411"
- "300623337751847138939498426200450305845548565910009066524152"
- "545480362818290224140170178363735317929685005697363930594593"
- "881342895328789259362029119598601112899006188879876371854878"
- "902571753767478028100558334716504784604592507791482451533133"
- "513128606357440718182123637790769320922442349066328991687862"
- "072550779316393139037201187579972933016227874898505255743233"
- "300533498951938156636406532613846576145617323141684480726409"
- "074184197224754542490884392813625365330881348799432844624838"
- "960826144439157361917744290729073116318858191758821942010704"
- "726536748514141391981088590968911224406479710632429529154589"
- "293799132147906174349149006094094612827453365768213012516958"
- "693057189940355112250629776318079573232513434098933115589372"
- "428935891821270739299776803229999720720845111297142577993950"
- "783716526325576426897121181953632299322177412313472666557946"
- "026587137818658956285876183561334458426909806227578696972983"
- "054578648540140777431341495495816167709600470194141141159275"
- "548586447187051517332624446463129570157208744018317833998766"
- "292676324122069807882266170905460107352347754465354279502046"
- "825607840930640910087488682878186052982487934398794575125208"
- "131434599031355068379234881462786244132403015573059216658125"
- "100992278732459043154873457532866362865038072260302438341256"
- "465144627211756104220773841311413109973101672893502315223943"
- "131161953384837658368750910845308673019625511169535246418667"
- "822192756475773031982522304934161885363133347824122722726808"
- "458339668843622993626685401142719276703936351749165952313385"
- "247253410412444111234661569689109707012146365225868127037807"
- "653838169759426465847963786308715929383888075292817554540826"
- "281340379356869541699838857230452874882475626566568389051842"
- "269616942233880613753230478468266244820792868174047618834373"
- "911783352591638681513579303490680611741310500871919788283761"
- "473826205032029153949410495205647160664548204617663407545902"
- "155255595959035495626212780995301367951250745142427183922194"
- "679405686105598055836303373290577235698605118096647411642319"
- "219474157243864921520422978127962037044537385134878691852739"
- "978563080824265712270538180666161627113218201779779366124407"
- "844574754753562338454876981852965553927903650323407245581099"
- "158807518181769597517311013648265985455750620305808055101887"
- "320313826045110985510052672007356612620966612560448241370561"
- "199679677792733282710356886335229149926131229035514374201804"
- "225447070710784729359320523404977483919175478103049697809100"
- "609955967524096673011016762490361065647326710555615563378359"
- "408954626110765311053180827944575772439918612038754867514863"
- "217604919070168030521022438807226197480679192263641289752695"
- "279367794662267414957708480356805124293407645094292709270568"
- "454704291549032311245797185365876072558819037766647710690310"
- "669384727884764603220129302332950334873072394721879741045233"
- "391084791389282719581455185833551951893903144609338532918282"
- "071417365794666174600590186688558973292265260457397284219723"
- "118736526338195892522797003835806498724823327170646268765114"
- "335047201804332131453475981952420330849091435859688615005340"
- "662951243478815535510910054031985781353569592327342625691155"
- "297753939420991863066846663288192966197121277244462515137195"
- "342887549113968391968700872401047521725534791569882096021521"
- "725739030856023532346309694644208054801875416636970616158970"
- "521587368716636562878779650147005687012772946471436217221680"
- "244104527691159700944328113538972913022260318566564643466194"
- "762762807772321937689272738612051928757740541051011493615150"
- "275299712275026278191137262599722341528351699547926563148579"
- "945678256173476664846284964106409718181820427949855282782538"
- "418620206551699936257338813616307747712660216941043590501407"
- "704980849740902536932579576527206665027800420035787899091137"
- "498285797710848848252835440631389386421149710576503050460098"
- "225348880547453179874214337446508024003058237008669916793765"
- "103830790970613932711932541885454647828573565454163547779034"
- "696478261735426505076787833523027219489668014198674507463022"
- "589310657355955884354584118602516953160415158848138916494891"
- "482359394428713333626368035819136954032193064982447142548513"
- "777798482352540211515117109331361325135068534382485905222012"
- "689155196601835592087277572480712876900324312948680873379635"
- "049766825511648515719101185883064389832362822347209928024358"
- "316443434834701491039800443982197050828044087275939582794327"
- "098500876914356235193809147621508354816413733354188380887001"
- "911623409901345292980795015165229743643600614968493977578123"
- "466095415615447864269417603852427781048383314979868134570808"
- "915217919397946316940234061179348627230180807326753461268559"
- "385959678786688421103134141790339174982532045466350837038525"
- "183177847731101708972936115216192881538981857998354449098289"
- "173408113131230974433096066603129145174088550345854388495636"
- "765494379926460031453181542793269110787478232865475929357580"
- "348192936196178107395850207543849907063319379969931169428718"
- "329942347533981765560805872472322186708756306455763611238082"
- "951450138207325773702247286660824416431038520521352370291078"
- "718247251712503010649103184487159314175972977390771951004404"
- "935285742659293676372796949610394059160197507860285966047861"
- "411940542821283013449073170622058378826534472881876688512697"
- "758815111198429044432164893190718808033606471387328883409622"
- "920327667611981052185172613337770061634130425782297578896747"
- "215274225504191258419704542303129850621901180024012018244583"
- "859069664741628533451563101979900751568200425006085702090401"
- "221537517047980048268055449980601076610965506150742174772246"
- "118061736140257508229467892560527108358789784539076822640564"
- "850851810352577863861819577512851607395927299014823941534626"
- "348696657393457745078724366706324437838188311582720760585617"
- "487635004508688532062666933131188059377591626964364639542322"
- "054994079047698970924302742015839080613569097514938471468421"
- "996493818271996291393146497945863918551953149000943761983830"
- "636236545375480765488470416349046929644442714477859372568735"
- "843708739015199069466751627920202433249482821065761826195203"
- "859723026379941258427585166740391065737087970718105336581850"
- "268003743156009120998264173899565279323585156937231413010764"
- "716608523561569725709426913310091413578317885628039213932500"
- "135284171861048461662744818955691362183779165069982032305970"
- "876642081013358484182671863168168338174351197426412625098421"
- "481239711997827391790388986589171883679226337788805245818923"
- "874607498645601668109872286941958827402018143065273281785872"
- "847384936953936746391717131732488209980499904305446724778559"
- "203846472344227623989606643158012375642854007494547242775256"
- "898117140062170585337487588594307260069257691479046720590527"
- "237259474018798808190031749318500514291360716338072006978678"
- "678209533184089369407377832511947183352849291708100854730341"
- "450938156361786419525775154653957546143580362599388832564788"
- "354103919236836698740026304968121883147777634511851850370958"
- "884085902337976245656103068392811534994239396318567712305532"
- "477169378421492493173704379367954605145484562415027095545060"
- "831874739575572895083275461127704135960230120513850917554331"
- "352277278650414100755269190224957237517573174092361876919730"
- "465289835269438666544826003345857532325281423386809827947616"
- "676425828491143428807224317894169834736598542769698312957949"
- "605903203284128114992351808708487688511436903322773652124574"
- "055471177142349271989998235771191022554548042468832219533624"
- "049225313628185783780849179599378819912520555522211658107113"
- "447678746843053930790961744210668515951907105384498734366645"
- "249428031772015356705436411724477514133655840609854880392450"
- "949605226182519804314027265530362531560532656953025288585499"
- "182228921920121831359074541201044664224711170390199159133806"
- "269332015718061873656943996928324527943031265119266878834003"
- "362682519426029626295988425859770358488877080196120965282298"
- "232237612230358616986168510604382051044429343285625121039569"
- "326126486782398017268335279614177221030172599765237380415252"
- "503716285229140380445599733136737846363243777324290551807506"
- "541472429585746028822540006160866496164919640007935962267377"
- "060789839526907505659662711614828949104249176417092401488510"
- "615823548277477841813412329397443687705199567361868375111535"
- "380877143498420444773617475831606309624504731127984157999557"
- "818660940286424404275144312853627845343063342311866285268837"
- "422960089441895882484245945054082617645214582938928610352277"
- "410119555602965075325424443356593793852682899089314976629899"
- "773835991388717888860719076570986705247088078593793511009142"
- "474344996635349786568175384138024607561209403361748867467629"
- "682257007702707626687955791367383934101209955804380644234879"
- "805395123927491333463152240956446177043487579040223002287264"
- "756843617701865806869707173187939918037456096349272671452872"
- "922420893858994027251574788837911846161770227169407508741963"
- "414729807676477574570702693444290823666440055726552795145348"
- "219168459767427369197825367869095117877723957392541043867909"
- "937470060997392012820142238132910823657536940367596076523833"
- "377812701709657429614832107556695928504222183715979980013356"
- "323996396963861087268039321030018015202061305161341454716371"
- "377251261775727795597989586636757177645626856419109247702765"
- "013583220037644023978372654055269485171726959848928885152966"
- "097502777563956522973459672620583266843497935454194334506297"
- "789118714656105011811810822332373521084368112861541360109122"
- "200791235053695977711430654151451133236893607856092978814379"
- "881439122150752237064864676736420913214731240701495311353237"
- "983819572849112853697828591806699104099315306435617990388595"
- "202795271374965360450205351235544991668088723423877385558163"
- "617247959486687176509451394010328416791411019672026111081271"
- "677642426015450739505038057545285042073081841299473107930734"
- "353837688028012401932104019803872355878454440858434446609098"
- "280206732652900093156204893287546907987495659518059539534709"
- "328514027916546796559631836574970153581238433324096828364072"
- "134400344200269161377205676209909802573933271591397018622517"
- "645956348413413974664794017053790027535048049046885143930077"
- "194991519470308057661102259067039984493186760977741752890345"
- "473192220637893214146475540262942007429381634927003835133941"
- "914676847385135317162915391223879714190592014303606413170523"
- "042176230523286150385679951115593656516900591671184538913558"
- "092816251191243853120415613844777512078954866614360029341206"
- "576716710688850917256800353066853946058824831651339265256785"
- "622460269729620332892007335442599404495662483134697945884683"
- "759795006415186716458374920343394259217852886898131157533184"
- "894159749247043678238750268753264909309649831534740397743600"
- "139998210203084676369899478505461752324146318698089839450421"
- "143076361782530689506566153604543149790375911800793483912288"
- "188586309176946988353987684054352129570631591985578449323560"
- "386626892598170269027020282959579435080091825791399174445592"
- "2683343374046671669930219650268554687499e-4951",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x1p-16444,
- -0x8p-16448,
- -0x8p-16448,
- -0x8p-16448,
- false,
- -0xcp-16448,
- -0xcp-16448,
- -0x8p-16448,
- -0x8p-16448,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0xcp-16448,
- -0xcp-16448,
- -0xb.fffffffffffcp-16448,
- -0xb.fffffffffffcp-16448),
- TEST ("-5.467799297823711903792608900429129724598576223540345015581"
- "470730542557532950096605214341062938740807795871021020805296"
- "652950478448933048254960262113384713508225733871766897517853"
- "837895708450339634932343848975116093410479690330290902886861"
- "199931259216523277807574569082153073133673942958789577402321"
- "393933101298533191266102118889630609532339508457854220031996"
- "317935940718000325144008438048416150458546268408294693278282"
- "948818382981756745231443707694395053270779125240469926867881"
- "019850287125023579685557790983055974962881759919483752202903"
- "689199564880305684635452065363595791988290536352100701716974"
- "146329604439226626943340805268641901769971862776194876385604"
- "059269084172123930049144599166605103175580232672032966645406"
- "656863031434873551175363941825798425331906382524706572766485"
- "232874542230564262609161782396887243896247009244068837251567"
- "783223271286692480010679711347802408351619999199127493689411"
- "300623337751847138939498426200450305845548565910009066524152"
- "545480362818290224140170178363735317929685005697363930594593"
- "881342895328789259362029119598601112899006188879876371854878"
- "902571753767478028100558334716504784604592507791482451533133"
- "513128606357440718182123637790769320922442349066328991687862"
- "072550779316393139037201187579972933016227874898505255743233"
- "300533498951938156636406532613846576145617323141684480726409"
- "074184197224754542490884392813625365330881348799432844624838"
- "960826144439157361917744290729073116318858191758821942010704"
- "726536748514141391981088590968911224406479710632429529154589"
- "293799132147906174349149006094094612827453365768213012516958"
- "693057189940355112250629776318079573232513434098933115589372"
- "428935891821270739299776803229999720720845111297142577993950"
- "783716526325576426897121181953632299322177412313472666557946"
- "026587137818658956285876183561334458426909806227578696972983"
- "054578648540140777431341495495816167709600470194141141159275"
- "548586447187051517332624446463129570157208744018317833998766"
- "292676324122069807882266170905460107352347754465354279502046"
- "825607840930640910087488682878186052982487934398794575125208"
- "131434599031355068379234881462786244132403015573059216658125"
- "100992278732459043154873457532866362865038072260302438341256"
- "465144627211756104220773841311413109973101672893502315223943"
- "131161953384837658368750910845308673019625511169535246418667"
- "822192756475773031982522304934161885363133347824122722726808"
- "458339668843622993626685401142719276703936351749165952313385"
- "247253410412444111234661569689109707012146365225868127037807"
- "653838169759426465847963786308715929383888075292817554540826"
- "281340379356869541699838857230452874882475626566568389051842"
- "269616942233880613753230478468266244820792868174047618834373"
- "911783352591638681513579303490680611741310500871919788283761"
- "473826205032029153949410495205647160664548204617663407545902"
- "155255595959035495626212780995301367951250745142427183922194"
- "679405686105598055836303373290577235698605118096647411642319"
- "219474157243864921520422978127962037044537385134878691852739"
- "978563080824265712270538180666161627113218201779779366124407"
- "844574754753562338454876981852965553927903650323407245581099"
- "158807518181769597517311013648265985455750620305808055101887"
- "320313826045110985510052672007356612620966612560448241370561"
- "199679677792733282710356886335229149926131229035514374201804"
- "225447070710784729359320523404977483919175478103049697809100"
- "609955967524096673011016762490361065647326710555615563378359"
- "408954626110765311053180827944575772439918612038754867514863"
- "217604919070168030521022438807226197480679192263641289752695"
- "279367794662267414957708480356805124293407645094292709270568"
- "454704291549032311245797185365876072558819037766647710690310"
- "669384727884764603220129302332950334873072394721879741045233"
- "391084791389282719581455185833551951893903144609338532918282"
- "071417365794666174600590186688558973292265260457397284219723"
- "118736526338195892522797003835806498724823327170646268765114"
- "335047201804332131453475981952420330849091435859688615005340"
- "662951243478815535510910054031985781353569592327342625691155"
- "297753939420991863066846663288192966197121277244462515137195"
- "342887549113968391968700872401047521725534791569882096021521"
- "725739030856023532346309694644208054801875416636970616158970"
- "521587368716636562878779650147005687012772946471436217221680"
- "244104527691159700944328113538972913022260318566564643466194"
- "762762807772321937689272738612051928757740541051011493615150"
- "275299712275026278191137262599722341528351699547926563148579"
- "945678256173476664846284964106409718181820427949855282782538"
- "418620206551699936257338813616307747712660216941043590501407"
- "704980849740902536932579576527206665027800420035787899091137"
- "498285797710848848252835440631389386421149710576503050460098"
- "225348880547453179874214337446508024003058237008669916793765"
- "103830790970613932711932541885454647828573565454163547779034"
- "696478261735426505076787833523027219489668014198674507463022"
- "589310657355955884354584118602516953160415158848138916494891"
- "482359394428713333626368035819136954032193064982447142548513"
- "777798482352540211515117109331361325135068534382485905222012"
- "689155196601835592087277572480712876900324312948680873379635"
- "049766825511648515719101185883064389832362822347209928024358"
- "316443434834701491039800443982197050828044087275939582794327"
- "098500876914356235193809147621508354816413733354188380887001"
- "911623409901345292980795015165229743643600614968493977578123"
- "466095415615447864269417603852427781048383314979868134570808"
- "915217919397946316940234061179348627230180807326753461268559"
- "385959678786688421103134141790339174982532045466350837038525"
- "183177847731101708972936115216192881538981857998354449098289"
- "173408113131230974433096066603129145174088550345854388495636"
- "765494379926460031453181542793269110787478232865475929357580"
- "348192936196178107395850207543849907063319379969931169428718"
- "329942347533981765560805872472322186708756306455763611238082"
- "951450138207325773702247286660824416431038520521352370291078"
- "718247251712503010649103184487159314175972977390771951004404"
- "935285742659293676372796949610394059160197507860285966047861"
- "411940542821283013449073170622058378826534472881876688512697"
- "758815111198429044432164893190718808033606471387328883409622"
- "920327667611981052185172613337770061634130425782297578896747"
- "215274225504191258419704542303129850621901180024012018244583"
- "859069664741628533451563101979900751568200425006085702090401"
- "221537517047980048268055449980601076610965506150742174772246"
- "118061736140257508229467892560527108358789784539076822640564"
- "850851810352577863861819577512851607395927299014823941534626"
- "348696657393457745078724366706324437838188311582720760585617"
- "487635004508688532062666933131188059377591626964364639542322"
- "054994079047698970924302742015839080613569097514938471468421"
- "996493818271996291393146497945863918551953149000943761983830"
- "636236545375480765488470416349046929644442714477859372568735"
- "843708739015199069466751627920202433249482821065761826195203"
- "859723026379941258427585166740391065737087970718105336581850"
- "268003743156009120998264173899565279323585156937231413010764"
- "716608523561569725709426913310091413578317885628039213932500"
- "135284171861048461662744818955691362183779165069982032305970"
- "876642081013358484182671863168168338174351197426412625098421"
- "481239711997827391790388986589171883679226337788805245818923"
- "874607498645601668109872286941958827402018143065273281785872"
- "847384936953936746391717131732488209980499904305446724778559"
- "203846472344227623989606643158012375642854007494547242775256"
- "898117140062170585337487588594307260069257691479046720590527"
- "237259474018798808190031749318500514291360716338072006978678"
- "678209533184089369407377832511947183352849291708100854730341"
- "450938156361786419525775154653957546143580362599388832564788"
- "354103919236836698740026304968121883147777634511851850370958"
- "884085902337976245656103068392811534994239396318567712305532"
- "477169378421492493173704379367954605145484562415027095545060"
- "831874739575572895083275461127704135960230120513850917554331"
- "352277278650414100755269190224957237517573174092361876919730"
- "465289835269438666544826003345857532325281423386809827947616"
- "676425828491143428807224317894169834736598542769698312957949"
- "605903203284128114992351808708487688511436903322773652124574"
- "055471177142349271989998235771191022554548042468832219533624"
- "049225313628185783780849179599378819912520555522211658107113"
- "447678746843053930790961744210668515951907105384498734366645"
- "249428031772015356705436411724477514133655840609854880392450"
- "949605226182519804314027265530362531560532656953025288585499"
- "182228921920121831359074541201044664224711170390199159133806"
- "269332015718061873656943996928324527943031265119266878834003"
- "362682519426029626295988425859770358488877080196120965282298"
- "232237612230358616986168510604382051044429343285625121039569"
- "326126486782398017268335279614177221030172599765237380415252"
- "503716285229140380445599733136737846363243777324290551807506"
- "541472429585746028822540006160866496164919640007935962267377"
- "060789839526907505659662711614828949104249176417092401488510"
- "615823548277477841813412329397443687705199567361868375111535"
- "380877143498420444773617475831606309624504731127984157999557"
- "818660940286424404275144312853627845343063342311866285268837"
- "422960089441895882484245945054082617645214582938928610352277"
- "410119555602965075325424443356593793852682899089314976629899"
- "773835991388717888860719076570986705247088078593793511009142"
- "474344996635349786568175384138024607561209403361748867467629"
- "682257007702707626687955791367383934101209955804380644234879"
- "805395123927491333463152240956446177043487579040223002287264"
- "756843617701865806869707173187939918037456096349272671452872"
- "922420893858994027251574788837911846161770227169407508741963"
- "414729807676477574570702693444290823666440055726552795145348"
- "219168459767427369197825367869095117877723957392541043867909"
- "937470060997392012820142238132910823657536940367596076523833"
- "377812701709657429614832107556695928504222183715979980013356"
- "323996396963861087268039321030018015202061305161341454716371"
- "377251261775727795597989586636757177645626856419109247702765"
- "013583220037644023978372654055269485171726959848928885152966"
- "097502777563956522973459672620583266843497935454194334506297"
- "789118714656105011811810822332373521084368112861541360109122"
- "200791235053695977711430654151451133236893607856092978814379"
- "881439122150752237064864676736420913214731240701495311353237"
- "983819572849112853697828591806699104099315306435617990388595"
- "202795271374965360450205351235544991668088723423877385558163"
- "617247959486687176509451394010328416791411019672026111081271"
- "677642426015450739505038057545285042073081841299473107930734"
- "353837688028012401932104019803872355878454440858434446609098"
- "280206732652900093156204893287546907987495659518059539534709"
- "328514027916546796559631836574970153581238433324096828364072"
- "134400344200269161377205676209909802573933271591397018622517"
- "645956348413413974664794017053790027535048049046885143930077"
- "194991519470308057661102259067039984493186760977741752890345"
- "473192220637893214146475540262942007429381634927003835133941"
- "914676847385135317162915391223879714190592014303606413170523"
- "042176230523286150385679951115593656516900591671184538913558"
- "092816251191243853120415613844777512078954866614360029341206"
- "576716710688850917256800353066853946058824831651339265256785"
- "622460269729620332892007335442599404495662483134697945884683"
- "759795006415186716458374920343394259217852886898131157533184"
- "894159749247043678238750268753264909309649831534740397743600"
- "139998210203084676369899478505461752324146318698089839450421"
- "143076361782530689506566153604543149790375911800793483912288"
- "188586309176946988353987684054352129570631591985578449323560"
- "386626892598170269027020282959579435080091825791399174445592"
- "26833433740466716699302196502685546875e-4951",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x1p-16444,
- -0x1p-16444,
- -0x8p-16448,
- -0x8p-16448,
- true,
- -0xcp-16448,
- -0xcp-16448,
- -0xcp-16448,
- -0xcp-16448,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0xcp-16448,
- -0xcp-16448,
- -0xcp-16448,
- -0xcp-16448),
- TEST ("-5.467799297823711903792608900429129724598576223540345015581"
- "470730542557532950096605214341062938740807795871021020805296"
- "652950478448933048254960262113384713508225733871766897517853"
- "837895708450339634932343848975116093410479690330290902886861"
- "199931259216523277807574569082153073133673942958789577402321"
- "393933101298533191266102118889630609532339508457854220031996"
- "317935940718000325144008438048416150458546268408294693278282"
- "948818382981756745231443707694395053270779125240469926867881"
- "019850287125023579685557790983055974962881759919483752202903"
- "689199564880305684635452065363595791988290536352100701716974"
- "146329604439226626943340805268641901769971862776194876385604"
- "059269084172123930049144599166605103175580232672032966645406"
- "656863031434873551175363941825798425331906382524706572766485"
- "232874542230564262609161782396887243896247009244068837251567"
- "783223271286692480010679711347802408351619999199127493689411"
- "300623337751847138939498426200450305845548565910009066524152"
- "545480362818290224140170178363735317929685005697363930594593"
- "881342895328789259362029119598601112899006188879876371854878"
- "902571753767478028100558334716504784604592507791482451533133"
- "513128606357440718182123637790769320922442349066328991687862"
- "072550779316393139037201187579972933016227874898505255743233"
- "300533498951938156636406532613846576145617323141684480726409"
- "074184197224754542490884392813625365330881348799432844624838"
- "960826144439157361917744290729073116318858191758821942010704"
- "726536748514141391981088590968911224406479710632429529154589"
- "293799132147906174349149006094094612827453365768213012516958"
- "693057189940355112250629776318079573232513434098933115589372"
- "428935891821270739299776803229999720720845111297142577993950"
- "783716526325576426897121181953632299322177412313472666557946"
- "026587137818658956285876183561334458426909806227578696972983"
- "054578648540140777431341495495816167709600470194141141159275"
- "548586447187051517332624446463129570157208744018317833998766"
- "292676324122069807882266170905460107352347754465354279502046"
- "825607840930640910087488682878186052982487934398794575125208"
- "131434599031355068379234881462786244132403015573059216658125"
- "100992278732459043154873457532866362865038072260302438341256"
- "465144627211756104220773841311413109973101672893502315223943"
- "131161953384837658368750910845308673019625511169535246418667"
- "822192756475773031982522304934161885363133347824122722726808"
- "458339668843622993626685401142719276703936351749165952313385"
- "247253410412444111234661569689109707012146365225868127037807"
- "653838169759426465847963786308715929383888075292817554540826"
- "281340379356869541699838857230452874882475626566568389051842"
- "269616942233880613753230478468266244820792868174047618834373"
- "911783352591638681513579303490680611741310500871919788283761"
- "473826205032029153949410495205647160664548204617663407545902"
- "155255595959035495626212780995301367951250745142427183922194"
- "679405686105598055836303373290577235698605118096647411642319"
- "219474157243864921520422978127962037044537385134878691852739"
- "978563080824265712270538180666161627113218201779779366124407"
- "844574754753562338454876981852965553927903650323407245581099"
- "158807518181769597517311013648265985455750620305808055101887"
- "320313826045110985510052672007356612620966612560448241370561"
- "199679677792733282710356886335229149926131229035514374201804"
- "225447070710784729359320523404977483919175478103049697809100"
- "609955967524096673011016762490361065647326710555615563378359"
- "408954626110765311053180827944575772439918612038754867514863"
- "217604919070168030521022438807226197480679192263641289752695"
- "279367794662267414957708480356805124293407645094292709270568"
- "454704291549032311245797185365876072558819037766647710690310"
- "669384727884764603220129302332950334873072394721879741045233"
- "391084791389282719581455185833551951893903144609338532918282"
- "071417365794666174600590186688558973292265260457397284219723"
- "118736526338195892522797003835806498724823327170646268765114"
- "335047201804332131453475981952420330849091435859688615005340"
- "662951243478815535510910054031985781353569592327342625691155"
- "297753939420991863066846663288192966197121277244462515137195"
- "342887549113968391968700872401047521725534791569882096021521"
- "725739030856023532346309694644208054801875416636970616158970"
- "521587368716636562878779650147005687012772946471436217221680"
- "244104527691159700944328113538972913022260318566564643466194"
- "762762807772321937689272738612051928757740541051011493615150"
- "275299712275026278191137262599722341528351699547926563148579"
- "945678256173476664846284964106409718181820427949855282782538"
- "418620206551699936257338813616307747712660216941043590501407"
- "704980849740902536932579576527206665027800420035787899091137"
- "498285797710848848252835440631389386421149710576503050460098"
- "225348880547453179874214337446508024003058237008669916793765"
- "103830790970613932711932541885454647828573565454163547779034"
- "696478261735426505076787833523027219489668014198674507463022"
- "589310657355955884354584118602516953160415158848138916494891"
- "482359394428713333626368035819136954032193064982447142548513"
- "777798482352540211515117109331361325135068534382485905222012"
- "689155196601835592087277572480712876900324312948680873379635"
- "049766825511648515719101185883064389832362822347209928024358"
- "316443434834701491039800443982197050828044087275939582794327"
- "098500876914356235193809147621508354816413733354188380887001"
- "911623409901345292980795015165229743643600614968493977578123"
- "466095415615447864269417603852427781048383314979868134570808"
- "915217919397946316940234061179348627230180807326753461268559"
- "385959678786688421103134141790339174982532045466350837038525"
- "183177847731101708972936115216192881538981857998354449098289"
- "173408113131230974433096066603129145174088550345854388495636"
- "765494379926460031453181542793269110787478232865475929357580"
- "348192936196178107395850207543849907063319379969931169428718"
- "329942347533981765560805872472322186708756306455763611238082"
- "951450138207325773702247286660824416431038520521352370291078"
- "718247251712503010649103184487159314175972977390771951004404"
- "935285742659293676372796949610394059160197507860285966047861"
- "411940542821283013449073170622058378826534472881876688512697"
- "758815111198429044432164893190718808033606471387328883409622"
- "920327667611981052185172613337770061634130425782297578896747"
- "215274225504191258419704542303129850621901180024012018244583"
- "859069664741628533451563101979900751568200425006085702090401"
- "221537517047980048268055449980601076610965506150742174772246"
- "118061736140257508229467892560527108358789784539076822640564"
- "850851810352577863861819577512851607395927299014823941534626"
- "348696657393457745078724366706324437838188311582720760585617"
- "487635004508688532062666933131188059377591626964364639542322"
- "054994079047698970924302742015839080613569097514938471468421"
- "996493818271996291393146497945863918551953149000943761983830"
- "636236545375480765488470416349046929644442714477859372568735"
- "843708739015199069466751627920202433249482821065761826195203"
- "859723026379941258427585166740391065737087970718105336581850"
- "268003743156009120998264173899565279323585156937231413010764"
- "716608523561569725709426913310091413578317885628039213932500"
- "135284171861048461662744818955691362183779165069982032305970"
- "876642081013358484182671863168168338174351197426412625098421"
- "481239711997827391790388986589171883679226337788805245818923"
- "874607498645601668109872286941958827402018143065273281785872"
- "847384936953936746391717131732488209980499904305446724778559"
- "203846472344227623989606643158012375642854007494547242775256"
- "898117140062170585337487588594307260069257691479046720590527"
- "237259474018798808190031749318500514291360716338072006978678"
- "678209533184089369407377832511947183352849291708100854730341"
- "450938156361786419525775154653957546143580362599388832564788"
- "354103919236836698740026304968121883147777634511851850370958"
- "884085902337976245656103068392811534994239396318567712305532"
- "477169378421492493173704379367954605145484562415027095545060"
- "831874739575572895083275461127704135960230120513850917554331"
- "352277278650414100755269190224957237517573174092361876919730"
- "465289835269438666544826003345857532325281423386809827947616"
- "676425828491143428807224317894169834736598542769698312957949"
- "605903203284128114992351808708487688511436903322773652124574"
- "055471177142349271989998235771191022554548042468832219533624"
- "049225313628185783780849179599378819912520555522211658107113"
- "447678746843053930790961744210668515951907105384498734366645"
- "249428031772015356705436411724477514133655840609854880392450"
- "949605226182519804314027265530362531560532656953025288585499"
- "182228921920121831359074541201044664224711170390199159133806"
- "269332015718061873656943996928324527943031265119266878834003"
- "362682519426029626295988425859770358488877080196120965282298"
- "232237612230358616986168510604382051044429343285625121039569"
- "326126486782398017268335279614177221030172599765237380415252"
- "503716285229140380445599733136737846363243777324290551807506"
- "541472429585746028822540006160866496164919640007935962267377"
- "060789839526907505659662711614828949104249176417092401488510"
- "615823548277477841813412329397443687705199567361868375111535"
- "380877143498420444773617475831606309624504731127984157999557"
- "818660940286424404275144312853627845343063342311866285268837"
- "422960089441895882484245945054082617645214582938928610352277"
- "410119555602965075325424443356593793852682899089314976629899"
- "773835991388717888860719076570986705247088078593793511009142"
- "474344996635349786568175384138024607561209403361748867467629"
- "682257007702707626687955791367383934101209955804380644234879"
- "805395123927491333463152240956446177043487579040223002287264"
- "756843617701865806869707173187939918037456096349272671452872"
- "922420893858994027251574788837911846161770227169407508741963"
- "414729807676477574570702693444290823666440055726552795145348"
- "219168459767427369197825367869095117877723957392541043867909"
- "937470060997392012820142238132910823657536940367596076523833"
- "377812701709657429614832107556695928504222183715979980013356"
- "323996396963861087268039321030018015202061305161341454716371"
- "377251261775727795597989586636757177645626856419109247702765"
- "013583220037644023978372654055269485171726959848928885152966"
- "097502777563956522973459672620583266843497935454194334506297"
- "789118714656105011811810822332373521084368112861541360109122"
- "200791235053695977711430654151451133236893607856092978814379"
- "881439122150752237064864676736420913214731240701495311353237"
- "983819572849112853697828591806699104099315306435617990388595"
- "202795271374965360450205351235544991668088723423877385558163"
- "617247959486687176509451394010328416791411019672026111081271"
- "677642426015450739505038057545285042073081841299473107930734"
- "353837688028012401932104019803872355878454440858434446609098"
- "280206732652900093156204893287546907987495659518059539534709"
- "328514027916546796559631836574970153581238433324096828364072"
- "134400344200269161377205676209909802573933271591397018622517"
- "645956348413413974664794017053790027535048049046885143930077"
- "194991519470308057661102259067039984493186760977741752890345"
- "473192220637893214146475540262942007429381634927003835133941"
- "914676847385135317162915391223879714190592014303606413170523"
- "042176230523286150385679951115593656516900591671184538913558"
- "092816251191243853120415613844777512078954866614360029341206"
- "576716710688850917256800353066853946058824831651339265256785"
- "622460269729620332892007335442599404495662483134697945884683"
- "759795006415186716458374920343394259217852886898131157533184"
- "894159749247043678238750268753264909309649831534740397743600"
- "139998210203084676369899478505461752324146318698089839450421"
- "143076361782530689506566153604543149790375911800793483912288"
- "188586309176946988353987684054352129570631591985578449323560"
- "386626892598170269027020282959579435080091825791399174445592"
- "2683343374046671669930219650268554687501e-4951",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x1p-16444,
- -0x1p-16444,
- -0x8p-16448,
- -0x8p-16448,
- false,
- -0x1p-16444,
- -0xcp-16448,
- -0xcp-16448,
- -0xcp-16448,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0xc.000000000004p-16448,
- -0xcp-16448,
- -0xcp-16448,
- -0xcp-16448),
- TEST ("5.4677992978237119037926089004291297245985762235403450155814"
- "707305425575329500966052143410629387408077958710210208052966"
- "529504784489330482549602621133847135082257338717668975178538"
- "378957084503396349323438489751160934104796903302909028868611"
- "999312592165232778075745690821530731336739429587895774023213"
- "939331012985331912661021188896306095323395084578542200319963"
- "179359407180003251440084380484161504585462684082946932782829"
- "488183829817567452314437076943950532707791252404699268678810"
- "198502871250235796855577909830559749628817599194837522029036"
- "891995648803056846354520653635957919882905363521007017169741"
- "463296044392266269433408052686419017699718627761948763856040"
- "592690841721239300491445991666051031755802326720329666454066"
- "568630314348735511753639418257984253319063825247065727664852"
- "328745422305642626091617823968872438962470092440688372515677"
- "832232712866924800106797113478024083516199991991274936894113"
- "006233377518471389394984262004503058455485659100090665241525"
- "454803628182902241401701783637353179296850056973639305945938"
- "813428953287892593620291195986011128990061888798763718548789"
- "025717537674780281005583347165047846045925077914824515331335"
- "131286063574407181821236377907693209224423490663289916878620"
- "725507793163931390372011875799729330162278748985052557432333"
- "005334989519381566364065326138465761456173231416844807264090"
- "741841972247545424908843928136253653308813487994328446248389"
- "608261444391573619177442907290731163188581917588219420107047"
- "265367485141413919810885909689112244064797106324295291545892"
- "937991321479061743491490060940946128274533657682130125169586"
- "930571899403551122506297763180795732325134340989331155893724"
- "289358918212707392997768032299997207208451112971425779939507"
- "837165263255764268971211819536322993221774123134726665579460"
- "265871378186589562858761835613344584269098062275786969729830"
- "545786485401407774313414954958161677096004701941411411592755"
- "485864471870515173326244464631295701572087440183178339987662"
- "926763241220698078822661709054601073523477544653542795020468"
- "256078409306409100874886828781860529824879343987945751252081"
- "314345990313550683792348814627862441324030155730592166581251"
- "009922787324590431548734575328663628650380722603024383412564"
- "651446272117561042207738413114131099731016728935023152239431"
- "311619533848376583687509108453086730196255111695352464186678"
- "221927564757730319825223049341618853631333478241227227268084"
- "583396688436229936266854011427192767039363517491659523133852"
- "472534104124441112346615696891097070121463652258681270378076"
- "538381697594264658479637863087159293838880752928175545408262"
- "813403793568695416998388572304528748824756265665683890518422"
- "696169422338806137532304784682662448207928681740476188343739"
- "117833525916386815135793034906806117413105008719197882837614"
- "738262050320291539494104952056471606645482046176634075459021"
- "552555959590354956262127809953013679512507451424271839221946"
- "794056861055980558363033732905772356986051180966474116423192"
- "194741572438649215204229781279620370445373851348786918527399"
- "785630808242657122705381806661616271132182017797793661244078"
- "445747547535623384548769818529655539279036503234072455810991"
- "588075181817695975173110136482659854557506203058080551018873"
- "203138260451109855100526720073566126209666125604482413705611"
- "996796777927332827103568863352291499261312290355143742018042"
- "254470707107847293593205234049774839191754781030496978091006"
- "099559675240966730110167624903610656473267105556155633783594"
- "089546261107653110531808279445757724399186120387548675148632"
- "176049190701680305210224388072261974806791922636412897526952"
- "793677946622674149577084803568051242934076450942927092705684"
- "547042915490323112457971853658760725588190377666477106903106"
- "693847278847646032201293023329503348730723947218797410452333"
- "910847913892827195814551858335519518939031446093385329182820"
- "714173657946661746005901866885589732922652604573972842197231"
- "187365263381958925227970038358064987248233271706462687651143"
- "350472018043321314534759819524203308490914358596886150053406"
- "629512434788155355109100540319857813535695923273426256911552"
- "977539394209918630668466632881929661971212772444625151371953"
- "428875491139683919687008724010475217255347915698820960215217"
- "257390308560235323463096946442080548018754166369706161589705"
- "215873687166365628787796501470056870127729464714362172216802"
- "441045276911597009443281135389729130222603185665646434661947"
- "627628077723219376892727386120519287577405410510114936151502"
- "752997122750262781911372625997223415283516995479265631485799"
- "456782561734766648462849641064097181818204279498552827825384"
- "186202065516999362573388136163077477126602169410435905014077"
- "049808497409025369325795765272066650278004200357878990911374"
- "982857977108488482528354406313893864211497105765030504600982"
- "253488805474531798742143374465080240030582370086699167937651"
- "038307909706139327119325418854546478285735654541635477790346"
- "964782617354265050767878335230272194896680141986745074630225"
- "893106573559558843545841186025169531604151588481389164948914"
- "823593944287133336263680358191369540321930649824471425485137"
- "777984823525402115151171093313613251350685343824859052220126"
- "891551966018355920872775724807128769003243129486808733796350"
- "497668255116485157191011858830643898323628223472099280243583"
- "164434348347014910398004439821970508280440872759395827943270"
- "985008769143562351938091476215083548164137333541883808870019"
- "116234099013452929807950151652297436436006149684939775781234"
- "660954156154478642694176038524277810483833149798681345708089"
- "152179193979463169402340611793486272301808073267534612685593"
- "859596787866884211031341417903391749825320454663508370385251"
- "831778477311017089729361152161928815389818579983544490982891"
- "734081131312309744330960666031291451740885503458543884956367"
- "654943799264600314531815427932691107874782328654759293575803"
- "481929361961781073958502075438499070633193799699311694287183"
- "299423475339817655608058724723221867087563064557636112380829"
- "514501382073257737022472866608244164310385205213523702910787"
- "182472517125030106491031844871593141759729773907719510044049"
- "352857426592936763727969496103940591601975078602859660478614"
- "119405428212830134490731706220583788265344728818766885126977"
- "588151111984290444321648931907188080336064713873288834096229"
- "203276676119810521851726133377700616341304257822975788967472"
- "152742255041912584197045423031298506219011800240120182445838"
- "590696647416285334515631019799007515682004250060857020904012"
- "215375170479800482680554499806010766109655061507421747722461"
- "180617361402575082294678925605271083587897845390768226405648"
- "508518103525778638618195775128516073959272990148239415346263"
- "486966573934577450787243667063244378381883115827207605856174"
- "876350045086885320626669331311880593775916269643646395423220"
- "549940790476989709243027420158390806135690975149384714684219"
- "964938182719962913931464979458639185519531490009437619838306"
- "362365453754807654884704163490469296444427144778593725687358"
- "437087390151990694667516279202024332494828210657618261952038"
- "597230263799412584275851667403910657370879707181053365818502"
- "680037431560091209982641738995652793235851569372314130107647"
- "166085235615697257094269133100914135783178856280392139325001"
- "352841718610484616627448189556913621837791650699820323059708"
- "766420810133584841826718631681683381743511974264126250984214"
- "812397119978273917903889865891718836792263377888052458189238"
- "746074986456016681098722869419588274020181430652732817858728"
- "473849369539367463917171317324882099804999043054467247785592"
- "038464723442276239896066431580123756428540074945472427752568"
- "981171400621705853374875885943072600692576914790467205905272"
- "372594740187988081900317493185005142913607163380720069786786"
- "782095331840893694073778325119471833528492917081008547303414"
- "509381563617864195257751546539575461435803625993888325647883"
- "541039192368366987400263049681218831477776345118518503709588"
- "840859023379762456561030683928115349942393963185677123055324"
- "771693784214924931737043793679546051454845624150270955450608"
- "318747395755728950832754611277041359602301205138509175543313"
- "522772786504141007552691902249572375175731740923618769197304"
- "652898352694386665448260033458575323252814233868098279476166"
- "764258284911434288072243178941698347365985427696983129579496"
- "059032032841281149923518087084876885114369033227736521245740"
- "554711771423492719899982357711910225545480424688322195336240"
- "492253136281857837808491795993788199125205555222116581071134"
- "476787468430539307909617442106685159519071053844987343666452"
- "494280317720153567054364117244775141336558406098548803924509"
- "496052261825198043140272655303625315605326569530252885854991"
- "822289219201218313590745412010446642247111703901991591338062"
- "693320157180618736569439969283245279430312651192668788340033"
- "626825194260296262959884258597703584888770801961209652822982"
- "322376122303586169861685106043820510444293432856251210395693"
- "261264867823980172683352796141772210301725997652373804152525"
- "037162852291403804455997331367378463632437773242905518075065"
- "414724295857460288225400061608664961649196400079359622673770"
- "607898395269075056596627116148289491042491764170924014885106"
- "158235482774778418134123293974436877051995673618683751115353"
- "808771434984204447736174758316063096245047311279841579995578"
- "186609402864244042751443128536278453430633423118662852688374"
- "229600894418958824842459450540826176452145829389286103522774"
- "101195556029650753254244433565937938526828990893149766298997"
- "738359913887178888607190765709867052470880785937935110091424"
- "743449966353497865681753841380246075612094033617488674676296"
- "822570077027076266879557913673839341012099558043806442348798"
- "053951239274913334631522409564461770434875790402230022872647"
- "568436177018658068697071731879399180374560963492726714528729"
- "224208938589940272515747888379118461617702271694075087419634"
- "147298076764775745707026934442908236664400557265527951453482"
- "191684597674273691978253678690951178777239573925410438679099"
- "374700609973920128201422381329108236575369403675960765238333"
- "778127017096574296148321075566959285042221837159799800133563"
- "239963969638610872680393210300180152020613051613414547163713"
- "772512617757277955979895866367571776456268564191092477027650"
- "135832200376440239783726540552694851717269598489288851529660"
- "975027775639565229734596726205832668434979354541943345062977"
- "891187146561050118118108223323735210843681128615413601091222"
- "007912350536959777114306541514511332368936078560929788143798"
- "814391221507522370648646767364209132147312407014953113532379"
- "838195728491128536978285918066991040993153064356179903885952"
- "027952713749653604502053512355449916680887234238773855581636"
- "172479594866871765094513940103284167914110196720261110812716"
- "776424260154507395050380575452850420730818412994731079307343"
- "538376880280124019321040198038723558784544408584344466090982"
- "802067326529000931562048932875469079874956595180595395347093"
- "285140279165467965596318365749701535812384333240968283640721"
- "344003442002691613772056762099098025739332715913970186225176"
- "459563484134139746647940170537900275350480490468851439300771"
- "949915194703080576611022590670399844931867609777417528903454"
- "731922206378932141464755402629420074293816349270038351339419"
- "146768473851353171629153912238797141905920143036064131705230"
- "421762305232861503856799511155936565169005916711845389135580"
- "928162511912438531204156138447775120789548666143600293412065"
- "767167106888509172568003530668539460588248316513392652567856"
- "224602697296203328920073354425994044956624831346979458846837"
- "597950064151867164583749203433942592178528868981311575331848"
- "941597492470436782387502687532649093096498315347403977436001"
- "399982102030846763698994785054617523241463186980898394504211"
- "430763617825306895065661536045431497903759118007934839122881"
- "885863091769469883539876840543521295706315919855784493235603"
- "866268925981702690270202829595794350800918257913991744455922"
- "683343374046671669930219650268554687499e-4951",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x8p-16448,
- 0x8p-16448,
- 0x8p-16448,
- 0x1p-16444,
- false,
- 0x8p-16448,
- 0xcp-16448,
- 0x8p-16448,
- 0xcp-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0xb.fffffffffffcp-16448,
- 0xcp-16448,
- 0xb.fffffffffffcp-16448,
- 0xcp-16448),
- TEST ("5.4677992978237119037926089004291297245985762235403450155814"
- "707305425575329500966052143410629387408077958710210208052966"
- "529504784489330482549602621133847135082257338717668975178538"
- "378957084503396349323438489751160934104796903302909028868611"
- "999312592165232778075745690821530731336739429587895774023213"
- "939331012985331912661021188896306095323395084578542200319963"
- "179359407180003251440084380484161504585462684082946932782829"
- "488183829817567452314437076943950532707791252404699268678810"
- "198502871250235796855577909830559749628817599194837522029036"
- "891995648803056846354520653635957919882905363521007017169741"
- "463296044392266269433408052686419017699718627761948763856040"
- "592690841721239300491445991666051031755802326720329666454066"
- "568630314348735511753639418257984253319063825247065727664852"
- "328745422305642626091617823968872438962470092440688372515677"
- "832232712866924800106797113478024083516199991991274936894113"
- "006233377518471389394984262004503058455485659100090665241525"
- "454803628182902241401701783637353179296850056973639305945938"
- "813428953287892593620291195986011128990061888798763718548789"
- "025717537674780281005583347165047846045925077914824515331335"
- "131286063574407181821236377907693209224423490663289916878620"
- "725507793163931390372011875799729330162278748985052557432333"
- "005334989519381566364065326138465761456173231416844807264090"
- "741841972247545424908843928136253653308813487994328446248389"
- "608261444391573619177442907290731163188581917588219420107047"
- "265367485141413919810885909689112244064797106324295291545892"
- "937991321479061743491490060940946128274533657682130125169586"
- "930571899403551122506297763180795732325134340989331155893724"
- "289358918212707392997768032299997207208451112971425779939507"
- "837165263255764268971211819536322993221774123134726665579460"
- "265871378186589562858761835613344584269098062275786969729830"
- "545786485401407774313414954958161677096004701941411411592755"
- "485864471870515173326244464631295701572087440183178339987662"
- "926763241220698078822661709054601073523477544653542795020468"
- "256078409306409100874886828781860529824879343987945751252081"
- "314345990313550683792348814627862441324030155730592166581251"
- "009922787324590431548734575328663628650380722603024383412564"
- "651446272117561042207738413114131099731016728935023152239431"
- "311619533848376583687509108453086730196255111695352464186678"
- "221927564757730319825223049341618853631333478241227227268084"
- "583396688436229936266854011427192767039363517491659523133852"
- "472534104124441112346615696891097070121463652258681270378076"
- "538381697594264658479637863087159293838880752928175545408262"
- "813403793568695416998388572304528748824756265665683890518422"
- "696169422338806137532304784682662448207928681740476188343739"
- "117833525916386815135793034906806117413105008719197882837614"
- "738262050320291539494104952056471606645482046176634075459021"
- "552555959590354956262127809953013679512507451424271839221946"
- "794056861055980558363033732905772356986051180966474116423192"
- "194741572438649215204229781279620370445373851348786918527399"
- "785630808242657122705381806661616271132182017797793661244078"
- "445747547535623384548769818529655539279036503234072455810991"
- "588075181817695975173110136482659854557506203058080551018873"
- "203138260451109855100526720073566126209666125604482413705611"
- "996796777927332827103568863352291499261312290355143742018042"
- "254470707107847293593205234049774839191754781030496978091006"
- "099559675240966730110167624903610656473267105556155633783594"
- "089546261107653110531808279445757724399186120387548675148632"
- "176049190701680305210224388072261974806791922636412897526952"
- "793677946622674149577084803568051242934076450942927092705684"
- "547042915490323112457971853658760725588190377666477106903106"
- "693847278847646032201293023329503348730723947218797410452333"
- "910847913892827195814551858335519518939031446093385329182820"
- "714173657946661746005901866885589732922652604573972842197231"
- "187365263381958925227970038358064987248233271706462687651143"
- "350472018043321314534759819524203308490914358596886150053406"
- "629512434788155355109100540319857813535695923273426256911552"
- "977539394209918630668466632881929661971212772444625151371953"
- "428875491139683919687008724010475217255347915698820960215217"
- "257390308560235323463096946442080548018754166369706161589705"
- "215873687166365628787796501470056870127729464714362172216802"
- "441045276911597009443281135389729130222603185665646434661947"
- "627628077723219376892727386120519287577405410510114936151502"
- "752997122750262781911372625997223415283516995479265631485799"
- "456782561734766648462849641064097181818204279498552827825384"
- "186202065516999362573388136163077477126602169410435905014077"
- "049808497409025369325795765272066650278004200357878990911374"
- "982857977108488482528354406313893864211497105765030504600982"
- "253488805474531798742143374465080240030582370086699167937651"
- "038307909706139327119325418854546478285735654541635477790346"
- "964782617354265050767878335230272194896680141986745074630225"
- "893106573559558843545841186025169531604151588481389164948914"
- "823593944287133336263680358191369540321930649824471425485137"
- "777984823525402115151171093313613251350685343824859052220126"
- "891551966018355920872775724807128769003243129486808733796350"
- "497668255116485157191011858830643898323628223472099280243583"
- "164434348347014910398004439821970508280440872759395827943270"
- "985008769143562351938091476215083548164137333541883808870019"
- "116234099013452929807950151652297436436006149684939775781234"
- "660954156154478642694176038524277810483833149798681345708089"
- "152179193979463169402340611793486272301808073267534612685593"
- "859596787866884211031341417903391749825320454663508370385251"
- "831778477311017089729361152161928815389818579983544490982891"
- "734081131312309744330960666031291451740885503458543884956367"
- "654943799264600314531815427932691107874782328654759293575803"
- "481929361961781073958502075438499070633193799699311694287183"
- "299423475339817655608058724723221867087563064557636112380829"
- "514501382073257737022472866608244164310385205213523702910787"
- "182472517125030106491031844871593141759729773907719510044049"
- "352857426592936763727969496103940591601975078602859660478614"
- "119405428212830134490731706220583788265344728818766885126977"
- "588151111984290444321648931907188080336064713873288834096229"
- "203276676119810521851726133377700616341304257822975788967472"
- "152742255041912584197045423031298506219011800240120182445838"
- "590696647416285334515631019799007515682004250060857020904012"
- "215375170479800482680554499806010766109655061507421747722461"
- "180617361402575082294678925605271083587897845390768226405648"
- "508518103525778638618195775128516073959272990148239415346263"
- "486966573934577450787243667063244378381883115827207605856174"
- "876350045086885320626669331311880593775916269643646395423220"
- "549940790476989709243027420158390806135690975149384714684219"
- "964938182719962913931464979458639185519531490009437619838306"
- "362365453754807654884704163490469296444427144778593725687358"
- "437087390151990694667516279202024332494828210657618261952038"
- "597230263799412584275851667403910657370879707181053365818502"
- "680037431560091209982641738995652793235851569372314130107647"
- "166085235615697257094269133100914135783178856280392139325001"
- "352841718610484616627448189556913621837791650699820323059708"
- "766420810133584841826718631681683381743511974264126250984214"
- "812397119978273917903889865891718836792263377888052458189238"
- "746074986456016681098722869419588274020181430652732817858728"
- "473849369539367463917171317324882099804999043054467247785592"
- "038464723442276239896066431580123756428540074945472427752568"
- "981171400621705853374875885943072600692576914790467205905272"
- "372594740187988081900317493185005142913607163380720069786786"
- "782095331840893694073778325119471833528492917081008547303414"
- "509381563617864195257751546539575461435803625993888325647883"
- "541039192368366987400263049681218831477776345118518503709588"
- "840859023379762456561030683928115349942393963185677123055324"
- "771693784214924931737043793679546051454845624150270955450608"
- "318747395755728950832754611277041359602301205138509175543313"
- "522772786504141007552691902249572375175731740923618769197304"
- "652898352694386665448260033458575323252814233868098279476166"
- "764258284911434288072243178941698347365985427696983129579496"
- "059032032841281149923518087084876885114369033227736521245740"
- "554711771423492719899982357711910225545480424688322195336240"
- "492253136281857837808491795993788199125205555222116581071134"
- "476787468430539307909617442106685159519071053844987343666452"
- "494280317720153567054364117244775141336558406098548803924509"
- "496052261825198043140272655303625315605326569530252885854991"
- "822289219201218313590745412010446642247111703901991591338062"
- "693320157180618736569439969283245279430312651192668788340033"
- "626825194260296262959884258597703584888770801961209652822982"
- "322376122303586169861685106043820510444293432856251210395693"
- "261264867823980172683352796141772210301725997652373804152525"
- "037162852291403804455997331367378463632437773242905518075065"
- "414724295857460288225400061608664961649196400079359622673770"
- "607898395269075056596627116148289491042491764170924014885106"
- "158235482774778418134123293974436877051995673618683751115353"
- "808771434984204447736174758316063096245047311279841579995578"
- "186609402864244042751443128536278453430633423118662852688374"
- "229600894418958824842459450540826176452145829389286103522774"
- "101195556029650753254244433565937938526828990893149766298997"
- "738359913887178888607190765709867052470880785937935110091424"
- "743449966353497865681753841380246075612094033617488674676296"
- "822570077027076266879557913673839341012099558043806442348798"
- "053951239274913334631522409564461770434875790402230022872647"
- "568436177018658068697071731879399180374560963492726714528729"
- "224208938589940272515747888379118461617702271694075087419634"
- "147298076764775745707026934442908236664400557265527951453482"
- "191684597674273691978253678690951178777239573925410438679099"
- "374700609973920128201422381329108236575369403675960765238333"
- "778127017096574296148321075566959285042221837159799800133563"
- "239963969638610872680393210300180152020613051613414547163713"
- "772512617757277955979895866367571776456268564191092477027650"
- "135832200376440239783726540552694851717269598489288851529660"
- "975027775639565229734596726205832668434979354541943345062977"
- "891187146561050118118108223323735210843681128615413601091222"
- "007912350536959777114306541514511332368936078560929788143798"
- "814391221507522370648646767364209132147312407014953113532379"
- "838195728491128536978285918066991040993153064356179903885952"
- "027952713749653604502053512355449916680887234238773855581636"
- "172479594866871765094513940103284167914110196720261110812716"
- "776424260154507395050380575452850420730818412994731079307343"
- "538376880280124019321040198038723558784544408584344466090982"
- "802067326529000931562048932875469079874956595180595395347093"
- "285140279165467965596318365749701535812384333240968283640721"
- "344003442002691613772056762099098025739332715913970186225176"
- "459563484134139746647940170537900275350480490468851439300771"
- "949915194703080576611022590670399844931867609777417528903454"
- "731922206378932141464755402629420074293816349270038351339419"
- "146768473851353171629153912238797141905920143036064131705230"
- "421762305232861503856799511155936565169005916711845389135580"
- "928162511912438531204156138447775120789548666143600293412065"
- "767167106888509172568003530668539460588248316513392652567856"
- "224602697296203328920073354425994044956624831346979458846837"
- "597950064151867164583749203433942592178528868981311575331848"
- "941597492470436782387502687532649093096498315347403977436001"
- "399982102030846763698994785054617523241463186980898394504211"
- "430763617825306895065661536045431497903759118007934839122881"
- "885863091769469883539876840543521295706315919855784493235603"
- "866268925981702690270202829595794350800918257913991744455922"
- "6833433740466716699302196502685546875e-4951",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x8p-16448,
- 0x1p-16444,
- 0x8p-16448,
- 0x1p-16444,
- true,
- 0xcp-16448,
- 0xcp-16448,
- 0xcp-16448,
- 0xcp-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- true,
- 0xcp-16448,
- 0xcp-16448,
- 0xcp-16448,
- 0xcp-16448),
- TEST ("5.4677992978237119037926089004291297245985762235403450155814"
- "707305425575329500966052143410629387408077958710210208052966"
- "529504784489330482549602621133847135082257338717668975178538"
- "378957084503396349323438489751160934104796903302909028868611"
- "999312592165232778075745690821530731336739429587895774023213"
- "939331012985331912661021188896306095323395084578542200319963"
- "179359407180003251440084380484161504585462684082946932782829"
- "488183829817567452314437076943950532707791252404699268678810"
- "198502871250235796855577909830559749628817599194837522029036"
- "891995648803056846354520653635957919882905363521007017169741"
- "463296044392266269433408052686419017699718627761948763856040"
- "592690841721239300491445991666051031755802326720329666454066"
- "568630314348735511753639418257984253319063825247065727664852"
- "328745422305642626091617823968872438962470092440688372515677"
- "832232712866924800106797113478024083516199991991274936894113"
- "006233377518471389394984262004503058455485659100090665241525"
- "454803628182902241401701783637353179296850056973639305945938"
- "813428953287892593620291195986011128990061888798763718548789"
- "025717537674780281005583347165047846045925077914824515331335"
- "131286063574407181821236377907693209224423490663289916878620"
- "725507793163931390372011875799729330162278748985052557432333"
- "005334989519381566364065326138465761456173231416844807264090"
- "741841972247545424908843928136253653308813487994328446248389"
- "608261444391573619177442907290731163188581917588219420107047"
- "265367485141413919810885909689112244064797106324295291545892"
- "937991321479061743491490060940946128274533657682130125169586"
- "930571899403551122506297763180795732325134340989331155893724"
- "289358918212707392997768032299997207208451112971425779939507"
- "837165263255764268971211819536322993221774123134726665579460"
- "265871378186589562858761835613344584269098062275786969729830"
- "545786485401407774313414954958161677096004701941411411592755"
- "485864471870515173326244464631295701572087440183178339987662"
- "926763241220698078822661709054601073523477544653542795020468"
- "256078409306409100874886828781860529824879343987945751252081"
- "314345990313550683792348814627862441324030155730592166581251"
- "009922787324590431548734575328663628650380722603024383412564"
- "651446272117561042207738413114131099731016728935023152239431"
- "311619533848376583687509108453086730196255111695352464186678"
- "221927564757730319825223049341618853631333478241227227268084"
- "583396688436229936266854011427192767039363517491659523133852"
- "472534104124441112346615696891097070121463652258681270378076"
- "538381697594264658479637863087159293838880752928175545408262"
- "813403793568695416998388572304528748824756265665683890518422"
- "696169422338806137532304784682662448207928681740476188343739"
- "117833525916386815135793034906806117413105008719197882837614"
- "738262050320291539494104952056471606645482046176634075459021"
- "552555959590354956262127809953013679512507451424271839221946"
- "794056861055980558363033732905772356986051180966474116423192"
- "194741572438649215204229781279620370445373851348786918527399"
- "785630808242657122705381806661616271132182017797793661244078"
- "445747547535623384548769818529655539279036503234072455810991"
- "588075181817695975173110136482659854557506203058080551018873"
- "203138260451109855100526720073566126209666125604482413705611"
- "996796777927332827103568863352291499261312290355143742018042"
- "254470707107847293593205234049774839191754781030496978091006"
- "099559675240966730110167624903610656473267105556155633783594"
- "089546261107653110531808279445757724399186120387548675148632"
- "176049190701680305210224388072261974806791922636412897526952"
- "793677946622674149577084803568051242934076450942927092705684"
- "547042915490323112457971853658760725588190377666477106903106"
- "693847278847646032201293023329503348730723947218797410452333"
- "910847913892827195814551858335519518939031446093385329182820"
- "714173657946661746005901866885589732922652604573972842197231"
- "187365263381958925227970038358064987248233271706462687651143"
- "350472018043321314534759819524203308490914358596886150053406"
- "629512434788155355109100540319857813535695923273426256911552"
- "977539394209918630668466632881929661971212772444625151371953"
- "428875491139683919687008724010475217255347915698820960215217"
- "257390308560235323463096946442080548018754166369706161589705"
- "215873687166365628787796501470056870127729464714362172216802"
- "441045276911597009443281135389729130222603185665646434661947"
- "627628077723219376892727386120519287577405410510114936151502"
- "752997122750262781911372625997223415283516995479265631485799"
- "456782561734766648462849641064097181818204279498552827825384"
- "186202065516999362573388136163077477126602169410435905014077"
- "049808497409025369325795765272066650278004200357878990911374"
- "982857977108488482528354406313893864211497105765030504600982"
- "253488805474531798742143374465080240030582370086699167937651"
- "038307909706139327119325418854546478285735654541635477790346"
- "964782617354265050767878335230272194896680141986745074630225"
- "893106573559558843545841186025169531604151588481389164948914"
- "823593944287133336263680358191369540321930649824471425485137"
- "777984823525402115151171093313613251350685343824859052220126"
- "891551966018355920872775724807128769003243129486808733796350"
- "497668255116485157191011858830643898323628223472099280243583"
- "164434348347014910398004439821970508280440872759395827943270"
- "985008769143562351938091476215083548164137333541883808870019"
- "116234099013452929807950151652297436436006149684939775781234"
- "660954156154478642694176038524277810483833149798681345708089"
- "152179193979463169402340611793486272301808073267534612685593"
- "859596787866884211031341417903391749825320454663508370385251"
- "831778477311017089729361152161928815389818579983544490982891"
- "734081131312309744330960666031291451740885503458543884956367"
- "654943799264600314531815427932691107874782328654759293575803"
- "481929361961781073958502075438499070633193799699311694287183"
- "299423475339817655608058724723221867087563064557636112380829"
- "514501382073257737022472866608244164310385205213523702910787"
- "182472517125030106491031844871593141759729773907719510044049"
- "352857426592936763727969496103940591601975078602859660478614"
- "119405428212830134490731706220583788265344728818766885126977"
- "588151111984290444321648931907188080336064713873288834096229"
- "203276676119810521851726133377700616341304257822975788967472"
- "152742255041912584197045423031298506219011800240120182445838"
- "590696647416285334515631019799007515682004250060857020904012"
- "215375170479800482680554499806010766109655061507421747722461"
- "180617361402575082294678925605271083587897845390768226405648"
- "508518103525778638618195775128516073959272990148239415346263"
- "486966573934577450787243667063244378381883115827207605856174"
- "876350045086885320626669331311880593775916269643646395423220"
- "549940790476989709243027420158390806135690975149384714684219"
- "964938182719962913931464979458639185519531490009437619838306"
- "362365453754807654884704163490469296444427144778593725687358"
- "437087390151990694667516279202024332494828210657618261952038"
- "597230263799412584275851667403910657370879707181053365818502"
- "680037431560091209982641738995652793235851569372314130107647"
- "166085235615697257094269133100914135783178856280392139325001"
- "352841718610484616627448189556913621837791650699820323059708"
- "766420810133584841826718631681683381743511974264126250984214"
- "812397119978273917903889865891718836792263377888052458189238"
- "746074986456016681098722869419588274020181430652732817858728"
- "473849369539367463917171317324882099804999043054467247785592"
- "038464723442276239896066431580123756428540074945472427752568"
- "981171400621705853374875885943072600692576914790467205905272"
- "372594740187988081900317493185005142913607163380720069786786"
- "782095331840893694073778325119471833528492917081008547303414"
- "509381563617864195257751546539575461435803625993888325647883"
- "541039192368366987400263049681218831477776345118518503709588"
- "840859023379762456561030683928115349942393963185677123055324"
- "771693784214924931737043793679546051454845624150270955450608"
- "318747395755728950832754611277041359602301205138509175543313"
- "522772786504141007552691902249572375175731740923618769197304"
- "652898352694386665448260033458575323252814233868098279476166"
- "764258284911434288072243178941698347365985427696983129579496"
- "059032032841281149923518087084876885114369033227736521245740"
- "554711771423492719899982357711910225545480424688322195336240"
- "492253136281857837808491795993788199125205555222116581071134"
- "476787468430539307909617442106685159519071053844987343666452"
- "494280317720153567054364117244775141336558406098548803924509"
- "496052261825198043140272655303625315605326569530252885854991"
- "822289219201218313590745412010446642247111703901991591338062"
- "693320157180618736569439969283245279430312651192668788340033"
- "626825194260296262959884258597703584888770801961209652822982"
- "322376122303586169861685106043820510444293432856251210395693"
- "261264867823980172683352796141772210301725997652373804152525"
- "037162852291403804455997331367378463632437773242905518075065"
- "414724295857460288225400061608664961649196400079359622673770"
- "607898395269075056596627116148289491042491764170924014885106"
- "158235482774778418134123293974436877051995673618683751115353"
- "808771434984204447736174758316063096245047311279841579995578"
- "186609402864244042751443128536278453430633423118662852688374"
- "229600894418958824842459450540826176452145829389286103522774"
- "101195556029650753254244433565937938526828990893149766298997"
- "738359913887178888607190765709867052470880785937935110091424"
- "743449966353497865681753841380246075612094033617488674676296"
- "822570077027076266879557913673839341012099558043806442348798"
- "053951239274913334631522409564461770434875790402230022872647"
- "568436177018658068697071731879399180374560963492726714528729"
- "224208938589940272515747888379118461617702271694075087419634"
- "147298076764775745707026934442908236664400557265527951453482"
- "191684597674273691978253678690951178777239573925410438679099"
- "374700609973920128201422381329108236575369403675960765238333"
- "778127017096574296148321075566959285042221837159799800133563"
- "239963969638610872680393210300180152020613051613414547163713"
- "772512617757277955979895866367571776456268564191092477027650"
- "135832200376440239783726540552694851717269598489288851529660"
- "975027775639565229734596726205832668434979354541943345062977"
- "891187146561050118118108223323735210843681128615413601091222"
- "007912350536959777114306541514511332368936078560929788143798"
- "814391221507522370648646767364209132147312407014953113532379"
- "838195728491128536978285918066991040993153064356179903885952"
- "027952713749653604502053512355449916680887234238773855581636"
- "172479594866871765094513940103284167914110196720261110812716"
- "776424260154507395050380575452850420730818412994731079307343"
- "538376880280124019321040198038723558784544408584344466090982"
- "802067326529000931562048932875469079874956595180595395347093"
- "285140279165467965596318365749701535812384333240968283640721"
- "344003442002691613772056762099098025739332715913970186225176"
- "459563484134139746647940170537900275350480490468851439300771"
- "949915194703080576611022590670399844931867609777417528903454"
- "731922206378932141464755402629420074293816349270038351339419"
- "146768473851353171629153912238797141905920143036064131705230"
- "421762305232861503856799511155936565169005916711845389135580"
- "928162511912438531204156138447775120789548666143600293412065"
- "767167106888509172568003530668539460588248316513392652567856"
- "224602697296203328920073354425994044956624831346979458846837"
- "597950064151867164583749203433942592178528868981311575331848"
- "941597492470436782387502687532649093096498315347403977436001"
- "399982102030846763698994785054617523241463186980898394504211"
- "430763617825306895065661536045431497903759118007934839122881"
- "885863091769469883539876840543521295706315919855784493235603"
- "866268925981702690270202829595794350800918257913991744455922"
- "683343374046671669930219650268554687501e-4951",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x8p-16448,
- 0x1p-16444,
- 0x8p-16448,
- 0x1p-16444,
- false,
- 0xcp-16448,
- 0xcp-16448,
- 0xcp-16448,
- 0x1p-16444,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0xcp-16448,
- 0xcp-16448,
- 0xcp-16448,
- 0xc.000000000004p-16448),
- TEST ("-5.467799297823711903792608900429129724598576223540345015581"
- "470730542557532950096605214341062938740807795871021020805296"
- "652950478448933048254960262113384713508225733871766897517853"
- "837895708450339634932343848975116093410479690330290902886861"
- "199931259216523277807574569082153073133673942958789577402321"
- "393933101298533191266102118889630609532339508457854220031996"
- "317935940718000325144008438048416150458546268408294693278282"
- "948818382981756745231443707694395053270779125240469926867881"
- "019850287125023579685557790983055974962881759919483752202903"
- "689199564880305684635452065363595791988290536352100701716974"
- "146329604439226626943340805268641901769971862776194876385604"
- "059269084172123930049144599166605103175580232672032966645406"
- "656863031434873551175363941825798425331906382524706572766485"
- "232874542230564262609161782396887243896247009244068837251567"
- "783223271286692480010679711347802408351619999199127493689411"
- "300623337751847138939498426200450305845548565910009066524152"
- "545480362818290224140170178363735317929685005697363930594593"
- "881342895328789259362029119598601112899006188879876371854878"
- "902571753767478028100558334716504784604592507791482451533133"
- "513128606357440718182123637790769320922442349066328991687862"
- "072550779316393139037201187579972933016227874898505255743233"
- "300533498951938156636406532613846576145617323141684480726409"
- "074184197224754542490884392813625365330881348799432844624838"
- "960826144439157361917744290729073116318858191758821942010704"
- "726536748514141391981088590968911224406479710632429529154589"
- "293799132147906174349149006094094612827453365768213012516958"
- "693057189940355112250629776318079573232513434098933115589372"
- "428935891821270739299776803229999720720845111297142577993950"
- "783716526325576426897121181953632299322177412313472666557946"
- "026587137818658956285876183561334458426909806227578696972983"
- "054578648540140777431341495495816167709600470194141141159275"
- "548586447187051517332624446463129570157208744018317833998766"
- "292676324122069807882266170905460107352347754465354279502046"
- "825607840930640910087488682878186052982487934398794575125208"
- "131434599031355068379234881462786244132403015573059216658125"
- "100992278732459043154873457532866362865038072260302438341256"
- "465144627211756104220773841311413109973101672893502315223943"
- "131161953384837658368750910845308673019625511169535246418667"
- "822192756475773031982522304934161885363133347824122722726808"
- "458339668843622993626685401142719276703936351749165952313385"
- "247253410412444111234661569689109707012146365225868127037807"
- "653838169759426465847963786308715929383888075292817554540826"
- "281340379356869541699838857230452874882475626566568389051842"
- "269616942233880613753230478468266244820792868174047618834373"
- "911783352591638681513579303490680611741310500871919788283761"
- "473826205032029153949410495205647160664548204617663407545902"
- "155255595959035495626212780995301367951250745142427183922194"
- "679405686105598055836303373290577235698605118096647411642319"
- "219474157243864921520422978127962037044537385134878691852739"
- "978563080824265712270538180666161627113218201779779366124407"
- "844574754753562338454876981852965553927903650323407245581099"
- "158807518181769597517311013648265985455750620305808055101887"
- "320313826045110985510052672007356612620966612560448241370561"
- "199679677792733282710356886335229149926131229035514374201804"
- "225447070710784729359320523404977483919175478103049697809100"
- "609955967524096673011016762490361065647326710555615563378359"
- "408954626110765311053180827944575772439918612038754867514863"
- "217604919070168030521022438807226197480679192263641289752695"
- "279367794662267414957708480356805124293407645094292709270568"
- "454704291549032311245797185365876072558819037766647710690310"
- "669384727884764603220129302332950334873072394721879741045233"
- "391084791389282719581455185833551951893903144609338532918282"
- "071417365794666174600590186688558973292265260457397284219723"
- "118736526338195892522797003835806498724823327170646268765114"
- "335047201804332131453475981952420330849091435859688615005340"
- "662951243478815535510910054031985781353569592327342625691155"
- "297753939420991863066846663288192966197121277244462515137195"
- "342887549113968391968700872401047521725534791569882096021521"
- "725739030856023532346309694644208054801875416636970616158970"
- "521587368716636562878779650147005687012772946471436217221680"
- "244104527691159700944328113538972913022260318566564643466194"
- "762762807772321937689272738612051928757740541051011493615150"
- "275299712275026278191137262599722341528351699547926563148579"
- "945678256173476664846284964106409718181820427949855282782538"
- "418620206551699936257338813616307747712660216941043590501407"
- "704980849740902536932579576527206665027800420035787899091137"
- "498285797710848848252835440631389386421149710576503050460098"
- "225348880547453179874214337446508024003058237008669916793765"
- "103830790970613932711932541885454647828573565454163547779034"
- "696478261735426505076787833523027219489668014198674507463022"
- "589310657355955884354584118602516953160415158848138916494891"
- "482359394428713333626368035819136954032193064982447142548513"
- "777798482352540211515117109331361325135068534382485905222012"
- "689155196601835592087277572480712876900324312948680873379635"
- "049766825511648515719101185883064389832362822347209928024358"
- "316443434834701491039800443982197050828044087275939582794327"
- "098500876914356235193809147621508354816413733354188380887001"
- "911623409901345292980795015165229743643600614968493977578123"
- "466095415615447864269417603852427781048383314979868134570808"
- "915217919397946316940234061179348627230180807326753461268559"
- "385959678786688421103134141790339174982532045466350837038525"
- "183177847731101708972936115216192881538981857998354449098289"
- "173408113131230974433096066603129145174088550345854388495636"
- "765494379926460031453181542793269110787478232865475929357580"
- "348192936196178107395850207543849907063319379969931169428718"
- "329942347533981765560805872472322186708756306455763611238082"
- "951450138207325773702247286660824416431038520521352370291078"
- "718247251712503010649103184487159314175972977390771951004404"
- "935285742659293676372796949610394059160197507860285966047861"
- "411940542821283013449073170622058378826534472881876688512697"
- "758815111198429044432164893190718808033606471387328883409622"
- "920327667611981052185172613337770061634130425782297578896747"
- "215274225504191258419704542303129850621901180024012018244583"
- "859069664741628533451563101979900751568200425006085702090401"
- "221537517047980048268055449980601076610965506150742174772246"
- "118061736140257508229467892560527108358789784539076822640564"
- "850851810352577863861819577512851607395927299014823941534626"
- "348696657393457745078724366706324437838188311582720760585617"
- "487635004508688532062666933131188059377591626964364639542322"
- "054994079047698970924302742015839080613569097514938471468421"
- "996493818271996291393146497945863918551953149000943761983830"
- "636236545375480765488470416349046929644442714477859372568735"
- "843708739015199069466751627920202433249482821065761826195203"
- "859723026379941258427585166740391065737087970718105336581850"
- "268003743156009120998264173899565279323585156937231413010764"
- "716608523561569725709426913310091413578317885628039213932500"
- "135284171861048461662744818955691362183779165069982032305970"
- "876642081013358484182671863168168338174351197426412625098421"
- "481239711997827391790388986589171883679226337788805245818923"
- "874607498645601668109872286941958827402018143065273281785872"
- "847384936953936746391717131732488209980499904305446724778559"
- "203846472344227623989606643158012375642854007494547242775256"
- "898117140062170585337487588594307260069257691479046720590527"
- "237259474018798808190031749318500514291360716338072006978678"
- "678209533184089369407377832511947183352849291708100854730341"
- "450938156361786419525775154653957546143580362599388832564788"
- "354103919236836698740026304968121883147777634511851850370958"
- "884085902337976245656103068392811534994239396318567712305532"
- "477169378421492493173704379367954605145484562415027095545060"
- "831874739575572895083275461127704135960230120513850917554331"
- "352277278650414100755269190224957237517573174092361876919730"
- "465289835269438666544826003345857532325281423386809827947616"
- "676425828491143428807224317894169834736598542769698312957949"
- "605903203284128114992351808708487688511436903322773652124574"
- "055471177142349271989998235771191022554548042468832219533624"
- "049225313628185783780849179599378819912520555522211658107113"
- "447678746843053930790961744210668515951907105384498734366645"
- "249428031772015356705436411724477514133655840609854880392450"
- "949605226182519804314027265530362531560532656953025288585499"
- "182228921920121831359074541201044664224711170390199159133806"
- "269332015718061873656943996928324527943031265119266878834003"
- "362682519426029626295988425859770358488877080196120965282298"
- "232237612230358616986168510604382051044429343285625121039569"
- "326126486782398017268335279614177221030172599765237380415252"
- "503716285229140380445599733136737846363243777324290551807506"
- "541472429585746028822540006160866496164919640007935962267377"
- "060789839526907505659662711614828949104249176417092401488510"
- "615823548277477841813412329397443687705199567361868375111535"
- "380877143498420444773617475831606309624504731127984157999557"
- "818660940286424404275144312853627845343063342311866285268837"
- "422960089441895882484245945054082617645214582938928610352277"
- "410119555602965075325424443356593793852682899089314976629899"
- "773835991388717888860719076570986705247088078593793511009142"
- "474344996635349786568175384138024607561209403361748867467629"
- "682257007702707626687955791367383934101209955804380644234879"
- "805395123927491333463152240956446177043487579040223002287264"
- "756843617701865806869707173187939918037456096349272671452872"
- "922420893858994027251574788837911846161770227169407508741963"
- "414729807676477574570702693444290823666440055726552795145348"
- "219168459767427369197825367869095117877723957392541043867909"
- "937470060997392012820142238132910823657536940367596076523833"
- "377812701709657429614832107556695928504222183715979980013356"
- "323996396963861087268039321030018015202061305161341454716371"
- "377251261775727795597989586636757177645626856419109247702765"
- "013583220037644023978372654055269485171726959848928885152966"
- "097502777563956522973459672620583266843497935454194334506297"
- "789118714656105011811810822332373521084368112861541360109122"
- "200791235053695977711430654151451133236893607856092978814379"
- "881439122150752237064864676736420913214731240701495311353237"
- "983819572849112853697828591806699104099315306435617990388595"
- "202795271374965360450205351235544991668088723423877385558163"
- "617247959486687176509451394010328416791411019672026111081271"
- "677642426015450739505038057545285042073081841299473107930734"
- "353837688028012401932104019803872355878454440858434446609098"
- "280206732652900093156204893287546907987495659518059539534709"
- "328514027916546796559631836574970153581238433324096828364072"
- "134400344200269161377205676209909802573933271591397018622517"
- "645956348413413974664794017053790027535048049046885143930077"
- "194991519470308057661102259067039984493186760977741752890345"
- "473192220637893214146475540262942007429381634927003835133941"
- "914676847385135317162915391223879714190592014303606413170523"
- "042176230523286150385679951115593656516900591671184538913558"
- "092816251191243853120415613844777512078954866614360029341206"
- "576716710688850917256800353066853946058824831651339265256785"
- "622460269729620332892007335442599404495662483134697945884683"
- "759795006415186716458374920343394259217852886898131157533184"
- "894159749247043678238750268753264909309649831534740397743600"
- "139998210203084676369899478505461752324146318698089839450421"
- "143076361782530689506566153604543149790375911800793483912288"
- "188586309176946988353987684054352129570631591985578449323560"
- "386626892598170269027020282959579435080091825791399174445592"
- "2683343374046671669930219650268554687499e-4951",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x1p-16444,
- -0x8p-16448,
- -0x8p-16448,
- -0x8p-16448,
- false,
- -0xcp-16448,
- -0xcp-16448,
- -0x8p-16448,
- -0x8p-16448,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0xcp-16448,
- -0xcp-16448,
- -0xb.fffffffffffcp-16448,
- -0xb.fffffffffffcp-16448),
- TEST ("-5.467799297823711903792608900429129724598576223540345015581"
- "470730542557532950096605214341062938740807795871021020805296"
- "652950478448933048254960262113384713508225733871766897517853"
- "837895708450339634932343848975116093410479690330290902886861"
- "199931259216523277807574569082153073133673942958789577402321"
- "393933101298533191266102118889630609532339508457854220031996"
- "317935940718000325144008438048416150458546268408294693278282"
- "948818382981756745231443707694395053270779125240469926867881"
- "019850287125023579685557790983055974962881759919483752202903"
- "689199564880305684635452065363595791988290536352100701716974"
- "146329604439226626943340805268641901769971862776194876385604"
- "059269084172123930049144599166605103175580232672032966645406"
- "656863031434873551175363941825798425331906382524706572766485"
- "232874542230564262609161782396887243896247009244068837251567"
- "783223271286692480010679711347802408351619999199127493689411"
- "300623337751847138939498426200450305845548565910009066524152"
- "545480362818290224140170178363735317929685005697363930594593"
- "881342895328789259362029119598601112899006188879876371854878"
- "902571753767478028100558334716504784604592507791482451533133"
- "513128606357440718182123637790769320922442349066328991687862"
- "072550779316393139037201187579972933016227874898505255743233"
- "300533498951938156636406532613846576145617323141684480726409"
- "074184197224754542490884392813625365330881348799432844624838"
- "960826144439157361917744290729073116318858191758821942010704"
- "726536748514141391981088590968911224406479710632429529154589"
- "293799132147906174349149006094094612827453365768213012516958"
- "693057189940355112250629776318079573232513434098933115589372"
- "428935891821270739299776803229999720720845111297142577993950"
- "783716526325576426897121181953632299322177412313472666557946"
- "026587137818658956285876183561334458426909806227578696972983"
- "054578648540140777431341495495816167709600470194141141159275"
- "548586447187051517332624446463129570157208744018317833998766"
- "292676324122069807882266170905460107352347754465354279502046"
- "825607840930640910087488682878186052982487934398794575125208"
- "131434599031355068379234881462786244132403015573059216658125"
- "100992278732459043154873457532866362865038072260302438341256"
- "465144627211756104220773841311413109973101672893502315223943"
- "131161953384837658368750910845308673019625511169535246418667"
- "822192756475773031982522304934161885363133347824122722726808"
- "458339668843622993626685401142719276703936351749165952313385"
- "247253410412444111234661569689109707012146365225868127037807"
- "653838169759426465847963786308715929383888075292817554540826"
- "281340379356869541699838857230452874882475626566568389051842"
- "269616942233880613753230478468266244820792868174047618834373"
- "911783352591638681513579303490680611741310500871919788283761"
- "473826205032029153949410495205647160664548204617663407545902"
- "155255595959035495626212780995301367951250745142427183922194"
- "679405686105598055836303373290577235698605118096647411642319"
- "219474157243864921520422978127962037044537385134878691852739"
- "978563080824265712270538180666161627113218201779779366124407"
- "844574754753562338454876981852965553927903650323407245581099"
- "158807518181769597517311013648265985455750620305808055101887"
- "320313826045110985510052672007356612620966612560448241370561"
- "199679677792733282710356886335229149926131229035514374201804"
- "225447070710784729359320523404977483919175478103049697809100"
- "609955967524096673011016762490361065647326710555615563378359"
- "408954626110765311053180827944575772439918612038754867514863"
- "217604919070168030521022438807226197480679192263641289752695"
- "279367794662267414957708480356805124293407645094292709270568"
- "454704291549032311245797185365876072558819037766647710690310"
- "669384727884764603220129302332950334873072394721879741045233"
- "391084791389282719581455185833551951893903144609338532918282"
- "071417365794666174600590186688558973292265260457397284219723"
- "118736526338195892522797003835806498724823327170646268765114"
- "335047201804332131453475981952420330849091435859688615005340"
- "662951243478815535510910054031985781353569592327342625691155"
- "297753939420991863066846663288192966197121277244462515137195"
- "342887549113968391968700872401047521725534791569882096021521"
- "725739030856023532346309694644208054801875416636970616158970"
- "521587368716636562878779650147005687012772946471436217221680"
- "244104527691159700944328113538972913022260318566564643466194"
- "762762807772321937689272738612051928757740541051011493615150"
- "275299712275026278191137262599722341528351699547926563148579"
- "945678256173476664846284964106409718181820427949855282782538"
- "418620206551699936257338813616307747712660216941043590501407"
- "704980849740902536932579576527206665027800420035787899091137"
- "498285797710848848252835440631389386421149710576503050460098"
- "225348880547453179874214337446508024003058237008669916793765"
- "103830790970613932711932541885454647828573565454163547779034"
- "696478261735426505076787833523027219489668014198674507463022"
- "589310657355955884354584118602516953160415158848138916494891"
- "482359394428713333626368035819136954032193064982447142548513"
- "777798482352540211515117109331361325135068534382485905222012"
- "689155196601835592087277572480712876900324312948680873379635"
- "049766825511648515719101185883064389832362822347209928024358"
- "316443434834701491039800443982197050828044087275939582794327"
- "098500876914356235193809147621508354816413733354188380887001"
- "911623409901345292980795015165229743643600614968493977578123"
- "466095415615447864269417603852427781048383314979868134570808"
- "915217919397946316940234061179348627230180807326753461268559"
- "385959678786688421103134141790339174982532045466350837038525"
- "183177847731101708972936115216192881538981857998354449098289"
- "173408113131230974433096066603129145174088550345854388495636"
- "765494379926460031453181542793269110787478232865475929357580"
- "348192936196178107395850207543849907063319379969931169428718"
- "329942347533981765560805872472322186708756306455763611238082"
- "951450138207325773702247286660824416431038520521352370291078"
- "718247251712503010649103184487159314175972977390771951004404"
- "935285742659293676372796949610394059160197507860285966047861"
- "411940542821283013449073170622058378826534472881876688512697"
- "758815111198429044432164893190718808033606471387328883409622"
- "920327667611981052185172613337770061634130425782297578896747"
- "215274225504191258419704542303129850621901180024012018244583"
- "859069664741628533451563101979900751568200425006085702090401"
- "221537517047980048268055449980601076610965506150742174772246"
- "118061736140257508229467892560527108358789784539076822640564"
- "850851810352577863861819577512851607395927299014823941534626"
- "348696657393457745078724366706324437838188311582720760585617"
- "487635004508688532062666933131188059377591626964364639542322"
- "054994079047698970924302742015839080613569097514938471468421"
- "996493818271996291393146497945863918551953149000943761983830"
- "636236545375480765488470416349046929644442714477859372568735"
- "843708739015199069466751627920202433249482821065761826195203"
- "859723026379941258427585166740391065737087970718105336581850"
- "268003743156009120998264173899565279323585156937231413010764"
- "716608523561569725709426913310091413578317885628039213932500"
- "135284171861048461662744818955691362183779165069982032305970"
- "876642081013358484182671863168168338174351197426412625098421"
- "481239711997827391790388986589171883679226337788805245818923"
- "874607498645601668109872286941958827402018143065273281785872"
- "847384936953936746391717131732488209980499904305446724778559"
- "203846472344227623989606643158012375642854007494547242775256"
- "898117140062170585337487588594307260069257691479046720590527"
- "237259474018798808190031749318500514291360716338072006978678"
- "678209533184089369407377832511947183352849291708100854730341"
- "450938156361786419525775154653957546143580362599388832564788"
- "354103919236836698740026304968121883147777634511851850370958"
- "884085902337976245656103068392811534994239396318567712305532"
- "477169378421492493173704379367954605145484562415027095545060"
- "831874739575572895083275461127704135960230120513850917554331"
- "352277278650414100755269190224957237517573174092361876919730"
- "465289835269438666544826003345857532325281423386809827947616"
- "676425828491143428807224317894169834736598542769698312957949"
- "605903203284128114992351808708487688511436903322773652124574"
- "055471177142349271989998235771191022554548042468832219533624"
- "049225313628185783780849179599378819912520555522211658107113"
- "447678746843053930790961744210668515951907105384498734366645"
- "249428031772015356705436411724477514133655840609854880392450"
- "949605226182519804314027265530362531560532656953025288585499"
- "182228921920121831359074541201044664224711170390199159133806"
- "269332015718061873656943996928324527943031265119266878834003"
- "362682519426029626295988425859770358488877080196120965282298"
- "232237612230358616986168510604382051044429343285625121039569"
- "326126486782398017268335279614177221030172599765237380415252"
- "503716285229140380445599733136737846363243777324290551807506"
- "541472429585746028822540006160866496164919640007935962267377"
- "060789839526907505659662711614828949104249176417092401488510"
- "615823548277477841813412329397443687705199567361868375111535"
- "380877143498420444773617475831606309624504731127984157999557"
- "818660940286424404275144312853627845343063342311866285268837"
- "422960089441895882484245945054082617645214582938928610352277"
- "410119555602965075325424443356593793852682899089314976629899"
- "773835991388717888860719076570986705247088078593793511009142"
- "474344996635349786568175384138024607561209403361748867467629"
- "682257007702707626687955791367383934101209955804380644234879"
- "805395123927491333463152240956446177043487579040223002287264"
- "756843617701865806869707173187939918037456096349272671452872"
- "922420893858994027251574788837911846161770227169407508741963"
- "414729807676477574570702693444290823666440055726552795145348"
- "219168459767427369197825367869095117877723957392541043867909"
- "937470060997392012820142238132910823657536940367596076523833"
- "377812701709657429614832107556695928504222183715979980013356"
- "323996396963861087268039321030018015202061305161341454716371"
- "377251261775727795597989586636757177645626856419109247702765"
- "013583220037644023978372654055269485171726959848928885152966"
- "097502777563956522973459672620583266843497935454194334506297"
- "789118714656105011811810822332373521084368112861541360109122"
- "200791235053695977711430654151451133236893607856092978814379"
- "881439122150752237064864676736420913214731240701495311353237"
- "983819572849112853697828591806699104099315306435617990388595"
- "202795271374965360450205351235544991668088723423877385558163"
- "617247959486687176509451394010328416791411019672026111081271"
- "677642426015450739505038057545285042073081841299473107930734"
- "353837688028012401932104019803872355878454440858434446609098"
- "280206732652900093156204893287546907987495659518059539534709"
- "328514027916546796559631836574970153581238433324096828364072"
- "134400344200269161377205676209909802573933271591397018622517"
- "645956348413413974664794017053790027535048049046885143930077"
- "194991519470308057661102259067039984493186760977741752890345"
- "473192220637893214146475540262942007429381634927003835133941"
- "914676847385135317162915391223879714190592014303606413170523"
- "042176230523286150385679951115593656516900591671184538913558"
- "092816251191243853120415613844777512078954866614360029341206"
- "576716710688850917256800353066853946058824831651339265256785"
- "622460269729620332892007335442599404495662483134697945884683"
- "759795006415186716458374920343394259217852886898131157533184"
- "894159749247043678238750268753264909309649831534740397743600"
- "139998210203084676369899478505461752324146318698089839450421"
- "143076361782530689506566153604543149790375911800793483912288"
- "188586309176946988353987684054352129570631591985578449323560"
- "386626892598170269027020282959579435080091825791399174445592"
- "26833433740466716699302196502685546875e-4951",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x1p-16444,
- -0x1p-16444,
- -0x8p-16448,
- -0x8p-16448,
- true,
- -0xcp-16448,
- -0xcp-16448,
- -0xcp-16448,
- -0xcp-16448,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0xcp-16448,
- -0xcp-16448,
- -0xcp-16448,
- -0xcp-16448),
- TEST ("-5.467799297823711903792608900429129724598576223540345015581"
- "470730542557532950096605214341062938740807795871021020805296"
- "652950478448933048254960262113384713508225733871766897517853"
- "837895708450339634932343848975116093410479690330290902886861"
- "199931259216523277807574569082153073133673942958789577402321"
- "393933101298533191266102118889630609532339508457854220031996"
- "317935940718000325144008438048416150458546268408294693278282"
- "948818382981756745231443707694395053270779125240469926867881"
- "019850287125023579685557790983055974962881759919483752202903"
- "689199564880305684635452065363595791988290536352100701716974"
- "146329604439226626943340805268641901769971862776194876385604"
- "059269084172123930049144599166605103175580232672032966645406"
- "656863031434873551175363941825798425331906382524706572766485"
- "232874542230564262609161782396887243896247009244068837251567"
- "783223271286692480010679711347802408351619999199127493689411"
- "300623337751847138939498426200450305845548565910009066524152"
- "545480362818290224140170178363735317929685005697363930594593"
- "881342895328789259362029119598601112899006188879876371854878"
- "902571753767478028100558334716504784604592507791482451533133"
- "513128606357440718182123637790769320922442349066328991687862"
- "072550779316393139037201187579972933016227874898505255743233"
- "300533498951938156636406532613846576145617323141684480726409"
- "074184197224754542490884392813625365330881348799432844624838"
- "960826144439157361917744290729073116318858191758821942010704"
- "726536748514141391981088590968911224406479710632429529154589"
- "293799132147906174349149006094094612827453365768213012516958"
- "693057189940355112250629776318079573232513434098933115589372"
- "428935891821270739299776803229999720720845111297142577993950"
- "783716526325576426897121181953632299322177412313472666557946"
- "026587137818658956285876183561334458426909806227578696972983"
- "054578648540140777431341495495816167709600470194141141159275"
- "548586447187051517332624446463129570157208744018317833998766"
- "292676324122069807882266170905460107352347754465354279502046"
- "825607840930640910087488682878186052982487934398794575125208"
- "131434599031355068379234881462786244132403015573059216658125"
- "100992278732459043154873457532866362865038072260302438341256"
- "465144627211756104220773841311413109973101672893502315223943"
- "131161953384837658368750910845308673019625511169535246418667"
- "822192756475773031982522304934161885363133347824122722726808"
- "458339668843622993626685401142719276703936351749165952313385"
- "247253410412444111234661569689109707012146365225868127037807"
- "653838169759426465847963786308715929383888075292817554540826"
- "281340379356869541699838857230452874882475626566568389051842"
- "269616942233880613753230478468266244820792868174047618834373"
- "911783352591638681513579303490680611741310500871919788283761"
- "473826205032029153949410495205647160664548204617663407545902"
- "155255595959035495626212780995301367951250745142427183922194"
- "679405686105598055836303373290577235698605118096647411642319"
- "219474157243864921520422978127962037044537385134878691852739"
- "978563080824265712270538180666161627113218201779779366124407"
- "844574754753562338454876981852965553927903650323407245581099"
- "158807518181769597517311013648265985455750620305808055101887"
- "320313826045110985510052672007356612620966612560448241370561"
- "199679677792733282710356886335229149926131229035514374201804"
- "225447070710784729359320523404977483919175478103049697809100"
- "609955967524096673011016762490361065647326710555615563378359"
- "408954626110765311053180827944575772439918612038754867514863"
- "217604919070168030521022438807226197480679192263641289752695"
- "279367794662267414957708480356805124293407645094292709270568"
- "454704291549032311245797185365876072558819037766647710690310"
- "669384727884764603220129302332950334873072394721879741045233"
- "391084791389282719581455185833551951893903144609338532918282"
- "071417365794666174600590186688558973292265260457397284219723"
- "118736526338195892522797003835806498724823327170646268765114"
- "335047201804332131453475981952420330849091435859688615005340"
- "662951243478815535510910054031985781353569592327342625691155"
- "297753939420991863066846663288192966197121277244462515137195"
- "342887549113968391968700872401047521725534791569882096021521"
- "725739030856023532346309694644208054801875416636970616158970"
- "521587368716636562878779650147005687012772946471436217221680"
- "244104527691159700944328113538972913022260318566564643466194"
- "762762807772321937689272738612051928757740541051011493615150"
- "275299712275026278191137262599722341528351699547926563148579"
- "945678256173476664846284964106409718181820427949855282782538"
- "418620206551699936257338813616307747712660216941043590501407"
- "704980849740902536932579576527206665027800420035787899091137"
- "498285797710848848252835440631389386421149710576503050460098"
- "225348880547453179874214337446508024003058237008669916793765"
- "103830790970613932711932541885454647828573565454163547779034"
- "696478261735426505076787833523027219489668014198674507463022"
- "589310657355955884354584118602516953160415158848138916494891"
- "482359394428713333626368035819136954032193064982447142548513"
- "777798482352540211515117109331361325135068534382485905222012"
- "689155196601835592087277572480712876900324312948680873379635"
- "049766825511648515719101185883064389832362822347209928024358"
- "316443434834701491039800443982197050828044087275939582794327"
- "098500876914356235193809147621508354816413733354188380887001"
- "911623409901345292980795015165229743643600614968493977578123"
- "466095415615447864269417603852427781048383314979868134570808"
- "915217919397946316940234061179348627230180807326753461268559"
- "385959678786688421103134141790339174982532045466350837038525"
- "183177847731101708972936115216192881538981857998354449098289"
- "173408113131230974433096066603129145174088550345854388495636"
- "765494379926460031453181542793269110787478232865475929357580"
- "348192936196178107395850207543849907063319379969931169428718"
- "329942347533981765560805872472322186708756306455763611238082"
- "951450138207325773702247286660824416431038520521352370291078"
- "718247251712503010649103184487159314175972977390771951004404"
- "935285742659293676372796949610394059160197507860285966047861"
- "411940542821283013449073170622058378826534472881876688512697"
- "758815111198429044432164893190718808033606471387328883409622"
- "920327667611981052185172613337770061634130425782297578896747"
- "215274225504191258419704542303129850621901180024012018244583"
- "859069664741628533451563101979900751568200425006085702090401"
- "221537517047980048268055449980601076610965506150742174772246"
- "118061736140257508229467892560527108358789784539076822640564"
- "850851810352577863861819577512851607395927299014823941534626"
- "348696657393457745078724366706324437838188311582720760585617"
- "487635004508688532062666933131188059377591626964364639542322"
- "054994079047698970924302742015839080613569097514938471468421"
- "996493818271996291393146497945863918551953149000943761983830"
- "636236545375480765488470416349046929644442714477859372568735"
- "843708739015199069466751627920202433249482821065761826195203"
- "859723026379941258427585166740391065737087970718105336581850"
- "268003743156009120998264173899565279323585156937231413010764"
- "716608523561569725709426913310091413578317885628039213932500"
- "135284171861048461662744818955691362183779165069982032305970"
- "876642081013358484182671863168168338174351197426412625098421"
- "481239711997827391790388986589171883679226337788805245818923"
- "874607498645601668109872286941958827402018143065273281785872"
- "847384936953936746391717131732488209980499904305446724778559"
- "203846472344227623989606643158012375642854007494547242775256"
- "898117140062170585337487588594307260069257691479046720590527"
- "237259474018798808190031749318500514291360716338072006978678"
- "678209533184089369407377832511947183352849291708100854730341"
- "450938156361786419525775154653957546143580362599388832564788"
- "354103919236836698740026304968121883147777634511851850370958"
- "884085902337976245656103068392811534994239396318567712305532"
- "477169378421492493173704379367954605145484562415027095545060"
- "831874739575572895083275461127704135960230120513850917554331"
- "352277278650414100755269190224957237517573174092361876919730"
- "465289835269438666544826003345857532325281423386809827947616"
- "676425828491143428807224317894169834736598542769698312957949"
- "605903203284128114992351808708487688511436903322773652124574"
- "055471177142349271989998235771191022554548042468832219533624"
- "049225313628185783780849179599378819912520555522211658107113"
- "447678746843053930790961744210668515951907105384498734366645"
- "249428031772015356705436411724477514133655840609854880392450"
- "949605226182519804314027265530362531560532656953025288585499"
- "182228921920121831359074541201044664224711170390199159133806"
- "269332015718061873656943996928324527943031265119266878834003"
- "362682519426029626295988425859770358488877080196120965282298"
- "232237612230358616986168510604382051044429343285625121039569"
- "326126486782398017268335279614177221030172599765237380415252"
- "503716285229140380445599733136737846363243777324290551807506"
- "541472429585746028822540006160866496164919640007935962267377"
- "060789839526907505659662711614828949104249176417092401488510"
- "615823548277477841813412329397443687705199567361868375111535"
- "380877143498420444773617475831606309624504731127984157999557"
- "818660940286424404275144312853627845343063342311866285268837"
- "422960089441895882484245945054082617645214582938928610352277"
- "410119555602965075325424443356593793852682899089314976629899"
- "773835991388717888860719076570986705247088078593793511009142"
- "474344996635349786568175384138024607561209403361748867467629"
- "682257007702707626687955791367383934101209955804380644234879"
- "805395123927491333463152240956446177043487579040223002287264"
- "756843617701865806869707173187939918037456096349272671452872"
- "922420893858994027251574788837911846161770227169407508741963"
- "414729807676477574570702693444290823666440055726552795145348"
- "219168459767427369197825367869095117877723957392541043867909"
- "937470060997392012820142238132910823657536940367596076523833"
- "377812701709657429614832107556695928504222183715979980013356"
- "323996396963861087268039321030018015202061305161341454716371"
- "377251261775727795597989586636757177645626856419109247702765"
- "013583220037644023978372654055269485171726959848928885152966"
- "097502777563956522973459672620583266843497935454194334506297"
- "789118714656105011811810822332373521084368112861541360109122"
- "200791235053695977711430654151451133236893607856092978814379"
- "881439122150752237064864676736420913214731240701495311353237"
- "983819572849112853697828591806699104099315306435617990388595"
- "202795271374965360450205351235544991668088723423877385558163"
- "617247959486687176509451394010328416791411019672026111081271"
- "677642426015450739505038057545285042073081841299473107930734"
- "353837688028012401932104019803872355878454440858434446609098"
- "280206732652900093156204893287546907987495659518059539534709"
- "328514027916546796559631836574970153581238433324096828364072"
- "134400344200269161377205676209909802573933271591397018622517"
- "645956348413413974664794017053790027535048049046885143930077"
- "194991519470308057661102259067039984493186760977741752890345"
- "473192220637893214146475540262942007429381634927003835133941"
- "914676847385135317162915391223879714190592014303606413170523"
- "042176230523286150385679951115593656516900591671184538913558"
- "092816251191243853120415613844777512078954866614360029341206"
- "576716710688850917256800353066853946058824831651339265256785"
- "622460269729620332892007335442599404495662483134697945884683"
- "759795006415186716458374920343394259217852886898131157533184"
- "894159749247043678238750268753264909309649831534740397743600"
- "139998210203084676369899478505461752324146318698089839450421"
- "143076361782530689506566153604543149790375911800793483912288"
- "188586309176946988353987684054352129570631591985578449323560"
- "386626892598170269027020282959579435080091825791399174445592"
- "2683343374046671669930219650268554687501e-4951",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x1p-16444,
- -0x1p-16444,
- -0x8p-16448,
- -0x8p-16448,
- false,
- -0x1p-16444,
- -0xcp-16448,
- -0xcp-16448,
- -0xcp-16448,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0xc.000000000004p-16448,
- -0xcp-16448,
- -0xcp-16448,
- -0xcp-16448),
- TEST ("-0x0.7p-149",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x3.8p-152,
- -0x3.8p-152,
- -0x3.8p-152,
- -0x3.8p-152,
- true,
- -0x3.8p-152,
- -0x3.8p-152,
- -0x3.8p-152,
- -0x3.8p-152,
- true,
- -0x3.8p-152,
- -0x3.8p-152,
- -0x3.8p-152,
- -0x3.8p-152,
- true,
- -0x3.8p-152,
- -0x3.8p-152,
- -0x3.8p-152,
- -0x3.8p-152,
- true,
- -0x3.8p-152,
- -0x3.8p-152,
- -0x3.8p-152,
- -0x3.8p-152),
- TEST ("-0x0.7p-1074",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x1.cp-1076,
- -0x1.cp-1076,
- -0x1.cp-1076,
- -0x1.cp-1076,
- true,
- -0x1.cp-1076,
- -0x1.cp-1076,
- -0x1.cp-1076,
- -0x1.cp-1076,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x1.cp-1076,
- -0x1.cp-1076,
- -0x1.cp-1076,
- -0x1.cp-1076),
- TEST ("-0x0.7p-16445",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16448,
- -0x4p-16448,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x3.8p-16448,
- -0x3.8p-16448,
- -0x3.8p-16448,
- -0x3.8p-16448),
- TEST ("-0x0.7p-16494",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16496,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0),
- TEST ("0x1p-150",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- true,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- true,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- true,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- true,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- true,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152),
- TEST ("0x1p-1075",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- true,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- true,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- true,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076),
- TEST ("0x1p-16446",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-16448,
- true,
- 0x4p-16448,
- 0x4p-16448,
- 0x4p-16448,
- 0x4p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- true,
- 0x4p-16448,
- 0x4p-16448,
- 0x4p-16448,
- 0x4p-16448),
- TEST ("0x1p-16495",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-16496),
- TEST ("-0x1p-150",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- true,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- true,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- true,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- true,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152),
- TEST ("-0x1p-1075",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076,
- true,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076),
- TEST ("-0x1p-16446",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x4p-16448,
- -0x4p-16448,
- -0x4p-16448,
- -0x4p-16448,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x4p-16448,
- -0x4p-16448,
- -0x4p-16448,
- -0x4p-16448),
- TEST ("-0x1p-16495",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16496,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0),
- TEST (".70064923216240853546186479164495807e-45",
- false,
- 0x0p+0,
- 0x8p-152,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4.0000000000004p-152,
- false,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4.0000000000000008p-152,
- false,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4.0000000000000008p-152,
- false,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4.00000000000000000000000002p-152,
- false,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4.0000000000000000000000000004p-152),
- TEST ("7.0064923216240853546186479164495806564013097093825788587853"
- "4141944895541342930300743319094181060791015624e-46",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x3.ffffffffffffep-152,
- 0x4p-152,
- 0x3.ffffffffffffep-152,
- 0x4p-152,
- false,
- 0x3.fffffffffffffffcp-152,
- 0x4p-152,
- 0x3.fffffffffffffffcp-152,
- 0x4p-152,
- false,
- 0x3.fffffffffffffffcp-152,
- 0x4p-152,
- 0x3.fffffffffffffffcp-152,
- 0x4p-152,
- false,
- 0x3.ffffffffffffffffffffffffffp-152,
- 0x4p-152,
- 0x3.ffffffffffffffffffffffffffp-152,
- 0x4p-152,
- false,
- 0x3.fffffffffffffffffffffffffffep-152,
- 0x4p-152,
- 0x3.fffffffffffffffffffffffffffep-152,
- 0x4p-152),
- TEST ("7.0064923216240853546186479164495806564013097093825788587853"
- "4141944895541342930300743319094181060791015625e-46",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- true,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- true,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- true,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- true,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- true,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152),
- TEST ("7.0064923216240853546186479164495806564013097093825788587853"
- "4141944895541342930300743319094181060791015626e-46",
- false,
- 0x0p+0,
- 0x8p-152,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4.0000000000004p-152,
- false,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4.0000000000000008p-152,
- false,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4.0000000000000008p-152,
- false,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4.00000000000000000000000002p-152,
- false,
- 0x4p-152,
- 0x4p-152,
- 0x4p-152,
- 0x4.0000000000000000000000000004p-152),
- TEST ("-7.006492321624085354618647916449580656401309709382578858785"
- "34141944895541342930300743319094181060791015624e-46",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-152,
- -0x4p-152,
- -0x3.ffffffffffffep-152,
- -0x3.ffffffffffffep-152,
- false,
- -0x4p-152,
- -0x4p-152,
- -0x3.fffffffffffffffcp-152,
- -0x3.fffffffffffffffcp-152,
- false,
- -0x4p-152,
- -0x4p-152,
- -0x3.fffffffffffffffcp-152,
- -0x3.fffffffffffffffcp-152,
- false,
- -0x4p-152,
- -0x4p-152,
- -0x3.ffffffffffffffffffffffffffp-152,
- -0x3.ffffffffffffffffffffffffffp-152,
- false,
- -0x4p-152,
- -0x4p-152,
- -0x3.fffffffffffffffffffffffffffep-152,
- -0x3.fffffffffffffffffffffffffffep-152),
- TEST ("-7.006492321624085354618647916449580656401309709382578858785"
- "34141944895541342930300743319094181060791015625e-46",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- true,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- true,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- true,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- true,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152),
- TEST ("-7.006492321624085354618647916449580656401309709382578858785"
- "34141944895541342930300743319094181060791015626e-46",
- false,
- -0x8p-152,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4.0000000000004p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- false,
- -0x4.0000000000000008p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- false,
- -0x4.0000000000000008p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- false,
- -0x4.00000000000000000000000002p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152,
- false,
- -0x4.0000000000000000000000000004p-152,
- -0x4p-152,
- -0x4p-152,
- -0x4p-152),
- TEST ("2.4703282292062327208828439643411068618252990130716238221279"
- "284125033775363510437593264991818081799618989828234772285886"
- "546332835517796989819938739800539093906315035659515570226392"
- "290858392449105184435931802849936536152500319370457678249219"
- "365623669863658480757001585769269903706311928279558551332927"
- "834338409351978015531246597263579574622766465272827220056374"
- "006485499977096599470454020828166226237857393450736339007967"
- "761930577506740176324673600968951340535537458516661134223766"
- "678604162159680461914467291840300530057530849048765391711386"
- "591646239524912623653881879636239373280423891018672348497668"
- "235089863388587925628302755995657524455507255189313690836254"
- "779186948667994968324049705821028513185451396213837722826145"
- "437693412532098591327667236328124e-324",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x1.fffffffffffffffep-1076,
- 0x2p-1076,
- 0x1.fffffffffffffffep-1076,
- 0x2p-1076,
- false,
- 0x1.fffffffffffffffep-1076,
- 0x2p-1076,
- 0x1.fffffffffffffffep-1076,
- 0x2p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x1.ffffffffffffffffffffffffffffp-1076,
- 0x2p-1076,
- 0x1.ffffffffffffffffffffffffffffp-1076,
- 0x2p-1076),
- TEST ("2.4703282292062327208828439643411068618252990130716238221279"
- "284125033775363510437593264991818081799618989828234772285886"
- "546332835517796989819938739800539093906315035659515570226392"
- "290858392449105184435931802849936536152500319370457678249219"
- "365623669863658480757001585769269903706311928279558551332927"
- "834338409351978015531246597263579574622766465272827220056374"
- "006485499977096599470454020828166226237857393450736339007967"
- "761930577506740176324673600968951340535537458516661134223766"
- "678604162159680461914467291840300530057530849048765391711386"
- "591646239524912623653881879636239373280423891018672348497668"
- "235089863388587925628302755995657524455507255189313690836254"
- "779186948667994968324049705821028513185451396213837722826145"
- "437693412532098591327667236328125e-324",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- true,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- true,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- true,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076),
- TEST ("2.4703282292062327208828439643411068618252990130716238221279"
- "284125033775363510437593264991818081799618989828234772285886"
- "546332835517796989819938739800539093906315035659515570226392"
- "290858392449105184435931802849936536152500319370457678249219"
- "365623669863658480757001585769269903706311928279558551332927"
- "834338409351978015531246597263579574622766465272827220056374"
- "006485499977096599470454020828166226237857393450736339007967"
- "761930577506740176324673600968951340535537458516661134223766"
- "678604162159680461914467291840300530057530849048765391711386"
- "591646239524912623653881879636239373280423891018672348497668"
- "235089863388587925628302755995657524455507255189313690836254"
- "779186948667994968324049705821028513185451396213837722826145"
- "437693412532098591327667236328126e-324",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x4p-1076,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- 0x2.0000000000000004p-1076,
- false,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- 0x2.0000000000000004p-1076,
- false,
- 0x0p+0,
- 0x4p-1076,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x2p-1076,
- 0x2p-1076,
- 0x2p-1076,
- 0x2.0000000000000000000000000002p-1076),
- TEST ("-2.470328229206232720882843964341106861825299013071623822127"
- "928412503377536351043759326499181808179961898982823477228588"
- "654633283551779698981993873980053909390631503565951557022639"
- "229085839244910518443593180284993653615250031937045767824921"
- "936562366986365848075700158576926990370631192827955855133292"
- "783433840935197801553124659726357957462276646527282722005637"
- "400648549997709659947045402082816622623785739345073633900796"
- "776193057750674017632467360096895134053553745851666113422376"
- "667860416215968046191446729184030053005753084904876539171138"
- "659164623952491262365388187963623937328042389101867234849766"
- "823508986338858792562830275599565752445550725518931369083625"
- "477918694866799496832404970582102851318545139621383772282614"
- "5437693412532098591327667236328124e-324",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x2p-1076,
- -0x2p-1076,
- -0x1.fffffffffffffffep-1076,
- -0x1.fffffffffffffffep-1076,
- false,
- -0x2p-1076,
- -0x2p-1076,
- -0x1.fffffffffffffffep-1076,
- -0x1.fffffffffffffffep-1076,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x2p-1076,
- -0x2p-1076,
- -0x1.ffffffffffffffffffffffffffffp-1076,
- -0x1.ffffffffffffffffffffffffffffp-1076),
- TEST ("-2.470328229206232720882843964341106861825299013071623822127"
- "928412503377536351043759326499181808179961898982823477228588"
- "654633283551779698981993873980053909390631503565951557022639"
- "229085839244910518443593180284993653615250031937045767824921"
- "936562366986365848075700158576926990370631192827955855133292"
- "783433840935197801553124659726357957462276646527282722005637"
- "400648549997709659947045402082816622623785739345073633900796"
- "776193057750674017632467360096895134053553745851666113422376"
- "667860416215968046191446729184030053005753084904876539171138"
- "659164623952491262365388187963623937328042389101867234849766"
- "823508986338858792562830275599565752445550725518931369083625"
- "477918694866799496832404970582102851318545139621383772282614"
- "5437693412532098591327667236328125e-324",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076,
- true,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076),
- TEST ("-2.470328229206232720882843964341106861825299013071623822127"
- "928412503377536351043759326499181808179961898982823477228588"
- "654633283551779698981993873980053909390631503565951557022639"
- "229085839244910518443593180284993653615250031937045767824921"
- "936562366986365848075700158576926990370631192827955855133292"
- "783433840935197801553124659726357957462276646527282722005637"
- "400648549997709659947045402082816622623785739345073633900796"
- "776193057750674017632467360096895134053553745851666113422376"
- "667860416215968046191446729184030053005753084904876539171138"
- "659164623952491262365388187963623937328042389101867234849766"
- "823508986338858792562830275599565752445550725518931369083625"
- "477918694866799496832404970582102851318545139621383772282614"
- "5437693412532098591327667236328126e-324",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x2.0000000000000004p-1076,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076,
- false,
- -0x2.0000000000000004p-1076,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076,
- false,
- -0x4p-1076,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x2.0000000000000000000000000002p-1076,
- -0x2p-1076,
- -0x2p-1076,
- -0x2p-1076),
- TEST ("1.8225997659412373012642029668097099081995254078467816718604"
- "902435141858443166988684047803543129136025986236736736017655"
- "509834928163110160849867540377949045027419112905889658392846"
- "126319028167798783107812829917053644701598967767636342956203"
- "999770864055077592691915230273843577112246476529298591341071"
- "313110337661777304220340396298768698441131694859514066773321"
- "059786469060001083813361460161387168195154228027648977594276"
- "496061276605855817438145692314650177569263750801566422892936"
- "732834290416745265618525969943519916542939199731612507343012"
- "297331882934352282118173551211985973294301787840335672389913"
- "821098681464088756477802684228806339233239542587316254618680"
- "197563613907079766830481997222017010585267442240109888818022"
- "189543438116245170584546472752661417773021275082355242554950"
- "776248474101880875363872607989624146320823364146896124171892"
- "610744237622308266702265704492674694505399997330424978964704"
- "335411125839490463131661420668167686151828553033363555080508"
- "484934542727634080467233927879117726432283352324546435315312"
- "937809651095964197873430398662003709663353962932921239516263"
- "008572512558260093668527782388349282015308359304941505110445"
- "043762021191469060607078792635897736408141163554429972292873"
- "575169264387977130124003958599909776720759582995017519144111"
- "001778329839793855454688442046155253818724410472281602421363"
- "580613990749181808302947976045417884436271162664776148749463"
- "202753814797191206392480969096910387729527305862739806702349"
- "088455828380471306603628636563037414688265702108098430515297"
- "645997107159687247830496686980315376091511219227376708389862"
- "310190633134517040835432587726931910775044780329777051964574"
- "763119639404235797665922677433332402402817037657141926646502"
- "612388421085254756323737273178774331073924707711575555193153"
- "421957126062196520952920611871114861423032687425262323243276"
- "848595495133802591437804984986053892365334900647137137197585"
- "161954823956838391108748154877098567190695813394392779995887"
- "642254413740232692940887236351533691174492514884514265006822"
- "752026136435469700291628942927286843274959781329315250417360"
- "438115330104516894597449604875954147108010051910197388860417"
- "003307595774863477182911525109554542883460240867674794470854"
- "883815424039187014069246137704710366577005576311674384079810"
- "437206511282792194562503036151028910065418370565117488062226"
- "073975854919243439941741016447206284543777826080409075756028"
- "194465562812076645422284670475730922346454505830553174377950"
- "824178034708147037448871898963699023373821217419560423459358"
- "846127232531421552826545954362386431279626917642725181802754"
- "271134597856231805666129524101509582941585421888561296839474"
- "232056474112935379177434928227554149402642893913492062781246"
- "372611175305462271711931011635602039137701669573065960945871"
- "579420683440097179831368317352157202215160682058878025153007"
- "184185319863451652087375936651004559837502483808090613073982"
- "264685620351993519454344577635257452328683726988824705474397"
- "398247190812883071734743260426540123481791283782928972842466"
- "595210269414219040901793935553872090377394005932597887081359"
- "481915849178541128182923272843218513093012167744690818603663"
- "862691727272565325057703378827553284852502067686026850339624"
- "401046086817036618366842240024522042069888708534827471235203"
- "998932259309110942367856287784097166420437430118381247339347"
- "418156902369282431197735078016591613063918260343498992697002"
- "033186558413655576703389208301203552157755701852051877927864"
- "696515420369217703510602759815252574799728706795849558382877"
- "392016396900560101736741462690753991602263974212137632508984"
- "264559315540891383192361601189350414311358816980975697568561"
- "515680971830107704152657284552920241862730125888825702301035"
- "564615759615882010733764341109834449576907982406265803484111"
- "303615971297609065271517286111839839646343815364461776394273"
- "571391219315553915335300622295196577640884201524657614065743"
- "729121754460652975075990012786021662416077757235487562550381"
- "116824006014440438178253273174734436163638119532295383351135"
- "543170811596051785036366846773285937845231974424475418970517"
- "659179798069972876889488877627309887323737590814875050457317"
- "809625163713227973229002908003491739085115971899606986738405"
- "752463436186745107821032315480693516006251388789902053863235"
- "071957895722121876262598833823352290042576488238120724072267"
- "480348425637199003147760378463243043407534395221882144887315"
- "875876025907739792297575795373506429192468470170038312050500"
- "917665707583420927303790875332407805094505665159755210495266"
- "485594187244922216154283213688032393939401426499517609275128"
- "062067355172333120857796045387692492375534056470145301671359"
- "016602832469675123108598588424022216759334733452626330303791"
- "660952659036162827509451468771297954737165701921676834866994"
- "084496268491510599580714458155026746676860790028899722645883"
- "679435969902046442373108472951515492761911884847211825930115"
- "654927539118088350255959445076757398298893380662248358210075"
- "297702191186519614515280395341723177201383862827129721649638"
- "274531314762377778754560119397123180107310216608157141828379"
- "259328274508467371717057031104537750450228447941619684073375"
- "630517322006118640290925241602376256334414376495602911265450"
- "165889418372161719063670619610214632774542741157366426747861"
- "054811449449004970132668146607323502760146957586465275981090"
- "328336256381187450646030492071694516054712444513961269623339"
- "705411366337817643269316717217432478812002049894979925260411"
- "553651385384826214231392012841425936827944383266227115236029"
- "717393064659821056467446870597828757433936024422511537561864"
- "619865595955628070343780472634463916608440151554502790128417"
- "277259492437005696576453717387309605129939526661181496994297"
- "244693710437436581443653555343763817246961834486181294985455"
- "884981266421533438177271809310897035958260776218253097858601"
- "160643120653927024652834025146166356877731266566437231429061"
- "099807825113272551869352908241073955695854354852545370793609"
- "838167127357752579007490955536081388103461735071174567636929"
- "060824172375010035497010614957197713919909924635906503348016"
- "450952475530978921242656498701313530533991692867619886826204"
- "706468476070943378163577235406861262755114909606255628375659"
- "196050370661430148107216310635729360112021571291096278032076"
- "401092225373270173950575377792566872113768085940991929655824"
- "050914085013970861399015141010432835406337266746706727481946"
- "196898882472095111505210339933002505227334750020285673634670"
- "738458390159933494226851499935336922036551687169140582574153"
- "726872453800858360764892975201757027862632615130256075468549"
- "502839367841926212872731925042838691319757663382746471782087"
- "828988857978192483595747889021081459460627705275735868618724"
- "958783348362295106875556443770626864591972089881215465141073"
- "516646930158996569747675806719463602045230325049794904894739"
- "988312727573320971310488326486213061839843830003145873279435"
- "454121817918269218294901387830156432148142381592864575229119"
- "479029130050663564889172093067341444164942736885872753984012"
- "865743421266470861425283889134636885790293235727017788606167"
- "560012477186697069994213912998550931078617189790771376702549"
- "055361745205232419031423044366971378594392952093464046441667"
- "117613906203494872209149396518971207279263883566606774353236"
- "255473603377861613942239543893894460581170658088042083661404"
- "937465706659424639301296621963906278930754459296017486063079"
- "582024995485338893699574289806529424673393810217577605952909"
- "491283123179789154639057105774960699934999681018155749261864"
- "012821574480758746632022143860041252142846691648490809250856"
- "327057133540568617791625295314357533564192304930155735301757"
- "457531580062662693966772497728335047637869054460240023262262"
- "260698443946964564691259441706490611176164305693669515767804"
- "836460521205954731752583848846525153811934541997962775215961"
- "180346397456122329133421016560406277159258781706172834569862"
- "946953007793254152187010227976038449980797987728559041018441"
- "590564594738308310579014597893182017151615208050090318483536"
- "106249131918576316944251537092347119867433735046169725181104"
- "507590928834713669184230634083190791725243913641206256399101"
- "550966117564795555149420011152858441084271411289366093158722"
- "254752761637144762690747726313899449121995142565661043193165"
- "353010677613760383307839362361625628371456344409245507081913"
- "518237257141164239966660785903970075181826808229440731778746"
- "830751045427285945936163931997929399708401851740705527023711"
- "492262489476846435969872480702228386506357017948329114555484"
- "164760105906717855684788039081591713778852802032849601308169"
- "832017420608399347713424218434541771868442189843417628618330"
- "607429739733739437863581804003482214082370567967330530446020"
- "897773385726872912189813323094415093143437550397556262780011"
- "208941731420098754319961419532567861629590267320403217607660"
- "774125374101195389953895035347940170148097810952083736798564"
- "420421622607993390894450932047257403433908665884124601384175"
- "012387617430467934818665777122459487877479257747635172691688"
- "471574765285820096075133353869554987216398800026453207557923"
- "535966131756358352198875705382763163680830588056974671628368"
- "719411827591592806044707764658145625683998557872894583705117"
- "936257144994734815912058252772021032081682437093280526665192"
- "728869800954748014250481042845426151143544474372887617562791"
- "409866964806319608280819816846942058817381943129762034507591"
- "367065185343216917751414811188645979508942996964383255432999"
- "246119971295726296202396921903289017490293595312645036697141"
- "581149988784499288560584613793415358537364677872496224892098"
- "940856692342358755626519304557946447004033186014602147449599"
- "351317079758304444877174136521487256811625263467410007624215"
- "856145392339552689565690577293133060124853654497575571509576"
- "408069646196646757505249296126372820539234090564691695806544"
- "715766025588258581902342311480969412221466852421842650484494"
- "063894865891424563992751226230317059592413191308470146226366"
- "458233536657973376067140793776369412191789801225320255079444"
- "592709005698858098716107025188986428347407279053266600044521"
- "079987989879536957560131070100060050673537683871138182387904"
- "590837539252425985326631955455857258818756188063697492342550"
- "045277400125480079927908846850898283905756532829762950509886"
- "991675925213188409911532242068610889478326451513981115020992"
- "630395715520350039372702741107911736947893709538471200363740"
- "669304116845653259038102180504837110789645359520309929381266"
- "271463740502507456882882255788069710715770802338317704510793"
- "279398576163709512326095306022330346997717688118726634628650"
- "675984237916551201500684504118483305560295744746257951860545"
- "390826531622290588364837980034428055971370065573420370270905"
- "592141420051502465016793525150950140243606137664910359769114"
- "512792293426708006440346732679574519594848136194781488696994"
- "267355775509666977187349644291823026624985531726865131782364"
- "428380093055155988532106121916567178604128111080322761213573"
- "781334480667563871257352254033032675246444238637990062075058"
- "819854494711379915549313390179300091783493496822950479766923"
- "983305064901026858870340863556799948310622536592472509634484"
- "910640735459644047154918467543140024764605449756679450446473"
- "048922824617117723876384637412932380635306714345354710568410"
- "140587435077620501285599837051978855056335305570615129711860"
- "309387503970812843734718712815925040263182888714533431137355"
- "255722368962836390856001176889513153529416105504464217522618"
- "741534232432067776306691118141998014985541610448993152948945"
- "865983354717289054861249734477980864059509622993770525110616"
- "313865830823478927462500895844216364365499438449134659145333"
- "799994034010282254566331595018205841080487728993632798168070"
- "476921205941768965021887178681810499301253039335978279707627"
- "295287697256489961179958946847840431902105306618594831078534"
- "622089641993900896756734276531931450266972752637997248151974"
- "2277811246822238899767398834228515624e-4951",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-16448,
- false,
- 0x0p+0,
- 0x4p-16448,
- 0x0p+0,
- 0x4p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x3.fffffffffffcp-16448,
- 0x4p-16448,
- 0x3.fffffffffffcp-16448,
- 0x4p-16448),
- TEST ("1.8225997659412373012642029668097099081995254078467816718604"
- "902435141858443166988684047803543129136025986236736736017655"
- "509834928163110160849867540377949045027419112905889658392846"
- "126319028167798783107812829917053644701598967767636342956203"
- "999770864055077592691915230273843577112246476529298591341071"
- "313110337661777304220340396298768698441131694859514066773321"
- "059786469060001083813361460161387168195154228027648977594276"
- "496061276605855817438145692314650177569263750801566422892936"
- "732834290416745265618525969943519916542939199731612507343012"
- "297331882934352282118173551211985973294301787840335672389913"
- "821098681464088756477802684228806339233239542587316254618680"
- "197563613907079766830481997222017010585267442240109888818022"
- "189543438116245170584546472752661417773021275082355242554950"
- "776248474101880875363872607989624146320823364146896124171892"
- "610744237622308266702265704492674694505399997330424978964704"
- "335411125839490463131661420668167686151828553033363555080508"
- "484934542727634080467233927879117726432283352324546435315312"
- "937809651095964197873430398662003709663353962932921239516263"
- "008572512558260093668527782388349282015308359304941505110445"
- "043762021191469060607078792635897736408141163554429972292873"
- "575169264387977130124003958599909776720759582995017519144111"
- "001778329839793855454688442046155253818724410472281602421363"
- "580613990749181808302947976045417884436271162664776148749463"
- "202753814797191206392480969096910387729527305862739806702349"
- "088455828380471306603628636563037414688265702108098430515297"
- "645997107159687247830496686980315376091511219227376708389862"
- "310190633134517040835432587726931910775044780329777051964574"
- "763119639404235797665922677433332402402817037657141926646502"
- "612388421085254756323737273178774331073924707711575555193153"
- "421957126062196520952920611871114861423032687425262323243276"
- "848595495133802591437804984986053892365334900647137137197585"
- "161954823956838391108748154877098567190695813394392779995887"
- "642254413740232692940887236351533691174492514884514265006822"
- "752026136435469700291628942927286843274959781329315250417360"
- "438115330104516894597449604875954147108010051910197388860417"
- "003307595774863477182911525109554542883460240867674794470854"
- "883815424039187014069246137704710366577005576311674384079810"
- "437206511282792194562503036151028910065418370565117488062226"
- "073975854919243439941741016447206284543777826080409075756028"
- "194465562812076645422284670475730922346454505830553174377950"
- "824178034708147037448871898963699023373821217419560423459358"
- "846127232531421552826545954362386431279626917642725181802754"
- "271134597856231805666129524101509582941585421888561296839474"
- "232056474112935379177434928227554149402642893913492062781246"
- "372611175305462271711931011635602039137701669573065960945871"
- "579420683440097179831368317352157202215160682058878025153007"
- "184185319863451652087375936651004559837502483808090613073982"
- "264685620351993519454344577635257452328683726988824705474397"
- "398247190812883071734743260426540123481791283782928972842466"
- "595210269414219040901793935553872090377394005932597887081359"
- "481915849178541128182923272843218513093012167744690818603663"
- "862691727272565325057703378827553284852502067686026850339624"
- "401046086817036618366842240024522042069888708534827471235203"
- "998932259309110942367856287784097166420437430118381247339347"
- "418156902369282431197735078016591613063918260343498992697002"
- "033186558413655576703389208301203552157755701852051877927864"
- "696515420369217703510602759815252574799728706795849558382877"
- "392016396900560101736741462690753991602263974212137632508984"
- "264559315540891383192361601189350414311358816980975697568561"
- "515680971830107704152657284552920241862730125888825702301035"
- "564615759615882010733764341109834449576907982406265803484111"
- "303615971297609065271517286111839839646343815364461776394273"
- "571391219315553915335300622295196577640884201524657614065743"
- "729121754460652975075990012786021662416077757235487562550381"
- "116824006014440438178253273174734436163638119532295383351135"
- "543170811596051785036366846773285937845231974424475418970517"
- "659179798069972876889488877627309887323737590814875050457317"
- "809625163713227973229002908003491739085115971899606986738405"
- "752463436186745107821032315480693516006251388789902053863235"
- "071957895722121876262598833823352290042576488238120724072267"
- "480348425637199003147760378463243043407534395221882144887315"
- "875876025907739792297575795373506429192468470170038312050500"
- "917665707583420927303790875332407805094505665159755210495266"
- "485594187244922216154283213688032393939401426499517609275128"
- "062067355172333120857796045387692492375534056470145301671359"
- "016602832469675123108598588424022216759334733452626330303791"
- "660952659036162827509451468771297954737165701921676834866994"
- "084496268491510599580714458155026746676860790028899722645883"
- "679435969902046442373108472951515492761911884847211825930115"
- "654927539118088350255959445076757398298893380662248358210075"
- "297702191186519614515280395341723177201383862827129721649638"
- "274531314762377778754560119397123180107310216608157141828379"
- "259328274508467371717057031104537750450228447941619684073375"
- "630517322006118640290925241602376256334414376495602911265450"
- "165889418372161719063670619610214632774542741157366426747861"
- "054811449449004970132668146607323502760146957586465275981090"
- "328336256381187450646030492071694516054712444513961269623339"
- "705411366337817643269316717217432478812002049894979925260411"
- "553651385384826214231392012841425936827944383266227115236029"
- "717393064659821056467446870597828757433936024422511537561864"
- "619865595955628070343780472634463916608440151554502790128417"
- "277259492437005696576453717387309605129939526661181496994297"
- "244693710437436581443653555343763817246961834486181294985455"
- "884981266421533438177271809310897035958260776218253097858601"
- "160643120653927024652834025146166356877731266566437231429061"
- "099807825113272551869352908241073955695854354852545370793609"
- "838167127357752579007490955536081388103461735071174567636929"
- "060824172375010035497010614957197713919909924635906503348016"
- "450952475530978921242656498701313530533991692867619886826204"
- "706468476070943378163577235406861262755114909606255628375659"
- "196050370661430148107216310635729360112021571291096278032076"
- "401092225373270173950575377792566872113768085940991929655824"
- "050914085013970861399015141010432835406337266746706727481946"
- "196898882472095111505210339933002505227334750020285673634670"
- "738458390159933494226851499935336922036551687169140582574153"
- "726872453800858360764892975201757027862632615130256075468549"
- "502839367841926212872731925042838691319757663382746471782087"
- "828988857978192483595747889021081459460627705275735868618724"
- "958783348362295106875556443770626864591972089881215465141073"
- "516646930158996569747675806719463602045230325049794904894739"
- "988312727573320971310488326486213061839843830003145873279435"
- "454121817918269218294901387830156432148142381592864575229119"
- "479029130050663564889172093067341444164942736885872753984012"
- "865743421266470861425283889134636885790293235727017788606167"
- "560012477186697069994213912998550931078617189790771376702549"
- "055361745205232419031423044366971378594392952093464046441667"
- "117613906203494872209149396518971207279263883566606774353236"
- "255473603377861613942239543893894460581170658088042083661404"
- "937465706659424639301296621963906278930754459296017486063079"
- "582024995485338893699574289806529424673393810217577605952909"
- "491283123179789154639057105774960699934999681018155749261864"
- "012821574480758746632022143860041252142846691648490809250856"
- "327057133540568617791625295314357533564192304930155735301757"
- "457531580062662693966772497728335047637869054460240023262262"
- "260698443946964564691259441706490611176164305693669515767804"
- "836460521205954731752583848846525153811934541997962775215961"
- "180346397456122329133421016560406277159258781706172834569862"
- "946953007793254152187010227976038449980797987728559041018441"
- "590564594738308310579014597893182017151615208050090318483536"
- "106249131918576316944251537092347119867433735046169725181104"
- "507590928834713669184230634083190791725243913641206256399101"
- "550966117564795555149420011152858441084271411289366093158722"
- "254752761637144762690747726313899449121995142565661043193165"
- "353010677613760383307839362361625628371456344409245507081913"
- "518237257141164239966660785903970075181826808229440731778746"
- "830751045427285945936163931997929399708401851740705527023711"
- "492262489476846435969872480702228386506357017948329114555484"
- "164760105906717855684788039081591713778852802032849601308169"
- "832017420608399347713424218434541771868442189843417628618330"
- "607429739733739437863581804003482214082370567967330530446020"
- "897773385726872912189813323094415093143437550397556262780011"
- "208941731420098754319961419532567861629590267320403217607660"
- "774125374101195389953895035347940170148097810952083736798564"
- "420421622607993390894450932047257403433908665884124601384175"
- "012387617430467934818665777122459487877479257747635172691688"
- "471574765285820096075133353869554987216398800026453207557923"
- "535966131756358352198875705382763163680830588056974671628368"
- "719411827591592806044707764658145625683998557872894583705117"
- "936257144994734815912058252772021032081682437093280526665192"
- "728869800954748014250481042845426151143544474372887617562791"
- "409866964806319608280819816846942058817381943129762034507591"
- "367065185343216917751414811188645979508942996964383255432999"
- "246119971295726296202396921903289017490293595312645036697141"
- "581149988784499288560584613793415358537364677872496224892098"
- "940856692342358755626519304557946447004033186014602147449599"
- "351317079758304444877174136521487256811625263467410007624215"
- "856145392339552689565690577293133060124853654497575571509576"
- "408069646196646757505249296126372820539234090564691695806544"
- "715766025588258581902342311480969412221466852421842650484494"
- "063894865891424563992751226230317059592413191308470146226366"
- "458233536657973376067140793776369412191789801225320255079444"
- "592709005698858098716107025188986428347407279053266600044521"
- "079987989879536957560131070100060050673537683871138182387904"
- "590837539252425985326631955455857258818756188063697492342550"
- "045277400125480079927908846850898283905756532829762950509886"
- "991675925213188409911532242068610889478326451513981115020992"
- "630395715520350039372702741107911736947893709538471200363740"
- "669304116845653259038102180504837110789645359520309929381266"
- "271463740502507456882882255788069710715770802338317704510793"
- "279398576163709512326095306022330346997717688118726634628650"
- "675984237916551201500684504118483305560295744746257951860545"
- "390826531622290588364837980034428055971370065573420370270905"
- "592141420051502465016793525150950140243606137664910359769114"
- "512792293426708006440346732679574519594848136194781488696994"
- "267355775509666977187349644291823026624985531726865131782364"
- "428380093055155988532106121916567178604128111080322761213573"
- "781334480667563871257352254033032675246444238637990062075058"
- "819854494711379915549313390179300091783493496822950479766923"
- "983305064901026858870340863556799948310622536592472509634484"
- "910640735459644047154918467543140024764605449756679450446473"
- "048922824617117723876384637412932380635306714345354710568410"
- "140587435077620501285599837051978855056335305570615129711860"
- "309387503970812843734718712815925040263182888714533431137355"
- "255722368962836390856001176889513153529416105504464217522618"
- "741534232432067776306691118141998014985541610448993152948945"
- "865983354717289054861249734477980864059509622993770525110616"
- "313865830823478927462500895844216364365499438449134659145333"
- "799994034010282254566331595018205841080487728993632798168070"
- "476921205941768965021887178681810499301253039335978279707627"
- "295287697256489961179958946847840431902105306618594831078534"
- "622089641993900896756734276531931450266972752637997248151974"
- "2277811246822238899767398834228515625e-4951",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-16448,
- true,
- 0x4p-16448,
- 0x4p-16448,
- 0x4p-16448,
- 0x4p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- true,
- 0x4p-16448,
- 0x4p-16448,
- 0x4p-16448,
- 0x4p-16448),
- TEST ("1.8225997659412373012642029668097099081995254078467816718604"
- "902435141858443166988684047803543129136025986236736736017655"
- "509834928163110160849867540377949045027419112905889658392846"
- "126319028167798783107812829917053644701598967767636342956203"
- "999770864055077592691915230273843577112246476529298591341071"
- "313110337661777304220340396298768698441131694859514066773321"
- "059786469060001083813361460161387168195154228027648977594276"
- "496061276605855817438145692314650177569263750801566422892936"
- "732834290416745265618525969943519916542939199731612507343012"
- "297331882934352282118173551211985973294301787840335672389913"
- "821098681464088756477802684228806339233239542587316254618680"
- "197563613907079766830481997222017010585267442240109888818022"
- "189543438116245170584546472752661417773021275082355242554950"
- "776248474101880875363872607989624146320823364146896124171892"
- "610744237622308266702265704492674694505399997330424978964704"
- "335411125839490463131661420668167686151828553033363555080508"
- "484934542727634080467233927879117726432283352324546435315312"
- "937809651095964197873430398662003709663353962932921239516263"
- "008572512558260093668527782388349282015308359304941505110445"
- "043762021191469060607078792635897736408141163554429972292873"
- "575169264387977130124003958599909776720759582995017519144111"
- "001778329839793855454688442046155253818724410472281602421363"
- "580613990749181808302947976045417884436271162664776148749463"
- "202753814797191206392480969096910387729527305862739806702349"
- "088455828380471306603628636563037414688265702108098430515297"
- "645997107159687247830496686980315376091511219227376708389862"
- "310190633134517040835432587726931910775044780329777051964574"
- "763119639404235797665922677433332402402817037657141926646502"
- "612388421085254756323737273178774331073924707711575555193153"
- "421957126062196520952920611871114861423032687425262323243276"
- "848595495133802591437804984986053892365334900647137137197585"
- "161954823956838391108748154877098567190695813394392779995887"
- "642254413740232692940887236351533691174492514884514265006822"
- "752026136435469700291628942927286843274959781329315250417360"
- "438115330104516894597449604875954147108010051910197388860417"
- "003307595774863477182911525109554542883460240867674794470854"
- "883815424039187014069246137704710366577005576311674384079810"
- "437206511282792194562503036151028910065418370565117488062226"
- "073975854919243439941741016447206284543777826080409075756028"
- "194465562812076645422284670475730922346454505830553174377950"
- "824178034708147037448871898963699023373821217419560423459358"
- "846127232531421552826545954362386431279626917642725181802754"
- "271134597856231805666129524101509582941585421888561296839474"
- "232056474112935379177434928227554149402642893913492062781246"
- "372611175305462271711931011635602039137701669573065960945871"
- "579420683440097179831368317352157202215160682058878025153007"
- "184185319863451652087375936651004559837502483808090613073982"
- "264685620351993519454344577635257452328683726988824705474397"
- "398247190812883071734743260426540123481791283782928972842466"
- "595210269414219040901793935553872090377394005932597887081359"
- "481915849178541128182923272843218513093012167744690818603663"
- "862691727272565325057703378827553284852502067686026850339624"
- "401046086817036618366842240024522042069888708534827471235203"
- "998932259309110942367856287784097166420437430118381247339347"
- "418156902369282431197735078016591613063918260343498992697002"
- "033186558413655576703389208301203552157755701852051877927864"
- "696515420369217703510602759815252574799728706795849558382877"
- "392016396900560101736741462690753991602263974212137632508984"
- "264559315540891383192361601189350414311358816980975697568561"
- "515680971830107704152657284552920241862730125888825702301035"
- "564615759615882010733764341109834449576907982406265803484111"
- "303615971297609065271517286111839839646343815364461776394273"
- "571391219315553915335300622295196577640884201524657614065743"
- "729121754460652975075990012786021662416077757235487562550381"
- "116824006014440438178253273174734436163638119532295383351135"
- "543170811596051785036366846773285937845231974424475418970517"
- "659179798069972876889488877627309887323737590814875050457317"
- "809625163713227973229002908003491739085115971899606986738405"
- "752463436186745107821032315480693516006251388789902053863235"
- "071957895722121876262598833823352290042576488238120724072267"
- "480348425637199003147760378463243043407534395221882144887315"
- "875876025907739792297575795373506429192468470170038312050500"
- "917665707583420927303790875332407805094505665159755210495266"
- "485594187244922216154283213688032393939401426499517609275128"
- "062067355172333120857796045387692492375534056470145301671359"
- "016602832469675123108598588424022216759334733452626330303791"
- "660952659036162827509451468771297954737165701921676834866994"
- "084496268491510599580714458155026746676860790028899722645883"
- "679435969902046442373108472951515492761911884847211825930115"
- "654927539118088350255959445076757398298893380662248358210075"
- "297702191186519614515280395341723177201383862827129721649638"
- "274531314762377778754560119397123180107310216608157141828379"
- "259328274508467371717057031104537750450228447941619684073375"
- "630517322006118640290925241602376256334414376495602911265450"
- "165889418372161719063670619610214632774542741157366426747861"
- "054811449449004970132668146607323502760146957586465275981090"
- "328336256381187450646030492071694516054712444513961269623339"
- "705411366337817643269316717217432478812002049894979925260411"
- "553651385384826214231392012841425936827944383266227115236029"
- "717393064659821056467446870597828757433936024422511537561864"
- "619865595955628070343780472634463916608440151554502790128417"
- "277259492437005696576453717387309605129939526661181496994297"
- "244693710437436581443653555343763817246961834486181294985455"
- "884981266421533438177271809310897035958260776218253097858601"
- "160643120653927024652834025146166356877731266566437231429061"
- "099807825113272551869352908241073955695854354852545370793609"
- "838167127357752579007490955536081388103461735071174567636929"
- "060824172375010035497010614957197713919909924635906503348016"
- "450952475530978921242656498701313530533991692867619886826204"
- "706468476070943378163577235406861262755114909606255628375659"
- "196050370661430148107216310635729360112021571291096278032076"
- "401092225373270173950575377792566872113768085940991929655824"
- "050914085013970861399015141010432835406337266746706727481946"
- "196898882472095111505210339933002505227334750020285673634670"
- "738458390159933494226851499935336922036551687169140582574153"
- "726872453800858360764892975201757027862632615130256075468549"
- "502839367841926212872731925042838691319757663382746471782087"
- "828988857978192483595747889021081459460627705275735868618724"
- "958783348362295106875556443770626864591972089881215465141073"
- "516646930158996569747675806719463602045230325049794904894739"
- "988312727573320971310488326486213061839843830003145873279435"
- "454121817918269218294901387830156432148142381592864575229119"
- "479029130050663564889172093067341444164942736885872753984012"
- "865743421266470861425283889134636885790293235727017788606167"
- "560012477186697069994213912998550931078617189790771376702549"
- "055361745205232419031423044366971378594392952093464046441667"
- "117613906203494872209149396518971207279263883566606774353236"
- "255473603377861613942239543893894460581170658088042083661404"
- "937465706659424639301296621963906278930754459296017486063079"
- "582024995485338893699574289806529424673393810217577605952909"
- "491283123179789154639057105774960699934999681018155749261864"
- "012821574480758746632022143860041252142846691648490809250856"
- "327057133540568617791625295314357533564192304930155735301757"
- "457531580062662693966772497728335047637869054460240023262262"
- "260698443946964564691259441706490611176164305693669515767804"
- "836460521205954731752583848846525153811934541997962775215961"
- "180346397456122329133421016560406277159258781706172834569862"
- "946953007793254152187010227976038449980797987728559041018441"
- "590564594738308310579014597893182017151615208050090318483536"
- "106249131918576316944251537092347119867433735046169725181104"
- "507590928834713669184230634083190791725243913641206256399101"
- "550966117564795555149420011152858441084271411289366093158722"
- "254752761637144762690747726313899449121995142565661043193165"
- "353010677613760383307839362361625628371456344409245507081913"
- "518237257141164239966660785903970075181826808229440731778746"
- "830751045427285945936163931997929399708401851740705527023711"
- "492262489476846435969872480702228386506357017948329114555484"
- "164760105906717855684788039081591713778852802032849601308169"
- "832017420608399347713424218434541771868442189843417628618330"
- "607429739733739437863581804003482214082370567967330530446020"
- "897773385726872912189813323094415093143437550397556262780011"
- "208941731420098754319961419532567861629590267320403217607660"
- "774125374101195389953895035347940170148097810952083736798564"
- "420421622607993390894450932047257403433908665884124601384175"
- "012387617430467934818665777122459487877479257747635172691688"
- "471574765285820096075133353869554987216398800026453207557923"
- "535966131756358352198875705382763163680830588056974671628368"
- "719411827591592806044707764658145625683998557872894583705117"
- "936257144994734815912058252772021032081682437093280526665192"
- "728869800954748014250481042845426151143544474372887617562791"
- "409866964806319608280819816846942058817381943129762034507591"
- "367065185343216917751414811188645979508942996964383255432999"
- "246119971295726296202396921903289017490293595312645036697141"
- "581149988784499288560584613793415358537364677872496224892098"
- "940856692342358755626519304557946447004033186014602147449599"
- "351317079758304444877174136521487256811625263467410007624215"
- "856145392339552689565690577293133060124853654497575571509576"
- "408069646196646757505249296126372820539234090564691695806544"
- "715766025588258581902342311480969412221466852421842650484494"
- "063894865891424563992751226230317059592413191308470146226366"
- "458233536657973376067140793776369412191789801225320255079444"
- "592709005698858098716107025188986428347407279053266600044521"
- "079987989879536957560131070100060050673537683871138182387904"
- "590837539252425985326631955455857258818756188063697492342550"
- "045277400125480079927908846850898283905756532829762950509886"
- "991675925213188409911532242068610889478326451513981115020992"
- "630395715520350039372702741107911736947893709538471200363740"
- "669304116845653259038102180504837110789645359520309929381266"
- "271463740502507456882882255788069710715770802338317704510793"
- "279398576163709512326095306022330346997717688118726634628650"
- "675984237916551201500684504118483305560295744746257951860545"
- "390826531622290588364837980034428055971370065573420370270905"
- "592141420051502465016793525150950140243606137664910359769114"
- "512792293426708006440346732679574519594848136194781488696994"
- "267355775509666977187349644291823026624985531726865131782364"
- "428380093055155988532106121916567178604128111080322761213573"
- "781334480667563871257352254033032675246444238637990062075058"
- "819854494711379915549313390179300091783493496822950479766923"
- "983305064901026858870340863556799948310622536592472509634484"
- "910640735459644047154918467543140024764605449756679450446473"
- "048922824617117723876384637412932380635306714345354710568410"
- "140587435077620501285599837051978855056335305570615129711860"
- "309387503970812843734718712815925040263182888714533431137355"
- "255722368962836390856001176889513153529416105504464217522618"
- "741534232432067776306691118141998014985541610448993152948945"
- "865983354717289054861249734477980864059509622993770525110616"
- "313865830823478927462500895844216364365499438449134659145333"
- "799994034010282254566331595018205841080487728993632798168070"
- "476921205941768965021887178681810499301253039335978279707627"
- "295287697256489961179958946847840431902105306618594831078534"
- "622089641993900896756734276531931450266972752637997248151974"
- "2277811246822238899767398834228515626e-4951",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x8p-16448,
- 0x0p+0,
- 0x8p-16448,
- false,
- 0x4p-16448,
- 0x4p-16448,
- 0x4p-16448,
- 0x8p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x4p-16448,
- 0x4p-16448,
- 0x4p-16448,
- 0x4.000000000004p-16448),
- TEST ("-1.822599765941237301264202966809709908199525407846781671860"
- "490243514185844316698868404780354312913602598623673673601765"
- "550983492816311016084986754037794904502741911290588965839284"
- "612631902816779878310781282991705364470159896776763634295620"
- "399977086405507759269191523027384357711224647652929859134107"
- "131311033766177730422034039629876869844113169485951406677332"
- "105978646906000108381336146016138716819515422802764897759427"
- "649606127660585581743814569231465017756926375080156642289293"
- "673283429041674526561852596994351991654293919973161250734301"
- "229733188293435228211817355121198597329430178784033567238991"
- "382109868146408875647780268422880633923323954258731625461868"
- "019756361390707976683048199722201701058526744224010988881802"
- "218954343811624517058454647275266141777302127508235524255495"
- "077624847410188087536387260798962414632082336414689612417189"
- "261074423762230826670226570449267469450539999733042497896470"
- "433541112583949046313166142066816768615182855303336355508050"
- "848493454272763408046723392787911772643228335232454643531531"
- "293780965109596419787343039866200370966335396293292123951626"
- "300857251255826009366852778238834928201530835930494150511044"
- "504376202119146906060707879263589773640814116355442997229287"
- "357516926438797713012400395859990977672075958299501751914411"
- "100177832983979385545468844204615525381872441047228160242136"
- "358061399074918180830294797604541788443627116266477614874946"
- "320275381479719120639248096909691038772952730586273980670234"
- "908845582838047130660362863656303741468826570210809843051529"
- "764599710715968724783049668698031537609151121922737670838986"
- "231019063313451704083543258772693191077504478032977705196457"
- "476311963940423579766592267743333240240281703765714192664650"
- "261238842108525475632373727317877433107392470771157555519315"
- "342195712606219652095292061187111486142303268742526232324327"
- "684859549513380259143780498498605389236533490064713713719758"
- "516195482395683839110874815487709856719069581339439277999588"
- "764225441374023269294088723635153369117449251488451426500682"
- "275202613643546970029162894292728684327495978132931525041736"
- "043811533010451689459744960487595414710801005191019738886041"
- "700330759577486347718291152510955454288346024086767479447085"
- "488381542403918701406924613770471036657700557631167438407981"
- "043720651128279219456250303615102891006541837056511748806222"
- "607397585491924343994174101644720628454377782608040907575602"
- "819446556281207664542228467047573092234645450583055317437795"
- "082417803470814703744887189896369902337382121741956042345935"
- "884612723253142155282654595436238643127962691764272518180275"
- "427113459785623180566612952410150958294158542188856129683947"
- "423205647411293537917743492822755414940264289391349206278124"
- "637261117530546227171193101163560203913770166957306596094587"
- "157942068344009717983136831735215720221516068205887802515300"
- "718418531986345165208737593665100455983750248380809061307398"
- "226468562035199351945434457763525745232868372698882470547439"
- "739824719081288307173474326042654012348179128378292897284246"
- "659521026941421904090179393555387209037739400593259788708135"
- "948191584917854112818292327284321851309301216774469081860366"
- "386269172727256532505770337882755328485250206768602685033962"
- "440104608681703661836684224002452204206988870853482747123520"
- "399893225930911094236785628778409716642043743011838124733934"
- "741815690236928243119773507801659161306391826034349899269700"
- "203318655841365557670338920830120355215775570185205187792786"
- "469651542036921770351060275981525257479972870679584955838287"
- "739201639690056010173674146269075399160226397421213763250898"
- "426455931554089138319236160118935041431135881698097569756856"
- "151568097183010770415265728455292024186273012588882570230103"
- "556461575961588201073376434110983444957690798240626580348411"
- "130361597129760906527151728611183983964634381536446177639427"
- "357139121931555391533530062229519657764088420152465761406574"
- "372912175446065297507599001278602166241607775723548756255038"
- "111682400601444043817825327317473443616363811953229538335113"
- "554317081159605178503636684677328593784523197442447541897051"
- "765917979806997287688948887762730988732373759081487505045731"
- "780962516371322797322900290800349173908511597189960698673840"
- "575246343618674510782103231548069351600625138878990205386323"
- "507195789572212187626259883382335229004257648823812072407226"
- "748034842563719900314776037846324304340753439522188214488731"
- "587587602590773979229757579537350642919246847017003831205050"
- "091766570758342092730379087533240780509450566515975521049526"
- "648559418724492221615428321368803239393940142649951760927512"
- "806206735517233312085779604538769249237553405647014530167135"
- "901660283246967512310859858842402221675933473345262633030379"
- "166095265903616282750945146877129795473716570192167683486699"
- "408449626849151059958071445815502674667686079002889972264588"
- "367943596990204644237310847295151549276191188484721182593011"
- "565492753911808835025595944507675739829889338066224835821007"
- "529770219118651961451528039534172317720138386282712972164963"
- "827453131476237777875456011939712318010731021660815714182837"
- "925932827450846737171705703110453775045022844794161968407337"
- "563051732200611864029092524160237625633441437649560291126545"
- "016588941837216171906367061961021463277454274115736642674786"
- "105481144944900497013266814660732350276014695758646527598109"
- "032833625638118745064603049207169451605471244451396126962333"
- "970541136633781764326931671721743247881200204989497992526041"
- "155365138538482621423139201284142593682794438326622711523602"
- "971739306465982105646744687059782875743393602442251153756186"
- "461986559595562807034378047263446391660844015155450279012841"
- "727725949243700569657645371738730960512993952666118149699429"
- "724469371043743658144365355534376381724696183448618129498545"
- "588498126642153343817727180931089703595826077621825309785860"
- "116064312065392702465283402514616635687773126656643723142906"
- "109980782511327255186935290824107395569585435485254537079360"
- "983816712735775257900749095553608138810346173507117456763692"
- "906082417237501003549701061495719771391990992463590650334801"
- "645095247553097892124265649870131353053399169286761988682620"
- "470646847607094337816357723540686126275511490960625562837565"
- "919605037066143014810721631063572936011202157129109627803207"
- "640109222537327017395057537779256687211376808594099192965582"
- "405091408501397086139901514101043283540633726674670672748194"
- "619689888247209511150521033993300250522733475002028567363467"
- "073845839015993349422685149993533692203655168716914058257415"
- "372687245380085836076489297520175702786263261513025607546854"
- "950283936784192621287273192504283869131975766338274647178208"
- "782898885797819248359574788902108145946062770527573586861872"
- "495878334836229510687555644377062686459197208988121546514107"
- "351664693015899656974767580671946360204523032504979490489473"
- "998831272757332097131048832648621306183984383000314587327943"
- "545412181791826921829490138783015643214814238159286457522911"
- "947902913005066356488917209306734144416494273688587275398401"
- "286574342126647086142528388913463688579029323572701778860616"
- "756001247718669706999421391299855093107861718979077137670254"
- "905536174520523241903142304436697137859439295209346404644166"
- "711761390620349487220914939651897120727926388356660677435323"
- "625547360337786161394223954389389446058117065808804208366140"
- "493746570665942463930129662196390627893075445929601748606307"
- "958202499548533889369957428980652942467339381021757760595290"
- "949128312317978915463905710577496069993499968101815574926186"
- "401282157448075874663202214386004125214284669164849080925085"
- "632705713354056861779162529531435753356419230493015573530175"
- "745753158006266269396677249772833504763786905446024002326226"
- "226069844394696456469125944170649061117616430569366951576780"
- "483646052120595473175258384884652515381193454199796277521596"
- "118034639745612232913342101656040627715925878170617283456986"
- "294695300779325415218701022797603844998079798772855904101844"
- "159056459473830831057901459789318201715161520805009031848353"
- "610624913191857631694425153709234711986743373504616972518110"
- "450759092883471366918423063408319079172524391364120625639910"
- "155096611756479555514942001115285844108427141128936609315872"
- "225475276163714476269074772631389944912199514256566104319316"
- "535301067761376038330783936236162562837145634440924550708191"
- "351823725714116423996666078590397007518182680822944073177874"
- "683075104542728594593616393199792939970840185174070552702371"
- "149226248947684643596987248070222838650635701794832911455548"
- "416476010590671785568478803908159171377885280203284960130816"
- "983201742060839934771342421843454177186844218984341762861833"
- "060742973973373943786358180400348221408237056796733053044602"
- "089777338572687291218981332309441509314343755039755626278001"
- "120894173142009875431996141953256786162959026732040321760766"
- "077412537410119538995389503534794017014809781095208373679856"
- "442042162260799339089445093204725740343390866588412460138417"
- "501238761743046793481866577712245948787747925774763517269168"
- "847157476528582009607513335386955498721639880002645320755792"
- "353596613175635835219887570538276316368083058805697467162836"
- "871941182759159280604470776465814562568399855787289458370511"
- "793625714499473481591205825277202103208168243709328052666519"
- "272886980095474801425048104284542615114354447437288761756279"
- "140986696480631960828081981684694205881738194312976203450759"
- "136706518534321691775141481118864597950894299696438325543299"
- "924611997129572629620239692190328901749029359531264503669714"
- "158114998878449928856058461379341535853736467787249622489209"
- "894085669234235875562651930455794644700403318601460214744959"
- "935131707975830444487717413652148725681162526346741000762421"
- "585614539233955268956569057729313306012485365449757557150957"
- "640806964619664675750524929612637282053923409056469169580654"
- "471576602558825858190234231148096941222146685242184265048449"
- "406389486589142456399275122623031705959241319130847014622636"
- "645823353665797337606714079377636941219178980122532025507944"
- "459270900569885809871610702518898642834740727905326660004452"
- "107998798987953695756013107010006005067353768387113818238790"
- "459083753925242598532663195545585725881875618806369749234255"
- "004527740012548007992790884685089828390575653282976295050988"
- "699167592521318840991153224206861088947832645151398111502099"
- "263039571552035003937270274110791173694789370953847120036374"
- "066930411684565325903810218050483711078964535952030992938126"
- "627146374050250745688288225578806971071577080233831770451079"
- "327939857616370951232609530602233034699771768811872663462865"
- "067598423791655120150068450411848330556029574474625795186054"
- "539082653162229058836483798003442805597137006557342037027090"
- "559214142005150246501679352515095014024360613766491035976911"
- "451279229342670800644034673267957451959484813619478148869699"
- "426735577550966697718734964429182302662498553172686513178236"
- "442838009305515598853210612191656717860412811108032276121357"
- "378133448066756387125735225403303267524644423863799006207505"
- "881985449471137991554931339017930009178349349682295047976692"
- "398330506490102685887034086355679994831062253659247250963448"
- "491064073545964404715491846754314002476460544975667945044647"
- "304892282461711772387638463741293238063530671434535471056841"
- "014058743507762050128559983705197885505633530557061512971186"
- "030938750397081284373471871281592504026318288871453343113735"
- "525572236896283639085600117688951315352941610550446421752261"
- "874153423243206777630669111814199801498554161044899315294894"
- "586598335471728905486124973447798086405950962299377052511061"
- "631386583082347892746250089584421636436549943844913465914533"
- "379999403401028225456633159501820584108048772899363279816807"
- "047692120594176896502188717868181049930125303933597827970762"
- "729528769725648996117995894684784043190210530661859483107853"
- "462208964199390089675673427653193145026697275263799724815197"
- "42277811246822238899767398834228515624e-4951",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16448,
- -0x4p-16448,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16448,
- -0x4p-16448,
- -0x3.fffffffffffcp-16448,
- -0x3.fffffffffffcp-16448),
- TEST ("-1.822599765941237301264202966809709908199525407846781671860"
- "490243514185844316698868404780354312913602598623673673601765"
- "550983492816311016084986754037794904502741911290588965839284"
- "612631902816779878310781282991705364470159896776763634295620"
- "399977086405507759269191523027384357711224647652929859134107"
- "131311033766177730422034039629876869844113169485951406677332"
- "105978646906000108381336146016138716819515422802764897759427"
- "649606127660585581743814569231465017756926375080156642289293"
- "673283429041674526561852596994351991654293919973161250734301"
- "229733188293435228211817355121198597329430178784033567238991"
- "382109868146408875647780268422880633923323954258731625461868"
- "019756361390707976683048199722201701058526744224010988881802"
- "218954343811624517058454647275266141777302127508235524255495"
- "077624847410188087536387260798962414632082336414689612417189"
- "261074423762230826670226570449267469450539999733042497896470"
- "433541112583949046313166142066816768615182855303336355508050"
- "848493454272763408046723392787911772643228335232454643531531"
- "293780965109596419787343039866200370966335396293292123951626"
- "300857251255826009366852778238834928201530835930494150511044"
- "504376202119146906060707879263589773640814116355442997229287"
- "357516926438797713012400395859990977672075958299501751914411"
- "100177832983979385545468844204615525381872441047228160242136"
- "358061399074918180830294797604541788443627116266477614874946"
- "320275381479719120639248096909691038772952730586273980670234"
- "908845582838047130660362863656303741468826570210809843051529"
- "764599710715968724783049668698031537609151121922737670838986"
- "231019063313451704083543258772693191077504478032977705196457"
- "476311963940423579766592267743333240240281703765714192664650"
- "261238842108525475632373727317877433107392470771157555519315"
- "342195712606219652095292061187111486142303268742526232324327"
- "684859549513380259143780498498605389236533490064713713719758"
- "516195482395683839110874815487709856719069581339439277999588"
- "764225441374023269294088723635153369117449251488451426500682"
- "275202613643546970029162894292728684327495978132931525041736"
- "043811533010451689459744960487595414710801005191019738886041"
- "700330759577486347718291152510955454288346024086767479447085"
- "488381542403918701406924613770471036657700557631167438407981"
- "043720651128279219456250303615102891006541837056511748806222"
- "607397585491924343994174101644720628454377782608040907575602"
- "819446556281207664542228467047573092234645450583055317437795"
- "082417803470814703744887189896369902337382121741956042345935"
- "884612723253142155282654595436238643127962691764272518180275"
- "427113459785623180566612952410150958294158542188856129683947"
- "423205647411293537917743492822755414940264289391349206278124"
- "637261117530546227171193101163560203913770166957306596094587"
- "157942068344009717983136831735215720221516068205887802515300"
- "718418531986345165208737593665100455983750248380809061307398"
- "226468562035199351945434457763525745232868372698882470547439"
- "739824719081288307173474326042654012348179128378292897284246"
- "659521026941421904090179393555387209037739400593259788708135"
- "948191584917854112818292327284321851309301216774469081860366"
- "386269172727256532505770337882755328485250206768602685033962"
- "440104608681703661836684224002452204206988870853482747123520"
- "399893225930911094236785628778409716642043743011838124733934"
- "741815690236928243119773507801659161306391826034349899269700"
- "203318655841365557670338920830120355215775570185205187792786"
- "469651542036921770351060275981525257479972870679584955838287"
- "739201639690056010173674146269075399160226397421213763250898"
- "426455931554089138319236160118935041431135881698097569756856"
- "151568097183010770415265728455292024186273012588882570230103"
- "556461575961588201073376434110983444957690798240626580348411"
- "130361597129760906527151728611183983964634381536446177639427"
- "357139121931555391533530062229519657764088420152465761406574"
- "372912175446065297507599001278602166241607775723548756255038"
- "111682400601444043817825327317473443616363811953229538335113"
- "554317081159605178503636684677328593784523197442447541897051"
- "765917979806997287688948887762730988732373759081487505045731"
- "780962516371322797322900290800349173908511597189960698673840"
- "575246343618674510782103231548069351600625138878990205386323"
- "507195789572212187626259883382335229004257648823812072407226"
- "748034842563719900314776037846324304340753439522188214488731"
- "587587602590773979229757579537350642919246847017003831205050"
- "091766570758342092730379087533240780509450566515975521049526"
- "648559418724492221615428321368803239393940142649951760927512"
- "806206735517233312085779604538769249237553405647014530167135"
- "901660283246967512310859858842402221675933473345262633030379"
- "166095265903616282750945146877129795473716570192167683486699"
- "408449626849151059958071445815502674667686079002889972264588"
- "367943596990204644237310847295151549276191188484721182593011"
- "565492753911808835025595944507675739829889338066224835821007"
- "529770219118651961451528039534172317720138386282712972164963"
- "827453131476237777875456011939712318010731021660815714182837"
- "925932827450846737171705703110453775045022844794161968407337"
- "563051732200611864029092524160237625633441437649560291126545"
- "016588941837216171906367061961021463277454274115736642674786"
- "105481144944900497013266814660732350276014695758646527598109"
- "032833625638118745064603049207169451605471244451396126962333"
- "970541136633781764326931671721743247881200204989497992526041"
- "155365138538482621423139201284142593682794438326622711523602"
- "971739306465982105646744687059782875743393602442251153756186"
- "461986559595562807034378047263446391660844015155450279012841"
- "727725949243700569657645371738730960512993952666118149699429"
- "724469371043743658144365355534376381724696183448618129498545"
- "588498126642153343817727180931089703595826077621825309785860"
- "116064312065392702465283402514616635687773126656643723142906"
- "109980782511327255186935290824107395569585435485254537079360"
- "983816712735775257900749095553608138810346173507117456763692"
- "906082417237501003549701061495719771391990992463590650334801"
- "645095247553097892124265649870131353053399169286761988682620"
- "470646847607094337816357723540686126275511490960625562837565"
- "919605037066143014810721631063572936011202157129109627803207"
- "640109222537327017395057537779256687211376808594099192965582"
- "405091408501397086139901514101043283540633726674670672748194"
- "619689888247209511150521033993300250522733475002028567363467"
- "073845839015993349422685149993533692203655168716914058257415"
- "372687245380085836076489297520175702786263261513025607546854"
- "950283936784192621287273192504283869131975766338274647178208"
- "782898885797819248359574788902108145946062770527573586861872"
- "495878334836229510687555644377062686459197208988121546514107"
- "351664693015899656974767580671946360204523032504979490489473"
- "998831272757332097131048832648621306183984383000314587327943"
- "545412181791826921829490138783015643214814238159286457522911"
- "947902913005066356488917209306734144416494273688587275398401"
- "286574342126647086142528388913463688579029323572701778860616"
- "756001247718669706999421391299855093107861718979077137670254"
- "905536174520523241903142304436697137859439295209346404644166"
- "711761390620349487220914939651897120727926388356660677435323"
- "625547360337786161394223954389389446058117065808804208366140"
- "493746570665942463930129662196390627893075445929601748606307"
- "958202499548533889369957428980652942467339381021757760595290"
- "949128312317978915463905710577496069993499968101815574926186"
- "401282157448075874663202214386004125214284669164849080925085"
- "632705713354056861779162529531435753356419230493015573530175"
- "745753158006266269396677249772833504763786905446024002326226"
- "226069844394696456469125944170649061117616430569366951576780"
- "483646052120595473175258384884652515381193454199796277521596"
- "118034639745612232913342101656040627715925878170617283456986"
- "294695300779325415218701022797603844998079798772855904101844"
- "159056459473830831057901459789318201715161520805009031848353"
- "610624913191857631694425153709234711986743373504616972518110"
- "450759092883471366918423063408319079172524391364120625639910"
- "155096611756479555514942001115285844108427141128936609315872"
- "225475276163714476269074772631389944912199514256566104319316"
- "535301067761376038330783936236162562837145634440924550708191"
- "351823725714116423996666078590397007518182680822944073177874"
- "683075104542728594593616393199792939970840185174070552702371"
- "149226248947684643596987248070222838650635701794832911455548"
- "416476010590671785568478803908159171377885280203284960130816"
- "983201742060839934771342421843454177186844218984341762861833"
- "060742973973373943786358180400348221408237056796733053044602"
- "089777338572687291218981332309441509314343755039755626278001"
- "120894173142009875431996141953256786162959026732040321760766"
- "077412537410119538995389503534794017014809781095208373679856"
- "442042162260799339089445093204725740343390866588412460138417"
- "501238761743046793481866577712245948787747925774763517269168"
- "847157476528582009607513335386955498721639880002645320755792"
- "353596613175635835219887570538276316368083058805697467162836"
- "871941182759159280604470776465814562568399855787289458370511"
- "793625714499473481591205825277202103208168243709328052666519"
- "272886980095474801425048104284542615114354447437288761756279"
- "140986696480631960828081981684694205881738194312976203450759"
- "136706518534321691775141481118864597950894299696438325543299"
- "924611997129572629620239692190328901749029359531264503669714"
- "158114998878449928856058461379341535853736467787249622489209"
- "894085669234235875562651930455794644700403318601460214744959"
- "935131707975830444487717413652148725681162526346741000762421"
- "585614539233955268956569057729313306012485365449757557150957"
- "640806964619664675750524929612637282053923409056469169580654"
- "471576602558825858190234231148096941222146685242184265048449"
- "406389486589142456399275122623031705959241319130847014622636"
- "645823353665797337606714079377636941219178980122532025507944"
- "459270900569885809871610702518898642834740727905326660004452"
- "107998798987953695756013107010006005067353768387113818238790"
- "459083753925242598532663195545585725881875618806369749234255"
- "004527740012548007992790884685089828390575653282976295050988"
- "699167592521318840991153224206861088947832645151398111502099"
- "263039571552035003937270274110791173694789370953847120036374"
- "066930411684565325903810218050483711078964535952030992938126"
- "627146374050250745688288225578806971071577080233831770451079"
- "327939857616370951232609530602233034699771768811872663462865"
- "067598423791655120150068450411848330556029574474625795186054"
- "539082653162229058836483798003442805597137006557342037027090"
- "559214142005150246501679352515095014024360613766491035976911"
- "451279229342670800644034673267957451959484813619478148869699"
- "426735577550966697718734964429182302662498553172686513178236"
- "442838009305515598853210612191656717860412811108032276121357"
- "378133448066756387125735225403303267524644423863799006207505"
- "881985449471137991554931339017930009178349349682295047976692"
- "398330506490102685887034086355679994831062253659247250963448"
- "491064073545964404715491846754314002476460544975667945044647"
- "304892282461711772387638463741293238063530671434535471056841"
- "014058743507762050128559983705197885505633530557061512971186"
- "030938750397081284373471871281592504026318288871453343113735"
- "525572236896283639085600117688951315352941610550446421752261"
- "874153423243206777630669111814199801498554161044899315294894"
- "586598335471728905486124973447798086405950962299377052511061"
- "631386583082347892746250089584421636436549943844913465914533"
- "379999403401028225456633159501820584108048772899363279816807"
- "047692120594176896502188717868181049930125303933597827970762"
- "729528769725648996117995894684784043190210530661859483107853"
- "462208964199390089675673427653193145026697275263799724815197"
- "42277811246822238899767398834228515625e-4951",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x4p-16448,
- -0x4p-16448,
- -0x4p-16448,
- -0x4p-16448,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x4p-16448,
- -0x4p-16448,
- -0x4p-16448,
- -0x4p-16448),
- TEST ("-1.822599765941237301264202966809709908199525407846781671860"
- "490243514185844316698868404780354312913602598623673673601765"
- "550983492816311016084986754037794904502741911290588965839284"
- "612631902816779878310781282991705364470159896776763634295620"
- "399977086405507759269191523027384357711224647652929859134107"
- "131311033766177730422034039629876869844113169485951406677332"
- "105978646906000108381336146016138716819515422802764897759427"
- "649606127660585581743814569231465017756926375080156642289293"
- "673283429041674526561852596994351991654293919973161250734301"
- "229733188293435228211817355121198597329430178784033567238991"
- "382109868146408875647780268422880633923323954258731625461868"
- "019756361390707976683048199722201701058526744224010988881802"
- "218954343811624517058454647275266141777302127508235524255495"
- "077624847410188087536387260798962414632082336414689612417189"
- "261074423762230826670226570449267469450539999733042497896470"
- "433541112583949046313166142066816768615182855303336355508050"
- "848493454272763408046723392787911772643228335232454643531531"
- "293780965109596419787343039866200370966335396293292123951626"
- "300857251255826009366852778238834928201530835930494150511044"
- "504376202119146906060707879263589773640814116355442997229287"
- "357516926438797713012400395859990977672075958299501751914411"
- "100177832983979385545468844204615525381872441047228160242136"
- "358061399074918180830294797604541788443627116266477614874946"
- "320275381479719120639248096909691038772952730586273980670234"
- "908845582838047130660362863656303741468826570210809843051529"
- "764599710715968724783049668698031537609151121922737670838986"
- "231019063313451704083543258772693191077504478032977705196457"
- "476311963940423579766592267743333240240281703765714192664650"
- "261238842108525475632373727317877433107392470771157555519315"
- "342195712606219652095292061187111486142303268742526232324327"
- "684859549513380259143780498498605389236533490064713713719758"
- "516195482395683839110874815487709856719069581339439277999588"
- "764225441374023269294088723635153369117449251488451426500682"
- "275202613643546970029162894292728684327495978132931525041736"
- "043811533010451689459744960487595414710801005191019738886041"
- "700330759577486347718291152510955454288346024086767479447085"
- "488381542403918701406924613770471036657700557631167438407981"
- "043720651128279219456250303615102891006541837056511748806222"
- "607397585491924343994174101644720628454377782608040907575602"
- "819446556281207664542228467047573092234645450583055317437795"
- "082417803470814703744887189896369902337382121741956042345935"
- "884612723253142155282654595436238643127962691764272518180275"
- "427113459785623180566612952410150958294158542188856129683947"
- "423205647411293537917743492822755414940264289391349206278124"
- "637261117530546227171193101163560203913770166957306596094587"
- "157942068344009717983136831735215720221516068205887802515300"
- "718418531986345165208737593665100455983750248380809061307398"
- "226468562035199351945434457763525745232868372698882470547439"
- "739824719081288307173474326042654012348179128378292897284246"
- "659521026941421904090179393555387209037739400593259788708135"
- "948191584917854112818292327284321851309301216774469081860366"
- "386269172727256532505770337882755328485250206768602685033962"
- "440104608681703661836684224002452204206988870853482747123520"
- "399893225930911094236785628778409716642043743011838124733934"
- "741815690236928243119773507801659161306391826034349899269700"
- "203318655841365557670338920830120355215775570185205187792786"
- "469651542036921770351060275981525257479972870679584955838287"
- "739201639690056010173674146269075399160226397421213763250898"
- "426455931554089138319236160118935041431135881698097569756856"
- "151568097183010770415265728455292024186273012588882570230103"
- "556461575961588201073376434110983444957690798240626580348411"
- "130361597129760906527151728611183983964634381536446177639427"
- "357139121931555391533530062229519657764088420152465761406574"
- "372912175446065297507599001278602166241607775723548756255038"
- "111682400601444043817825327317473443616363811953229538335113"
- "554317081159605178503636684677328593784523197442447541897051"
- "765917979806997287688948887762730988732373759081487505045731"
- "780962516371322797322900290800349173908511597189960698673840"
- "575246343618674510782103231548069351600625138878990205386323"
- "507195789572212187626259883382335229004257648823812072407226"
- "748034842563719900314776037846324304340753439522188214488731"
- "587587602590773979229757579537350642919246847017003831205050"
- "091766570758342092730379087533240780509450566515975521049526"
- "648559418724492221615428321368803239393940142649951760927512"
- "806206735517233312085779604538769249237553405647014530167135"
- "901660283246967512310859858842402221675933473345262633030379"
- "166095265903616282750945146877129795473716570192167683486699"
- "408449626849151059958071445815502674667686079002889972264588"
- "367943596990204644237310847295151549276191188484721182593011"
- "565492753911808835025595944507675739829889338066224835821007"
- "529770219118651961451528039534172317720138386282712972164963"
- "827453131476237777875456011939712318010731021660815714182837"
- "925932827450846737171705703110453775045022844794161968407337"
- "563051732200611864029092524160237625633441437649560291126545"
- "016588941837216171906367061961021463277454274115736642674786"
- "105481144944900497013266814660732350276014695758646527598109"
- "032833625638118745064603049207169451605471244451396126962333"
- "970541136633781764326931671721743247881200204989497992526041"
- "155365138538482621423139201284142593682794438326622711523602"
- "971739306465982105646744687059782875743393602442251153756186"
- "461986559595562807034378047263446391660844015155450279012841"
- "727725949243700569657645371738730960512993952666118149699429"
- "724469371043743658144365355534376381724696183448618129498545"
- "588498126642153343817727180931089703595826077621825309785860"
- "116064312065392702465283402514616635687773126656643723142906"
- "109980782511327255186935290824107395569585435485254537079360"
- "983816712735775257900749095553608138810346173507117456763692"
- "906082417237501003549701061495719771391990992463590650334801"
- "645095247553097892124265649870131353053399169286761988682620"
- "470646847607094337816357723540686126275511490960625562837565"
- "919605037066143014810721631063572936011202157129109627803207"
- "640109222537327017395057537779256687211376808594099192965582"
- "405091408501397086139901514101043283540633726674670672748194"
- "619689888247209511150521033993300250522733475002028567363467"
- "073845839015993349422685149993533692203655168716914058257415"
- "372687245380085836076489297520175702786263261513025607546854"
- "950283936784192621287273192504283869131975766338274647178208"
- "782898885797819248359574788902108145946062770527573586861872"
- "495878334836229510687555644377062686459197208988121546514107"
- "351664693015899656974767580671946360204523032504979490489473"
- "998831272757332097131048832648621306183984383000314587327943"
- "545412181791826921829490138783015643214814238159286457522911"
- "947902913005066356488917209306734144416494273688587275398401"
- "286574342126647086142528388913463688579029323572701778860616"
- "756001247718669706999421391299855093107861718979077137670254"
- "905536174520523241903142304436697137859439295209346404644166"
- "711761390620349487220914939651897120727926388356660677435323"
- "625547360337786161394223954389389446058117065808804208366140"
- "493746570665942463930129662196390627893075445929601748606307"
- "958202499548533889369957428980652942467339381021757760595290"
- "949128312317978915463905710577496069993499968101815574926186"
- "401282157448075874663202214386004125214284669164849080925085"
- "632705713354056861779162529531435753356419230493015573530175"
- "745753158006266269396677249772833504763786905446024002326226"
- "226069844394696456469125944170649061117616430569366951576780"
- "483646052120595473175258384884652515381193454199796277521596"
- "118034639745612232913342101656040627715925878170617283456986"
- "294695300779325415218701022797603844998079798772855904101844"
- "159056459473830831057901459789318201715161520805009031848353"
- "610624913191857631694425153709234711986743373504616972518110"
- "450759092883471366918423063408319079172524391364120625639910"
- "155096611756479555514942001115285844108427141128936609315872"
- "225475276163714476269074772631389944912199514256566104319316"
- "535301067761376038330783936236162562837145634440924550708191"
- "351823725714116423996666078590397007518182680822944073177874"
- "683075104542728594593616393199792939970840185174070552702371"
- "149226248947684643596987248070222838650635701794832911455548"
- "416476010590671785568478803908159171377885280203284960130816"
- "983201742060839934771342421843454177186844218984341762861833"
- "060742973973373943786358180400348221408237056796733053044602"
- "089777338572687291218981332309441509314343755039755626278001"
- "120894173142009875431996141953256786162959026732040321760766"
- "077412537410119538995389503534794017014809781095208373679856"
- "442042162260799339089445093204725740343390866588412460138417"
- "501238761743046793481866577712245948787747925774763517269168"
- "847157476528582009607513335386955498721639880002645320755792"
- "353596613175635835219887570538276316368083058805697467162836"
- "871941182759159280604470776465814562568399855787289458370511"
- "793625714499473481591205825277202103208168243709328052666519"
- "272886980095474801425048104284542615114354447437288761756279"
- "140986696480631960828081981684694205881738194312976203450759"
- "136706518534321691775141481118864597950894299696438325543299"
- "924611997129572629620239692190328901749029359531264503669714"
- "158114998878449928856058461379341535853736467787249622489209"
- "894085669234235875562651930455794644700403318601460214744959"
- "935131707975830444487717413652148725681162526346741000762421"
- "585614539233955268956569057729313306012485365449757557150957"
- "640806964619664675750524929612637282053923409056469169580654"
- "471576602558825858190234231148096941222146685242184265048449"
- "406389486589142456399275122623031705959241319130847014622636"
- "645823353665797337606714079377636941219178980122532025507944"
- "459270900569885809871610702518898642834740727905326660004452"
- "107998798987953695756013107010006005067353768387113818238790"
- "459083753925242598532663195545585725881875618806369749234255"
- "004527740012548007992790884685089828390575653282976295050988"
- "699167592521318840991153224206861088947832645151398111502099"
- "263039571552035003937270274110791173694789370953847120036374"
- "066930411684565325903810218050483711078964535952030992938126"
- "627146374050250745688288225578806971071577080233831770451079"
- "327939857616370951232609530602233034699771768811872663462865"
- "067598423791655120150068450411848330556029574474625795186054"
- "539082653162229058836483798003442805597137006557342037027090"
- "559214142005150246501679352515095014024360613766491035976911"
- "451279229342670800644034673267957451959484813619478148869699"
- "426735577550966697718734964429182302662498553172686513178236"
- "442838009305515598853210612191656717860412811108032276121357"
- "378133448066756387125735225403303267524644423863799006207505"
- "881985449471137991554931339017930009178349349682295047976692"
- "398330506490102685887034086355679994831062253659247250963448"
- "491064073545964404715491846754314002476460544975667945044647"
- "304892282461711772387638463741293238063530671434535471056841"
- "014058743507762050128559983705197885505633530557061512971186"
- "030938750397081284373471871281592504026318288871453343113735"
- "525572236896283639085600117688951315352941610550446421752261"
- "874153423243206777630669111814199801498554161044899315294894"
- "586598335471728905486124973447798086405950962299377052511061"
- "631386583082347892746250089584421636436549943844913465914533"
- "379999403401028225456633159501820584108048772899363279816807"
- "047692120594176896502188717868181049930125303933597827970762"
- "729528769725648996117995894684784043190210530661859483107853"
- "462208964199390089675673427653193145026697275263799724815197"
- "42277811246822238899767398834228515626e-4951",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x4p-16448,
- -0x4p-16448,
- -0x4p-16448,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4.000000000004p-16448,
- -0x4p-16448,
- -0x4p-16448,
- -0x4p-16448),
- TEST ("9.1129988297061865063210148340485495409976270392339083593024"
- "512175709292215834943420239017715645680129931183683680088277"
- "549174640815550804249337701889745225137095564529448291964230"
- "631595140838993915539064149585268223507994838838181714781019"
- "998854320275387963459576151369217885561232382646492956705356"
- "565551688308886521101701981493843492205658474297570333866605"
- "298932345300005419066807300806935840975771140138244887971382"
- "480306383029279087190728461573250887846318754007832114464683"
- "664171452083726328092629849717599582714695998658062536715061"
- "486659414671761410590867756059929866471508939201678361949569"
- "105493407320443782389013421144031696166197712936581273093400"
- "987818069535398834152409986110085052926337211200549444090110"
- "947717190581225852922732363763307088865106375411776212774753"
- "881242370509404376819363039948120731604116820734480620859463"
- "053721188111541333511328522463373472526999986652124894823521"
- "677055629197452315658307103340838430759142765166817775402542"
- "424672713638170402336169639395588632161416761622732176576564"
- "689048255479820989367151993310018548316769814664606197581315"
- "042862562791300468342638911941746410076541796524707525552225"
- "218810105957345303035393963179488682040705817772149861464367"
- "875846321939885650620019792999548883603797914975087595720555"
- "008891649198969277273442210230776269093622052361408012106817"
- "903069953745909041514739880227089422181355813323880743747316"
- "013769073985956031962404845484551938647636529313699033511745"
- "442279141902356533018143182815187073441328510540492152576488"
- "229985535798436239152483434901576880457556096136883541949311"
- "550953165672585204177162938634659553875223901648885259822873"
- "815598197021178988329613387166662012014085188285709633232513"
- "061942105426273781618686365893871655369623538557877775965767"
- "109785630310982604764603059355574307115163437126311616216384"
- "242977475669012957189024924930269461826674503235685685987925"
- "809774119784191955543740774385492835953479066971963899979438"
- "211272068701163464704436181757668455872462574422571325034113"
- "760130682177348501458144714636434216374798906646576252086802"
- "190576650522584472987248024379770735540050259550986944302085"
- "016537978874317385914557625547772714417301204338373972354274"
- "419077120195935070346230688523551832885027881558371920399052"
- "186032556413960972812515180755144550327091852825587440311130"
- "369879274596217199708705082236031422718889130402045378780140"
- "972327814060383227111423352378654611732272529152765871889754"
- "120890173540735187244359494818495116869106087097802117296794"
- "230636162657107764132729771811932156398134588213625909013771"
- "355672989281159028330647620507547914707927109442806484197371"
- "160282370564676895887174641137770747013214469567460313906231"
- "863055876527311358559655058178010195688508347865329804729357"
- "897103417200485899156841586760786011075803410294390125765035"
- "920926599317258260436879683255022799187512419040453065369911"
- "323428101759967597271722888176287261643418634944123527371986"
- "991235954064415358673716302132700617408956418914644864212332"
- "976051347071095204508969677769360451886970029662989435406797"
- "409579245892705640914616364216092565465060838723454093018319"
- "313458636362826625288516894137766424262510338430134251698122"
- "005230434085183091834211200122610210349443542674137356176019"
- "994661296545554711839281438920485832102187150591906236696737"
- "090784511846412155988675390082958065319591301717494963485010"
- "165932792068277883516946041506017760788778509260259389639323"
- "482577101846088517553013799076262873998643533979247791914386"
- "960081984502800508683707313453769958011319871060688162544921"
- "322796577704456915961808005946752071556794084904878487842807"
- "578404859150538520763286422764601209313650629444128511505177"
- "823078798079410053668821705549172247884539912031329017420556"
- "518079856488045326357586430559199198231719076822308881971367"
- "856956096577769576676503111475982888204421007623288070328718"
- "645608772303264875379950063930108312080388786177437812751905"
- "584120030072202190891266365873672180818190597661476916755677"
- "715854057980258925181834233866429689226159872122377094852588"
- "295898990349864384447444388136549436618687954074375252286589"
- "048125818566139866145014540017458695425579859498034933692028"
- "762317180933725539105161577403467580031256943949510269316175"
- "359789478610609381312994169116761450212882441190603620361337"
- "401742128185995015738801892316215217037671976109410724436579"
- "379380129538698961487878976867532145962342350850191560252504"
- "588328537917104636518954376662039025472528325798776052476332"
- "427970936224611080771416068440161969697007132497588046375640"
- "310336775861665604288980226938462461877670282350726508356795"
- "083014162348375615542992942120111083796673667263131651518958"
- "304763295180814137547257343856489773685828509608384174334970"
- "422481342457552997903572290775133733384303950144498613229418"
- "397179849510232211865542364757577463809559424236059129650578"
- "274637695590441751279797225383786991494466903311241791050376"
- "488510955932598072576401976708615886006919314135648608248191"
- "372656573811888893772800596985615900536551083040785709141896"
- "296641372542336858585285155522688752251142239708098420366878"
- "152586610030593201454626208011881281672071882478014556327250"
- "829447091860808595318353098051073163872713705786832133739305"
- "274057247245024850663340733036617513800734787932326379905451"
- "641681281905937253230152460358472580273562222569806348116698"
- "527056831689088216346583586087162394060010249474899626302057"
- "768256926924131071156960064207129684139721916331135576180148"
- "586965323299105282337234352989143787169680122112557687809323"
- "099327979778140351718902363172319583042200757772513950642086"
- "386297462185028482882268586936548025649697633305907484971486"
- "223468552187182907218267776718819086234809172430906474927279"
- "424906332107667190886359046554485179791303881091265489293005"
- "803215603269635123264170125730831784388656332832186157145305"
- "499039125566362759346764541205369778479271774262726853968049"
- "190835636788762895037454777680406940517308675355872838184645"
- "304120861875050177485053074785988569599549623179532516740082"
- "254762377654894606213282493506567652669958464338099434131023"
- "532342380354716890817886177034306313775574548031278141878295"
- "980251853307150740536081553178646800560107856455481390160382"
- "005461126866350869752876888962834360568840429704959648279120"
- "254570425069854306995075705052164177031686333733533637409730"
- "984494412360475557526051699665012526136673750101428368173353"
- "692291950799667471134257499676684610182758435845702912870768"
- "634362269004291803824464876008785139313163075651280377342747"
- "514196839209631064363659625214193456598788316913732358910439"
- "144944289890962417978739445105407297303138526378679343093624"
- "793916741811475534377782218853134322959860449406077325705367"
- "583234650794982848738379033597318010226151625248974524473699"
- "941563637866604856552441632431065309199219150015729366397177"
- "270609089591346091474506939150782160740711907964322876145597"
- "395145650253317824445860465336707220824713684429363769920064"
- "328717106332354307126419445673184428951466178635088943030837"
- "800062385933485349971069564992754655393085948953856883512745"
- "276808726026162095157115221834856892971964760467320232208335"
- "588069531017474361045746982594856036396319417833033871766181"
- "277368016889308069711197719469472302905853290440210418307024"
- "687328533297123196506483109819531394653772296480087430315397"
- "910124977426694468497871449032647123366969051087888029764547"
- "456415615898945773195285528874803499674998405090778746309320"
- "064107872403793733160110719300206260714233458242454046254281"
- "635285667702843088958126476571787667820961524650778676508787"
- "287657900313313469833862488641675238189345272301200116311311"
- "303492219734822823456297208532453055880821528468347578839024"
- "182302606029773658762919244232625769059672709989813876079805"
- "901731987280611645667105082802031385796293908530864172849314"
- "734765038966270760935051139880192249903989938642795205092207"
- "952822973691541552895072989465910085758076040250451592417680"
- "531245659592881584721257685461735599337168675230848625905522"
- "537954644173568345921153170415953958626219568206031281995507"
- "754830587823977775747100055764292205421357056446830465793611"
- "273763808185723813453738631569497245609975712828305215965826"
- "765053388068801916539196811808128141857281722046227535409567"
- "591186285705821199833303929519850375909134041147203658893734"
- "153755227136429729680819659989646998542009258703527635118557"
- "461312447384232179849362403511141932531785089741645572777420"
- "823800529533589278423940195407958568894264010164248006540849"
- "160087103041996738567121092172708859342210949217088143091653"
- "037148698668697189317909020017411070411852839836652652230104"
- "488866928634364560949066615472075465717187751987781313900056"
- "044708657100493771599807097662839308147951336602016088038303"
- "870626870505976949769475176739700850740489054760418683992822"
- "102108113039966954472254660236287017169543329420623006920875"
- "061938087152339674093328885612297439387396288738175863458442"
- "357873826429100480375666769347774936081994000132266037789617"
- "679830658781791760994378526913815818404152940284873358141843"
- "597059137957964030223538823290728128419992789364472918525589"
- "681285724973674079560291263860105160408412185466402633325963"
- "644349004773740071252405214227130755717722371864438087813957"
- "049334824031598041404099084234710294086909715648810172537956"
- "835325926716084588757074055943229897544714984821916277164996"
- "230599856478631481011984609516445087451467976563225183485707"
- "905749943922496442802923068967076792686823389362481124460494"
- "704283461711793778132596522789732235020165930073010737247996"
- "756585398791522224385870682607436284058126317337050038121079"
- "280726961697763447828452886465665300624268272487877857547882"
- "040348230983233787526246480631864102696170452823458479032723"
- "578830127941292909511711557404847061107334262109213252422470"
- "319474329457122819963756131151585297962065956542350731131832"
- "291167683289866880335703968881847060958949006126601275397222"
- "963545028494290493580535125944932141737036395266333000222605"
- "399939949397684787800655350500300253367688419355690911939522"
- "954187696262129926633159777279286294093780940318487461712750"
- "226387000627400399639544234254491419528782664148814752549434"
- "958379626065942049557661210343054447391632257569905575104963"
- "151978577601750196863513705539558684739468547692356001818703"
- "346520584228266295190510902524185553948226797601549646906331"
- "357318702512537284414411278940348553578854011691588522553966"
- "396992880818547561630476530111651734988588440593633173143253"
- "379921189582756007503422520592416527801478723731289759302726"
- "954132658111452941824189900172140279856850327867101851354527"
- "960707100257512325083967625754750701218030688324551798845572"
- "563961467133540032201733663397872597974240680973907443484971"
- "336778877548334885936748221459115133124927658634325658911822"
- "141900465275779942660530609582835893020640555401613806067868"
- "906672403337819356286761270165163376232221193189950310375294"
- "099272473556899577746566950896500458917467484114752398834619"
- "916525324505134294351704317783999741553112682962362548172424"
- "553203677298220235774592337715700123823027248783397252232365"
- "244614123085588619381923187064661903176533571726773552842050"
- "702937175388102506427999185259894275281676527853075648559301"
- "546937519854064218673593564079625201315914443572667155686776"
- "278611844814181954280005884447565767647080527522321087613093"
- "707671162160338881533455590709990074927708052244965764744729"
- "329916773586445274306248672389904320297548114968852625553081"
- "569329154117394637312504479221081821827497192245673295726668"
- "999970170051411272831657975091029205402438644968163990840352"
- "384606029708844825109435893409052496506265196679891398538136"
- "476438486282449805899794734239202159510526533092974155392673"
- "110448209969504483783671382659657251334863763189986240759871"
- "1389056234111194498836994171142578124e-4952",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x1.fffffffffffcp-16448,
- 0x2p-16448,
- 0x1.fffffffffffcp-16448,
- 0x2p-16448),
- TEST ("9.1129988297061865063210148340485495409976270392339083593024"
- "512175709292215834943420239017715645680129931183683680088277"
- "549174640815550804249337701889745225137095564529448291964230"
- "631595140838993915539064149585268223507994838838181714781019"
- "998854320275387963459576151369217885561232382646492956705356"
- "565551688308886521101701981493843492205658474297570333866605"
- "298932345300005419066807300806935840975771140138244887971382"
- "480306383029279087190728461573250887846318754007832114464683"
- "664171452083726328092629849717599582714695998658062536715061"
- "486659414671761410590867756059929866471508939201678361949569"
- "105493407320443782389013421144031696166197712936581273093400"
- "987818069535398834152409986110085052926337211200549444090110"
- "947717190581225852922732363763307088865106375411776212774753"
- "881242370509404376819363039948120731604116820734480620859463"
- "053721188111541333511328522463373472526999986652124894823521"
- "677055629197452315658307103340838430759142765166817775402542"
- "424672713638170402336169639395588632161416761622732176576564"
- "689048255479820989367151993310018548316769814664606197581315"
- "042862562791300468342638911941746410076541796524707525552225"
- "218810105957345303035393963179488682040705817772149861464367"
- "875846321939885650620019792999548883603797914975087595720555"
- "008891649198969277273442210230776269093622052361408012106817"
- "903069953745909041514739880227089422181355813323880743747316"
- "013769073985956031962404845484551938647636529313699033511745"
- "442279141902356533018143182815187073441328510540492152576488"
- "229985535798436239152483434901576880457556096136883541949311"
- "550953165672585204177162938634659553875223901648885259822873"
- "815598197021178988329613387166662012014085188285709633232513"
- "061942105426273781618686365893871655369623538557877775965767"
- "109785630310982604764603059355574307115163437126311616216384"
- "242977475669012957189024924930269461826674503235685685987925"
- "809774119784191955543740774385492835953479066971963899979438"
- "211272068701163464704436181757668455872462574422571325034113"
- "760130682177348501458144714636434216374798906646576252086802"
- "190576650522584472987248024379770735540050259550986944302085"
- "016537978874317385914557625547772714417301204338373972354274"
- "419077120195935070346230688523551832885027881558371920399052"
- "186032556413960972812515180755144550327091852825587440311130"
- "369879274596217199708705082236031422718889130402045378780140"
- "972327814060383227111423352378654611732272529152765871889754"
- "120890173540735187244359494818495116869106087097802117296794"
- "230636162657107764132729771811932156398134588213625909013771"
- "355672989281159028330647620507547914707927109442806484197371"
- "160282370564676895887174641137770747013214469567460313906231"
- "863055876527311358559655058178010195688508347865329804729357"
- "897103417200485899156841586760786011075803410294390125765035"
- "920926599317258260436879683255022799187512419040453065369911"
- "323428101759967597271722888176287261643418634944123527371986"
- "991235954064415358673716302132700617408956418914644864212332"
- "976051347071095204508969677769360451886970029662989435406797"
- "409579245892705640914616364216092565465060838723454093018319"
- "313458636362826625288516894137766424262510338430134251698122"
- "005230434085183091834211200122610210349443542674137356176019"
- "994661296545554711839281438920485832102187150591906236696737"
- "090784511846412155988675390082958065319591301717494963485010"
- "165932792068277883516946041506017760788778509260259389639323"
- "482577101846088517553013799076262873998643533979247791914386"
- "960081984502800508683707313453769958011319871060688162544921"
- "322796577704456915961808005946752071556794084904878487842807"
- "578404859150538520763286422764601209313650629444128511505177"
- "823078798079410053668821705549172247884539912031329017420556"
- "518079856488045326357586430559199198231719076822308881971367"
- "856956096577769576676503111475982888204421007623288070328718"
- "645608772303264875379950063930108312080388786177437812751905"
- "584120030072202190891266365873672180818190597661476916755677"
- "715854057980258925181834233866429689226159872122377094852588"
- "295898990349864384447444388136549436618687954074375252286589"
- "048125818566139866145014540017458695425579859498034933692028"
- "762317180933725539105161577403467580031256943949510269316175"
- "359789478610609381312994169116761450212882441190603620361337"
- "401742128185995015738801892316215217037671976109410724436579"
- "379380129538698961487878976867532145962342350850191560252504"
- "588328537917104636518954376662039025472528325798776052476332"
- "427970936224611080771416068440161969697007132497588046375640"
- "310336775861665604288980226938462461877670282350726508356795"
- "083014162348375615542992942120111083796673667263131651518958"
- "304763295180814137547257343856489773685828509608384174334970"
- "422481342457552997903572290775133733384303950144498613229418"
- "397179849510232211865542364757577463809559424236059129650578"
- "274637695590441751279797225383786991494466903311241791050376"
- "488510955932598072576401976708615886006919314135648608248191"
- "372656573811888893772800596985615900536551083040785709141896"
- "296641372542336858585285155522688752251142239708098420366878"
- "152586610030593201454626208011881281672071882478014556327250"
- "829447091860808595318353098051073163872713705786832133739305"
- "274057247245024850663340733036617513800734787932326379905451"
- "641681281905937253230152460358472580273562222569806348116698"
- "527056831689088216346583586087162394060010249474899626302057"
- "768256926924131071156960064207129684139721916331135576180148"
- "586965323299105282337234352989143787169680122112557687809323"
- "099327979778140351718902363172319583042200757772513950642086"
- "386297462185028482882268586936548025649697633305907484971486"
- "223468552187182907218267776718819086234809172430906474927279"
- "424906332107667190886359046554485179791303881091265489293005"
- "803215603269635123264170125730831784388656332832186157145305"
- "499039125566362759346764541205369778479271774262726853968049"
- "190835636788762895037454777680406940517308675355872838184645"
- "304120861875050177485053074785988569599549623179532516740082"
- "254762377654894606213282493506567652669958464338099434131023"
- "532342380354716890817886177034306313775574548031278141878295"
- "980251853307150740536081553178646800560107856455481390160382"
- "005461126866350869752876888962834360568840429704959648279120"
- "254570425069854306995075705052164177031686333733533637409730"
- "984494412360475557526051699665012526136673750101428368173353"
- "692291950799667471134257499676684610182758435845702912870768"
- "634362269004291803824464876008785139313163075651280377342747"
- "514196839209631064363659625214193456598788316913732358910439"
- "144944289890962417978739445105407297303138526378679343093624"
- "793916741811475534377782218853134322959860449406077325705367"
- "583234650794982848738379033597318010226151625248974524473699"
- "941563637866604856552441632431065309199219150015729366397177"
- "270609089591346091474506939150782160740711907964322876145597"
- "395145650253317824445860465336707220824713684429363769920064"
- "328717106332354307126419445673184428951466178635088943030837"
- "800062385933485349971069564992754655393085948953856883512745"
- "276808726026162095157115221834856892971964760467320232208335"
- "588069531017474361045746982594856036396319417833033871766181"
- "277368016889308069711197719469472302905853290440210418307024"
- "687328533297123196506483109819531394653772296480087430315397"
- "910124977426694468497871449032647123366969051087888029764547"
- "456415615898945773195285528874803499674998405090778746309320"
- "064107872403793733160110719300206260714233458242454046254281"
- "635285667702843088958126476571787667820961524650778676508787"
- "287657900313313469833862488641675238189345272301200116311311"
- "303492219734822823456297208532453055880821528468347578839024"
- "182302606029773658762919244232625769059672709989813876079805"
- "901731987280611645667105082802031385796293908530864172849314"
- "734765038966270760935051139880192249903989938642795205092207"
- "952822973691541552895072989465910085758076040250451592417680"
- "531245659592881584721257685461735599337168675230848625905522"
- "537954644173568345921153170415953958626219568206031281995507"
- "754830587823977775747100055764292205421357056446830465793611"
- "273763808185723813453738631569497245609975712828305215965826"
- "765053388068801916539196811808128141857281722046227535409567"
- "591186285705821199833303929519850375909134041147203658893734"
- "153755227136429729680819659989646998542009258703527635118557"
- "461312447384232179849362403511141932531785089741645572777420"
- "823800529533589278423940195407958568894264010164248006540849"
- "160087103041996738567121092172708859342210949217088143091653"
- "037148698668697189317909020017411070411852839836652652230104"
- "488866928634364560949066615472075465717187751987781313900056"
- "044708657100493771599807097662839308147951336602016088038303"
- "870626870505976949769475176739700850740489054760418683992822"
- "102108113039966954472254660236287017169543329420623006920875"
- "061938087152339674093328885612297439387396288738175863458442"
- "357873826429100480375666769347774936081994000132266037789617"
- "679830658781791760994378526913815818404152940284873358141843"
- "597059137957964030223538823290728128419992789364472918525589"
- "681285724973674079560291263860105160408412185466402633325963"
- "644349004773740071252405214227130755717722371864438087813957"
- "049334824031598041404099084234710294086909715648810172537956"
- "835325926716084588757074055943229897544714984821916277164996"
- "230599856478631481011984609516445087451467976563225183485707"
- "905749943922496442802923068967076792686823389362481124460494"
- "704283461711793778132596522789732235020165930073010737247996"
- "756585398791522224385870682607436284058126317337050038121079"
- "280726961697763447828452886465665300624268272487877857547882"
- "040348230983233787526246480631864102696170452823458479032723"
- "578830127941292909511711557404847061107334262109213252422470"
- "319474329457122819963756131151585297962065956542350731131832"
- "291167683289866880335703968881847060958949006126601275397222"
- "963545028494290493580535125944932141737036395266333000222605"
- "399939949397684787800655350500300253367688419355690911939522"
- "954187696262129926633159777279286294093780940318487461712750"
- "226387000627400399639544234254491419528782664148814752549434"
- "958379626065942049557661210343054447391632257569905575104963"
- "151978577601750196863513705539558684739468547692356001818703"
- "346520584228266295190510902524185553948226797601549646906331"
- "357318702512537284414411278940348553578854011691588522553966"
- "396992880818547561630476530111651734988588440593633173143253"
- "379921189582756007503422520592416527801478723731289759302726"
- "954132658111452941824189900172140279856850327867101851354527"
- "960707100257512325083967625754750701218030688324551798845572"
- "563961467133540032201733663397872597974240680973907443484971"
- "336778877548334885936748221459115133124927658634325658911822"
- "141900465275779942660530609582835893020640555401613806067868"
- "906672403337819356286761270165163376232221193189950310375294"
- "099272473556899577746566950896500458917467484114752398834619"
- "916525324505134294351704317783999741553112682962362548172424"
- "553203677298220235774592337715700123823027248783397252232365"
- "244614123085588619381923187064661903176533571726773552842050"
- "702937175388102506427999185259894275281676527853075648559301"
- "546937519854064218673593564079625201315914443572667155686776"
- "278611844814181954280005884447565767647080527522321087613093"
- "707671162160338881533455590709990074927708052244965764744729"
- "329916773586445274306248672389904320297548114968852625553081"
- "569329154117394637312504479221081821827497192245673295726668"
- "999970170051411272831657975091029205402438644968163990840352"
- "384606029708844825109435893409052496506265196679891398538136"
- "476438486282449805899794734239202159510526533092974155392673"
- "110448209969504483783671382659657251334863763189986240759871"
- "1389056234111194498836994171142578125e-4952",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- true,
- 0x2p-16448,
- 0x2p-16448,
- 0x2p-16448,
- 0x2p-16448),
- TEST ("9.1129988297061865063210148340485495409976270392339083593024"
- "512175709292215834943420239017715645680129931183683680088277"
- "549174640815550804249337701889745225137095564529448291964230"
- "631595140838993915539064149585268223507994838838181714781019"
- "998854320275387963459576151369217885561232382646492956705356"
- "565551688308886521101701981493843492205658474297570333866605"
- "298932345300005419066807300806935840975771140138244887971382"
- "480306383029279087190728461573250887846318754007832114464683"
- "664171452083726328092629849717599582714695998658062536715061"
- "486659414671761410590867756059929866471508939201678361949569"
- "105493407320443782389013421144031696166197712936581273093400"
- "987818069535398834152409986110085052926337211200549444090110"
- "947717190581225852922732363763307088865106375411776212774753"
- "881242370509404376819363039948120731604116820734480620859463"
- "053721188111541333511328522463373472526999986652124894823521"
- "677055629197452315658307103340838430759142765166817775402542"
- "424672713638170402336169639395588632161416761622732176576564"
- "689048255479820989367151993310018548316769814664606197581315"
- "042862562791300468342638911941746410076541796524707525552225"
- "218810105957345303035393963179488682040705817772149861464367"
- "875846321939885650620019792999548883603797914975087595720555"
- "008891649198969277273442210230776269093622052361408012106817"
- "903069953745909041514739880227089422181355813323880743747316"
- "013769073985956031962404845484551938647636529313699033511745"
- "442279141902356533018143182815187073441328510540492152576488"
- "229985535798436239152483434901576880457556096136883541949311"
- "550953165672585204177162938634659553875223901648885259822873"
- "815598197021178988329613387166662012014085188285709633232513"
- "061942105426273781618686365893871655369623538557877775965767"
- "109785630310982604764603059355574307115163437126311616216384"
- "242977475669012957189024924930269461826674503235685685987925"
- "809774119784191955543740774385492835953479066971963899979438"
- "211272068701163464704436181757668455872462574422571325034113"
- "760130682177348501458144714636434216374798906646576252086802"
- "190576650522584472987248024379770735540050259550986944302085"
- "016537978874317385914557625547772714417301204338373972354274"
- "419077120195935070346230688523551832885027881558371920399052"
- "186032556413960972812515180755144550327091852825587440311130"
- "369879274596217199708705082236031422718889130402045378780140"
- "972327814060383227111423352378654611732272529152765871889754"
- "120890173540735187244359494818495116869106087097802117296794"
- "230636162657107764132729771811932156398134588213625909013771"
- "355672989281159028330647620507547914707927109442806484197371"
- "160282370564676895887174641137770747013214469567460313906231"
- "863055876527311358559655058178010195688508347865329804729357"
- "897103417200485899156841586760786011075803410294390125765035"
- "920926599317258260436879683255022799187512419040453065369911"
- "323428101759967597271722888176287261643418634944123527371986"
- "991235954064415358673716302132700617408956418914644864212332"
- "976051347071095204508969677769360451886970029662989435406797"
- "409579245892705640914616364216092565465060838723454093018319"
- "313458636362826625288516894137766424262510338430134251698122"
- "005230434085183091834211200122610210349443542674137356176019"
- "994661296545554711839281438920485832102187150591906236696737"
- "090784511846412155988675390082958065319591301717494963485010"
- "165932792068277883516946041506017760788778509260259389639323"
- "482577101846088517553013799076262873998643533979247791914386"
- "960081984502800508683707313453769958011319871060688162544921"
- "322796577704456915961808005946752071556794084904878487842807"
- "578404859150538520763286422764601209313650629444128511505177"
- "823078798079410053668821705549172247884539912031329017420556"
- "518079856488045326357586430559199198231719076822308881971367"
- "856956096577769576676503111475982888204421007623288070328718"
- "645608772303264875379950063930108312080388786177437812751905"
- "584120030072202190891266365873672180818190597661476916755677"
- "715854057980258925181834233866429689226159872122377094852588"
- "295898990349864384447444388136549436618687954074375252286589"
- "048125818566139866145014540017458695425579859498034933692028"
- "762317180933725539105161577403467580031256943949510269316175"
- "359789478610609381312994169116761450212882441190603620361337"
- "401742128185995015738801892316215217037671976109410724436579"
- "379380129538698961487878976867532145962342350850191560252504"
- "588328537917104636518954376662039025472528325798776052476332"
- "427970936224611080771416068440161969697007132497588046375640"
- "310336775861665604288980226938462461877670282350726508356795"
- "083014162348375615542992942120111083796673667263131651518958"
- "304763295180814137547257343856489773685828509608384174334970"
- "422481342457552997903572290775133733384303950144498613229418"
- "397179849510232211865542364757577463809559424236059129650578"
- "274637695590441751279797225383786991494466903311241791050376"
- "488510955932598072576401976708615886006919314135648608248191"
- "372656573811888893772800596985615900536551083040785709141896"
- "296641372542336858585285155522688752251142239708098420366878"
- "152586610030593201454626208011881281672071882478014556327250"
- "829447091860808595318353098051073163872713705786832133739305"
- "274057247245024850663340733036617513800734787932326379905451"
- "641681281905937253230152460358472580273562222569806348116698"
- "527056831689088216346583586087162394060010249474899626302057"
- "768256926924131071156960064207129684139721916331135576180148"
- "586965323299105282337234352989143787169680122112557687809323"
- "099327979778140351718902363172319583042200757772513950642086"
- "386297462185028482882268586936548025649697633305907484971486"
- "223468552187182907218267776718819086234809172430906474927279"
- "424906332107667190886359046554485179791303881091265489293005"
- "803215603269635123264170125730831784388656332832186157145305"
- "499039125566362759346764541205369778479271774262726853968049"
- "190835636788762895037454777680406940517308675355872838184645"
- "304120861875050177485053074785988569599549623179532516740082"
- "254762377654894606213282493506567652669958464338099434131023"
- "532342380354716890817886177034306313775574548031278141878295"
- "980251853307150740536081553178646800560107856455481390160382"
- "005461126866350869752876888962834360568840429704959648279120"
- "254570425069854306995075705052164177031686333733533637409730"
- "984494412360475557526051699665012526136673750101428368173353"
- "692291950799667471134257499676684610182758435845702912870768"
- "634362269004291803824464876008785139313163075651280377342747"
- "514196839209631064363659625214193456598788316913732358910439"
- "144944289890962417978739445105407297303138526378679343093624"
- "793916741811475534377782218853134322959860449406077325705367"
- "583234650794982848738379033597318010226151625248974524473699"
- "941563637866604856552441632431065309199219150015729366397177"
- "270609089591346091474506939150782160740711907964322876145597"
- "395145650253317824445860465336707220824713684429363769920064"
- "328717106332354307126419445673184428951466178635088943030837"
- "800062385933485349971069564992754655393085948953856883512745"
- "276808726026162095157115221834856892971964760467320232208335"
- "588069531017474361045746982594856036396319417833033871766181"
- "277368016889308069711197719469472302905853290440210418307024"
- "687328533297123196506483109819531394653772296480087430315397"
- "910124977426694468497871449032647123366969051087888029764547"
- "456415615898945773195285528874803499674998405090778746309320"
- "064107872403793733160110719300206260714233458242454046254281"
- "635285667702843088958126476571787667820961524650778676508787"
- "287657900313313469833862488641675238189345272301200116311311"
- "303492219734822823456297208532453055880821528468347578839024"
- "182302606029773658762919244232625769059672709989813876079805"
- "901731987280611645667105082802031385796293908530864172849314"
- "734765038966270760935051139880192249903989938642795205092207"
- "952822973691541552895072989465910085758076040250451592417680"
- "531245659592881584721257685461735599337168675230848625905522"
- "537954644173568345921153170415953958626219568206031281995507"
- "754830587823977775747100055764292205421357056446830465793611"
- "273763808185723813453738631569497245609975712828305215965826"
- "765053388068801916539196811808128141857281722046227535409567"
- "591186285705821199833303929519850375909134041147203658893734"
- "153755227136429729680819659989646998542009258703527635118557"
- "461312447384232179849362403511141932531785089741645572777420"
- "823800529533589278423940195407958568894264010164248006540849"
- "160087103041996738567121092172708859342210949217088143091653"
- "037148698668697189317909020017411070411852839836652652230104"
- "488866928634364560949066615472075465717187751987781313900056"
- "044708657100493771599807097662839308147951336602016088038303"
- "870626870505976949769475176739700850740489054760418683992822"
- "102108113039966954472254660236287017169543329420623006920875"
- "061938087152339674093328885612297439387396288738175863458442"
- "357873826429100480375666769347774936081994000132266037789617"
- "679830658781791760994378526913815818404152940284873358141843"
- "597059137957964030223538823290728128419992789364472918525589"
- "681285724973674079560291263860105160408412185466402633325963"
- "644349004773740071252405214227130755717722371864438087813957"
- "049334824031598041404099084234710294086909715648810172537956"
- "835325926716084588757074055943229897544714984821916277164996"
- "230599856478631481011984609516445087451467976563225183485707"
- "905749943922496442802923068967076792686823389362481124460494"
- "704283461711793778132596522789732235020165930073010737247996"
- "756585398791522224385870682607436284058126317337050038121079"
- "280726961697763447828452886465665300624268272487877857547882"
- "040348230983233787526246480631864102696170452823458479032723"
- "578830127941292909511711557404847061107334262109213252422470"
- "319474329457122819963756131151585297962065956542350731131832"
- "291167683289866880335703968881847060958949006126601275397222"
- "963545028494290493580535125944932141737036395266333000222605"
- "399939949397684787800655350500300253367688419355690911939522"
- "954187696262129926633159777279286294093780940318487461712750"
- "226387000627400399639544234254491419528782664148814752549434"
- "958379626065942049557661210343054447391632257569905575104963"
- "151978577601750196863513705539558684739468547692356001818703"
- "346520584228266295190510902524185553948226797601549646906331"
- "357318702512537284414411278940348553578854011691588522553966"
- "396992880818547561630476530111651734988588440593633173143253"
- "379921189582756007503422520592416527801478723731289759302726"
- "954132658111452941824189900172140279856850327867101851354527"
- "960707100257512325083967625754750701218030688324551798845572"
- "563961467133540032201733663397872597974240680973907443484971"
- "336778877548334885936748221459115133124927658634325658911822"
- "141900465275779942660530609582835893020640555401613806067868"
- "906672403337819356286761270165163376232221193189950310375294"
- "099272473556899577746566950896500458917467484114752398834619"
- "916525324505134294351704317783999741553112682962362548172424"
- "553203677298220235774592337715700123823027248783397252232365"
- "244614123085588619381923187064661903176533571726773552842050"
- "702937175388102506427999185259894275281676527853075648559301"
- "546937519854064218673593564079625201315914443572667155686776"
- "278611844814181954280005884447565767647080527522321087613093"
- "707671162160338881533455590709990074927708052244965764744729"
- "329916773586445274306248672389904320297548114968852625553081"
- "569329154117394637312504479221081821827497192245673295726668"
- "999970170051411272831657975091029205402438644968163990840352"
- "384606029708844825109435893409052496506265196679891398538136"
- "476438486282449805899794734239202159510526533092974155392673"
- "110448209969504483783671382659657251334863763189986240759871"
- "1389056234111194498836994171142578126e-4952",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-16448,
- false,
- 0x0p+0,
- 0x4p-16448,
- 0x0p+0,
- 0x4p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x2p-16448,
- 0x2p-16448,
- 0x2p-16448,
- 0x2.000000000004p-16448),
- TEST ("-9.112998829706186506321014834048549540997627039233908359302"
- "451217570929221583494342023901771564568012993118368368008827"
- "754917464081555080424933770188974522513709556452944829196423"
- "063159514083899391553906414958526822350799483883818171478101"
- "999885432027538796345957615136921788556123238264649295670535"
- "656555168830888652110170198149384349220565847429757033386660"
- "529893234530000541906680730080693584097577114013824488797138"
- "248030638302927908719072846157325088784631875400783211446468"
- "366417145208372632809262984971759958271469599865806253671506"
- "148665941467176141059086775605992986647150893920167836194956"
- "910549340732044378238901342114403169616619771293658127309340"
- "098781806953539883415240998611008505292633721120054944409011"
- "094771719058122585292273236376330708886510637541177621277475"
- "388124237050940437681936303994812073160411682073448062085946"
- "305372118811154133351132852246337347252699998665212489482352"
- "167705562919745231565830710334083843075914276516681777540254"
- "242467271363817040233616963939558863216141676162273217657656"
- "468904825547982098936715199331001854831676981466460619758131"
- "504286256279130046834263891194174641007654179652470752555222"
- "521881010595734530303539396317948868204070581777214986146436"
- "787584632193988565062001979299954888360379791497508759572055"
- "500889164919896927727344221023077626909362205236140801210681"
- "790306995374590904151473988022708942218135581332388074374731"
- "601376907398595603196240484548455193864763652931369903351174"
- "544227914190235653301814318281518707344132851054049215257648"
- "822998553579843623915248343490157688045755609613688354194931"
- "155095316567258520417716293863465955387522390164888525982287"
- "381559819702117898832961338716666201201408518828570963323251"
- "306194210542627378161868636589387165536962353855787777596576"
- "710978563031098260476460305935557430711516343712631161621638"
- "424297747566901295718902492493026946182667450323568568598792"
- "580977411978419195554374077438549283595347906697196389997943"
- "821127206870116346470443618175766845587246257442257132503411"
- "376013068217734850145814471463643421637479890664657625208680"
- "219057665052258447298724802437977073554005025955098694430208"
- "501653797887431738591455762554777271441730120433837397235427"
- "441907712019593507034623068852355183288502788155837192039905"
- "218603255641396097281251518075514455032709185282558744031113"
- "036987927459621719970870508223603142271888913040204537878014"
- "097232781406038322711142335237865461173227252915276587188975"
- "412089017354073518724435949481849511686910608709780211729679"
- "423063616265710776413272977181193215639813458821362590901377"
- "135567298928115902833064762050754791470792710944280648419737"
- "116028237056467689588717464113777074701321446956746031390623"
- "186305587652731135855965505817801019568850834786532980472935"
- "789710341720048589915684158676078601107580341029439012576503"
- "592092659931725826043687968325502279918751241904045306536991"
- "132342810175996759727172288817628726164341863494412352737198"
- "699123595406441535867371630213270061740895641891464486421233"
- "297605134707109520450896967776936045188697002966298943540679"
- "740957924589270564091461636421609256546506083872345409301831"
- "931345863636282662528851689413776642426251033843013425169812"
- "200523043408518309183421120012261021034944354267413735617601"
- "999466129654555471183928143892048583210218715059190623669673"
- "709078451184641215598867539008295806531959130171749496348501"
- "016593279206827788351694604150601776078877850926025938963932"
- "348257710184608851755301379907626287399864353397924779191438"
- "696008198450280050868370731345376995801131987106068816254492"
- "132279657770445691596180800594675207155679408490487848784280"
- "757840485915053852076328642276460120931365062944412851150517"
- "782307879807941005366882170554917224788453991203132901742055"
- "651807985648804532635758643055919919823171907682230888197136"
- "785695609657776957667650311147598288820442100762328807032871"
- "864560877230326487537995006393010831208038878617743781275190"
- "558412003007220219089126636587367218081819059766147691675567"
- "771585405798025892518183423386642968922615987212237709485258"
- "829589899034986438444744438813654943661868795407437525228658"
- "904812581856613986614501454001745869542557985949803493369202"
- "876231718093372553910516157740346758003125694394951026931617"
- "535978947861060938131299416911676145021288244119060362036133"
- "740174212818599501573880189231621521703767197610941072443657"
- "937938012953869896148787897686753214596234235085019156025250"
- "458832853791710463651895437666203902547252832579877605247633"
- "242797093622461108077141606844016196969700713249758804637564"
- "031033677586166560428898022693846246187767028235072650835679"
- "508301416234837561554299294212011108379667366726313165151895"
- "830476329518081413754725734385648977368582850960838417433497"
- "042248134245755299790357229077513373338430395014449861322941"
- "839717984951023221186554236475757746380955942423605912965057"
- "827463769559044175127979722538378699149446690331124179105037"
- "648851095593259807257640197670861588600691931413564860824819"
- "137265657381188889377280059698561590053655108304078570914189"
- "629664137254233685858528515552268875225114223970809842036687"
- "815258661003059320145462620801188128167207188247801455632725"
- "082944709186080859531835309805107316387271370578683213373930"
- "527405724724502485066334073303661751380073478793232637990545"
- "164168128190593725323015246035847258027356222256980634811669"
- "852705683168908821634658358608716239406001024947489962630205"
- "776825692692413107115696006420712968413972191633113557618014"
- "858696532329910528233723435298914378716968012211255768780932"
- "309932797977814035171890236317231958304220075777251395064208"
- "638629746218502848288226858693654802564969763330590748497148"
- "622346855218718290721826777671881908623480917243090647492727"
- "942490633210766719088635904655448517979130388109126548929300"
- "580321560326963512326417012573083178438865633283218615714530"
- "549903912556636275934676454120536977847927177426272685396804"
- "919083563678876289503745477768040694051730867535587283818464"
- "530412086187505017748505307478598856959954962317953251674008"
- "225476237765489460621328249350656765266995846433809943413102"
- "353234238035471689081788617703430631377557454803127814187829"
- "598025185330715074053608155317864680056010785645548139016038"
- "200546112686635086975287688896283436056884042970495964827912"
- "025457042506985430699507570505216417703168633373353363740973"
- "098449441236047555752605169966501252613667375010142836817335"
- "369229195079966747113425749967668461018275843584570291287076"
- "863436226900429180382446487600878513931316307565128037734274"
- "751419683920963106436365962521419345659878831691373235891043"
- "914494428989096241797873944510540729730313852637867934309362"
- "479391674181147553437778221885313432295986044940607732570536"
- "758323465079498284873837903359731801022615162524897452447369"
- "994156363786660485655244163243106530919921915001572936639717"
- "727060908959134609147450693915078216074071190796432287614559"
- "739514565025331782444586046533670722082471368442936376992006"
- "432871710633235430712641944567318442895146617863508894303083"
- "780006238593348534997106956499275465539308594895385688351274"
- "527680872602616209515711522183485689297196476046732023220833"
- "558806953101747436104574698259485603639631941783303387176618"
- "127736801688930806971119771946947230290585329044021041830702"
- "468732853329712319650648310981953139465377229648008743031539"
- "791012497742669446849787144903264712336696905108788802976454"
- "745641561589894577319528552887480349967499840509077874630932"
- "006410787240379373316011071930020626071423345824245404625428"
- "163528566770284308895812647657178766782096152465077867650878"
- "728765790031331346983386248864167523818934527230120011631131"
- "130349221973482282345629720853245305588082152846834757883902"
- "418230260602977365876291924423262576905967270998981387607980"
- "590173198728061164566710508280203138579629390853086417284931"
- "473476503896627076093505113988019224990398993864279520509220"
- "795282297369154155289507298946591008575807604025045159241768"
- "053124565959288158472125768546173559933716867523084862590552"
- "253795464417356834592115317041595395862621956820603128199550"
- "775483058782397777574710005576429220542135705644683046579361"
- "127376380818572381345373863156949724560997571282830521596582"
- "676505338806880191653919681180812814185728172204622753540956"
- "759118628570582119983330392951985037590913404114720365889373"
- "415375522713642972968081965998964699854200925870352763511855"
- "746131244738423217984936240351114193253178508974164557277742"
- "082380052953358927842394019540795856889426401016424800654084"
- "916008710304199673856712109217270885934221094921708814309165"
- "303714869866869718931790902001741107041185283983665265223010"
- "448886692863436456094906661547207546571718775198778131390005"
- "604470865710049377159980709766283930814795133660201608803830"
- "387062687050597694976947517673970085074048905476041868399282"
- "210210811303996695447225466023628701716954332942062300692087"
- "506193808715233967409332888561229743938739628873817586345844"
- "235787382642910048037566676934777493608199400013226603778961"
- "767983065878179176099437852691381581840415294028487335814184"
- "359705913795796403022353882329072812841999278936447291852558"
- "968128572497367407956029126386010516040841218546640263332596"
- "364434900477374007125240521422713075571772237186443808781395"
- "704933482403159804140409908423471029408690971564881017253795"
- "683532592671608458875707405594322989754471498482191627716499"
- "623059985647863148101198460951644508745146797656322518348570"
- "790574994392249644280292306896707679268682338936248112446049"
- "470428346171179377813259652278973223502016593007301073724799"
- "675658539879152222438587068260743628405812631733705003812107"
- "928072696169776344782845288646566530062426827248787785754788"
- "204034823098323378752624648063186410269617045282345847903272"
- "357883012794129290951171155740484706110733426210921325242247"
- "031947432945712281996375613115158529796206595654235073113183"
- "229116768328986688033570396888184706095894900612660127539722"
- "296354502849429049358053512594493214173703639526633300022260"
- "539993994939768478780065535050030025336768841935569091193952"
- "295418769626212992663315977727928629409378094031848746171275"
- "022638700062740039963954423425449141952878266414881475254943"
- "495837962606594204955766121034305444739163225756990557510496"
- "315197857760175019686351370553955868473946854769235600181870"
- "334652058422826629519051090252418555394822679760154964690633"
- "135731870251253728441441127894034855357885401169158852255396"
- "639699288081854756163047653011165173498858844059363317314325"
- "337992118958275600750342252059241652780147872373128975930272"
- "695413265811145294182418990017214027985685032786710185135452"
- "796070710025751232508396762575475070121803068832455179884557"
- "256396146713354003220173366339787259797424068097390744348497"
- "133677887754833488593674822145911513312492765863432565891182"
- "214190046527577994266053060958283589302064055540161380606786"
- "890667240333781935628676127016516337623222119318995031037529"
- "409927247355689957774656695089650045891746748411475239883461"
- "991652532450513429435170431778399974155311268296236254817242"
- "455320367729822023577459233771570012382302724878339725223236"
- "524461412308558861938192318706466190317653357172677355284205"
- "070293717538810250642799918525989427528167652785307564855930"
- "154693751985406421867359356407962520131591444357266715568677"
- "627861184481418195428000588444756576764708052752232108761309"
- "370767116216033888153345559070999007492770805224496576474472"
- "932991677358644527430624867238990432029754811496885262555308"
- "156932915411739463731250447922108182182749719224567329572666"
- "899997017005141127283165797509102920540243864496816399084035"
- "238460602970884482510943589340905249650626519667989139853813"
- "647643848628244980589979473423920215951052653309297415539267"
- "311044820996950448378367138265965725133486376318998624075987"
- "11389056234111194498836994171142578124e-4952",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x2p-16448,
- -0x2p-16448,
- -0x1.fffffffffffcp-16448,
- -0x1.fffffffffffcp-16448),
- TEST ("-9.112998829706186506321014834048549540997627039233908359302"
- "451217570929221583494342023901771564568012993118368368008827"
- "754917464081555080424933770188974522513709556452944829196423"
- "063159514083899391553906414958526822350799483883818171478101"
- "999885432027538796345957615136921788556123238264649295670535"
- "656555168830888652110170198149384349220565847429757033386660"
- "529893234530000541906680730080693584097577114013824488797138"
- "248030638302927908719072846157325088784631875400783211446468"
- "366417145208372632809262984971759958271469599865806253671506"
- "148665941467176141059086775605992986647150893920167836194956"
- "910549340732044378238901342114403169616619771293658127309340"
- "098781806953539883415240998611008505292633721120054944409011"
- "094771719058122585292273236376330708886510637541177621277475"
- "388124237050940437681936303994812073160411682073448062085946"
- "305372118811154133351132852246337347252699998665212489482352"
- "167705562919745231565830710334083843075914276516681777540254"
- "242467271363817040233616963939558863216141676162273217657656"
- "468904825547982098936715199331001854831676981466460619758131"
- "504286256279130046834263891194174641007654179652470752555222"
- "521881010595734530303539396317948868204070581777214986146436"
- "787584632193988565062001979299954888360379791497508759572055"
- "500889164919896927727344221023077626909362205236140801210681"
- "790306995374590904151473988022708942218135581332388074374731"
- "601376907398595603196240484548455193864763652931369903351174"
- "544227914190235653301814318281518707344132851054049215257648"
- "822998553579843623915248343490157688045755609613688354194931"
- "155095316567258520417716293863465955387522390164888525982287"
- "381559819702117898832961338716666201201408518828570963323251"
- "306194210542627378161868636589387165536962353855787777596576"
- "710978563031098260476460305935557430711516343712631161621638"
- "424297747566901295718902492493026946182667450323568568598792"
- "580977411978419195554374077438549283595347906697196389997943"
- "821127206870116346470443618175766845587246257442257132503411"
- "376013068217734850145814471463643421637479890664657625208680"
- "219057665052258447298724802437977073554005025955098694430208"
- "501653797887431738591455762554777271441730120433837397235427"
- "441907712019593507034623068852355183288502788155837192039905"
- "218603255641396097281251518075514455032709185282558744031113"
- "036987927459621719970870508223603142271888913040204537878014"
- "097232781406038322711142335237865461173227252915276587188975"
- "412089017354073518724435949481849511686910608709780211729679"
- "423063616265710776413272977181193215639813458821362590901377"
- "135567298928115902833064762050754791470792710944280648419737"
- "116028237056467689588717464113777074701321446956746031390623"
- "186305587652731135855965505817801019568850834786532980472935"
- "789710341720048589915684158676078601107580341029439012576503"
- "592092659931725826043687968325502279918751241904045306536991"
- "132342810175996759727172288817628726164341863494412352737198"
- "699123595406441535867371630213270061740895641891464486421233"
- "297605134707109520450896967776936045188697002966298943540679"
- "740957924589270564091461636421609256546506083872345409301831"
- "931345863636282662528851689413776642426251033843013425169812"
- "200523043408518309183421120012261021034944354267413735617601"
- "999466129654555471183928143892048583210218715059190623669673"
- "709078451184641215598867539008295806531959130171749496348501"
- "016593279206827788351694604150601776078877850926025938963932"
- "348257710184608851755301379907626287399864353397924779191438"
- "696008198450280050868370731345376995801131987106068816254492"
- "132279657770445691596180800594675207155679408490487848784280"
- "757840485915053852076328642276460120931365062944412851150517"
- "782307879807941005366882170554917224788453991203132901742055"
- "651807985648804532635758643055919919823171907682230888197136"
- "785695609657776957667650311147598288820442100762328807032871"
- "864560877230326487537995006393010831208038878617743781275190"
- "558412003007220219089126636587367218081819059766147691675567"
- "771585405798025892518183423386642968922615987212237709485258"
- "829589899034986438444744438813654943661868795407437525228658"
- "904812581856613986614501454001745869542557985949803493369202"
- "876231718093372553910516157740346758003125694394951026931617"
- "535978947861060938131299416911676145021288244119060362036133"
- "740174212818599501573880189231621521703767197610941072443657"
- "937938012953869896148787897686753214596234235085019156025250"
- "458832853791710463651895437666203902547252832579877605247633"
- "242797093622461108077141606844016196969700713249758804637564"
- "031033677586166560428898022693846246187767028235072650835679"
- "508301416234837561554299294212011108379667366726313165151895"
- "830476329518081413754725734385648977368582850960838417433497"
- "042248134245755299790357229077513373338430395014449861322941"
- "839717984951023221186554236475757746380955942423605912965057"
- "827463769559044175127979722538378699149446690331124179105037"
- "648851095593259807257640197670861588600691931413564860824819"
- "137265657381188889377280059698561590053655108304078570914189"
- "629664137254233685858528515552268875225114223970809842036687"
- "815258661003059320145462620801188128167207188247801455632725"
- "082944709186080859531835309805107316387271370578683213373930"
- "527405724724502485066334073303661751380073478793232637990545"
- "164168128190593725323015246035847258027356222256980634811669"
- "852705683168908821634658358608716239406001024947489962630205"
- "776825692692413107115696006420712968413972191633113557618014"
- "858696532329910528233723435298914378716968012211255768780932"
- "309932797977814035171890236317231958304220075777251395064208"
- "638629746218502848288226858693654802564969763330590748497148"
- "622346855218718290721826777671881908623480917243090647492727"
- "942490633210766719088635904655448517979130388109126548929300"
- "580321560326963512326417012573083178438865633283218615714530"
- "549903912556636275934676454120536977847927177426272685396804"
- "919083563678876289503745477768040694051730867535587283818464"
- "530412086187505017748505307478598856959954962317953251674008"
- "225476237765489460621328249350656765266995846433809943413102"
- "353234238035471689081788617703430631377557454803127814187829"
- "598025185330715074053608155317864680056010785645548139016038"
- "200546112686635086975287688896283436056884042970495964827912"
- "025457042506985430699507570505216417703168633373353363740973"
- "098449441236047555752605169966501252613667375010142836817335"
- "369229195079966747113425749967668461018275843584570291287076"
- "863436226900429180382446487600878513931316307565128037734274"
- "751419683920963106436365962521419345659878831691373235891043"
- "914494428989096241797873944510540729730313852637867934309362"
- "479391674181147553437778221885313432295986044940607732570536"
- "758323465079498284873837903359731801022615162524897452447369"
- "994156363786660485655244163243106530919921915001572936639717"
- "727060908959134609147450693915078216074071190796432287614559"
- "739514565025331782444586046533670722082471368442936376992006"
- "432871710633235430712641944567318442895146617863508894303083"
- "780006238593348534997106956499275465539308594895385688351274"
- "527680872602616209515711522183485689297196476046732023220833"
- "558806953101747436104574698259485603639631941783303387176618"
- "127736801688930806971119771946947230290585329044021041830702"
- "468732853329712319650648310981953139465377229648008743031539"
- "791012497742669446849787144903264712336696905108788802976454"
- "745641561589894577319528552887480349967499840509077874630932"
- "006410787240379373316011071930020626071423345824245404625428"
- "163528566770284308895812647657178766782096152465077867650878"
- "728765790031331346983386248864167523818934527230120011631131"
- "130349221973482282345629720853245305588082152846834757883902"
- "418230260602977365876291924423262576905967270998981387607980"
- "590173198728061164566710508280203138579629390853086417284931"
- "473476503896627076093505113988019224990398993864279520509220"
- "795282297369154155289507298946591008575807604025045159241768"
- "053124565959288158472125768546173559933716867523084862590552"
- "253795464417356834592115317041595395862621956820603128199550"
- "775483058782397777574710005576429220542135705644683046579361"
- "127376380818572381345373863156949724560997571282830521596582"
- "676505338806880191653919681180812814185728172204622753540956"
- "759118628570582119983330392951985037590913404114720365889373"
- "415375522713642972968081965998964699854200925870352763511855"
- "746131244738423217984936240351114193253178508974164557277742"
- "082380052953358927842394019540795856889426401016424800654084"
- "916008710304199673856712109217270885934221094921708814309165"
- "303714869866869718931790902001741107041185283983665265223010"
- "448886692863436456094906661547207546571718775198778131390005"
- "604470865710049377159980709766283930814795133660201608803830"
- "387062687050597694976947517673970085074048905476041868399282"
- "210210811303996695447225466023628701716954332942062300692087"
- "506193808715233967409332888561229743938739628873817586345844"
- "235787382642910048037566676934777493608199400013226603778961"
- "767983065878179176099437852691381581840415294028487335814184"
- "359705913795796403022353882329072812841999278936447291852558"
- "968128572497367407956029126386010516040841218546640263332596"
- "364434900477374007125240521422713075571772237186443808781395"
- "704933482403159804140409908423471029408690971564881017253795"
- "683532592671608458875707405594322989754471498482191627716499"
- "623059985647863148101198460951644508745146797656322518348570"
- "790574994392249644280292306896707679268682338936248112446049"
- "470428346171179377813259652278973223502016593007301073724799"
- "675658539879152222438587068260743628405812631733705003812107"
- "928072696169776344782845288646566530062426827248787785754788"
- "204034823098323378752624648063186410269617045282345847903272"
- "357883012794129290951171155740484706110733426210921325242247"
- "031947432945712281996375613115158529796206595654235073113183"
- "229116768328986688033570396888184706095894900612660127539722"
- "296354502849429049358053512594493214173703639526633300022260"
- "539993994939768478780065535050030025336768841935569091193952"
- "295418769626212992663315977727928629409378094031848746171275"
- "022638700062740039963954423425449141952878266414881475254943"
- "495837962606594204955766121034305444739163225756990557510496"
- "315197857760175019686351370553955868473946854769235600181870"
- "334652058422826629519051090252418555394822679760154964690633"
- "135731870251253728441441127894034855357885401169158852255396"
- "639699288081854756163047653011165173498858844059363317314325"
- "337992118958275600750342252059241652780147872373128975930272"
- "695413265811145294182418990017214027985685032786710185135452"
- "796070710025751232508396762575475070121803068832455179884557"
- "256396146713354003220173366339787259797424068097390744348497"
- "133677887754833488593674822145911513312492765863432565891182"
- "214190046527577994266053060958283589302064055540161380606786"
- "890667240333781935628676127016516337623222119318995031037529"
- "409927247355689957774656695089650045891746748411475239883461"
- "991652532450513429435170431778399974155311268296236254817242"
- "455320367729822023577459233771570012382302724878339725223236"
- "524461412308558861938192318706466190317653357172677355284205"
- "070293717538810250642799918525989427528167652785307564855930"
- "154693751985406421867359356407962520131591444357266715568677"
- "627861184481418195428000588444756576764708052752232108761309"
- "370767116216033888153345559070999007492770805224496576474472"
- "932991677358644527430624867238990432029754811496885262555308"
- "156932915411739463731250447922108182182749719224567329572666"
- "899997017005141127283165797509102920540243864496816399084035"
- "238460602970884482510943589340905249650626519667989139853813"
- "647643848628244980589979473423920215951052653309297415539267"
- "311044820996950448378367138265965725133486376318998624075987"
- "11389056234111194498836994171142578125e-4952",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- true,
- -0x2p-16448,
- -0x2p-16448,
- -0x2p-16448,
- -0x2p-16448),
- TEST ("-9.112998829706186506321014834048549540997627039233908359302"
- "451217570929221583494342023901771564568012993118368368008827"
- "754917464081555080424933770188974522513709556452944829196423"
- "063159514083899391553906414958526822350799483883818171478101"
- "999885432027538796345957615136921788556123238264649295670535"
- "656555168830888652110170198149384349220565847429757033386660"
- "529893234530000541906680730080693584097577114013824488797138"
- "248030638302927908719072846157325088784631875400783211446468"
- "366417145208372632809262984971759958271469599865806253671506"
- "148665941467176141059086775605992986647150893920167836194956"
- "910549340732044378238901342114403169616619771293658127309340"
- "098781806953539883415240998611008505292633721120054944409011"
- "094771719058122585292273236376330708886510637541177621277475"
- "388124237050940437681936303994812073160411682073448062085946"
- "305372118811154133351132852246337347252699998665212489482352"
- "167705562919745231565830710334083843075914276516681777540254"
- "242467271363817040233616963939558863216141676162273217657656"
- "468904825547982098936715199331001854831676981466460619758131"
- "504286256279130046834263891194174641007654179652470752555222"
- "521881010595734530303539396317948868204070581777214986146436"
- "787584632193988565062001979299954888360379791497508759572055"
- "500889164919896927727344221023077626909362205236140801210681"
- "790306995374590904151473988022708942218135581332388074374731"
- "601376907398595603196240484548455193864763652931369903351174"
- "544227914190235653301814318281518707344132851054049215257648"
- "822998553579843623915248343490157688045755609613688354194931"
- "155095316567258520417716293863465955387522390164888525982287"
- "381559819702117898832961338716666201201408518828570963323251"
- "306194210542627378161868636589387165536962353855787777596576"
- "710978563031098260476460305935557430711516343712631161621638"
- "424297747566901295718902492493026946182667450323568568598792"
- "580977411978419195554374077438549283595347906697196389997943"
- "821127206870116346470443618175766845587246257442257132503411"
- "376013068217734850145814471463643421637479890664657625208680"
- "219057665052258447298724802437977073554005025955098694430208"
- "501653797887431738591455762554777271441730120433837397235427"
- "441907712019593507034623068852355183288502788155837192039905"
- "218603255641396097281251518075514455032709185282558744031113"
- "036987927459621719970870508223603142271888913040204537878014"
- "097232781406038322711142335237865461173227252915276587188975"
- "412089017354073518724435949481849511686910608709780211729679"
- "423063616265710776413272977181193215639813458821362590901377"
- "135567298928115902833064762050754791470792710944280648419737"
- "116028237056467689588717464113777074701321446956746031390623"
- "186305587652731135855965505817801019568850834786532980472935"
- "789710341720048589915684158676078601107580341029439012576503"
- "592092659931725826043687968325502279918751241904045306536991"
- "132342810175996759727172288817628726164341863494412352737198"
- "699123595406441535867371630213270061740895641891464486421233"
- "297605134707109520450896967776936045188697002966298943540679"
- "740957924589270564091461636421609256546506083872345409301831"
- "931345863636282662528851689413776642426251033843013425169812"
- "200523043408518309183421120012261021034944354267413735617601"
- "999466129654555471183928143892048583210218715059190623669673"
- "709078451184641215598867539008295806531959130171749496348501"
- "016593279206827788351694604150601776078877850926025938963932"
- "348257710184608851755301379907626287399864353397924779191438"
- "696008198450280050868370731345376995801131987106068816254492"
- "132279657770445691596180800594675207155679408490487848784280"
- "757840485915053852076328642276460120931365062944412851150517"
- "782307879807941005366882170554917224788453991203132901742055"
- "651807985648804532635758643055919919823171907682230888197136"
- "785695609657776957667650311147598288820442100762328807032871"
- "864560877230326487537995006393010831208038878617743781275190"
- "558412003007220219089126636587367218081819059766147691675567"
- "771585405798025892518183423386642968922615987212237709485258"
- "829589899034986438444744438813654943661868795407437525228658"
- "904812581856613986614501454001745869542557985949803493369202"
- "876231718093372553910516157740346758003125694394951026931617"
- "535978947861060938131299416911676145021288244119060362036133"
- "740174212818599501573880189231621521703767197610941072443657"
- "937938012953869896148787897686753214596234235085019156025250"
- "458832853791710463651895437666203902547252832579877605247633"
- "242797093622461108077141606844016196969700713249758804637564"
- "031033677586166560428898022693846246187767028235072650835679"
- "508301416234837561554299294212011108379667366726313165151895"
- "830476329518081413754725734385648977368582850960838417433497"
- "042248134245755299790357229077513373338430395014449861322941"
- "839717984951023221186554236475757746380955942423605912965057"
- "827463769559044175127979722538378699149446690331124179105037"
- "648851095593259807257640197670861588600691931413564860824819"
- "137265657381188889377280059698561590053655108304078570914189"
- "629664137254233685858528515552268875225114223970809842036687"
- "815258661003059320145462620801188128167207188247801455632725"
- "082944709186080859531835309805107316387271370578683213373930"
- "527405724724502485066334073303661751380073478793232637990545"
- "164168128190593725323015246035847258027356222256980634811669"
- "852705683168908821634658358608716239406001024947489962630205"
- "776825692692413107115696006420712968413972191633113557618014"
- "858696532329910528233723435298914378716968012211255768780932"
- "309932797977814035171890236317231958304220075777251395064208"
- "638629746218502848288226858693654802564969763330590748497148"
- "622346855218718290721826777671881908623480917243090647492727"
- "942490633210766719088635904655448517979130388109126548929300"
- "580321560326963512326417012573083178438865633283218615714530"
- "549903912556636275934676454120536977847927177426272685396804"
- "919083563678876289503745477768040694051730867535587283818464"
- "530412086187505017748505307478598856959954962317953251674008"
- "225476237765489460621328249350656765266995846433809943413102"
- "353234238035471689081788617703430631377557454803127814187829"
- "598025185330715074053608155317864680056010785645548139016038"
- "200546112686635086975287688896283436056884042970495964827912"
- "025457042506985430699507570505216417703168633373353363740973"
- "098449441236047555752605169966501252613667375010142836817335"
- "369229195079966747113425749967668461018275843584570291287076"
- "863436226900429180382446487600878513931316307565128037734274"
- "751419683920963106436365962521419345659878831691373235891043"
- "914494428989096241797873944510540729730313852637867934309362"
- "479391674181147553437778221885313432295986044940607732570536"
- "758323465079498284873837903359731801022615162524897452447369"
- "994156363786660485655244163243106530919921915001572936639717"
- "727060908959134609147450693915078216074071190796432287614559"
- "739514565025331782444586046533670722082471368442936376992006"
- "432871710633235430712641944567318442895146617863508894303083"
- "780006238593348534997106956499275465539308594895385688351274"
- "527680872602616209515711522183485689297196476046732023220833"
- "558806953101747436104574698259485603639631941783303387176618"
- "127736801688930806971119771946947230290585329044021041830702"
- "468732853329712319650648310981953139465377229648008743031539"
- "791012497742669446849787144903264712336696905108788802976454"
- "745641561589894577319528552887480349967499840509077874630932"
- "006410787240379373316011071930020626071423345824245404625428"
- "163528566770284308895812647657178766782096152465077867650878"
- "728765790031331346983386248864167523818934527230120011631131"
- "130349221973482282345629720853245305588082152846834757883902"
- "418230260602977365876291924423262576905967270998981387607980"
- "590173198728061164566710508280203138579629390853086417284931"
- "473476503896627076093505113988019224990398993864279520509220"
- "795282297369154155289507298946591008575807604025045159241768"
- "053124565959288158472125768546173559933716867523084862590552"
- "253795464417356834592115317041595395862621956820603128199550"
- "775483058782397777574710005576429220542135705644683046579361"
- "127376380818572381345373863156949724560997571282830521596582"
- "676505338806880191653919681180812814185728172204622753540956"
- "759118628570582119983330392951985037590913404114720365889373"
- "415375522713642972968081965998964699854200925870352763511855"
- "746131244738423217984936240351114193253178508974164557277742"
- "082380052953358927842394019540795856889426401016424800654084"
- "916008710304199673856712109217270885934221094921708814309165"
- "303714869866869718931790902001741107041185283983665265223010"
- "448886692863436456094906661547207546571718775198778131390005"
- "604470865710049377159980709766283930814795133660201608803830"
- "387062687050597694976947517673970085074048905476041868399282"
- "210210811303996695447225466023628701716954332942062300692087"
- "506193808715233967409332888561229743938739628873817586345844"
- "235787382642910048037566676934777493608199400013226603778961"
- "767983065878179176099437852691381581840415294028487335814184"
- "359705913795796403022353882329072812841999278936447291852558"
- "968128572497367407956029126386010516040841218546640263332596"
- "364434900477374007125240521422713075571772237186443808781395"
- "704933482403159804140409908423471029408690971564881017253795"
- "683532592671608458875707405594322989754471498482191627716499"
- "623059985647863148101198460951644508745146797656322518348570"
- "790574994392249644280292306896707679268682338936248112446049"
- "470428346171179377813259652278973223502016593007301073724799"
- "675658539879152222438587068260743628405812631733705003812107"
- "928072696169776344782845288646566530062426827248787785754788"
- "204034823098323378752624648063186410269617045282345847903272"
- "357883012794129290951171155740484706110733426210921325242247"
- "031947432945712281996375613115158529796206595654235073113183"
- "229116768328986688033570396888184706095894900612660127539722"
- "296354502849429049358053512594493214173703639526633300022260"
- "539993994939768478780065535050030025336768841935569091193952"
- "295418769626212992663315977727928629409378094031848746171275"
- "022638700062740039963954423425449141952878266414881475254943"
- "495837962606594204955766121034305444739163225756990557510496"
- "315197857760175019686351370553955868473946854769235600181870"
- "334652058422826629519051090252418555394822679760154964690633"
- "135731870251253728441441127894034855357885401169158852255396"
- "639699288081854756163047653011165173498858844059363317314325"
- "337992118958275600750342252059241652780147872373128975930272"
- "695413265811145294182418990017214027985685032786710185135452"
- "796070710025751232508396762575475070121803068832455179884557"
- "256396146713354003220173366339787259797424068097390744348497"
- "133677887754833488593674822145911513312492765863432565891182"
- "214190046527577994266053060958283589302064055540161380606786"
- "890667240333781935628676127016516337623222119318995031037529"
- "409927247355689957774656695089650045891746748411475239883461"
- "991652532450513429435170431778399974155311268296236254817242"
- "455320367729822023577459233771570012382302724878339725223236"
- "524461412308558861938192318706466190317653357172677355284205"
- "070293717538810250642799918525989427528167652785307564855930"
- "154693751985406421867359356407962520131591444357266715568677"
- "627861184481418195428000588444756576764708052752232108761309"
- "370767116216033888153345559070999007492770805224496576474472"
- "932991677358644527430624867238990432029754811496885262555308"
- "156932915411739463731250447922108182182749719224567329572666"
- "899997017005141127283165797509102920540243864496816399084035"
- "238460602970884482510943589340905249650626519667989139853813"
- "647643848628244980589979473423920215951052653309297415539267"
- "311044820996950448378367138265965725133486376318998624075987"
- "11389056234111194498836994171142578126e-4952",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16448,
- -0x4p-16448,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x2.000000000004p-16448,
- -0x2p-16448,
- -0x2p-16448,
- -0x2p-16448),
- TEST ("3.2375875597190125554622194791138232762497846690173405048449"
- "421945985197700620596855088357456383249701279390707384240598"
- "382936099431912710233425550359863089915213963553756674672083"
- "673128192358701197242632527769951957277781260855740340354110"
- "173441284912381364143945515141786687806740155311932822963199"
- "131134959539539338316310328556057915323285980341541664226172"
- "265348802632447238304822896568757017013159021750199744350376"
- "278243566840330589397015778833566517337174685312047058426075"
- "688036665697114219175258344917835835984013214761767520398571"
- "735519302688914468501077605843338555214753050109407568139932"
- "147308502166696009676987494125921676927574464221699654264839"
- "192243410627511520570610765229732327315423820550872393685221"
- "676561948307418196052769717057382723931306989375320957256133"
- "838073129463951849807075348034900035402513943244599879584009"
- "391110011261908615236154859382854977144106096407982738165117"
- "693915685918231984764157652755343417097983676870433731452629"
- "339981084526616826599425863049784138127555181662391766144738"
- "159400253422795753041594932607700680306368857466952063923782"
- "760519487592638820793893796669403574411398166619131986561877"
- "034635197232626532239192571857518274939275861531537920777299"
- "133535479548088762634002006634954143608168633852204577195463"
- "389533233992867620995583241321034602255800668175356808869060"
- "608582640890741203603916133682748118680676374951545690715916"
- "241859799379894025137504643469040366684778763795442214328000"
- "375999444991619403217748350277527106812175542863660436614910"
- "135938862296156144947361864759321605496309393905421651264941"
- "669606814994816518612155298709843817262034769175075602668866"
- "926449523554218142013501373514352370369126244144449924971423"
- "038024236058971106053649565799145071085840022305247663313482"
- "714565918140785997808209749619683146844964283106915422726638"
- "184861327711776708749278315100024436584176080783836115268999"
- "055336294569042349971163039294272620322160728879610722678506"
- "182344928526064885227397447578450046944618127903428943538029"
- "386719288345854473283987116842451647036255801966780244103035"
- "425445345127067921349083698736056197567752071915587544133815"
- "717564310032485290205726480489464589999677885266171263493459"
- "668963623768410922688414177814149693150024191921819721215688"
- "114324591287371281400636455584825253000890602388603923710921"
- "026880979879158388608823700222683123228822356907857261909150"
- "626993825760416437415551396973489279578569909699853422995997"
- "974315036153120383930698087773157253674975950409660938084071"
- "173163693891122166282318691732176374528554627905530306369204"
- "877964658806333996327938827344733821685425961846791581492287"
- "250044047142934607523718654369478552373072400018635730811749"
- "291666457582760812726851561001954207941547404866373158231367"
- "986951247388733285659455982411993350593989550494594498447410"
- "984783303191128659803467713819821511544998464785455306500918"
- "241648925913966507036336000231915215026183799886938007038845"
- "551916478649593272604688927931953165785101738164060543643192"
- "949066412847647883846835866623820426428526541564774787007791"
- "235843699657232847114093617412355486871810526396392792853731"
- "390841657984518997639795008374280777823099107035223998600103"
- "103211166230289241182380237703814248941627178152962100972452"
- "217697144954497443279450919433943252592977710901289696002698"
- "225209041938801190947812141758873162203113090284565687499100"
- "109623665868340184032428667217835198069330185880779776269137"
- "742366802202585247113480377505916462865316253065105837519292"
- "805411191872195967066157363040364443666632564266439033866945"
- "366496486863801221986778957510023272290593640187551645170603"
- "215150911733580059874983597994671388176488814794186236946834"
- "548816837468411497151813344980969677026131105901402313456769"
- "561412278508799050185582199844418197980544632067644131002512"
- "557755358307705356209461595354064971347590431926479961905129"
- "785864961996560707071051177738535042777950247546470241655891"
- "294428226271478689174637951663865529219133988782700199051475"
- "108495188941141025360733690471601309904116260484264378352956"
- "830972782977747351810451586166745640802378131466232692150196"
- "132319386267589275314909450293562079332893638471814389025392"
- "970579695249613486078445695214422379148991006996109216699215"
- "721671648754881325271879493185438097033881789311707997697928"
- "860866812849648616086569281093053695399558469641977866770538"
- "476039621947215238679930485285585513808236992918733520331110"
- "962448142457896209307561142289713638388281085340301520317159"
- "297224995464365477734040179470355969363384621039467975256670"
- "339354334892926205316491997244008324897517881293654265688813"
- "283579663372924392043825371743576754041055802440187836850412"
- "247984570221893156921757872572872036331343007592090605703195"
- "088864753777199111760713027328198781654685927174063882187275"
- "850263521274368447629947228263907797373221137688424821608129"
- "731003236738630502344377228987961455961818623205503012858619"
- "800521948637807438081069469400793496307826769301971342062597"
- "391253779410607511754278887744936774785938056823221738917303"
- "119592848951788560393540150358649310736020595310015728915288"
- "289821678102453433273888879288862086153270028346900686360943"
- "250522514297816412678213672667152836436597491522644579383191"
- "851483036048273636234050603745735057899230038434384361744893"
- "838050985090837220507663282503497932038372021626246900935334"
- "781144388106031405650705176699646299475436084049881780196520"
- "881623075256119318210664937469946410480660118598143375898298"
- "965497205621170906772915413181530577151676241283182977713765"
- "317889730886996471681592298058774155948285325398399674640645"
- "566475947058303746531133735308766583802401453804232106737787"
- "768035926272312574958173945816077962772826443125107145322971"
- "087220172175473177449006473180221085709470643042801004189714"
- "505520073568915195232936144169440163547568663500508335014169"
- "425050712038101167190534305435310279534374364467455668392421"
- "298604104431988622194699721632249712583483143417550152131186"
- "288827131347662976240916448058011869761525369135147129192405"
- "037216807405860168320999468074663117771890506566769628495813"
- "837909047220874786467663205170561835819702362482274133227483"
- "041342457179876653773960112367066273208176545656826800069574"
- "547599816180234764485446735080683694920665668954370505715843"
- "455110709594838989387382250502925336743830916124954071268053"
- "817964873658921319164268375226716232666274830656557657055342"
- "393552148933959057023293404027940528842591460490646295820755"
- "765633076707491896621769767253619370462005760078938144396953"
- "018925287611875441613896820035092167912718365454954166761481"
- "511451950826683236776211829914518353242818636196417736206010"
- "145109509967467266157037719712666871515644277723594273405669"
- "093518586548079997818085130346801040781966074621669280188633"
- "856299289656492439545033914935979634179552686396067914528336"
- "924678729357419403624798426886422277256625046946795576781709"
- "298737741510378578072199383561520569978396254537274419476511"
- "983161908266152660163477408756159700314280122283281906103567"
- "067156627222418787671312246698375736071215395722993294041012"
- "744631560602983489316782773611740570974847045870362276861106"
- "774130949410119612624380274679529647271294627526939490197641"
- "645383447755544661714281218489998189691140343327976729279891"
- "077101372792811842951182338559423852563331641533781432796742"
- "873181364582071661749961126386895359760476172215209100274274"
- "851619657020388051618654944574445941780637669570374280535432"
- "399157923698778110534174856844986671232161320063786308144771"
- "068130888985636449091787794632959555876880672773686838364706"
- "122084832995722603440165161942472322987408003421165899848443"
- "566885769845535074102932500939450142098799833145629484519298"
- "622410092757836842296697186410137365818568152771850732591405"
- "340248509247875448717161746544246407280913725135059228268131"
- "453903691495906528862410006254958805237716723952273129715780"
- "425223305517882562616830806755498203755676925741529569939445"
- "043490046171854709456730491532189688306135861932534903184518"
- "717706426178028900836080044604143054210332610482947502104703"
- "032028463320549525316174330585387581543470878545616097381416"
- "151451037487775797335749896735101048367502483255117772375025"
- "269956476872153642623856062175536913321594213515989059505375"
- "135183515207096576145781316398544325320022366962008554087665"
- "201050763789833457082359181807492731245904330245198691471329"
- "319324627030678762142685799400660305214140453863665517807185"
- "105354694177602424937823924511789133225030926924236498557565"
- "212794565582753399214908928688568628950225640472058381324292"
- "866007645368390366981937596341868992912741319342960598330486"
- "905946276235953206760977215407164729909506118583728562718724"
- "235732515062300426080741679038098122641980345051854359908213"
- "563779664847422505775922437272989231878912994048540484468227"
- "199282393172540734295329890896755037903724644870572648941076"
- "132423009124870700536763793881894969000042397318202298868940"
- "530196108237639578098191879486398269734335286831689173606327"
- "500405178476864790935386838169242131756729797688220656276969"
- "434749140204830563840068728357383111109865861495106613619153"
- "421725274090787422508800568671498311491210197298472420373359"
- "044400631309819996507004167876832936101195902219429743174557"
- "163362274547892397934880322990633165889175059124060202200452"
- "648684577182821651588921716304707095995039972827781680978274"
- "973838841958209215836456212939412000456040621743349981715350"
- "305133662772937143899882197561295808685181679238411733642697"
- "748892466944352640514849114619882270112386610376024527101889"
- "119004382703622803911212700216792471528793241950356942780714"
- "774957204475130171711488773121937363663487116301055073658645"
- "980695862570269762957141239436916216723776945522480189876803"
- "386123827956059851911061129713987960026363403936931196519733"
- "447116468545744829997003979525368783485129837821983305137448"
- "031689360764270759437872004895754351479890333865299565515706"
- "690471030702230767978923298480584997256328135245813726407464"
- "159230169328539541524724878662873185450510653764301207480799"
- "488602832618557388369552461881286225098286358672257087829660"
- "174231705350465091313887538950130611513878400895128618426154"
- "417299623157313010877679890009181366178705821415173309356192"
- "686429159835537275875876767919535369607142366878476025895389"
- "279625854409611312402187942369446302119309705461187450803468"
- "606366203101933821675974655441744883993796837164178911391575"
- "751463591650231265941242686108002052587760190005508737394014"
- "453031299745602214380618917954427803281262300931789525045703"
- "809571995929933387196864877982754748535701000330924817431298"
- "365273697561943437891318220691072831562717726798635382168915"
- "187137325209768346284183473712613689334546294053718697897526"
- "843398053681374508250012035211936425982389543291022583173280"
- "985811169783438836113209408147936547458073361625570571955232"
- "746103236016857123149307991441916732438322836596693687161268"
- "151183603534413030099360835441935243365729307681545065674775"
- "655582111435085683962037818795920337874290127531069511296530"
- "746308404963763022896682861683252995925040540038039172626001"
- "958340013361801588367655990575379797454237110701588716509764"
- "759243657077584013289594787913434812509790293636440469725564"
- "222946985585616708175959944099853232059130350099233608207347"
- "955460820122006976717445739825352919058005528371183277021250"
- "186916447745609162301667393077050176560656798672598371789181"
- "232542195795945358691713761483976100058707499929103557275695"
- "937295677892604799308353051124627278706035295473126217205599"
- "530746756205492173148619619059839609108464715691924592576481"
- "382126740168148453274964955074129767533813576349605298268179"
- "068244338581354855186516322703199278802275718580352103754433"
- "240982354636196477238624205575823556321375833700666021556412"
- "182358152808745703724362178773168996492870519432472065091133"
- "11767578124e-4966",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-16496),
- TEST ("3.2375875597190125554622194791138232762497846690173405048449"
- "421945985197700620596855088357456383249701279390707384240598"
- "382936099431912710233425550359863089915213963553756674672083"
- "673128192358701197242632527769951957277781260855740340354110"
- "173441284912381364143945515141786687806740155311932822963199"
- "131134959539539338316310328556057915323285980341541664226172"
- "265348802632447238304822896568757017013159021750199744350376"
- "278243566840330589397015778833566517337174685312047058426075"
- "688036665697114219175258344917835835984013214761767520398571"
- "735519302688914468501077605843338555214753050109407568139932"
- "147308502166696009676987494125921676927574464221699654264839"
- "192243410627511520570610765229732327315423820550872393685221"
- "676561948307418196052769717057382723931306989375320957256133"
- "838073129463951849807075348034900035402513943244599879584009"
- "391110011261908615236154859382854977144106096407982738165117"
- "693915685918231984764157652755343417097983676870433731452629"
- "339981084526616826599425863049784138127555181662391766144738"
- "159400253422795753041594932607700680306368857466952063923782"
- "760519487592638820793893796669403574411398166619131986561877"
- "034635197232626532239192571857518274939275861531537920777299"
- "133535479548088762634002006634954143608168633852204577195463"
- "389533233992867620995583241321034602255800668175356808869060"
- "608582640890741203603916133682748118680676374951545690715916"
- "241859799379894025137504643469040366684778763795442214328000"
- "375999444991619403217748350277527106812175542863660436614910"
- "135938862296156144947361864759321605496309393905421651264941"
- "669606814994816518612155298709843817262034769175075602668866"
- "926449523554218142013501373514352370369126244144449924971423"
- "038024236058971106053649565799145071085840022305247663313482"
- "714565918140785997808209749619683146844964283106915422726638"
- "184861327711776708749278315100024436584176080783836115268999"
- "055336294569042349971163039294272620322160728879610722678506"
- "182344928526064885227397447578450046944618127903428943538029"
- "386719288345854473283987116842451647036255801966780244103035"
- "425445345127067921349083698736056197567752071915587544133815"
- "717564310032485290205726480489464589999677885266171263493459"
- "668963623768410922688414177814149693150024191921819721215688"
- "114324591287371281400636455584825253000890602388603923710921"
- "026880979879158388608823700222683123228822356907857261909150"
- "626993825760416437415551396973489279578569909699853422995997"
- "974315036153120383930698087773157253674975950409660938084071"
- "173163693891122166282318691732176374528554627905530306369204"
- "877964658806333996327938827344733821685425961846791581492287"
- "250044047142934607523718654369478552373072400018635730811749"
- "291666457582760812726851561001954207941547404866373158231367"
- "986951247388733285659455982411993350593989550494594498447410"
- "984783303191128659803467713819821511544998464785455306500918"
- "241648925913966507036336000231915215026183799886938007038845"
- "551916478649593272604688927931953165785101738164060543643192"
- "949066412847647883846835866623820426428526541564774787007791"
- "235843699657232847114093617412355486871810526396392792853731"
- "390841657984518997639795008374280777823099107035223998600103"
- "103211166230289241182380237703814248941627178152962100972452"
- "217697144954497443279450919433943252592977710901289696002698"
- "225209041938801190947812141758873162203113090284565687499100"
- "109623665868340184032428667217835198069330185880779776269137"
- "742366802202585247113480377505916462865316253065105837519292"
- "805411191872195967066157363040364443666632564266439033866945"
- "366496486863801221986778957510023272290593640187551645170603"
- "215150911733580059874983597994671388176488814794186236946834"
- "548816837468411497151813344980969677026131105901402313456769"
- "561412278508799050185582199844418197980544632067644131002512"
- "557755358307705356209461595354064971347590431926479961905129"
- "785864961996560707071051177738535042777950247546470241655891"
- "294428226271478689174637951663865529219133988782700199051475"
- "108495188941141025360733690471601309904116260484264378352956"
- "830972782977747351810451586166745640802378131466232692150196"
- "132319386267589275314909450293562079332893638471814389025392"
- "970579695249613486078445695214422379148991006996109216699215"
- "721671648754881325271879493185438097033881789311707997697928"
- "860866812849648616086569281093053695399558469641977866770538"
- "476039621947215238679930485285585513808236992918733520331110"
- "962448142457896209307561142289713638388281085340301520317159"
- "297224995464365477734040179470355969363384621039467975256670"
- "339354334892926205316491997244008324897517881293654265688813"
- "283579663372924392043825371743576754041055802440187836850412"
- "247984570221893156921757872572872036331343007592090605703195"
- "088864753777199111760713027328198781654685927174063882187275"
- "850263521274368447629947228263907797373221137688424821608129"
- "731003236738630502344377228987961455961818623205503012858619"
- "800521948637807438081069469400793496307826769301971342062597"
- "391253779410607511754278887744936774785938056823221738917303"
- "119592848951788560393540150358649310736020595310015728915288"
- "289821678102453433273888879288862086153270028346900686360943"
- "250522514297816412678213672667152836436597491522644579383191"
- "851483036048273636234050603745735057899230038434384361744893"
- "838050985090837220507663282503497932038372021626246900935334"
- "781144388106031405650705176699646299475436084049881780196520"
- "881623075256119318210664937469946410480660118598143375898298"
- "965497205621170906772915413181530577151676241283182977713765"
- "317889730886996471681592298058774155948285325398399674640645"
- "566475947058303746531133735308766583802401453804232106737787"
- "768035926272312574958173945816077962772826443125107145322971"
- "087220172175473177449006473180221085709470643042801004189714"
- "505520073568915195232936144169440163547568663500508335014169"
- "425050712038101167190534305435310279534374364467455668392421"
- "298604104431988622194699721632249712583483143417550152131186"
- "288827131347662976240916448058011869761525369135147129192405"
- "037216807405860168320999468074663117771890506566769628495813"
- "837909047220874786467663205170561835819702362482274133227483"
- "041342457179876653773960112367066273208176545656826800069574"
- "547599816180234764485446735080683694920665668954370505715843"
- "455110709594838989387382250502925336743830916124954071268053"
- "817964873658921319164268375226716232666274830656557657055342"
- "393552148933959057023293404027940528842591460490646295820755"
- "765633076707491896621769767253619370462005760078938144396953"
- "018925287611875441613896820035092167912718365454954166761481"
- "511451950826683236776211829914518353242818636196417736206010"
- "145109509967467266157037719712666871515644277723594273405669"
- "093518586548079997818085130346801040781966074621669280188633"
- "856299289656492439545033914935979634179552686396067914528336"
- "924678729357419403624798426886422277256625046946795576781709"
- "298737741510378578072199383561520569978396254537274419476511"
- "983161908266152660163477408756159700314280122283281906103567"
- "067156627222418787671312246698375736071215395722993294041012"
- "744631560602983489316782773611740570974847045870362276861106"
- "774130949410119612624380274679529647271294627526939490197641"
- "645383447755544661714281218489998189691140343327976729279891"
- "077101372792811842951182338559423852563331641533781432796742"
- "873181364582071661749961126386895359760476172215209100274274"
- "851619657020388051618654944574445941780637669570374280535432"
- "399157923698778110534174856844986671232161320063786308144771"
- "068130888985636449091787794632959555876880672773686838364706"
- "122084832995722603440165161942472322987408003421165899848443"
- "566885769845535074102932500939450142098799833145629484519298"
- "622410092757836842296697186410137365818568152771850732591405"
- "340248509247875448717161746544246407280913725135059228268131"
- "453903691495906528862410006254958805237716723952273129715780"
- "425223305517882562616830806755498203755676925741529569939445"
- "043490046171854709456730491532189688306135861932534903184518"
- "717706426178028900836080044604143054210332610482947502104703"
- "032028463320549525316174330585387581543470878545616097381416"
- "151451037487775797335749896735101048367502483255117772375025"
- "269956476872153642623856062175536913321594213515989059505375"
- "135183515207096576145781316398544325320022366962008554087665"
- "201050763789833457082359181807492731245904330245198691471329"
- "319324627030678762142685799400660305214140453863665517807185"
- "105354694177602424937823924511789133225030926924236498557565"
- "212794565582753399214908928688568628950225640472058381324292"
- "866007645368390366981937596341868992912741319342960598330486"
- "905946276235953206760977215407164729909506118583728562718724"
- "235732515062300426080741679038098122641980345051854359908213"
- "563779664847422505775922437272989231878912994048540484468227"
- "199282393172540734295329890896755037903724644870572648941076"
- "132423009124870700536763793881894969000042397318202298868940"
- "530196108237639578098191879486398269734335286831689173606327"
- "500405178476864790935386838169242131756729797688220656276969"
- "434749140204830563840068728357383111109865861495106613619153"
- "421725274090787422508800568671498311491210197298472420373359"
- "044400631309819996507004167876832936101195902219429743174557"
- "163362274547892397934880322990633165889175059124060202200452"
- "648684577182821651588921716304707095995039972827781680978274"
- "973838841958209215836456212939412000456040621743349981715350"
- "305133662772937143899882197561295808685181679238411733642697"
- "748892466944352640514849114619882270112386610376024527101889"
- "119004382703622803911212700216792471528793241950356942780714"
- "774957204475130171711488773121937363663487116301055073658645"
- "980695862570269762957141239436916216723776945522480189876803"
- "386123827956059851911061129713987960026363403936931196519733"
- "447116468545744829997003979525368783485129837821983305137448"
- "031689360764270759437872004895754351479890333865299565515706"
- "690471030702230767978923298480584997256328135245813726407464"
- "159230169328539541524724878662873185450510653764301207480799"
- "488602832618557388369552461881286225098286358672257087829660"
- "174231705350465091313887538950130611513878400895128618426154"
- "417299623157313010877679890009181366178705821415173309356192"
- "686429159835537275875876767919535369607142366878476025895389"
- "279625854409611312402187942369446302119309705461187450803468"
- "606366203101933821675974655441744883993796837164178911391575"
- "751463591650231265941242686108002052587760190005508737394014"
- "453031299745602214380618917954427803281262300931789525045703"
- "809571995929933387196864877982754748535701000330924817431298"
- "365273697561943437891318220691072831562717726798635382168915"
- "187137325209768346284183473712613689334546294053718697897526"
- "843398053681374508250012035211936425982389543291022583173280"
- "985811169783438836113209408147936547458073361625570571955232"
- "746103236016857123149307991441916732438322836596693687161268"
- "151183603534413030099360835441935243365729307681545065674775"
- "655582111435085683962037818795920337874290127531069511296530"
- "746308404963763022896682861683252995925040540038039172626001"
- "958340013361801588367655990575379797454237110701588716509764"
- "759243657077584013289594787913434812509790293636440469725564"
- "222946985585616708175959944099853232059130350099233608207347"
- "955460820122006976717445739825352919058005528371183277021250"
- "186916447745609162301667393077050176560656798672598371789181"
- "232542195795945358691713761483976100058707499929103557275695"
- "937295677892604799308353051124627278706035295473126217205599"
- "530746756205492173148619619059839609108464715691924592576481"
- "382126740168148453274964955074129767533813576349605298268179"
- "068244338581354855186516322703199278802275718580352103754433"
- "240982354636196477238624205575823556321375833700666021556412"
- "182358152808745703724362178773168996492870519432472065091133"
- "11767578125e-4966",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-16496),
- TEST ("3.2375875597190125554622194791138232762497846690173405048449"
- "421945985197700620596855088357456383249701279390707384240598"
- "382936099431912710233425550359863089915213963553756674672083"
- "673128192358701197242632527769951957277781260855740340354110"
- "173441284912381364143945515141786687806740155311932822963199"
- "131134959539539338316310328556057915323285980341541664226172"
- "265348802632447238304822896568757017013159021750199744350376"
- "278243566840330589397015778833566517337174685312047058426075"
- "688036665697114219175258344917835835984013214761767520398571"
- "735519302688914468501077605843338555214753050109407568139932"
- "147308502166696009676987494125921676927574464221699654264839"
- "192243410627511520570610765229732327315423820550872393685221"
- "676561948307418196052769717057382723931306989375320957256133"
- "838073129463951849807075348034900035402513943244599879584009"
- "391110011261908615236154859382854977144106096407982738165117"
- "693915685918231984764157652755343417097983676870433731452629"
- "339981084526616826599425863049784138127555181662391766144738"
- "159400253422795753041594932607700680306368857466952063923782"
- "760519487592638820793893796669403574411398166619131986561877"
- "034635197232626532239192571857518274939275861531537920777299"
- "133535479548088762634002006634954143608168633852204577195463"
- "389533233992867620995583241321034602255800668175356808869060"
- "608582640890741203603916133682748118680676374951545690715916"
- "241859799379894025137504643469040366684778763795442214328000"
- "375999444991619403217748350277527106812175542863660436614910"
- "135938862296156144947361864759321605496309393905421651264941"
- "669606814994816518612155298709843817262034769175075602668866"
- "926449523554218142013501373514352370369126244144449924971423"
- "038024236058971106053649565799145071085840022305247663313482"
- "714565918140785997808209749619683146844964283106915422726638"
- "184861327711776708749278315100024436584176080783836115268999"
- "055336294569042349971163039294272620322160728879610722678506"
- "182344928526064885227397447578450046944618127903428943538029"
- "386719288345854473283987116842451647036255801966780244103035"
- "425445345127067921349083698736056197567752071915587544133815"
- "717564310032485290205726480489464589999677885266171263493459"
- "668963623768410922688414177814149693150024191921819721215688"
- "114324591287371281400636455584825253000890602388603923710921"
- "026880979879158388608823700222683123228822356907857261909150"
- "626993825760416437415551396973489279578569909699853422995997"
- "974315036153120383930698087773157253674975950409660938084071"
- "173163693891122166282318691732176374528554627905530306369204"
- "877964658806333996327938827344733821685425961846791581492287"
- "250044047142934607523718654369478552373072400018635730811749"
- "291666457582760812726851561001954207941547404866373158231367"
- "986951247388733285659455982411993350593989550494594498447410"
- "984783303191128659803467713819821511544998464785455306500918"
- "241648925913966507036336000231915215026183799886938007038845"
- "551916478649593272604688927931953165785101738164060543643192"
- "949066412847647883846835866623820426428526541564774787007791"
- "235843699657232847114093617412355486871810526396392792853731"
- "390841657984518997639795008374280777823099107035223998600103"
- "103211166230289241182380237703814248941627178152962100972452"
- "217697144954497443279450919433943252592977710901289696002698"
- "225209041938801190947812141758873162203113090284565687499100"
- "109623665868340184032428667217835198069330185880779776269137"
- "742366802202585247113480377505916462865316253065105837519292"
- "805411191872195967066157363040364443666632564266439033866945"
- "366496486863801221986778957510023272290593640187551645170603"
- "215150911733580059874983597994671388176488814794186236946834"
- "548816837468411497151813344980969677026131105901402313456769"
- "561412278508799050185582199844418197980544632067644131002512"
- "557755358307705356209461595354064971347590431926479961905129"
- "785864961996560707071051177738535042777950247546470241655891"
- "294428226271478689174637951663865529219133988782700199051475"
- "108495188941141025360733690471601309904116260484264378352956"
- "830972782977747351810451586166745640802378131466232692150196"
- "132319386267589275314909450293562079332893638471814389025392"
- "970579695249613486078445695214422379148991006996109216699215"
- "721671648754881325271879493185438097033881789311707997697928"
- "860866812849648616086569281093053695399558469641977866770538"
- "476039621947215238679930485285585513808236992918733520331110"
- "962448142457896209307561142289713638388281085340301520317159"
- "297224995464365477734040179470355969363384621039467975256670"
- "339354334892926205316491997244008324897517881293654265688813"
- "283579663372924392043825371743576754041055802440187836850412"
- "247984570221893156921757872572872036331343007592090605703195"
- "088864753777199111760713027328198781654685927174063882187275"
- "850263521274368447629947228263907797373221137688424821608129"
- "731003236738630502344377228987961455961818623205503012858619"
- "800521948637807438081069469400793496307826769301971342062597"
- "391253779410607511754278887744936774785938056823221738917303"
- "119592848951788560393540150358649310736020595310015728915288"
- "289821678102453433273888879288862086153270028346900686360943"
- "250522514297816412678213672667152836436597491522644579383191"
- "851483036048273636234050603745735057899230038434384361744893"
- "838050985090837220507663282503497932038372021626246900935334"
- "781144388106031405650705176699646299475436084049881780196520"
- "881623075256119318210664937469946410480660118598143375898298"
- "965497205621170906772915413181530577151676241283182977713765"
- "317889730886996471681592298058774155948285325398399674640645"
- "566475947058303746531133735308766583802401453804232106737787"
- "768035926272312574958173945816077962772826443125107145322971"
- "087220172175473177449006473180221085709470643042801004189714"
- "505520073568915195232936144169440163547568663500508335014169"
- "425050712038101167190534305435310279534374364467455668392421"
- "298604104431988622194699721632249712583483143417550152131186"
- "288827131347662976240916448058011869761525369135147129192405"
- "037216807405860168320999468074663117771890506566769628495813"
- "837909047220874786467663205170561835819702362482274133227483"
- "041342457179876653773960112367066273208176545656826800069574"
- "547599816180234764485446735080683694920665668954370505715843"
- "455110709594838989387382250502925336743830916124954071268053"
- "817964873658921319164268375226716232666274830656557657055342"
- "393552148933959057023293404027940528842591460490646295820755"
- "765633076707491896621769767253619370462005760078938144396953"
- "018925287611875441613896820035092167912718365454954166761481"
- "511451950826683236776211829914518353242818636196417736206010"
- "145109509967467266157037719712666871515644277723594273405669"
- "093518586548079997818085130346801040781966074621669280188633"
- "856299289656492439545033914935979634179552686396067914528336"
- "924678729357419403624798426886422277256625046946795576781709"
- "298737741510378578072199383561520569978396254537274419476511"
- "983161908266152660163477408756159700314280122283281906103567"
- "067156627222418787671312246698375736071215395722993294041012"
- "744631560602983489316782773611740570974847045870362276861106"
- "774130949410119612624380274679529647271294627526939490197641"
- "645383447755544661714281218489998189691140343327976729279891"
- "077101372792811842951182338559423852563331641533781432796742"
- "873181364582071661749961126386895359760476172215209100274274"
- "851619657020388051618654944574445941780637669570374280535432"
- "399157923698778110534174856844986671232161320063786308144771"
- "068130888985636449091787794632959555876880672773686838364706"
- "122084832995722603440165161942472322987408003421165899848443"
- "566885769845535074102932500939450142098799833145629484519298"
- "622410092757836842296697186410137365818568152771850732591405"
- "340248509247875448717161746544246407280913725135059228268131"
- "453903691495906528862410006254958805237716723952273129715780"
- "425223305517882562616830806755498203755676925741529569939445"
- "043490046171854709456730491532189688306135861932534903184518"
- "717706426178028900836080044604143054210332610482947502104703"
- "032028463320549525316174330585387581543470878545616097381416"
- "151451037487775797335749896735101048367502483255117772375025"
- "269956476872153642623856062175536913321594213515989059505375"
- "135183515207096576145781316398544325320022366962008554087665"
- "201050763789833457082359181807492731245904330245198691471329"
- "319324627030678762142685799400660305214140453863665517807185"
- "105354694177602424937823924511789133225030926924236498557565"
- "212794565582753399214908928688568628950225640472058381324292"
- "866007645368390366981937596341868992912741319342960598330486"
- "905946276235953206760977215407164729909506118583728562718724"
- "235732515062300426080741679038098122641980345051854359908213"
- "563779664847422505775922437272989231878912994048540484468227"
- "199282393172540734295329890896755037903724644870572648941076"
- "132423009124870700536763793881894969000042397318202298868940"
- "530196108237639578098191879486398269734335286831689173606327"
- "500405178476864790935386838169242131756729797688220656276969"
- "434749140204830563840068728357383111109865861495106613619153"
- "421725274090787422508800568671498311491210197298472420373359"
- "044400631309819996507004167876832936101195902219429743174557"
- "163362274547892397934880322990633165889175059124060202200452"
- "648684577182821651588921716304707095995039972827781680978274"
- "973838841958209215836456212939412000456040621743349981715350"
- "305133662772937143899882197561295808685181679238411733642697"
- "748892466944352640514849114619882270112386610376024527101889"
- "119004382703622803911212700216792471528793241950356942780714"
- "774957204475130171711488773121937363663487116301055073658645"
- "980695862570269762957141239436916216723776945522480189876803"
- "386123827956059851911061129713987960026363403936931196519733"
- "447116468545744829997003979525368783485129837821983305137448"
- "031689360764270759437872004895754351479890333865299565515706"
- "690471030702230767978923298480584997256328135245813726407464"
- "159230169328539541524724878662873185450510653764301207480799"
- "488602832618557388369552461881286225098286358672257087829660"
- "174231705350465091313887538950130611513878400895128618426154"
- "417299623157313010877679890009181366178705821415173309356192"
- "686429159835537275875876767919535369607142366878476025895389"
- "279625854409611312402187942369446302119309705461187450803468"
- "606366203101933821675974655441744883993796837164178911391575"
- "751463591650231265941242686108002052587760190005508737394014"
- "453031299745602214380618917954427803281262300931789525045703"
- "809571995929933387196864877982754748535701000330924817431298"
- "365273697561943437891318220691072831562717726798635382168915"
- "187137325209768346284183473712613689334546294053718697897526"
- "843398053681374508250012035211936425982389543291022583173280"
- "985811169783438836113209408147936547458073361625570571955232"
- "746103236016857123149307991441916732438322836596693687161268"
- "151183603534413030099360835441935243365729307681545065674775"
- "655582111435085683962037818795920337874290127531069511296530"
- "746308404963763022896682861683252995925040540038039172626001"
- "958340013361801588367655990575379797454237110701588716509764"
- "759243657077584013289594787913434812509790293636440469725564"
- "222946985585616708175959944099853232059130350099233608207347"
- "955460820122006976717445739825352919058005528371183277021250"
- "186916447745609162301667393077050176560656798672598371789181"
- "232542195795945358691713761483976100058707499929103557275695"
- "937295677892604799308353051124627278706035295473126217205599"
- "530746756205492173148619619059839609108464715691924592576481"
- "382126740168148453274964955074129767533813576349605298268179"
- "068244338581354855186516322703199278802275718580352103754433"
- "240982354636196477238624205575823556321375833700666021556412"
- "182358152808745703724362178773168996492870519432472065091133"
- "11767578126e-4966",
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-152,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x8p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-16448,
- false,
- 0x0p+0,
- 0x0p+0,
- 0x0p+0,
- 0x4p-1076,
- false,
- 0x0p+0,
- 0x4p-16496,
- 0x0p+0,
- 0x4p-16496),
- TEST ("-3.237587559719012555462219479113823276249784669017340504844"
- "942194598519770062059685508835745638324970127939070738424059"
- "838293609943191271023342555035986308991521396355375667467208"
- "367312819235870119724263252776995195727778126085574034035411"
- "017344128491238136414394551514178668780674015531193282296319"
- "913113495953953933831631032855605791532328598034154166422617"
- "226534880263244723830482289656875701701315902175019974435037"
- "627824356684033058939701577883356651733717468531204705842607"
- "568803666569711421917525834491783583598401321476176752039857"
- "173551930268891446850107760584333855521475305010940756813993"
- "214730850216669600967698749412592167692757446422169965426483"
- "919224341062751152057061076522973232731542382055087239368522"
- "167656194830741819605276971705738272393130698937532095725613"
- "383807312946395184980707534803490003540251394324459987958400"
- "939111001126190861523615485938285497714410609640798273816511"
- "769391568591823198476415765275534341709798367687043373145262"
- "933998108452661682659942586304978413812755518166239176614473"
- "815940025342279575304159493260770068030636885746695206392378"
- "276051948759263882079389379666940357441139816661913198656187"
- "703463519723262653223919257185751827493927586153153792077729"
- "913353547954808876263400200663495414360816863385220457719546"
- "338953323399286762099558324132103460225580066817535680886906"
- "060858264089074120360391613368274811868067637495154569071591"
- "624185979937989402513750464346904036668477876379544221432800"
- "037599944499161940321774835027752710681217554286366043661491"
- "013593886229615614494736186475932160549630939390542165126494"
- "166960681499481651861215529870984381726203476917507560266886"
- "692644952355421814201350137351435237036912624414444992497142"
- "303802423605897110605364956579914507108584002230524766331348"
- "271456591814078599780820974961968314684496428310691542272663"
- "818486132771177670874927831510002443658417608078383611526899"
- "905533629456904234997116303929427262032216072887961072267850"
- "618234492852606488522739744757845004694461812790342894353802"
- "938671928834585447328398711684245164703625580196678024410303"
- "542544534512706792134908369873605619756775207191558754413381"
- "571756431003248529020572648048946458999967788526617126349345"
- "966896362376841092268841417781414969315002419192181972121568"
- "811432459128737128140063645558482525300089060238860392371092"
- "102688097987915838860882370022268312322882235690785726190915"
- "062699382576041643741555139697348927957856990969985342299599"
- "797431503615312038393069808777315725367497595040966093808407"
- "117316369389112216628231869173217637452855462790553030636920"
- "487796465880633399632793882734473382168542596184679158149228"
- "725004404714293460752371865436947855237307240001863573081174"
- "929166645758276081272685156100195420794154740486637315823136"
- "798695124738873328565945598241199335059398955049459449844741"
- "098478330319112865980346771381982151154499846478545530650091"
- "824164892591396650703633600023191521502618379988693800703884"
- "555191647864959327260468892793195316578510173816406054364319"
- "294906641284764788384683586662382042642852654156477478700779"
- "123584369965723284711409361741235548687181052639639279285373"
- "139084165798451899763979500837428077782309910703522399860010"
- "310321116623028924118238023770381424894162717815296210097245"
- "221769714495449744327945091943394325259297771090128969600269"
- "822520904193880119094781214175887316220311309028456568749910"
- "010962366586834018403242866721783519806933018588077977626913"
- "774236680220258524711348037750591646286531625306510583751929"
- "280541119187219596706615736304036444366663256426643903386694"
- "536649648686380122198677895751002327229059364018755164517060"
- "321515091173358005987498359799467138817648881479418623694683"
- "454881683746841149715181334498096967702613110590140231345676"
- "956141227850879905018558219984441819798054463206764413100251"
- "255775535830770535620946159535406497134759043192647996190512"
- "978586496199656070707105117773853504277795024754647024165589"
- "129442822627147868917463795166386552921913398878270019905147"
- "510849518894114102536073369047160130990411626048426437835295"
- "683097278297774735181045158616674564080237813146623269215019"
- "613231938626758927531490945029356207933289363847181438902539"
- "297057969524961348607844569521442237914899100699610921669921"
- "572167164875488132527187949318543809703388178931170799769792"
- "886086681284964861608656928109305369539955846964197786677053"
- "847603962194721523867993048528558551380823699291873352033111"
- "096244814245789620930756114228971363838828108534030152031715"
- "929722499546436547773404017947035596936338462103946797525667"
- "033935433489292620531649199724400832489751788129365426568881"
- "328357966337292439204382537174357675404105580244018783685041"
- "224798457022189315692175787257287203633134300759209060570319"
- "508886475377719911176071302732819878165468592717406388218727"
- "585026352127436844762994722826390779737322113768842482160812"
- "973100323673863050234437722898796145596181862320550301285861"
- "980052194863780743808106946940079349630782676930197134206259"
- "739125377941060751175427888774493677478593805682322173891730"
- "311959284895178856039354015035864931073602059531001572891528"
- "828982167810245343327388887928886208615327002834690068636094"
- "325052251429781641267821367266715283643659749152264457938319"
- "185148303604827363623405060374573505789923003843438436174489"
- "383805098509083722050766328250349793203837202162624690093533"
- "478114438810603140565070517669964629947543608404988178019652"
- "088162307525611931821066493746994641048066011859814337589829"
- "896549720562117090677291541318153057715167624128318297771376"
- "531788973088699647168159229805877415594828532539839967464064"
- "556647594705830374653113373530876658380240145380423210673778"
- "776803592627231257495817394581607796277282644312510714532297"
- "108722017217547317744900647318022108570947064304280100418971"
- "450552007356891519523293614416944016354756866350050833501416"
- "942505071203810116719053430543531027953437436446745566839242"
- "129860410443198862219469972163224971258348314341755015213118"
- "628882713134766297624091644805801186976152536913514712919240"
- "503721680740586016832099946807466311777189050656676962849581"
- "383790904722087478646766320517056183581970236248227413322748"
- "304134245717987665377396011236706627320817654565682680006957"
- "454759981618023476448544673508068369492066566895437050571584"
- "345511070959483898938738225050292533674383091612495407126805"
- "381796487365892131916426837522671623266627483065655765705534"
- "239355214893395905702329340402794052884259146049064629582075"
- "576563307670749189662176976725361937046200576007893814439695"
- "301892528761187544161389682003509216791271836545495416676148"
- "151145195082668323677621182991451835324281863619641773620601"
- "014510950996746726615703771971266687151564427772359427340566"
- "909351858654807999781808513034680104078196607462166928018863"
- "385629928965649243954503391493597963417955268639606791452833"
- "692467872935741940362479842688642227725662504694679557678170"
- "929873774151037857807219938356152056997839625453727441947651"
- "198316190826615266016347740875615970031428012228328190610356"
- "706715662722241878767131224669837573607121539572299329404101"
- "274463156060298348931678277361174057097484704587036227686110"
- "677413094941011961262438027467952964727129462752693949019764"
- "164538344775554466171428121848999818969114034332797672927989"
- "107710137279281184295118233855942385256333164153378143279674"
- "287318136458207166174996112638689535976047617221520910027427"
- "485161965702038805161865494457444594178063766957037428053543"
- "239915792369877811053417485684498667123216132006378630814477"
- "106813088898563644909178779463295955587688067277368683836470"
- "612208483299572260344016516194247232298740800342116589984844"
- "356688576984553507410293250093945014209879983314562948451929"
- "862241009275783684229669718641013736581856815277185073259140"
- "534024850924787544871716174654424640728091372513505922826813"
- "145390369149590652886241000625495880523771672395227312971578"
- "042522330551788256261683080675549820375567692574152956993944"
- "504349004617185470945673049153218968830613586193253490318451"
- "871770642617802890083608004460414305421033261048294750210470"
- "303202846332054952531617433058538758154347087854561609738141"
- "615145103748777579733574989673510104836750248325511777237502"
- "526995647687215364262385606217553691332159421351598905950537"
- "513518351520709657614578131639854432532002236696200855408766"
- "520105076378983345708235918180749273124590433024519869147132"
- "931932462703067876214268579940066030521414045386366551780718"
- "510535469417760242493782392451178913322503092692423649855756"
- "521279456558275339921490892868856862895022564047205838132429"
- "286600764536839036698193759634186899291274131934296059833048"
- "690594627623595320676097721540716472990950611858372856271872"
- "423573251506230042608074167903809812264198034505185435990821"
- "356377966484742250577592243727298923187891299404854048446822"
- "719928239317254073429532989089675503790372464487057264894107"
- "613242300912487070053676379388189496900004239731820229886894"
- "053019610823763957809819187948639826973433528683168917360632"
- "750040517847686479093538683816924213175672979768822065627696"
- "943474914020483056384006872835738311110986586149510661361915"
- "342172527409078742250880056867149831149121019729847242037335"
- "904440063130981999650700416787683293610119590221942974317455"
- "716336227454789239793488032299063316588917505912406020220045"
- "264868457718282165158892171630470709599503997282778168097827"
- "497383884195820921583645621293941200045604062174334998171535"
- "030513366277293714389988219756129580868518167923841173364269"
- "774889246694435264051484911461988227011238661037602452710188"
- "911900438270362280391121270021679247152879324195035694278071"
- "477495720447513017171148877312193736366348711630105507365864"
- "598069586257026976295714123943691621672377694552248018987680"
- "338612382795605985191106112971398796002636340393693119651973"
- "344711646854574482999700397952536878348512983782198330513744"
- "803168936076427075943787200489575435147989033386529956551570"
- "669047103070223076797892329848058499725632813524581372640746"
- "415923016932853954152472487866287318545051065376430120748079"
- "948860283261855738836955246188128622509828635867225708782966"
- "017423170535046509131388753895013061151387840089512861842615"
- "441729962315731301087767989000918136617870582141517330935619"
- "268642915983553727587587676791953536960714236687847602589538"
- "927962585440961131240218794236944630211930970546118745080346"
- "860636620310193382167597465544174488399379683716417891139157"
- "575146359165023126594124268610800205258776019000550873739401"
- "445303129974560221438061891795442780328126230093178952504570"
- "380957199592993338719686487798275474853570100033092481743129"
- "836527369756194343789131822069107283156271772679863538216891"
- "518713732520976834628418347371261368933454629405371869789752"
- "684339805368137450825001203521193642598238954329102258317328"
- "098581116978343883611320940814793654745807336162557057195523"
- "274610323601685712314930799144191673243832283659669368716126"
- "815118360353441303009936083544193524336572930768154506567477"
- "565558211143508568396203781879592033787429012753106951129653"
- "074630840496376302289668286168325299592504054003803917262600"
- "195834001336180158836765599057537979745423711070158871650976"
- "475924365707758401328959478791343481250979029363644046972556"
- "422294698558561670817595994409985323205913035009923360820734"
- "795546082012200697671744573982535291905800552837118327702125"
- "018691644774560916230166739307705017656065679867259837178918"
- "123254219579594535869171376148397610005870749992910355727569"
- "593729567789260479930835305112462727870603529547312621720559"
- "953074675620549217314861961905983960910846471569192459257648"
- "138212674016814845327496495507412976753381357634960529826817"
- "906824433858135485518651632270319927880227571858035210375443"
- "324098235463619647723862420557582355632137583370066602155641"
- "218235815280874570372436217877316899649287051943247206509113"
- "311767578124e-4966",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16496,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0),
- TEST ("-3.237587559719012555462219479113823276249784669017340504844"
- "942194598519770062059685508835745638324970127939070738424059"
- "838293609943191271023342555035986308991521396355375667467208"
- "367312819235870119724263252776995195727778126085574034035411"
- "017344128491238136414394551514178668780674015531193282296319"
- "913113495953953933831631032855605791532328598034154166422617"
- "226534880263244723830482289656875701701315902175019974435037"
- "627824356684033058939701577883356651733717468531204705842607"
- "568803666569711421917525834491783583598401321476176752039857"
- "173551930268891446850107760584333855521475305010940756813993"
- "214730850216669600967698749412592167692757446422169965426483"
- "919224341062751152057061076522973232731542382055087239368522"
- "167656194830741819605276971705738272393130698937532095725613"
- "383807312946395184980707534803490003540251394324459987958400"
- "939111001126190861523615485938285497714410609640798273816511"
- "769391568591823198476415765275534341709798367687043373145262"
- "933998108452661682659942586304978413812755518166239176614473"
- "815940025342279575304159493260770068030636885746695206392378"
- "276051948759263882079389379666940357441139816661913198656187"
- "703463519723262653223919257185751827493927586153153792077729"
- "913353547954808876263400200663495414360816863385220457719546"
- "338953323399286762099558324132103460225580066817535680886906"
- "060858264089074120360391613368274811868067637495154569071591"
- "624185979937989402513750464346904036668477876379544221432800"
- "037599944499161940321774835027752710681217554286366043661491"
- "013593886229615614494736186475932160549630939390542165126494"
- "166960681499481651861215529870984381726203476917507560266886"
- "692644952355421814201350137351435237036912624414444992497142"
- "303802423605897110605364956579914507108584002230524766331348"
- "271456591814078599780820974961968314684496428310691542272663"
- "818486132771177670874927831510002443658417608078383611526899"
- "905533629456904234997116303929427262032216072887961072267850"
- "618234492852606488522739744757845004694461812790342894353802"
- "938671928834585447328398711684245164703625580196678024410303"
- "542544534512706792134908369873605619756775207191558754413381"
- "571756431003248529020572648048946458999967788526617126349345"
- "966896362376841092268841417781414969315002419192181972121568"
- "811432459128737128140063645558482525300089060238860392371092"
- "102688097987915838860882370022268312322882235690785726190915"
- "062699382576041643741555139697348927957856990969985342299599"
- "797431503615312038393069808777315725367497595040966093808407"
- "117316369389112216628231869173217637452855462790553030636920"
- "487796465880633399632793882734473382168542596184679158149228"
- "725004404714293460752371865436947855237307240001863573081174"
- "929166645758276081272685156100195420794154740486637315823136"
- "798695124738873328565945598241199335059398955049459449844741"
- "098478330319112865980346771381982151154499846478545530650091"
- "824164892591396650703633600023191521502618379988693800703884"
- "555191647864959327260468892793195316578510173816406054364319"
- "294906641284764788384683586662382042642852654156477478700779"
- "123584369965723284711409361741235548687181052639639279285373"
- "139084165798451899763979500837428077782309910703522399860010"
- "310321116623028924118238023770381424894162717815296210097245"
- "221769714495449744327945091943394325259297771090128969600269"
- "822520904193880119094781214175887316220311309028456568749910"
- "010962366586834018403242866721783519806933018588077977626913"
- "774236680220258524711348037750591646286531625306510583751929"
- "280541119187219596706615736304036444366663256426643903386694"
- "536649648686380122198677895751002327229059364018755164517060"
- "321515091173358005987498359799467138817648881479418623694683"
- "454881683746841149715181334498096967702613110590140231345676"
- "956141227850879905018558219984441819798054463206764413100251"
- "255775535830770535620946159535406497134759043192647996190512"
- "978586496199656070707105117773853504277795024754647024165589"
- "129442822627147868917463795166386552921913398878270019905147"
- "510849518894114102536073369047160130990411626048426437835295"
- "683097278297774735181045158616674564080237813146623269215019"
- "613231938626758927531490945029356207933289363847181438902539"
- "297057969524961348607844569521442237914899100699610921669921"
- "572167164875488132527187949318543809703388178931170799769792"
- "886086681284964861608656928109305369539955846964197786677053"
- "847603962194721523867993048528558551380823699291873352033111"
- "096244814245789620930756114228971363838828108534030152031715"
- "929722499546436547773404017947035596936338462103946797525667"
- "033935433489292620531649199724400832489751788129365426568881"
- "328357966337292439204382537174357675404105580244018783685041"
- "224798457022189315692175787257287203633134300759209060570319"
- "508886475377719911176071302732819878165468592717406388218727"
- "585026352127436844762994722826390779737322113768842482160812"
- "973100323673863050234437722898796145596181862320550301285861"
- "980052194863780743808106946940079349630782676930197134206259"
- "739125377941060751175427888774493677478593805682322173891730"
- "311959284895178856039354015035864931073602059531001572891528"
- "828982167810245343327388887928886208615327002834690068636094"
- "325052251429781641267821367266715283643659749152264457938319"
- "185148303604827363623405060374573505789923003843438436174489"
- "383805098509083722050766328250349793203837202162624690093533"
- "478114438810603140565070517669964629947543608404988178019652"
- "088162307525611931821066493746994641048066011859814337589829"
- "896549720562117090677291541318153057715167624128318297771376"
- "531788973088699647168159229805877415594828532539839967464064"
- "556647594705830374653113373530876658380240145380423210673778"
- "776803592627231257495817394581607796277282644312510714532297"
- "108722017217547317744900647318022108570947064304280100418971"
- "450552007356891519523293614416944016354756866350050833501416"
- "942505071203810116719053430543531027953437436446745566839242"
- "129860410443198862219469972163224971258348314341755015213118"
- "628882713134766297624091644805801186976152536913514712919240"
- "503721680740586016832099946807466311777189050656676962849581"
- "383790904722087478646766320517056183581970236248227413322748"
- "304134245717987665377396011236706627320817654565682680006957"
- "454759981618023476448544673508068369492066566895437050571584"
- "345511070959483898938738225050292533674383091612495407126805"
- "381796487365892131916426837522671623266627483065655765705534"
- "239355214893395905702329340402794052884259146049064629582075"
- "576563307670749189662176976725361937046200576007893814439695"
- "301892528761187544161389682003509216791271836545495416676148"
- "151145195082668323677621182991451835324281863619641773620601"
- "014510950996746726615703771971266687151564427772359427340566"
- "909351858654807999781808513034680104078196607462166928018863"
- "385629928965649243954503391493597963417955268639606791452833"
- "692467872935741940362479842688642227725662504694679557678170"
- "929873774151037857807219938356152056997839625453727441947651"
- "198316190826615266016347740875615970031428012228328190610356"
- "706715662722241878767131224669837573607121539572299329404101"
- "274463156060298348931678277361174057097484704587036227686110"
- "677413094941011961262438027467952964727129462752693949019764"
- "164538344775554466171428121848999818969114034332797672927989"
- "107710137279281184295118233855942385256333164153378143279674"
- "287318136458207166174996112638689535976047617221520910027427"
- "485161965702038805161865494457444594178063766957037428053543"
- "239915792369877811053417485684498667123216132006378630814477"
- "106813088898563644909178779463295955587688067277368683836470"
- "612208483299572260344016516194247232298740800342116589984844"
- "356688576984553507410293250093945014209879983314562948451929"
- "862241009275783684229669718641013736581856815277185073259140"
- "534024850924787544871716174654424640728091372513505922826813"
- "145390369149590652886241000625495880523771672395227312971578"
- "042522330551788256261683080675549820375567692574152956993944"
- "504349004617185470945673049153218968830613586193253490318451"
- "871770642617802890083608004460414305421033261048294750210470"
- "303202846332054952531617433058538758154347087854561609738141"
- "615145103748777579733574989673510104836750248325511777237502"
- "526995647687215364262385606217553691332159421351598905950537"
- "513518351520709657614578131639854432532002236696200855408766"
- "520105076378983345708235918180749273124590433024519869147132"
- "931932462703067876214268579940066030521414045386366551780718"
- "510535469417760242493782392451178913322503092692423649855756"
- "521279456558275339921490892868856862895022564047205838132429"
- "286600764536839036698193759634186899291274131934296059833048"
- "690594627623595320676097721540716472990950611858372856271872"
- "423573251506230042608074167903809812264198034505185435990821"
- "356377966484742250577592243727298923187891299404854048446822"
- "719928239317254073429532989089675503790372464487057264894107"
- "613242300912487070053676379388189496900004239731820229886894"
- "053019610823763957809819187948639826973433528683168917360632"
- "750040517847686479093538683816924213175672979768822065627696"
- "943474914020483056384006872835738311110986586149510661361915"
- "342172527409078742250880056867149831149121019729847242037335"
- "904440063130981999650700416787683293610119590221942974317455"
- "716336227454789239793488032299063316588917505912406020220045"
- "264868457718282165158892171630470709599503997282778168097827"
- "497383884195820921583645621293941200045604062174334998171535"
- "030513366277293714389988219756129580868518167923841173364269"
- "774889246694435264051484911461988227011238661037602452710188"
- "911900438270362280391121270021679247152879324195035694278071"
- "477495720447513017171148877312193736366348711630105507365864"
- "598069586257026976295714123943691621672377694552248018987680"
- "338612382795605985191106112971398796002636340393693119651973"
- "344711646854574482999700397952536878348512983782198330513744"
- "803168936076427075943787200489575435147989033386529956551570"
- "669047103070223076797892329848058499725632813524581372640746"
- "415923016932853954152472487866287318545051065376430120748079"
- "948860283261855738836955246188128622509828635867225708782966"
- "017423170535046509131388753895013061151387840089512861842615"
- "441729962315731301087767989000918136617870582141517330935619"
- "268642915983553727587587676791953536960714236687847602589538"
- "927962585440961131240218794236944630211930970546118745080346"
- "860636620310193382167597465544174488399379683716417891139157"
- "575146359165023126594124268610800205258776019000550873739401"
- "445303129974560221438061891795442780328126230093178952504570"
- "380957199592993338719686487798275474853570100033092481743129"
- "836527369756194343789131822069107283156271772679863538216891"
- "518713732520976834628418347371261368933454629405371869789752"
- "684339805368137450825001203521193642598238954329102258317328"
- "098581116978343883611320940814793654745807336162557057195523"
- "274610323601685712314930799144191673243832283659669368716126"
- "815118360353441303009936083544193524336572930768154506567477"
- "565558211143508568396203781879592033787429012753106951129653"
- "074630840496376302289668286168325299592504054003803917262600"
- "195834001336180158836765599057537979745423711070158871650976"
- "475924365707758401328959478791343481250979029363644046972556"
- "422294698558561670817595994409985323205913035009923360820734"
- "795546082012200697671744573982535291905800552837118327702125"
- "018691644774560916230166739307705017656065679867259837178918"
- "123254219579594535869171376148397610005870749992910355727569"
- "593729567789260479930835305112462727870603529547312621720559"
- "953074675620549217314861961905983960910846471569192459257648"
- "138212674016814845327496495507412976753381357634960529826817"
- "906824433858135485518651632270319927880227571858035210375443"
- "324098235463619647723862420557582355632137583370066602155641"
- "218235815280874570372436217877316899649287051943247206509113"
- "311767578125e-4966",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16496,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0),
- TEST ("-3.237587559719012555462219479113823276249784669017340504844"
- "942194598519770062059685508835745638324970127939070738424059"
- "838293609943191271023342555035986308991521396355375667467208"
- "367312819235870119724263252776995195727778126085574034035411"
- "017344128491238136414394551514178668780674015531193282296319"
- "913113495953953933831631032855605791532328598034154166422617"
- "226534880263244723830482289656875701701315902175019974435037"
- "627824356684033058939701577883356651733717468531204705842607"
- "568803666569711421917525834491783583598401321476176752039857"
- "173551930268891446850107760584333855521475305010940756813993"
- "214730850216669600967698749412592167692757446422169965426483"
- "919224341062751152057061076522973232731542382055087239368522"
- "167656194830741819605276971705738272393130698937532095725613"
- "383807312946395184980707534803490003540251394324459987958400"
- "939111001126190861523615485938285497714410609640798273816511"
- "769391568591823198476415765275534341709798367687043373145262"
- "933998108452661682659942586304978413812755518166239176614473"
- "815940025342279575304159493260770068030636885746695206392378"
- "276051948759263882079389379666940357441139816661913198656187"
- "703463519723262653223919257185751827493927586153153792077729"
- "913353547954808876263400200663495414360816863385220457719546"
- "338953323399286762099558324132103460225580066817535680886906"
- "060858264089074120360391613368274811868067637495154569071591"
- "624185979937989402513750464346904036668477876379544221432800"
- "037599944499161940321774835027752710681217554286366043661491"
- "013593886229615614494736186475932160549630939390542165126494"
- "166960681499481651861215529870984381726203476917507560266886"
- "692644952355421814201350137351435237036912624414444992497142"
- "303802423605897110605364956579914507108584002230524766331348"
- "271456591814078599780820974961968314684496428310691542272663"
- "818486132771177670874927831510002443658417608078383611526899"
- "905533629456904234997116303929427262032216072887961072267850"
- "618234492852606488522739744757845004694461812790342894353802"
- "938671928834585447328398711684245164703625580196678024410303"
- "542544534512706792134908369873605619756775207191558754413381"
- "571756431003248529020572648048946458999967788526617126349345"
- "966896362376841092268841417781414969315002419192181972121568"
- "811432459128737128140063645558482525300089060238860392371092"
- "102688097987915838860882370022268312322882235690785726190915"
- "062699382576041643741555139697348927957856990969985342299599"
- "797431503615312038393069808777315725367497595040966093808407"
- "117316369389112216628231869173217637452855462790553030636920"
- "487796465880633399632793882734473382168542596184679158149228"
- "725004404714293460752371865436947855237307240001863573081174"
- "929166645758276081272685156100195420794154740486637315823136"
- "798695124738873328565945598241199335059398955049459449844741"
- "098478330319112865980346771381982151154499846478545530650091"
- "824164892591396650703633600023191521502618379988693800703884"
- "555191647864959327260468892793195316578510173816406054364319"
- "294906641284764788384683586662382042642852654156477478700779"
- "123584369965723284711409361741235548687181052639639279285373"
- "139084165798451899763979500837428077782309910703522399860010"
- "310321116623028924118238023770381424894162717815296210097245"
- "221769714495449744327945091943394325259297771090128969600269"
- "822520904193880119094781214175887316220311309028456568749910"
- "010962366586834018403242866721783519806933018588077977626913"
- "774236680220258524711348037750591646286531625306510583751929"
- "280541119187219596706615736304036444366663256426643903386694"
- "536649648686380122198677895751002327229059364018755164517060"
- "321515091173358005987498359799467138817648881479418623694683"
- "454881683746841149715181334498096967702613110590140231345676"
- "956141227850879905018558219984441819798054463206764413100251"
- "255775535830770535620946159535406497134759043192647996190512"
- "978586496199656070707105117773853504277795024754647024165589"
- "129442822627147868917463795166386552921913398878270019905147"
- "510849518894114102536073369047160130990411626048426437835295"
- "683097278297774735181045158616674564080237813146623269215019"
- "613231938626758927531490945029356207933289363847181438902539"
- "297057969524961348607844569521442237914899100699610921669921"
- "572167164875488132527187949318543809703388178931170799769792"
- "886086681284964861608656928109305369539955846964197786677053"
- "847603962194721523867993048528558551380823699291873352033111"
- "096244814245789620930756114228971363838828108534030152031715"
- "929722499546436547773404017947035596936338462103946797525667"
- "033935433489292620531649199724400832489751788129365426568881"
- "328357966337292439204382537174357675404105580244018783685041"
- "224798457022189315692175787257287203633134300759209060570319"
- "508886475377719911176071302732819878165468592717406388218727"
- "585026352127436844762994722826390779737322113768842482160812"
- "973100323673863050234437722898796145596181862320550301285861"
- "980052194863780743808106946940079349630782676930197134206259"
- "739125377941060751175427888774493677478593805682322173891730"
- "311959284895178856039354015035864931073602059531001572891528"
- "828982167810245343327388887928886208615327002834690068636094"
- "325052251429781641267821367266715283643659749152264457938319"
- "185148303604827363623405060374573505789923003843438436174489"
- "383805098509083722050766328250349793203837202162624690093533"
- "478114438810603140565070517669964629947543608404988178019652"
- "088162307525611931821066493746994641048066011859814337589829"
- "896549720562117090677291541318153057715167624128318297771376"
- "531788973088699647168159229805877415594828532539839967464064"
- "556647594705830374653113373530876658380240145380423210673778"
- "776803592627231257495817394581607796277282644312510714532297"
- "108722017217547317744900647318022108570947064304280100418971"
- "450552007356891519523293614416944016354756866350050833501416"
- "942505071203810116719053430543531027953437436446745566839242"
- "129860410443198862219469972163224971258348314341755015213118"
- "628882713134766297624091644805801186976152536913514712919240"
- "503721680740586016832099946807466311777189050656676962849581"
- "383790904722087478646766320517056183581970236248227413322748"
- "304134245717987665377396011236706627320817654565682680006957"
- "454759981618023476448544673508068369492066566895437050571584"
- "345511070959483898938738225050292533674383091612495407126805"
- "381796487365892131916426837522671623266627483065655765705534"
- "239355214893395905702329340402794052884259146049064629582075"
- "576563307670749189662176976725361937046200576007893814439695"
- "301892528761187544161389682003509216791271836545495416676148"
- "151145195082668323677621182991451835324281863619641773620601"
- "014510950996746726615703771971266687151564427772359427340566"
- "909351858654807999781808513034680104078196607462166928018863"
- "385629928965649243954503391493597963417955268639606791452833"
- "692467872935741940362479842688642227725662504694679557678170"
- "929873774151037857807219938356152056997839625453727441947651"
- "198316190826615266016347740875615970031428012228328190610356"
- "706715662722241878767131224669837573607121539572299329404101"
- "274463156060298348931678277361174057097484704587036227686110"
- "677413094941011961262438027467952964727129462752693949019764"
- "164538344775554466171428121848999818969114034332797672927989"
- "107710137279281184295118233855942385256333164153378143279674"
- "287318136458207166174996112638689535976047617221520910027427"
- "485161965702038805161865494457444594178063766957037428053543"
- "239915792369877811053417485684498667123216132006378630814477"
- "106813088898563644909178779463295955587688067277368683836470"
- "612208483299572260344016516194247232298740800342116589984844"
- "356688576984553507410293250093945014209879983314562948451929"
- "862241009275783684229669718641013736581856815277185073259140"
- "534024850924787544871716174654424640728091372513505922826813"
- "145390369149590652886241000625495880523771672395227312971578"
- "042522330551788256261683080675549820375567692574152956993944"
- "504349004617185470945673049153218968830613586193253490318451"
- "871770642617802890083608004460414305421033261048294750210470"
- "303202846332054952531617433058538758154347087854561609738141"
- "615145103748777579733574989673510104836750248325511777237502"
- "526995647687215364262385606217553691332159421351598905950537"
- "513518351520709657614578131639854432532002236696200855408766"
- "520105076378983345708235918180749273124590433024519869147132"
- "931932462703067876214268579940066030521414045386366551780718"
- "510535469417760242493782392451178913322503092692423649855756"
- "521279456558275339921490892868856862895022564047205838132429"
- "286600764536839036698193759634186899291274131934296059833048"
- "690594627623595320676097721540716472990950611858372856271872"
- "423573251506230042608074167903809812264198034505185435990821"
- "356377966484742250577592243727298923187891299404854048446822"
- "719928239317254073429532989089675503790372464487057264894107"
- "613242300912487070053676379388189496900004239731820229886894"
- "053019610823763957809819187948639826973433528683168917360632"
- "750040517847686479093538683816924213175672979768822065627696"
- "943474914020483056384006872835738311110986586149510661361915"
- "342172527409078742250880056867149831149121019729847242037335"
- "904440063130981999650700416787683293610119590221942974317455"
- "716336227454789239793488032299063316588917505912406020220045"
- "264868457718282165158892171630470709599503997282778168097827"
- "497383884195820921583645621293941200045604062174334998171535"
- "030513366277293714389988219756129580868518167923841173364269"
- "774889246694435264051484911461988227011238661037602452710188"
- "911900438270362280391121270021679247152879324195035694278071"
- "477495720447513017171148877312193736366348711630105507365864"
- "598069586257026976295714123943691621672377694552248018987680"
- "338612382795605985191106112971398796002636340393693119651973"
- "344711646854574482999700397952536878348512983782198330513744"
- "803168936076427075943787200489575435147989033386529956551570"
- "669047103070223076797892329848058499725632813524581372640746"
- "415923016932853954152472487866287318545051065376430120748079"
- "948860283261855738836955246188128622509828635867225708782966"
- "017423170535046509131388753895013061151387840089512861842615"
- "441729962315731301087767989000918136617870582141517330935619"
- "268642915983553727587587676791953536960714236687847602589538"
- "927962585440961131240218794236944630211930970546118745080346"
- "860636620310193382167597465544174488399379683716417891139157"
- "575146359165023126594124268610800205258776019000550873739401"
- "445303129974560221438061891795442780328126230093178952504570"
- "380957199592993338719686487798275474853570100033092481743129"
- "836527369756194343789131822069107283156271772679863538216891"
- "518713732520976834628418347371261368933454629405371869789752"
- "684339805368137450825001203521193642598238954329102258317328"
- "098581116978343883611320940814793654745807336162557057195523"
- "274610323601685712314930799144191673243832283659669368716126"
- "815118360353441303009936083544193524336572930768154506567477"
- "565558211143508568396203781879592033787429012753106951129653"
- "074630840496376302289668286168325299592504054003803917262600"
- "195834001336180158836765599057537979745423711070158871650976"
- "475924365707758401328959478791343481250979029363644046972556"
- "422294698558561670817595994409985323205913035009923360820734"
- "795546082012200697671744573982535291905800552837118327702125"
- "018691644774560916230166739307705017656065679867259837178918"
- "123254219579594535869171376148397610005870749992910355727569"
- "593729567789260479930835305112462727870603529547312621720559"
- "953074675620549217314861961905983960910846471569192459257648"
- "138212674016814845327496495507412976753381357634960529826817"
- "906824433858135485518651632270319927880227571858035210375443"
- "324098235463619647723862420557582355632137583370066602155641"
- "218235815280874570372436217877316899649287051943247206509113"
- "311767578126e-4966",
- false,
- -0x8p-152,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x8p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16448,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-1076,
- -0x0p+0,
- -0x0p+0,
- -0x0p+0,
- false,
- -0x4p-16496,
- -0x4p-16496,
- -0x0p+0,
- -0x0p+0),
-};
diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c
deleted file mode 100644
index 73603e6158..0000000000
--- a/stdlib/tst-strtod-round-skeleton.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/* Test for correct rounding of results of strtod and related
- functions.
- Copyright (C) 2012-2017 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/>. */
-
-/* Defining _LIBC_TEST ensures long double math functions are
- declared in the headers. */
-#define _LIBC_TEST 1
-#include <fenv.h>
-#include <float.h>
-#include <math.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math-tests.h>
-
-#include "tst-strtod.h"
-
-/* Non-standard macros expected to be externally defined:
-
- L_(str): Pastes the appropriate modifier to a string literal str.
-
- FNPFX: Expands to the correct prefix for the strtod equivalent
- of type CHAR. (e.g str or wcs).
-
- CHAR: Expands to the string type being tested (e.g wchar_t or char).
-
- STRM: Expands to a string literal suitable for printing CHAR* via
- printf (e.g "%s" or "%ls"). */
-
-#define _CONCAT(a, b) a ## b
-#define CONCAT(a, b) _CONCAT (a, b)
-
-#define STRTO(x) CONCAT (CONCAT (FNPFX, to), x)
-
-#if LDBL_MANT_DIG == 106 && LDBL_MAX_EXP == 1024
-/* This is a stupid hack for IBM long double. This test ignores
- inexact values for long double due to the limitations of the
- format. This ensures rounding tests are ignored. */
-# undef ROUNDING_TESTS_long_double
-# define ROUNDING_TESTS_long_double(x) 0
-#endif
-
-/* Generator to create an FTYPE member variabled named FSUF
- used to populate struct member variables. */
-#define FTYPE_MEMBER(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
- FTYPE FSUF;
-
-/* Likewise, but each member is of type bool. */
-#define BOOL_MEMBER(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
- bool FSUF;
-
-#define STRUCT_FOREACH_FLOAT_FTYPE GEN_TEST_STRTOD_FOREACH (FTYPE_MEMBER)
-#define STRUCT_FOREACH_FLOAT_BOOL GEN_TEST_STRTOD_FOREACH (BOOL_MEMBER)
-
-/* Define the long double choose (CHOOSE_ld) macro
- to select the appropriate generated long double
- value from the generated test data. */
-#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-/* This is for the long double == double format. */
-# define CHOOSE_ld(f,d,...) d
-#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16381
-/* This is for the Intel extended float format. */
-# define CHOOSE_ld(f,d,ld64i,...) ld64i
-#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16382
-/* This is for the Motorola extended float format. */
-# define CHOOSE_ld(f,d,ld64i,ld64m,...) ld64m
-#elif LDBL_MANT_DIG == 106 && LDBL_MAX_EXP == 1024
-/* This is for the IBM extended double format. */
-# define CHOOSE_ld(f,d,ld64i,ld64m,ld106,...) ld106
-#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
-/* This is for the IEEE binary128 format. */
-# define CHOOSE_ld(f,d,ld64i,ld64m,ld106,ld113,...) ld113
-#else
-# error "unknown long double format"
-#endif
-
-/* Add type specific choosing macros below. */
-#define CHOOSE_f(f,...) f
-#define CHOOSE_d(f,d,...) d
-/* long double is special, and handled above. */
-
-/* Selector for expected result field of a given type. */
-#define _ENTRY(FSUF, FTYPE, FTOSTR, LSUF, CSUF, ...) \
- CONCAT (CHOOSE_ ## FSUF (__VA_ARGS__), LSUF),
-#define ENTRY(...) \
- GEN_TEST_STRTOD_FOREACH (_ENTRY, __VA_ARGS__)
-
-/* Selector for boolean exact tag of expected results. */
-#define _XNTRY(FSUF, FTYPE, FTOSTR, LSUF, CSUF, ...) \
- CHOOSE_ ## FSUF (__VA_ARGS__),
-#define XNTRY(...) \
- GEN_TEST_STRTOD_FOREACH (_XNTRY, __VA_ARGS__)
-
-/* This is hacky way around the seemingly unavoidable macro
- expansion of the INFINITY or HUGE_VAL like macros in the
- above. It is assumed the compiler will implicitly convert
- the infinity correctly. */
-#define INF INFINITY + 0.0
-
-/* This macro is used in conjunction with the output from the
- gen-tst-strtod-round utility to select the appropriately
- rounded long double value for a given format. */
-#define TEST(s, \
- fx, fd, fn, fz, fu, \
- dx, dd, dn, dz, du, \
- ld64ix, ld64id, ld64in, ld64iz, ld64iu, \
- ld64mx, ld64md, ld64mn, ld64mz, ld64mu, \
- ld106x, ld106d, ld106n, ld106z, ld106u, \
- ld113x, ld113d, ld113n, ld113z, ld113u) \
- { \
- L_ (s), \
- { XNTRY (fx, dx, ld64ix, ld64mx, ld106x, ld113x) }, \
- { \
- { ENTRY (fn, dn, ld64in, ld64mn, ld106n, ld113n) }, \
- { ENTRY (fd, dd, ld64id, ld64md, ld106d, ld113d) }, \
- { ENTRY (fz, dz, ld64iz, ld64mz, ld106z, ld113z) }, \
- { ENTRY (fu, du, ld64iu, ld64mu, ld106u, ld113u) } \
- } \
- }
-
-struct test_exactness
- {
- STRUCT_FOREACH_FLOAT_BOOL
- };
-
-struct test_results
- {
- STRUCT_FOREACH_FLOAT_FTYPE
- };
-
-struct test {
- const CHAR *s;
- struct test_exactness exact;
- struct test_results r[4];
-};
-
-/* Include the generated test data. */
-#include "tst-strtod-round-data.h"
-
-#define STRX(x) #x
-#define STR(x) STRX (x)
-#define FNPFXS STR (FNPFX)
-
-#ifndef FE_INEXACT
-# define FE_INEXACT 0
-#endif
-
-#define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
-{ \
- feclearexcept (FE_INEXACT); \
- FTYPE f = STRTO (FSUF) (s, NULL); \
- if (f != expected->FSUF \
- || (copysign ## CSUF) (1.0 ## LSUF, f) \
- != (copysign ## CSUF) (1.0 ## LSUF, expected->FSUF)) \
- { \
- char efstr[FSTRLENMAX]; \
- char fstr[FSTRLENMAX]; \
- FTOSTR (efstr, FSTRLENMAX, "%a", expected->FSUF); \
- FTOSTR (fstr, FSTRLENMAX, "%a", f); \
- printf (FNPFXS "to" #FSUF " (" STRM ") returned %s not " \
- "%s (%s)\n", s, fstr, efstr, mode_name); \
- if (ROUNDING_TESTS (FTYPE, rnd_mode) || exact->FSUF) \
- result = 1; \
- else \
- printf ("ignoring this inexact result\n"); \
- } \
- else if (FE_INEXACT != 0) \
- { \
- bool inexact_raised = fetestexcept (FE_INEXACT) != 0; \
- if (inexact_raised != !exact->FSUF) \
- { \
- printf (FNPFXS "to" #FSUF " (" STRM ") inexact %d " \
- "not %d\n", s, inexact_raised, !exact->FSUF); \
- if (EXCEPTION_TESTS (FTYPE)) \
- result = 1; \
- else \
- printf ("ignoring this exception error\n"); \
- } \
- } \
-}
-
-static int
-test_in_one_mode (const CHAR *s, const struct test_results *expected,
- const struct test_exactness *exact, const char *mode_name,
- int rnd_mode)
-{
- int result = 0;
- GEN_TEST_STRTOD_FOREACH (GEN_ONE_TEST)
- return result;
-}
-
-static const struct fetestmodes
- {
- const char *mode_name;
- int rnd_mode;
- int rnd_i; /* Corresponding index into r array of struct test. */
- } modes[] = {
- { "default rounding mode", FE_TONEAREST, 0 },
-#ifdef FE_DOWNWARD
- { "FE_DOWNWARD", FE_DOWNWARD, 1 },
-#endif
-#ifdef FE_TOWARDZERO
- { "FE_TOWARDZERO", FE_TOWARDZERO, 2 },
-#endif
-#ifdef FE_UPWARD
- { "FE_UPWARD", FE_UPWARD, 3 },
-#endif
- {}
-};
-
-static int
-do_test (void)
-{
- int save_round_mode __attribute__ ((unused)) = fegetround ();
- int result = 0;
- for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
- {
- result |= test_in_one_mode (tests[i].s, &tests[i].r[modes[0].rnd_i],
- &tests[i].exact, modes[0].mode_name,
- modes[0].rnd_mode);
- for (const struct fetestmodes *m = &modes[1]; m->mode_name != NULL; m++)
- {
- if (!fesetround (m->rnd_mode))
- {
- result |= test_in_one_mode (tests[i].s, &tests[i].r[m->rnd_i],
- &tests[i].exact, m->mode_name,
- m->rnd_mode);
- fesetround (save_round_mode);
- }
- }
- }
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtod-round.c b/stdlib/tst-strtod-round.c
deleted file mode 100644
index 2990d544d4..0000000000
--- a/stdlib/tst-strtod-round.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* char shim for tst-strtod-round-skeleton.c.
- Copyright (C) 2016-2017 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 L_(str) str
-#define FNPFX str
-#define CHAR char
-#define STRM "%s"
-
-#include <tst-strtod-round-skeleton.c>
diff --git a/stdlib/tst-strtod-underflow.c b/stdlib/tst-strtod-underflow.c
deleted file mode 100644
index f623a6be90..0000000000
--- a/stdlib/tst-strtod-underflow.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/* Test for strtod handling of arguments that may cause floating-point
- underflow.
- Copyright (C) 2012-2017 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 <fenv.h>
-#include <float.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <tininess.h>
-
-enum underflow_case
- {
- /* Result is exact or outside the subnormal range. */
- UNDERFLOW_NONE,
- /* Result has magnitude at most half way between the largest
- subnormal value and the smallest positive normal value, and is
- not exact, so underflows in all rounding modes and independent
- of how tininess is detected. */
- UNDERFLOW_ALWAYS,
- /* Result is positive, with magnitude larger than half way between
- the largest subnormal value and the least positive normal
- value, but would underflow when rounded to nearest to normal
- precision, so underflows after rounding in all modes except
- rounding upward. */
- UNDERFLOW_EXCEPT_UPWARD,
- /* Likewise, for a negative result, underflowing after rounding
- except when rounding downward. */
- UNDERFLOW_EXCEPT_DOWNWARD,
- /* Result is positive, with magnitude at least three quarters of
- the way from the largest subnormal value to the smallest
- positive normal value, so underflows after rounding only when
- rounding downward or toward zero. */
- UNDERFLOW_ONLY_DOWNWARD_ZERO,
- /* Likewise, for a negative result, underflowing after rounding
- only when rounding upward or toward zero. */
- UNDERFLOW_ONLY_UPWARD_ZERO,
- };
-
-struct test
-{
- const char *s;
- enum underflow_case c;
-};
-
-static const struct test tests[] =
- {
- { "0x1p-1022", UNDERFLOW_NONE },
- { "-0x1p-1022", UNDERFLOW_NONE },
- { "0x0p-10000000000000000000000000", UNDERFLOW_NONE },
- { "-0x0p-10000000000000000000000000", UNDERFLOW_NONE },
- { "0x1p-10000000000000000000000000", UNDERFLOW_ALWAYS },
- { "-0x1p-10000000000000000000000000", UNDERFLOW_ALWAYS },
- { "0x1.000000000000000000001p-1022", UNDERFLOW_NONE },
- { "-0x1.000000000000000000001p-1022", UNDERFLOW_NONE },
- { "0x1p-1075", UNDERFLOW_ALWAYS },
- { "-0x1p-1075", UNDERFLOW_ALWAYS },
- { "0x1p-1023", UNDERFLOW_NONE },
- { "-0x1p-1023", UNDERFLOW_NONE },
- { "0x1p-1074", UNDERFLOW_NONE },
- { "-0x1p-1074", UNDERFLOW_NONE },
- { "0x1.ffffffffffffep-1023", UNDERFLOW_NONE },
- { "-0x1.ffffffffffffep-1023", UNDERFLOW_NONE },
- { "0x1.fffffffffffffp-1023", UNDERFLOW_ALWAYS },
- { "-0x1.fffffffffffffp-1023", UNDERFLOW_ALWAYS },
- { "0x1.fffffffffffff0001p-1023", UNDERFLOW_EXCEPT_UPWARD },
- { "-0x1.fffffffffffff0001p-1023", UNDERFLOW_EXCEPT_DOWNWARD },
- { "0x1.fffffffffffff7fffp-1023", UNDERFLOW_EXCEPT_UPWARD },
- { "-0x1.fffffffffffff7fffp-1023", UNDERFLOW_EXCEPT_DOWNWARD },
- { "0x1.fffffffffffff8p-1023", UNDERFLOW_ONLY_DOWNWARD_ZERO },
- { "-0x1.fffffffffffff8p-1023", UNDERFLOW_ONLY_UPWARD_ZERO },
- { "0x1.fffffffffffffffffp-1023", UNDERFLOW_ONLY_DOWNWARD_ZERO },
- { "-0x1.fffffffffffffffffp-1023", UNDERFLOW_ONLY_UPWARD_ZERO },
- };
-
-/* Return whether to expect underflow from a particular testcase, in a
- given rounding mode. */
-
-static bool
-expect_underflow (enum underflow_case c, int rm)
-{
- if (c == UNDERFLOW_NONE)
- return false;
- if (c == UNDERFLOW_ALWAYS)
- return true;
- if (TININESS_AFTER_ROUNDING)
- {
- switch (rm)
- {
-#ifdef FE_DOWNWARD
- case FE_DOWNWARD:
- return (c == UNDERFLOW_EXCEPT_UPWARD
- || c == UNDERFLOW_ONLY_DOWNWARD_ZERO);
-#endif
-
-#ifdef FE_TOWARDZERO
- case FE_TOWARDZERO:
- return true;
-#endif
-
-#ifdef FE_UPWARD
- case FE_UPWARD:
- return (c == UNDERFLOW_EXCEPT_DOWNWARD
- || c == UNDERFLOW_ONLY_UPWARD_ZERO);
-#endif
-
- default:
- return (c == UNDERFLOW_EXCEPT_UPWARD
- || c == UNDERFLOW_EXCEPT_DOWNWARD);
- }
- }
- else
- return true;
-}
-
-static bool support_underflow_exception = false;
-volatile double d = DBL_MIN;
-volatile double dd;
-
-static int
-test_in_one_mode (const char *s, enum underflow_case c, int rm,
- const char *mode_name)
-{
- int result = 0;
- feclearexcept (FE_ALL_EXCEPT);
- errno = 0;
- double d = strtod (s, NULL);
- int got_errno = errno;
-#ifdef FE_UNDERFLOW
- bool got_fe_underflow = fetestexcept (FE_UNDERFLOW) != 0;
-#else
- bool got_fe_underflow = false;
-#endif
- printf ("strtod (%s) (%s) returned %a, errno = %d, %sunderflow exception\n",
- s, mode_name, d, got_errno, got_fe_underflow ? "" : "no ");
- bool this_expect_underflow = expect_underflow (c, rm);
- if (got_errno != 0 && got_errno != ERANGE)
- {
- puts ("FAIL: errno neither 0 nor ERANGE");
- result = 1;
- }
- else if (this_expect_underflow != (errno == ERANGE))
- {
- puts ("FAIL: underflow from errno differs from expectations");
- result = 1;
- }
- if (support_underflow_exception && got_fe_underflow != this_expect_underflow)
- {
- puts ("FAIL: underflow from exceptions differs from expectations");
- result = 1;
- }
- return result;
-}
-
-static int
-do_test (void)
-{
- int save_round_mode __attribute__ ((unused)) = fegetround ();
- int result = 0;
-#ifdef FE_TONEAREST
- const int fe_tonearest = FE_TONEAREST;
-#else
- const int fe_tonearest = 0;
-# if defined FE_DOWNWARD || defined FE_TOWARDZERO || defined FE_UPWARD
-# error "FE_TONEAREST not defined, but another rounding mode is"
-# endif
-#endif
-#ifdef FE_UNDERFLOW
- feclearexcept (FE_ALL_EXCEPT);
- dd = d * d;
- if (fetestexcept (FE_UNDERFLOW))
- support_underflow_exception = true;
- else
- puts ("underflow exception not supported at runtime, only testing errno");
-#endif
- for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
- {
- result |= test_in_one_mode (tests[i].s, tests[i].c, fe_tonearest,
- "default rounding mode");
-#ifdef FE_DOWNWARD
- if (!fesetround (FE_DOWNWARD))
- {
- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_DOWNWARD,
- "FE_DOWNWARD");
- fesetround (save_round_mode);
- }
-#endif
-#ifdef FE_TOWARDZERO
- if (!fesetround (FE_TOWARDZERO))
- {
- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_TOWARDZERO,
- "FE_TOWARDZERO");
- fesetround (save_round_mode);
- }
-#endif
-#ifdef FE_UPWARD
- if (!fesetround (FE_UPWARD))
- {
- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_UPWARD,
- "FE_UPWARD");
- fesetround (save_round_mode);
- }
-#endif
- }
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtod.c b/stdlib/tst-strtod.c
deleted file mode 100644
index 1ab7f8a5aa..0000000000
--- a/stdlib/tst-strtod.c
+++ /dev/null
@@ -1,218 +0,0 @@
-/* Basic tests for strtod.
- Copyright (C) 1991-2017 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 <locale.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <math.h>
-
-struct ltest
- {
- const char *str; /* Convert this. */
- double expect; /* To get this. */
- char left; /* With this left over. */
- int err; /* And this in errno. */
- };
-static const struct ltest tests[] =
- {
- { "12.345", 12.345, '\0', 0 },
- { "12.345e19", 12.345e19, '\0', 0 },
- { "-.1e+9", -.1e+9, '\0', 0 },
- { ".125", .125, '\0', 0 },
- { "1e20", 1e20, '\0', 0 },
- { "0e-19", 0, '\0', 0 },
- { "4\00012", 4.0, '\0', 0 },
- { "5.9e-76", 5.9e-76, '\0', 0 },
- { "0x1.4p+3", 10.0, '\0', 0 },
- { "0xAp0", 10.0, '\0', 0 },
- { "0x0Ap0", 10.0, '\0', 0 },
- { "0x0A", 10.0, '\0', 0 },
- { "0xA0", 160.0, '\0', 0 },
- { "0x0.A0p8", 160.0, '\0', 0 },
- { "0x0.50p9", 160.0, '\0', 0 },
- { "0x0.28p10", 160.0, '\0', 0 },
- { "0x0.14p11", 160.0, '\0', 0 },
- { "0x0.0A0p12", 160.0, '\0', 0 },
- { "0x0.050p13", 160.0, '\0', 0 },
- { "0x0.028p14", 160.0, '\0', 0 },
- { "0x0.014p15", 160.0, '\0', 0 },
- { "0x00.00A0p16", 160.0, '\0', 0 },
- { "0x00.0050p17", 160.0, '\0', 0 },
- { "0x00.0028p18", 160.0, '\0', 0 },
- { "0x00.0014p19", 160.0, '\0', 0 },
- { "0x1p-1023",
- 1.11253692925360069154511635866620203210960799023116591527666e-308,
- '\0', 0 },
- { "0x0.8p-1022",
- 1.11253692925360069154511635866620203210960799023116591527666e-308,
- '\0', 0 },
- { "Inf", HUGE_VAL, '\0', 0 },
- { "-Inf", -HUGE_VAL, '\0', 0 },
- { "+InFiNiTy", HUGE_VAL, '\0', 0 },
- { "0x80000Ap-23", 0x80000Ap-23, '\0', 0 },
- { "1e-324", 0, '\0', ERANGE },
- { "0x100000000000008p0", 0x1p56, '\0', 0 },
- { "0x100000000000008.p0", 0x1p56, '\0', 0 },
- { "0x100000000000008.00p0", 0x1p56, '\0', 0 },
- { "0x10000000000000800p0", 0x1p64, '\0', 0 },
- { "0x10000000000000801p0", 0x1.0000000000001p64, '\0', 0 },
- { NULL, 0, '\0', 0 }
- };
-
-static void expand (char *dst, int c);
-static int long_dbl (void);
-
-static int
-do_test (void)
-{
- char buf[100];
- const struct ltest *lt;
- char *ep;
- int status = 0;
- int save_errno;
-
- for (lt = tests; lt->str != NULL; ++lt)
- {
- double d;
-
- errno = 0;
- d = strtod(lt->str, &ep);
- save_errno = errno;
- printf ("strtod (\"%s\") test %u",
- lt->str, (unsigned int) (lt - tests));
- if (d == lt->expect && *ep == lt->left && save_errno == lt->err)
- puts ("\tOK");
- else
- {
- puts ("\tBAD");
- if (d != lt->expect)
- printf (" returns %.60g, expected %.60g\n", d, lt->expect);
- if (lt->left != *ep)
- {
- char exp1[5], exp2[5];
- expand (exp1, *ep);
- expand (exp2, lt->left);
- printf (" leaves '%s', expected '%s'\n", exp1, exp2);
- }
- if (save_errno != lt->err)
- printf (" errno %d (%s) instead of %d (%s)\n",
- save_errno, strerror (save_errno),
- lt->err, strerror (lt->err));
- status = 1;
- }
- }
-
- sprintf (buf, "%f", strtod ("-0.0", NULL));
- if (strcmp (buf, "-0.000000") != 0)
- {
- printf (" strtod (\"-0.0\", NULL) returns \"%s\"\n", buf);
- status = 1;
- }
-
- const char input[] = "3752432815e-39";
-
- float f1 = strtold (input, NULL);
- float f2;
- float f3 = strtof (input, NULL);
- sscanf (input, "%g", &f2);
-
- if (f1 != f2)
- {
- printf ("f1 = %a != f2 = %a\n", f1, f2);
- status = 1;
- }
- if (f1 != f3)
- {
- printf ("f1 = %a != f3 = %a\n", f1, f3);
- status = 1;
- }
- if (f2 != f3)
- {
- printf ("f2 = %a != f3 = %a\n", f2, f3);
- status = 1;
- }
-
- const char input2[] = "+1.000000000116415321826934814453125";
- if (strtold (input2, NULL) != +1.000000000116415321826934814453125L)
- {
- printf ("input2: %La != %La\n", strtold (input2, NULL),
- +1.000000000116415321826934814453125L);
- status = 1;
- }
-
- static struct { const char *str; long double l; } ltests[] =
- {
- { "42.0000000000000000001", 42.0000000000000000001L },
- { "42.00000000000000000001", 42.00000000000000000001L },
- { "42.000000000000000000001", 42.000000000000000000001L }
- };
- int n;
- for (n = 0; n < sizeof (ltests) / sizeof (ltests[0]); ++n)
- if (strtold (ltests[n].str, NULL) != ltests[n].l)
- {
- printf ("ltests[%d]: %La != %La\n", n,
- strtold (ltests[n].str, NULL), ltests[n].l);
- status = 1;
- }
-
- status |= long_dbl ();
-
- return status ? EXIT_FAILURE : EXIT_SUCCESS;
-}
-
-static void
-expand (char *dst, int c)
-{
- if (isprint (c))
- {
- dst[0] = c;
- dst[1] = '\0';
- }
- else
- (void) sprintf (dst, "%#.3o", (unsigned int) c);
-}
-
-static int
-long_dbl (void)
-{
- /* Regenerate this string using
-
- echo '(2^53-1)*2^(1024-53)' | bc | sed 's/\([^\]*\)\\*$/ "\1"/'
-
- */
- static const char longestdbl[] =
- "17976931348623157081452742373170435679807056752584499659891747680315"
- "72607800285387605895586327668781715404589535143824642343213268894641"
- "82768467546703537516986049910576551282076245490090389328944075868508"
- "45513394230458323690322294816580855933212334827479782620414472316873"
- "8177180919299881250404026184124858368";
- double d = strtod (longestdbl, NULL);
-
- printf ("strtod (\"%s\", NULL) = %g\n", longestdbl, d);
-
- if (d != 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000)
- return 1;
-
- return 0;
-}
-
-#include <support/test-driver.c>
diff --git a/stdlib/tst-strtod.h b/stdlib/tst-strtod.h
deleted file mode 100644
index bf5f90138f..0000000000
--- a/stdlib/tst-strtod.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Common utilities for testing strtod and its derivatives.
- This file is part of the GNU C Library.
- Copyright (C) 2016-2017 Free Software Foundation, Inc.
-
- 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 _TST_STRTOD_H
-#define _TST_STRTOD_H
-
-#define FSTRLENMAX 128
-
-/* Splat n variants of the same test for the various strtod functions. */
-#define GEN_TEST_STRTOD_FOREACH(mfunc, ...) \
- mfunc ( f, float, strfromf, f, f, ##__VA_ARGS__) \
- mfunc ( d, double, strfromd, , , ##__VA_ARGS__) \
- mfunc ( ld, long double, strfroml, L, l, ##__VA_ARGS__)
-/* The arguments to the generated macros are:
- FSUF - Function suffix
- FTYPE - float type
- FTOSTR - float to string func
- LSUF - Literal suffix
- CSUF - C standardish suffix for many of the math functions
-*/
-
-
-
-#define STRTOD_TEST_FOREACH(mfunc, ...) \
-({ \
- int result = 0; \
- result |= mfunc ## f (__VA_ARGS__); \
- result |= mfunc ## d (__VA_ARGS__); \
- result |= mfunc ## ld (__VA_ARGS__); \
- result; \
-})
-
-
-#endif
diff --git a/stdlib/tst-strtod1i.c b/stdlib/tst-strtod1i.c
deleted file mode 100644
index 6f79425667..0000000000
--- a/stdlib/tst-strtod1i.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Basic tests for __strtod_internal.
- Copyright (C) 1991-2017 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 <locale.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <math.h>
-
-/* Perform a few tests in a locale with thousands separators. */
-static int
-do_test (void)
-{
- static const struct
- {
- const char *loc;
- const char *str;
- double exp;
- ptrdiff_t nread;
- } tests[] =
- {
- { "de_DE.UTF-8", "1,5", 1.5, 3 },
- { "de_DE.UTF-8", "1.5", 1.0, 1 },
- { "de_DE.UTF-8", "1.500", 1500.0, 5 },
- { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65, 26 }
- };
-#define ntests (sizeof (tests) / sizeof (tests[0]))
- size_t n;
- int result = 0;
-
- puts ("\nLocale tests");
-
- for (n = 0; n < ntests; ++n)
- {
- double d;
- char *endp;
-
- if (setlocale (LC_ALL, tests[n].loc) == NULL)
- {
- printf ("cannot set locale %s\n", tests[n].loc);
- result = 1;
- continue;
- }
-
- d = __strtod_internal (tests[n].str, &endp, 1);
- if (d != tests[n].exp)
- {
- printf ("strtod(\"%s\") returns %g and not %g\n",
- tests[n].str, d, tests[n].exp);
- result = 1;
- }
- else if (endp - tests[n].str != tests[n].nread)
- {
- printf ("strtod(\"%s\") read %td bytes and not %td\n",
- tests[n].str, endp - tests[n].str, tests[n].nread);
- result = 1;
- }
- }
-
- if (result == 0)
- puts ("all OK");
-
- return result ? EXIT_FAILURE : EXIT_SUCCESS;
-}
-
-#include <support/test-driver.c>
diff --git a/stdlib/tst-strtod2.c b/stdlib/tst-strtod2.c
deleted file mode 100644
index a7df82ebbd..0000000000
--- a/stdlib/tst-strtod2.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-struct test
-{
- const char *str;
- double result;
- size_t offset;
-} tests[] =
-{
- { "0xy", 0.0, 1 },
- { "0x.y", 0.0, 1 },
- { "0x0.y", 0.0, 4 },
- { "0x.0y", 0.0, 4 },
- { ".y", 0.0, 0 },
- { "0.y", 0.0, 2 },
- { ".0y", 0.0, 2 }
-};
-
-static int
-do_test (void)
-{
- int status = 0;
- for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i)
- {
- char *ep;
- double r = strtod (tests[i].str, &ep);
- if (r != tests[i].result)
- {
- printf ("test %zu r = %g, expect %g\n", i, r, tests[i].result);
- status = 1;
- }
- if (ep != tests[i].str + tests[i].offset)
- {
- printf ("test %zu strtod parsed %tu characters, expected %zu\n",
- i, ep - tests[i].str, tests[i].offset);
- status = 1;
- }
- }
- return status;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtod3.c b/stdlib/tst-strtod3.c
deleted file mode 100644
index 23abec1896..0000000000
--- a/stdlib/tst-strtod3.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include <locale.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static const struct
-{
- const char *in;
- const char *out;
- double expected;
-} tests[] =
- {
- { "000,,,e1", ",,,e1", 0.0 },
- { "000e1", "", 0.0 },
- { "000,1e1", ",1e1", 0.0 }
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
-
-
-static int
-do_test (void)
-{
- if (setlocale (LC_ALL, "en_US.ISO-8859-1") == NULL)
- {
- puts ("could not set locale");
- return 1;
- }
-
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char *ep;
- double r = __strtod_internal (tests[i].in, &ep, 1);
-
- if (strcmp (ep, tests[i].out) != 0)
- {
- printf ("%d: got rest string \"%s\", expected \"%s\"\n",
- i, ep, tests[i].out);
- status = 1;
- }
-
- if (r != tests[i].expected)
- {
- printf ("%d: got wrong results %g, expected %g\n",
- i, r, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtod4.c b/stdlib/tst-strtod4.c
deleted file mode 100644
index 2d9d54c944..0000000000
--- a/stdlib/tst-strtod4.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include <locale.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define NBSP "\xc2\xa0"
-
-static const struct
-{
- const char *in;
- const char *out;
- double expected;
-} tests[] =
- {
- { "000"NBSP"000"NBSP"000", "", 0.0 },
- { "1"NBSP"000"NBSP"000,5x", "x", 1000000.5 }
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
-
-
-static int
-do_test (void)
-{
- if (setlocale (LC_ALL, "cs_CZ.UTF-8") == NULL)
- {
- puts ("could not set locale");
- return 1;
- }
-
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char *ep;
- double r = __strtod_internal (tests[i].in, &ep, 1);
-
- if (strcmp (ep, tests[i].out) != 0)
- {
- printf ("%d: got rest string \"%s\", expected \"%s\"\n",
- i, ep, tests[i].out);
- status = 1;
- }
-
- if (r != tests[i].expected)
- {
- printf ("%d: got wrong results %g, expected %g\n",
- i, r, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtod5.c b/stdlib/tst-strtod5.c
deleted file mode 100644
index 8976e39a58..0000000000
--- a/stdlib/tst-strtod5.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Tests of strtod in a locale using decimal comma.
- Copyright (C) 2007-2017 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 <locale.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#define NBSP "\xc2\xa0"
-
-static const struct
-{
- const char *in;
- double expected;
-} tests[] =
- {
- { "0", 0.0 },
- { "000", 0.0 },
- { "-0", -0.0 },
- { "-000", -0.0 },
- { "0,", 0.0 },
- { "-0,", -0.0 },
- { "0,0", 0.0 },
- { "-0,0", -0.0 },
- { "0e-10", 0.0 },
- { "-0e-10", -0.0 },
- { "0,e-10", 0.0 },
- { "-0,e-10", -0.0 },
- { "0,0e-10", 0.0 },
- { "-0,0e-10", -0.0 },
- { "0e-1000000", 0.0 },
- { "-0e-1000000", -0.0 },
- { "0,0e-1000000", 0.0 },
- { "-0,0e-1000000", -0.0 },
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
-
-
-static int
-do_test (void)
-{
- if (setlocale (LC_ALL, "cs_CZ.UTF-8") == NULL)
- {
- puts ("could not set locale");
- return 1;
- }
-
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char *ep;
- double r = strtod (tests[i].in, &ep);
-
- if (*ep != '\0')
- {
- printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep);
- status = 1;
- }
-
- if (r != tests[i].expected
- || copysign (10.0, r) != copysign (10.0, tests[i].expected))
- {
- printf ("%d: got wrong results %g, expected %g\n",
- i, r, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
-}
-
-#include <support/test-driver.c>
diff --git a/stdlib/tst-strtod5i.c b/stdlib/tst-strtod5i.c
deleted file mode 100644
index 7e319585bb..0000000000
--- a/stdlib/tst-strtod5i.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Tests of __strtod_internal in a locale using decimal comma.
- Copyright (C) 2007-2017 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 <locale.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#define NBSP "\xc2\xa0"
-
-static const struct
-{
- const char *in;
- int group;
- double expected;
-} tests[] =
- {
- { "0", 0, 0.0 },
- { "000", 0, 0.0 },
- { "-0", 0, -0.0 },
- { "-000", 0, -0.0 },
- { "0,", 0, 0.0 },
- { "-0,", 0, -0.0 },
- { "0,0", 0, 0.0 },
- { "-0,0", 0, -0.0 },
- { "0e-10", 0, 0.0 },
- { "-0e-10", 0, -0.0 },
- { "0,e-10", 0, 0.0 },
- { "-0,e-10", 0, -0.0 },
- { "0,0e-10", 0, 0.0 },
- { "-0,0e-10", 0, -0.0 },
- { "0e-1000000", 0, 0.0 },
- { "-0e-1000000", 0, -0.0 },
- { "0,0e-1000000", 0, 0.0 },
- { "-0,0e-1000000", 0, -0.0 },
- { "0", 1, 0.0 },
- { "000", 1, 0.0 },
- { "-0", 1, -0.0 },
- { "-000", 1, -0.0 },
- { "0e-10", 1, 0.0 },
- { "-0e-10", 1, -0.0 },
- { "0e-1000000", 1, 0.0 },
- { "-0e-1000000", 1, -0.0 },
- { "000"NBSP"000"NBSP"000", 1, 0.0 },
- { "-000"NBSP"000"NBSP"000", 1, -0.0 }
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
-
-
-static int
-do_test (void)
-{
- if (setlocale (LC_ALL, "cs_CZ.UTF-8") == NULL)
- {
- puts ("could not set locale");
- return 1;
- }
-
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char *ep;
- double r = __strtod_internal (tests[i].in, &ep, tests[i].group);
-
- if (*ep != '\0')
- {
- printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep);
- status = 1;
- }
-
- if (r != tests[i].expected
- || copysign (10.0, r) != copysign (10.0, tests[i].expected))
- {
- printf ("%d: got wrong results %g, expected %g\n",
- i, r, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
-}
-
-#include <support/test-driver.c>
diff --git a/stdlib/tst-strtod6.c b/stdlib/tst-strtod6.c
deleted file mode 100644
index 9bfbdc2b38..0000000000
--- a/stdlib/tst-strtod6.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "tst-strtod.h"
-
-#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
-static int \
-test_strto ## FSUF (const char str[]) \
-{ \
- char *endp; \
- int result = 0; \
- puts (str); \
- FTYPE d = strto ## FSUF (str, &endp); \
- if (!isnan (d)) \
- { \
- puts ("strto" #FSUF " did not return NAN"); \
- result = 1; \
- } \
- if (issignaling (d)) \
- { \
- puts ("strto" #FSUF " returned a sNAN"); \
- result = 1; \
- } \
- if (strcmp (endp, "something") != 0) \
- { \
- puts ("strto" #FSUF " set incorrect end pointer"); \
- result = 1; \
- } \
- return result; \
-}
-
-GEN_TEST_STRTOD_FOREACH (TEST_STRTOD);
-
-static int
-do_test (void)
-{
- int result = 0;
-
- result |= STRTOD_TEST_FOREACH (test_strto, "NaN(blabla)something");
- result |= STRTOD_TEST_FOREACH (test_strto, "NaN(1234)something");
- /* UINT32_MAX. */
- result |= STRTOD_TEST_FOREACH (test_strto, "NaN(4294967295)something");
- /* UINT64_MAX. */
- result |= STRTOD_TEST_FOREACH (test_strto,
- "NaN(18446744073709551615)something");
- /* The case of zero is special in that "something" has to be done to make the
- mantissa different from zero, which would mean infinity instead of
- NaN. */
- result |= STRTOD_TEST_FOREACH (test_strto, "NaN(0)something");
-
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtol-locale-main.c b/stdlib/tst-strtol-locale-main.c
deleted file mode 100644
index 5de61e7b16..0000000000
--- a/stdlib/tst-strtol-locale-main.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Test strtol functions work with all ASCII letters in Turkish
- locales (bug 19242).
- Copyright (C) 2015-2017 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 <locale.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <wchar.h>
-
-#define STR_(X) #X
-#define STR(X) STR_(X)
-#define FNPFXS STR (FNPFX)
-#define CONCAT_(X, Y) X ## Y
-#define CONCAT(X, Y) CONCAT_ (X, Y)
-#define FNX(FN) CONCAT (FNPFX, FN)
-
-#define TEST(LOC, STR, EXP_VAL, FN, TYPE, FMT) \
- do \
- { \
- CHAR *ep; \
- TYPE val = FNX (FN) (STR, &ep, 36); \
- printf ("%s: " FNPFXS #FN " (" SFMT ") == " FMT "\n", LOC, STR, val); \
- if (val == (TYPE) (EXP_VAL) && *ep == 0) \
- printf ("PASS: %s: " FNPFXS #FN " (" SFMT ")\n", LOC, STR); \
- else \
- { \
- printf ("FAIL: %s: " FNPFXS #FN " (" SFMT ")\n", LOC, STR); \
- result = 1; \
- } \
- } \
- while (0)
-
-static int
-test_one_locale (const char *loc)
-{
- if (setlocale (LC_ALL, loc) == NULL)
- {
- printf ("setlocale (LC_ALL, \"%s\") failed\n", loc);
- return 1;
- }
- int result = 0;
- for (int i = 10; i < 36; i++)
- {
- CHAR s[2];
- s[0] = L_('A') + i - 10;
- s[1] = 0;
- TEST (loc, s, i, l, long int, "%ld");
- TEST (loc, s, i, ul, unsigned long int, "%lu");
- TEST (loc, s, i, ll, long long int, "%lld");
- TEST (loc, s, i, ull, unsigned long long int, "%llu");
- s[0] = L_('a') + i - 10;
- s[1] = 0;
- TEST (loc, s, i, l, long int, "%ld");
- TEST (loc, s, i, ul, unsigned long int, "%lu");
- TEST (loc, s, i, ll, long long int, "%lld");
- TEST (loc, s, i, ull, unsigned long long int, "%llu");
- }
- return result;
-}
-
-static int
-do_test (void)
-{
- int result = 0;
- result |= test_one_locale ("C");
- result |= test_one_locale ("tr_TR.UTF-8");
- result |= test_one_locale ("tr_TR.ISO-8859-9");
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtol-locale.c b/stdlib/tst-strtol-locale.c
deleted file mode 100644
index 1d5092ba84..0000000000
--- a/stdlib/tst-strtol-locale.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Test strtol functions work with all ASCII letters in Turkish
- locales (bug 19242). Narrow string version.
- Copyright (C) 2015-2017 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 CHAR char
-#define SFMT "\"%s\""
-#define FNPFX strto
-#define L_(C) C
-
-#include <tst-strtol-locale-main.c>
diff --git a/stdlib/tst-strtol.c b/stdlib/tst-strtol.c
deleted file mode 100644
index 5b80622e07..0000000000
--- a/stdlib/tst-strtol.c
+++ /dev/null
@@ -1,626 +0,0 @@
-/* My bet is this was written by Chris Torek.
- I reformatted and ansidecl-ized it, and tweaked it a little. */
-
-#include <ctype.h>
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-
-struct ltest
- {
- const char *str; /* Convert this. */
- unsigned long int expect; /* To get this. */
- int base; /* Use this base. */
- char left; /* With this left over. */
- int err; /* And this in errno. */
- };
-static const struct ltest tests[] =
- {
- /* First, signed numbers: */
- /* simple... */
- {"123", 123, 0, 0, 0},
- {"+123", 123, 0, 0, 0},
- {" 123", 123, 0, 0, 0},
- {" 123 ", 123, 0, ' ', 0},
- {" -17", -17, 0, 0, 0},
-
- /* implicit base... */
- {"0123", 0123, 0, 0, 0},
- {"0123a", 0123, 0, 'a', 0},
- {"01239", 0123, 0, '9', 0},
- {"0x123", 0x123, 0, 0, 0},
- {"-0x123", -0x123, 0, 0, 0},
- {"0x0xc", 0, 0, 'x', 0},
- {" +0x123fg", 0x123f, 0, 'g', 0},
-
- /* explicit base... */
- {"123", 0x123, 16, 0, 0},
- {"0x123", 0x123, 16, 0, 0},
- {"123", 0123, 8, 0, 0},
- {"0123", 0123, 8, 0, 0},
- {"0123", 123, 10, 0, 0},
- {"0x123", 0, 10, 'x', 0},
-
- /* case insensitivity... */
- {"abcd", 0xabcd, 16, 0, 0},
- {"AbCd", 0xabcd, 16, 0, 0},
- {"0xABCD", 0xabcd, 16, 0, 0},
- {"0Xabcd", 0xabcd, 16, 0, 0},
-
- /* odd bases... */
- {"0xyz", 33 * 35 + 34, 35, 'z', 0},
- {"yz!", 34 * 36 + 35, 36, '!', 0},
- {"-yz", -(34*36 + 35), 36, 0, 0},
- {"GhI4", ((16*20 + 17)*20 + 18)*20 + 4, 20, 0, 0},
-
- /* extremes... */
-#if LONG_MAX == 0x7fffffff
- {"2147483647", 2147483647, 0, 0, 0},
- {"2147483648", 2147483647, 0, 0, ERANGE},
- {"214748364888", 2147483647, 0, 0, ERANGE},
- {"2147483650", 2147483647, 0, 0, ERANGE},
- {"-2147483648", 0x80000000, 0, 0, 0},
- {"-2147483649", 0x80000000, 0, 0, ERANGE},
- {"0x1122334455z", 2147483647, 16, 'z', ERANGE},
-
- {"1111111111111111111111111111111", 2147483647, 2, 0, 0},
- {"10000000000000000000000000000000", 2147483647, 2, 0, ERANGE},
- {"12112122212110202101", 2147483647, 3, 0, 0},
- {"12112122212110202102", 2147483647, 3, 0, ERANGE},
- {"1333333333333333", 2147483647, 4, 0, 0},
- {"2000000000000000", 2147483647, 4, 0, ERANGE},
- {"13344223434042", 2147483647, 5, 0, 0},
- {"13344223434043", 2147483647, 5, 0, ERANGE},
- {"553032005531", 2147483647, 6, 0, 0},
- {"553032005532", 2147483647, 6, 0, ERANGE},
- {"104134211161", 2147483647, 7, 0, 0},
- {"104134211162", 2147483647, 7, 0, ERANGE},
- {"17777777777", 2147483647, 8, 0, 0},
- {"20000000000", 2147483647, 8, 0, ERANGE},
- {"5478773671", 2147483647, 9, 0, 0},
- {"5478773672", 2147483647, 9, 0, ERANGE},
- {"2147483647", 2147483647, 10, 0, 0},
- {"2147483648", 2147483647, 10, 0, ERANGE},
- {"a02220281", 2147483647, 11, 0, 0},
- {"a02220282", 2147483647, 11, 0, ERANGE},
- {"4bb2308a7", 2147483647, 12, 0, 0},
- {"4bb2308a8", 2147483647, 12, 0, ERANGE},
- {"282ba4aaa", 2147483647, 13, 0, 0},
- {"282ba4aab", 2147483647, 13, 0, ERANGE},
- {"1652ca931", 2147483647, 14, 0, 0},
- {"1652ca932", 2147483647, 14, 0, ERANGE},
- {"c87e66b7", 2147483647, 15, 0, 0},
- {"c87e66b8", 2147483647, 15, 0, ERANGE},
- {"7fffffff", 2147483647, 16, 0, 0},
- {"80000000", 2147483647, 16, 0, ERANGE},
- {"53g7f548", 2147483647, 17, 0, 0},
- {"53g7f549", 2147483647, 17, 0, ERANGE},
- {"3928g3h1", 2147483647, 18, 0, 0},
- {"3928g3h2", 2147483647, 18, 0, ERANGE},
- {"27c57h32", 2147483647, 19, 0, 0},
- {"27c57h33", 2147483647, 19, 0, ERANGE},
- {"1db1f927", 2147483647, 20, 0, 0},
- {"1db1f928", 2147483647, 20, 0, ERANGE},
- {"140h2d91", 2147483647, 21, 0, 0},
- {"140h2d92", 2147483647, 21, 0, ERANGE},
- {"ikf5bf1", 2147483647, 22, 0, 0},
- {"ikf5bf2", 2147483647, 22, 0, ERANGE},
- {"ebelf95", 2147483647, 23, 0, 0},
- {"ebelf96", 2147483647, 23, 0, ERANGE},
- {"b5gge57", 2147483647, 24, 0, 0},
- {"b5gge58", 2147483647, 24, 0, ERANGE},
- {"8jmdnkm", 2147483647, 25, 0, 0},
- {"8jmdnkn", 2147483647, 25, 0, ERANGE},
- {"6oj8ion", 2147483647, 26, 0, 0},
- {"6oj8ioo", 2147483647, 26, 0, ERANGE},
- {"5ehncka", 2147483647, 27, 0, 0},
- {"5ehnckb", 2147483647, 27, 0, ERANGE},
- {"4clm98f", 2147483647, 28, 0, 0},
- {"4clm98g", 2147483647, 28, 0, ERANGE},
- {"3hk7987", 2147483647, 29, 0, 0},
- {"3hk7988", 2147483647, 29, 0, ERANGE},
- {"2sb6cs7", 2147483647, 30, 0, 0},
- {"2sb6cs8", 2147483647, 30, 0, ERANGE},
- {"2d09uc1", 2147483647, 31, 0, 0},
- {"2d09uc2", 2147483647, 31, 0, ERANGE},
- {"1vvvvvv", 2147483647, 32, 0, 0},
- {"2000000", 2147483647, 32, 0, ERANGE},
- {"1lsqtl1", 2147483647, 33, 0, 0},
- {"1lsqtl2", 2147483647, 33, 0, ERANGE},
- {"1d8xqrp", 2147483647, 34, 0, 0},
- {"1d8xqrq", 2147483647, 34, 0, ERANGE},
- {"15v22um", 2147483647, 35, 0, 0},
- {"15v22un", 2147483647, 35, 0, ERANGE},
- {"zik0zj", 2147483647, 36, 0, 0},
- {"zik0zk", 2147483647, 36, 0, ERANGE},
-
- {"-10000000000000000000000000000000", -2147483648, 2, 0, 0},
- {"-10000000000000000000000000000001", -2147483648, 2, 0, ERANGE},
- {"-12112122212110202102", -2147483648, 3, 0, 0},
- {"-12112122212110202110", -2147483648, 3, 0, ERANGE},
- {"-2000000000000000", -2147483648, 4, 0, 0},
- {"-2000000000000001", -2147483648, 4, 0, ERANGE},
- {"-13344223434043", -2147483648, 5, 0, 0},
- {"-13344223434044", -2147483648, 5, 0, ERANGE},
- {"-553032005532", -2147483648, 6, 0, 0},
- {"-553032005533", -2147483648, 6, 0, ERANGE},
- {"-104134211162", -2147483648, 7, 0, 0},
- {"-104134211163", -2147483648, 7, 0, ERANGE},
- {"-20000000000", -2147483648, 8, 0, },
- {"-20000000001", -2147483648, 8, 0, ERANGE},
- {"-5478773672", -2147483648, 9, 0, 0},
- {"-5478773673", -2147483648, 9, 0, ERANGE},
- {"-2147483648", -2147483648, 10, 0, 0},
- {"-2147483649", -2147483648, 10, 0, ERANGE},
- {"-a02220282", -2147483648, 11, 0, 0},
- {"-a02220283", -2147483648, 11, 0, ERANGE},
- {"-4bb2308a8", -2147483648, 12, 0, 0},
- {"-4bb2308a9", -2147483648, 12, 0, ERANGE},
- {"-282ba4aab", -2147483648, 13, 0, 0},
- {"-282ba4aac", -2147483648, 13, 0, ERANGE},
- {"-1652ca932", -2147483648, 14, 0, 0},
- {"-1652ca933", -2147483648, 14, 0, ERANGE},
- {"-c87e66b8", -2147483648, 15, 0, 0},
- {"-c87e66b9", -2147483648, 15, 0, ERANGE},
- {"-80000000", -2147483648, 16, 0, 0},
- {"-80000001", -2147483648, 16, 0, ERANGE},
- {"-53g7f549", -2147483648, 17, 0, 0},
- {"-53g7f54a", -2147483648, 17, 0, ERANGE},
- {"-3928g3h2", -2147483648, 18, 0, 0},
- {"-3928g3h3", -2147483648, 18, 0, ERANGE},
- {"-27c57h33", -2147483648, 19, 0, 0},
- {"-27c57h34", -2147483648, 19, 0, ERANGE},
- {"-1db1f928", -2147483648, 20, 0, 0},
- {"-1db1f929", -2147483648, 20, 0, ERANGE},
- {"-140h2d92", -2147483648, 21, 0, 0},
- {"-140h2d93", -2147483648, 21, 0, ERANGE},
- {"-ikf5bf2", -2147483648, 22, 0, 0},
- {"-ikf5bf3", -2147483648, 22, 0, ERANGE},
- {"-ebelf96", -2147483648, 23, 0, 0},
- {"-ebelf97", -2147483648, 23, 0, ERANGE},
- {"-b5gge58", -2147483648, 24, 0, 0},
- {"-b5gge59", -2147483648, 24, 0, ERANGE},
- {"-8jmdnkn", -2147483648, 25, 0, 0},
- {"-8jmdnko", -2147483648, 25, 0, ERANGE},
- {"-6oj8ioo", -2147483648, 26, 0, 0},
- {"-6oj8iop", -2147483648, 26, 0, ERANGE},
- {"-5ehnckb", -2147483648, 27, 0, 0},
- {"-5ehnckc", -2147483648, 27, 0, ERANGE},
- {"-4clm98g", -2147483648, 28, 0, 0},
- {"-4clm98h", -2147483648, 28, 0, ERANGE},
- {"-3hk7988", -2147483648, 29, 0, 0},
- {"-3hk7989", -2147483648, 29, 0, ERANGE},
- {"-2sb6cs8", -2147483648, 30, 0, 0},
- {"-2sb6cs9", -2147483648, 30, 0, ERANGE},
- {"-2d09uc2", -2147483648, 31, 0, 0},
- {"-2d09uc3", -2147483648, 31, 0, ERANGE},
- {"-2000000", -2147483648, 32, 0, 0},
- {"-2000001", -2147483648, 32, 0, ERANGE},
- {"-1lsqtl2", -2147483648, 33, 0, 0},
- {"-1lsqtl3", -2147483648, 33, 0, ERANGE},
- {"-1d8xqrq", -2147483648, 34, 0, 0},
- {"-1d8xqrr", -2147483648, 34, 0, ERANGE},
- {"-15v22un", -2147483648, 35, 0, 0},
- {"-15v22uo", -2147483648, 35, 0, ERANGE},
- {"-zik0zk", -2147483648, 36, 0, 0},
- {"-zik0zl", -2147483648, 36, 0, ERANGE},
-#else
- {"9223372036854775807", 9223372036854775807, 0, 0, 0},
- {"9223372036854775808", 9223372036854775807, 0, 0, ERANGE},
- {"922337203685477580777", 9223372036854775807, 0, 0, ERANGE},
- {"9223372036854775810", 9223372036854775807, 0, 0, ERANGE},
- {"-2147483648", -2147483648, 0, 0, 0},
- {"-9223372036854775808", 0x8000000000000000, 0, 0, 0},
- {"-9223372036854775809", 0x8000000000000000, 0, 0, ERANGE},
- {"0x112233445566778899z", 9223372036854775807, 16, 'z', ERANGE},
- {"0xFFFFFFFFFFFF00FF" , 9223372036854775807, 0, 0, ERANGE},
-
- {"111111111111111111111111111111111111111111111111111111111111111",
- 9223372036854775807, 2, 0, 0},
- {"1000000000000000000000000000000000000000000000000000000000000000",
- 9223372036854775807, 2, 0, ERANGE},
- {"2021110011022210012102010021220101220221",
- 9223372036854775807, 3, 0, 0},
- {"2021110011022210012102010021220101220222",
- 9223372036854775807, 3, 0, ERANGE},
- {"13333333333333333333333333333333", 9223372036854775807, 4, 0, 0},
- {"20000000000000000000000000000000", 9223372036854775807, 4, 0, ERANGE},
- {"1104332401304422434310311212", 9223372036854775807, 5, 0, 0},
- {"1104332401304422434310311213", 9223372036854775807, 5, 0, ERANGE},
- {"1540241003031030222122211", 9223372036854775807, 6, 0, 0},
- {"1540241003031030222122212", 9223372036854775807, 6, 0, ERANGE},
- {"22341010611245052052300", 9223372036854775807, 7, 0, 0},
- {"22341010611245052052301", 9223372036854775807, 7, 0, ERANGE},
- {"777777777777777777777", 9223372036854775807, 8, 0, 0},
- {"1000000000000000000000", 9223372036854775807, 8, 0, ERANGE},
- {"67404283172107811827", 9223372036854775807, 9, 0, 0},
- {"67404283172107811828", 9223372036854775807, 9, 0, ERANGE},
- {"9223372036854775807", 9223372036854775807, 10, 0, 0},
- {"9223372036854775808", 9223372036854775807, 10, 0, ERANGE},
- {"1728002635214590697", 9223372036854775807, 11, 0, 0},
- {"1728002635214590698", 9223372036854775807, 11, 0, ERANGE},
- {"41a792678515120367", 9223372036854775807, 12, 0, 0},
- {"41a792678515120368", 9223372036854775807, 12, 0, ERANGE},
- {"10b269549075433c37", 9223372036854775807, 13, 0, 0},
- {"10b269549075433c38", 9223372036854775807, 13, 0, ERANGE},
- {"4340724c6c71dc7a7", 9223372036854775807, 14, 0, 0},
- {"4340724c6c71dc7a8", 9223372036854775807, 14, 0, ERANGE},
- {"160e2ad3246366807", 9223372036854775807, 15, 0, 0},
- {"160e2ad3246366808", 9223372036854775807, 15, 0, ERANGE},
- {"7fffffffffffffff", 9223372036854775807, 16, 0, 0},
- {"8000000000000000", 9223372036854775807, 16, 0, ERANGE},
- {"33d3d8307b214008", 9223372036854775807, 17, 0, 0},
- {"33d3d8307b214009", 9223372036854775807, 17, 0, ERANGE},
- {"16agh595df825fa7", 9223372036854775807, 18, 0, 0},
- {"16agh595df825fa8", 9223372036854775807, 18, 0, ERANGE},
- {"ba643dci0ffeehh", 9223372036854775807, 19, 0, 0},
- {"ba643dci0ffeehi", 9223372036854775807, 19, 0, ERANGE},
- {"5cbfjia3fh26ja7", 9223372036854775807, 20, 0, 0},
- {"5cbfjia3fh26ja8", 9223372036854775807, 20, 0, ERANGE},
- {"2heiciiie82dh97", 9223372036854775807, 21, 0, 0},
- {"2heiciiie82dh98", 9223372036854775807, 21, 0, ERANGE},
- {"1adaibb21dckfa7", 9223372036854775807, 22, 0, 0},
- {"1adaibb21dckfa8", 9223372036854775807, 22, 0, ERANGE},
- {"i6k448cf4192c2", 9223372036854775807, 23, 0, 0},
- {"i6k448cf4192c3", 9223372036854775807, 23, 0, ERANGE},
- {"acd772jnc9l0l7", 9223372036854775807, 24, 0, 0},
- {"acd772jnc9l0l8", 9223372036854775807, 24, 0, ERANGE},
- {"64ie1focnn5g77", 9223372036854775807, 25, 0, 0},
- {"64ie1focnn5g78", 9223372036854775807, 25, 0, ERANGE},
- {"3igoecjbmca687", 9223372036854775807, 26, 0, 0},
- {"3igoecjbmca688", 9223372036854775807, 26, 0, ERANGE},
- {"27c48l5b37oaop", 9223372036854775807, 27, 0, 0},
- {"27c48l5b37oaoq", 9223372036854775807, 27, 0, ERANGE},
- {"1bk39f3ah3dmq7", 9223372036854775807, 28, 0, 0},
- {"1bk39f3ah3dmq8", 9223372036854775807, 28, 0, ERANGE},
- {"q1se8f0m04isb", 9223372036854775807, 29, 0, 0},
- {"q1se8f0m04isc", 9223372036854775807, 29, 0, ERANGE},
- {"hajppbc1fc207", 9223372036854775807, 30, 0, 0},
- {"hajppbc1fc208", 9223372036854775807, 30, 0, ERANGE},
- {"bm03i95hia437", 9223372036854775807, 31, 0, 0},
- {"bm03i95hia438", 9223372036854775807, 31, 0, ERANGE},
- {"7vvvvvvvvvvvv", 9223372036854775807, 32, 0, 0},
- {"8000000000000", 9223372036854775807, 32, 0, ERANGE},
- {"5hg4ck9jd4u37", 9223372036854775807, 33, 0, 0},
- {"5hg4ck9jd4u38", 9223372036854775807, 33, 0, ERANGE},
- {"3tdtk1v8j6tpp", 9223372036854775807, 34, 0, 0},
- {"3tdtk1v8j6tpq", 9223372036854775807, 34, 0, ERANGE},
- {"2pijmikexrxp7", 9223372036854775807, 35, 0, 0},
- {"2pijmikexrxp8", 9223372036854775807, 35, 0, ERANGE},
- {"1y2p0ij32e8e7", 9223372036854775807, 36, 0, 0},
- {"1y2p0ij32e8e8", 9223372036854775807, 36, 0, ERANGE},
-
- {"-1000000000000000000000000000000000000000000000000000000000000000",
- -9223372036854775808ull, 2, 0, 0},
- {"-1000000000000000000000000000000000000000000000000000000000000001",
- -9223372036854775808ull, 2, 0, ERANGE},
- {"-2021110011022210012102010021220101220222",
- -9223372036854775808ull, 3, 0, 0},
- {"-2021110011022210012102010021220101221000",
- -9223372036854775808ull, 3, 0, ERANGE},
- {"-20000000000000000000000000000000", -9223372036854775808ull, 4, 0, 0},
- {"-20000000000000000000000000000001", -9223372036854775808ull, 4, 0, ERANGE},
- {"-1104332401304422434310311213", -9223372036854775808ull, 5, 0, 0},
- {"-1104332401304422434310311214", -9223372036854775808ull, 5, 0, ERANGE},
- {"-1540241003031030222122212", -9223372036854775808ull, 6, 0, 0},
- {"-1540241003031030222122213", -9223372036854775808ull, 6, 0, ERANGE},
- {"-22341010611245052052301", -9223372036854775808ull, 7, 0, 0},
- {"-22341010611245052052302", -9223372036854775808ull, 7, 0, ERANGE},
- {"-1000000000000000000000", -9223372036854775808ull, 8, 0, 0},
- {"-1000000000000000000001", -9223372036854775808ull, 8, 0, ERANGE},
- {"-67404283172107811828", -9223372036854775808ull, 9, 0, 0},
- {"-67404283172107811830", -9223372036854775808ull, 9, 0, ERANGE},
- {"-9223372036854775808", -9223372036854775808ull, 10, 0, 0},
- {"-9223372036854775809", -9223372036854775808ull, 10, 0, ERANGE},
- {"-1728002635214590698", -9223372036854775808ull, 11, 0, 0},
- {"-1728002635214590699", -9223372036854775808ull, 11, 0, ERANGE},
- {"-41a792678515120368", -9223372036854775808ull, 12, 0, 0},
- {"-41a792678515120369", -9223372036854775808ull, 12, 0, ERANGE},
- {"-10b269549075433c38", -9223372036854775808ull, 13, 0, 0},
- {"-10b269549075433c39", -9223372036854775808ull, 13, 0, ERANGE},
- {"-4340724c6c71dc7a8", -9223372036854775808ull, 14, 0, 0},
- {"-4340724c6c71dc7a9", -9223372036854775808ull, 14, 0, ERANGE},
- {"-160e2ad3246366808", -9223372036854775808ull, 15, 0, 0},
- {"-160e2ad3246366809", -9223372036854775808ull, 15, 0, ERANGE},
- {"-8000000000000000", -9223372036854775808ull, 16, 0, 0},
- {"-8000000000000001", -9223372036854775808ull, 16, 0, ERANGE},
- {"-33d3d8307b214009", -9223372036854775808ull, 17, 0, 0},
- {"-33d3d8307b21400a", -9223372036854775808ull, 17, 0, ERANGE},
- {"-16agh595df825fa8", -9223372036854775808ull, 18, 0, 0},
- {"-16agh595df825fa9", -9223372036854775808ull, 18, 0, ERANGE},
- {"-ba643dci0ffeehi", -9223372036854775808ull, 19, 0, 0},
- {"-ba643dci0ffeei0", -9223372036854775808ull, 19, 0, ERANGE},
- {"-5cbfjia3fh26ja8", -9223372036854775808ull, 20, 0, 0},
- {"-5cbfjia3fh26ja9", -9223372036854775808ull, 20, 0, ERANGE},
- {"-2heiciiie82dh98", -9223372036854775808ull, 21, 0, 0},
- {"-2heiciiie82dh99", -9223372036854775808ull, 21, 0, ERANGE},
- {"-1adaibb21dckfa8", -9223372036854775808ull, 22, 0, 0},
- {"-1adaibb21dckfa9", -9223372036854775808ull, 22, 0, ERANGE},
- {"-i6k448cf4192c3", -9223372036854775808ull, 23, 0, 0},
- {"-i6k448cf4192c4", -9223372036854775808ull, 23, 0, ERANGE},
- {"-acd772jnc9l0l8", -9223372036854775808ull, 24, 0, 0},
- {"-acd772jnc9l0l9", -9223372036854775808ull, 24, 0, ERANGE},
- {"-64ie1focnn5g78", -9223372036854775808ull, 25, 0, 0},
- {"-64ie1focnn5g79", -9223372036854775808ull, 25, 0, ERANGE},
- {"-3igoecjbmca688", -9223372036854775808ull, 26, 0, 0},
- {"-3igoecjbmca689", -9223372036854775808ull, 26, 0, ERANGE},
- {"-27c48l5b37oaoq", -9223372036854775808ull, 27, 0, 0},
- {"-27c48l5b37oap0", -9223372036854775808ull, 27, 0, ERANGE},
- {"-1bk39f3ah3dmq8", -9223372036854775808ull, 28, 0, 0},
- {"-1bk39f3ah3dmq9", -9223372036854775808ull, 28, 0, ERANGE},
- {"-q1se8f0m04isc", -9223372036854775808ull, 29, 0, 0},
- {"-q1se8f0m04isd", -9223372036854775808ull, 29, 0, ERANGE},
- {"-hajppbc1fc208", -9223372036854775808ull, 30, 0, 0},
- {"-hajppbc1fc209", -9223372036854775808ull, 30, 0, ERANGE},
- {"-bm03i95hia438", -9223372036854775808ull, 31, 0, 0},
- {"-bm03i95hia439", -9223372036854775808ull, 31, 0, ERANGE},
- {"-8000000000000", -9223372036854775808ull, 32, 0, 0},
- {"-8000000000001", -9223372036854775808ull, 32, 0, ERANGE},
- {"-5hg4ck9jd4u38", -9223372036854775808ull, 33, 0, 0},
- {"-5hg4ck9jd4u39", -9223372036854775808ull, 33, 0, ERANGE},
- {"-3tdtk1v8j6tpq", -9223372036854775808ull, 34, 0, 0},
- {"-3tdtk1v8j6tpr", -9223372036854775808ull, 34, 0, ERANGE},
- {"-2pijmikexrxp8", -9223372036854775808ull, 35, 0, 0},
- {"-2pijmikexrxp9", -9223372036854775808ull, 35, 0, ERANGE},
- {"-1y2p0ij32e8e8", -9223372036854775808ull, 36, 0, 0},
- {"-1y2p0ij32e8e9", -9223372036854775808ull, 36, 0, ERANGE},
-#endif
- {NULL, 0, 0, 0, 0},
-
- /* Then unsigned. */
- {" 0", 0, 0, 0, 0},
- {"0xffffffffg", 0xffffffff, 0, 'g', 0},
-#if LONG_MAX == 0x7fffffff
- {"-0xfedcba98", 0x01234568, 0, 0, 0},
- {"0xf1f2f3f4f5", 0xffffffff, 0, 0, ERANGE},
- {"-0x123456789", 0xffffffff, 0, 0, ERANGE},
-
- {"11111111111111111111111111111111", 0xffffffff, 2, 0, 0},
- {"100000000000000000000000000000000", 0xffffffff, 2, 0, ERANGE},
- {"102002022201221111210", 0xffffffff, 3, 0, 0},
- {"102002022201221111211", 0xffffffff, 3, 0, ERANGE},
- {"3333333333333333", 0xffffffff, 4, 0, 0},
- {"10000000000000000", 0xffffffff, 4, 0, ERANGE},
- {"32244002423140", 0xffffffff, 5, 0, 0},
- {"32244002423141", 0xffffffff, 5, 0, ERANGE},
- {"1550104015503", 0xffffffff, 6, 0, 0},
- {"1550104015504", 0xffffffff, 6, 0, ERANGE},
- {"211301422353", 0xffffffff, 7, 0, 0},
- {"211301422354", 0xffffffff, 7, 0, ERANGE},
- {"37777777777", 0xffffffff, 8, 0, 0},
- {"40000000000", 0xffffffff, 8, 0, ERANGE},
- {"12068657453", 0xffffffff, 9, 0, 0},
- {"12068657454", 0xffffffff, 9, 0, ERANGE},
- {"4294967295", 0xffffffff, 10, 0, 0},
- {"4294967296", 0xffffffff, 10, 0, ERANGE},
- {"1904440553", 0xffffffff, 11, 0, 0},
- {"1904440554", 0xffffffff, 11, 0, ERANGE},
- {"9ba461593", 0xffffffff, 12, 0, 0},
- {"9ba461594", 0xffffffff, 12, 0, ERANGE},
- {"535a79888", 0xffffffff, 13, 0, 0},
- {"535a79889", 0xffffffff, 13, 0, ERANGE},
- {"2ca5b7463", 0xffffffff, 14, 0, 0},
- {"2ca5b7464", 0xffffffff, 14, 0, ERANGE},
- {"1a20dcd80", 0xffffffff, 15, 0, 0},
- {"1a20dcd81", 0xffffffff, 15, 0, ERANGE},
- {"ffffffff", 0xffffffff, 16, 0, 0},
- {"100000000", 0xffffffff, 16, 0, ERANGE},
- {"a7ffda90", 0xffffffff, 17, 0, 0},
- {"a7ffda91", 0xffffffff, 17, 0, ERANGE},
- {"704he7g3", 0xffffffff, 18, 0, 0},
- {"704he7g4", 0xffffffff, 18, 0, ERANGE},
- {"4f5aff65", 0xffffffff, 19, 0, 0},
- {"4f5aff66", 0xffffffff, 19, 0, ERANGE},
- {"3723ai4f", 0xffffffff, 20, 0, 0},
- {"3723ai4g", 0xffffffff, 20, 0, ERANGE},
- {"281d55i3", 0xffffffff, 21, 0, 0},
- {"281d55i4", 0xffffffff, 21, 0, ERANGE},
- {"1fj8b183", 0xffffffff, 22, 0, 0},
- {"1fj8b184", 0xffffffff, 22, 0, ERANGE},
- {"1606k7ib", 0xffffffff, 23, 0, 0},
- {"1606k7ic", 0xffffffff, 23, 0, ERANGE},
- {"mb994af", 0xffffffff, 24, 0, 0},
- {"mb994ag", 0xffffffff, 24, 0, ERANGE},
- {"hek2mgk", 0xffffffff, 25, 0, 0},
- {"hek2mgl", 0xffffffff, 25, 0, ERANGE},
- {"dnchbnl", 0xffffffff, 26, 0, 0},
- {"dnchbnm", 0xffffffff, 26, 0, ERANGE},
- {"b28jpdl", 0xffffffff, 27, 0, 0},
- {"b28jpdm", 0xffffffff, 27, 0, ERANGE},
- {"8pfgih3", 0xffffffff, 28, 0, 0},
- {"8pfgih4", 0xffffffff, 28, 0, ERANGE},
- {"76beigf", 0xffffffff, 29, 0, 0},
- {"76beigg", 0xffffffff, 29, 0, ERANGE},
- {"5qmcpqf", 0xffffffff, 30, 0, 0},
- {"5qmcpqg", 0xffffffff, 30, 0, ERANGE},
- {"4q0jto3", 0xffffffff, 31, 0, 0},
- {"4q0jto4", 0xffffffff, 31, 0, ERANGE},
- {"3vvvvvv", 0xffffffff, 32, 0, 0},
- {"4000000", 0xffffffff, 32, 0, ERANGE},
- {"3aokq93", 0xffffffff, 33, 0, 0},
- {"3aokq94", 0xffffffff, 33, 0, ERANGE},
- {"2qhxjlh", 0xffffffff, 34, 0, 0},
- {"2qhxjli", 0xffffffff, 34, 0, ERANGE},
- {"2br45qa", 0xffffffff, 35, 0, 0},
- {"2br45qb", 0xffffffff, 35, 0, ERANGE},
- {"1z141z3", 0xffffffff, 36, 0, 0},
- {"1z141z4", 0xffffffff, 36, 0, ERANGE},
-#else
- {"0xffffffffffffffffg", 0xffffffffffffffff, 0, 'g', 0},
- {"-0xfedcba987654321", 0xf0123456789abcdf, 0, 0, 0},
- {"0xf1f2f3f4f5f6f7f8f9", 0xffffffffffffffff, 0, 0, ERANGE},
- {"-0x123456789abcdef01", 0xffffffffffffffff, 0, 0, ERANGE},
-
- {"1111111111111111111111111111111111111111111111111111111111111111",
- 0xffffffffffffffff, 2, 0, 0},
- {"10000000000000000000000000000000000000000000000000000000000000000",
- 0xffffffffffffffff, 2, 0, ERANGE},
- {"11112220022122120101211020120210210211220",
- 0xffffffffffffffff, 3, 0, 0},
- {"11112220022122120101211020120210210211221",
- 0xffffffffffffffff, 3, 0, ERANGE},
- {"33333333333333333333333333333333", 0xffffffffffffffff, 4, 0, 0},
- {"100000000000000000000000000000000", 0xffffffffffffffff, 4, 0, ERANGE},
- {"2214220303114400424121122430", 0xffffffffffffffff, 5, 0, 0},
- {"2214220303114400424121122431", 0xffffffffffffffff, 5, 0, ERANGE},
- {"3520522010102100444244423", 0xffffffffffffffff, 6, 0, 0},
- {"3520522010102100444244424", 0xffffffffffffffff, 6, 0, ERANGE},
- {"45012021522523134134601", 0xffffffffffffffff, 7, 0, 0},
- {"45012021522523134134602", 0xffffffffffffffff, 7, 0, ERANGE},
- {"1777777777777777777777", 0xffffffffffffffff, 8, 0, 0},
- {"2000000000000000000000", 0xffffffffffffffff, 8, 0, ERANGE},
- {"145808576354216723756", 0xffffffffffffffff, 9, 0, 0},
- {"145808576354216723757", 0xffffffffffffffff, 9, 0, ERANGE},
- {"18446744073709551615", 0xffffffffffffffff, 10, 0, 0},
- {"18446744073709551616", 0xffffffffffffffff, 10, 0, ERANGE},
- {"335500516a429071284", 0xffffffffffffffff, 11, 0, 0},
- {"335500516a429071285", 0xffffffffffffffff, 11, 0, ERANGE},
- {"839365134a2a240713", 0xffffffffffffffff, 12, 0, 0},
- {"839365134a2a240714", 0xffffffffffffffff, 12, 0, ERANGE},
- {"219505a9511a867b72", 0xffffffffffffffff, 13, 0, 0},
- {"219505a9511a867b73", 0xffffffffffffffff, 13, 0, ERANGE},
- {"8681049adb03db171", 0xffffffffffffffff, 14, 0, 0},
- {"8681049adb03db172", 0xffffffffffffffff, 14, 0, ERANGE},
- {"2c1d56b648c6cd110", 0xffffffffffffffff, 15, 0, 0},
- {"2c1d56b648c6cd111", 0xffffffffffffffff, 15, 0, ERANGE},
- {"ffffffffffffffff", 0xffffffffffffffff, 16, 0, 0},
- {"10000000000000000", 0xffffffffffffffff, 16, 0, ERANGE},
- {"67979g60f5428010", 0xffffffffffffffff, 17, 0, 0},
- {"67979g60f5428011", 0xffffffffffffffff, 17, 0, ERANGE},
- {"2d3fgb0b9cg4bd2f", 0xffffffffffffffff, 18, 0, 0},
- {"2d3fgb0b9cg4bd2g", 0xffffffffffffffff, 18, 0, ERANGE},
- {"141c8786h1ccaagg", 0xffffffffffffffff, 19, 0, 0},
- {"141c8786h1ccaagh", 0xffffffffffffffff, 19, 0, ERANGE},
- {"b53bjh07be4dj0f", 0xffffffffffffffff, 20, 0, 0},
- {"b53bjh07be4dj0g", 0xffffffffffffffff, 20, 0, ERANGE},
- {"5e8g4ggg7g56dif", 0xffffffffffffffff, 21, 0, 0},
- {"5e8g4ggg7g56dig", 0xffffffffffffffff, 21, 0, ERANGE},
- {"2l4lf104353j8kf", 0xffffffffffffffff, 22, 0, 0},
- {"2l4lf104353j8kg", 0xffffffffffffffff, 22, 0, ERANGE},
- {"1ddh88h2782i515", 0xffffffffffffffff, 23, 0, 0},
- {"1ddh88h2782i516", 0xffffffffffffffff, 23, 0, ERANGE},
- {"l12ee5fn0ji1if", 0xffffffffffffffff, 24, 0, 0},
- {"l12ee5fn0ji1ig", 0xffffffffffffffff, 24, 0, ERANGE},
- {"c9c336o0mlb7ef", 0xffffffffffffffff, 25, 0, 0},
- {"c9c336o0mlb7eg", 0xffffffffffffffff, 25, 0, ERANGE},
- {"7b7n2pcniokcgf", 0xffffffffffffffff, 26, 0, 0},
- {"7b7n2pcniokcgg", 0xffffffffffffffff, 26, 0, ERANGE},
- {"4eo8hfam6fllmo", 0xffffffffffffffff, 27, 0, 0},
- {"4eo8hfam6fllmp", 0xffffffffffffffff, 27, 0, ERANGE},
- {"2nc6j26l66rhof", 0xffffffffffffffff, 28, 0, 0},
- {"2nc6j26l66rhog", 0xffffffffffffffff, 28, 0, ERANGE},
- {"1n3rsh11f098rn", 0xffffffffffffffff, 29, 0, 0},
- {"1n3rsh11f098ro", 0xffffffffffffffff, 29, 0, ERANGE},
- {"14l9lkmo30o40f", 0xffffffffffffffff, 30, 0, 0},
- {"14l9lkmo30o40g", 0xffffffffffffffff, 30, 0, ERANGE},
- {"nd075ib45k86f", 0xffffffffffffffff, 31, 0, 0},
- {"nd075ib45k86g", 0xffffffffffffffff, 31, 0, ERANGE},
- {"fvvvvvvvvvvvv", 0xffffffffffffffff, 32, 0, 0},
- {"g000000000000", 0xffffffffffffffff, 32, 0, ERANGE},
- {"b1w8p7j5q9r6f", 0xffffffffffffffff, 33, 0, 0},
- {"b1w8p7j5q9r6g", 0xffffffffffffffff, 33, 0, ERANGE},
- {"7orp63sh4dphh", 0xffffffffffffffff, 34, 0, 0},
- {"7orp63sh4dphi", 0xffffffffffffffff, 34, 0, ERANGE},
- {"5g24a25twkwff", 0xffffffffffffffff, 35, 0, 0},
- {"5g24a25twkwfg", 0xffffffffffffffff, 35, 0, ERANGE},
- {"3w5e11264sgsf", 0xffffffffffffffff, 36, 0, 0},
- {"3w5e11264sgsg", 0xffffffffffffffff, 36, 0, ERANGE},
-#endif
- {NULL, 0, 0, 0, 0},
- };
-
-/* Prototypes for local functions. */
-static void expand (char *dst, int c);
-
-static int
-do_test (void)
-{
- const struct ltest *lt;
- char *ep;
- int status = 0;
- int save_errno;
-
- for (lt = tests; lt->str != NULL; ++lt)
- {
- long int l;
-
- errno = 0;
- l = strtol (lt->str, &ep, lt->base);
- save_errno = errno;
- printf ("strtol(\"%s\", , %d) test %u",
- lt->str, lt->base, (unsigned int) (lt - tests));
- if (l == (long int) lt->expect && *ep == lt->left
- && save_errno == lt->err)
- puts("\tOK");
- else
- {
- puts("\tBAD");
- if (l != (long int) lt->expect)
- printf(" returns %ld, expected %ld\n",
- l, (long int) lt->expect);
- if (lt->left != *ep)
- {
- char exp1[5], exp2[5];
- expand (exp1, *ep);
- expand (exp2, lt->left);
- printf (" leaves '%s', expected '%s'\n", exp1, exp2);
- }
- if (save_errno != lt->err)
- printf (" errno %d (%s) instead of %d (%s)\n",
- save_errno, strerror (save_errno),
- lt->err, strerror (lt->err));
- status = 1;
- }
- }
-
- for (++lt; lt->str != NULL; lt++)
- {
- unsigned long int ul;
-
- errno = 0;
- ul = strtoul (lt->str, &ep, lt->base);
- save_errno = errno;
- printf ("strtoul(\"%s\", , %d) test %u",
- lt->str, lt->base, (unsigned int) (lt - tests));
- if (ul == lt->expect && *ep == lt->left && save_errno == lt->err)
- puts("\tOK");
- else
- {
- puts ("\tBAD");
- if (ul != lt->expect)
- printf (" returns %lu, expected %lu\n",
- ul, lt->expect);
- if (lt->left != *ep)
- {
- char exp1[5], exp2[5];
- expand (exp1, *ep);
- expand (exp2, lt->left);
- printf (" leaves '%s', expected '%s'\n", exp1, exp2);
- }
- if (save_errno != lt->err)
- printf (" errno %d (%s) instead of %d (%s)\n",
- save_errno, strerror (save_errno),
- lt->err, strerror (lt->err));
- status = 1;
- }
- }
-
- return status ? EXIT_FAILURE : EXIT_SUCCESS;
-}
-
-static void
-expand (char *dst, int c)
-{
- if (isprint (c))
- {
- dst[0] = c;
- dst[1] = '\0';
- }
- else
- (void) sprintf (dst, "%#.3o", (unsigned int) c);
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-strtoll.c b/stdlib/tst-strtoll.c
deleted file mode 100644
index de39ee3a5e..0000000000
--- a/stdlib/tst-strtoll.c
+++ /dev/null
@@ -1,401 +0,0 @@
-/* My bet is this was written by Chris Torek.
- I reformatted and ansidecl-ized it, and tweaked it a little. */
-
-#include <ctype.h>
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-
-struct ltest
- {
- const char *str; /* Convert this. */
- unsigned long long int expect; /* To get this. */
- int base; /* Use this base. */
- char left; /* With this left over. */
- int err; /* And this in errno. */
- };
-static const struct ltest tests[] =
- {
- /* First, signed numbers: */
- /* simple... */
- {"123", 123, 0, 0, 0},
- {"+123", 123, 0, 0, 0},
- {" 123", 123, 0, 0, 0},
- {" 123 ", 123, 0, ' ', 0},
- {" -17", -17, 0, 0, 0},
-
- /* implicit base... */
- {"0123", 0123, 0, 0, 0},
- {"0123a", 0123, 0, 'a', 0},
- {"01239", 0123, 0, '9', 0},
- {"0x123", 0x123, 0, 0, 0},
- {"-0x123", -0x123, 0, 0, 0},
- {"0x0xc", 0, 0, 'x', 0},
- {" +0x123fg", 0x123f, 0, 'g', 0},
-
- /* explicit base... */
- {"123", 0x123, 16, 0, 0},
- {"0x123", 0x123, 16, 0, 0},
- {"123", 0123, 8, 0, 0},
- {"0123", 0123, 8, 0, 0},
- {"0123", 123, 10, 0, 0},
- {"0x123", 0, 10, 'x', 0},
-
- /* case insensitivity... */
- {"abcd", 0xabcd, 16, 0, 0},
- {"AbCd", 0xabcd, 16, 0, 0},
- {"0xABCD", 0xabcd, 16, 0, 0},
- {"0Xabcd", 0xabcd, 16, 0, 0},
-
- /* odd bases... */
- {"0xyz", 33 * 35 + 34, 35, 'z', 0},
- {"yz!", 34 * 36 + 35, 36, '!', 0},
- {"-yz", -(34*36 + 35), 36, 0, 0},
- {"GhI4", ((16*20 + 17)*20 + 18)*20 + 4, 20, 0, 0},
-
- /* special case for the 32-bit version of strtoll,
- from a ncftp configure test */
- {"99000000001", 1000000000ll * 99ll + 1ll, 0, 0},
-
- /* extremes... */
- {"9223372036854775807", 9223372036854775807ll, 0, 0, 0},
- {"9223372036854775808", 9223372036854775807ll, 0, 0, ERANGE},
- {"922337203685477580777", 9223372036854775807ll, 0, 0, ERANGE},
- {"9223372036854775810", 9223372036854775807ll, 0, 0, ERANGE},
- {"-2147483648", -2147483648ll, 0, 0, 0},
- {"-9223372036854775808", -9223372036854775807ll - 1, 0, 0, 0},
- {"-9223372036854775809", -9223372036854775807ll - 1, 0, 0, ERANGE},
- {"0x112233445566778899z", 9223372036854775807ll, 16, 'z', ERANGE},
- {"0xFFFFFFFFFFFF00FF" , 9223372036854775807ll, 0, 0, ERANGE},
-
- {"111111111111111111111111111111111111111111111111111111111111111",
- 9223372036854775807ll, 2, 0, 0},
- {"1000000000000000000000000000000000000000000000000000000000000000",
- 9223372036854775807ll, 2, 0, ERANGE},
- {"2021110011022210012102010021220101220221",
- 9223372036854775807ll, 3, 0, 0},
- {"2021110011022210012102010021220101220222",
- 9223372036854775807ll, 3, 0, ERANGE},
- {"13333333333333333333333333333333", 9223372036854775807ll, 4, 0, 0},
- {"20000000000000000000000000000000", 9223372036854775807ll, 4, 0, ERANGE},
- {"1104332401304422434310311212", 9223372036854775807ll, 5, 0, 0},
- {"1104332401304422434310311213", 9223372036854775807ll, 5, 0, ERANGE},
- {"1540241003031030222122211", 9223372036854775807ll, 6, 0, 0},
- {"1540241003031030222122212", 9223372036854775807ll, 6, 0, ERANGE},
- {"22341010611245052052300", 9223372036854775807ll, 7, 0, 0},
- {"22341010611245052052301", 9223372036854775807ll, 7, 0, ERANGE},
- {"777777777777777777777", 9223372036854775807ll, 8, 0, 0},
- {"1000000000000000000000", 9223372036854775807ll, 8, 0, ERANGE},
- {"67404283172107811827", 9223372036854775807ll, 9, 0, 0},
- {"67404283172107811828", 9223372036854775807ll, 9, 0, ERANGE},
- {"9223372036854775807", 9223372036854775807ll, 10, 0, 0},
- {"9223372036854775808", 9223372036854775807ll, 10, 0, ERANGE},
- {"1728002635214590697", 9223372036854775807ll, 11, 0, 0},
- {"1728002635214590698", 9223372036854775807ll, 11, 0, ERANGE},
- {"41a792678515120367", 9223372036854775807ll, 12, 0, 0},
- {"41a792678515120368", 9223372036854775807ll, 12, 0, ERANGE},
- {"10b269549075433c37", 9223372036854775807ll, 13, 0, 0},
- {"10b269549075433c38", 9223372036854775807ll, 13, 0, ERANGE},
- {"4340724c6c71dc7a7", 9223372036854775807ll, 14, 0, 0},
- {"4340724c6c71dc7a8", 9223372036854775807ll, 14, 0, ERANGE},
- {"160e2ad3246366807", 9223372036854775807ll, 15, 0, 0},
- {"160e2ad3246366808", 9223372036854775807ll, 15, 0, ERANGE},
- {"7fffffffffffffff", 9223372036854775807ll, 16, 0, 0},
- {"8000000000000000", 9223372036854775807ll, 16, 0, ERANGE},
- {"33d3d8307b214008", 9223372036854775807ll, 17, 0, 0},
- {"33d3d8307b214009", 9223372036854775807ll, 17, 0, ERANGE},
- {"16agh595df825fa7", 9223372036854775807ll, 18, 0, 0},
- {"16agh595df825fa8", 9223372036854775807ll, 18, 0, ERANGE},
- {"ba643dci0ffeehh", 9223372036854775807ll, 19, 0, 0},
- {"ba643dci0ffeehi", 9223372036854775807ll, 19, 0, ERANGE},
- {"5cbfjia3fh26ja7", 9223372036854775807ll, 20, 0, 0},
- {"5cbfjia3fh26ja8", 9223372036854775807ll, 20, 0, ERANGE},
- {"2heiciiie82dh97", 9223372036854775807ll, 21, 0, 0},
- {"2heiciiie82dh98", 9223372036854775807ll, 21, 0, ERANGE},
- {"1adaibb21dckfa7", 9223372036854775807ll, 22, 0, 0},
- {"1adaibb21dckfa8", 9223372036854775807ll, 22, 0, ERANGE},
- {"i6k448cf4192c2", 9223372036854775807ll, 23, 0, 0},
- {"i6k448cf4192c3", 9223372036854775807ll, 23, 0, ERANGE},
- {"acd772jnc9l0l7", 9223372036854775807ll, 24, 0, 0},
- {"acd772jnc9l0l8", 9223372036854775807ll, 24, 0, ERANGE},
- {"64ie1focnn5g77", 9223372036854775807ll, 25, 0, 0},
- {"64ie1focnn5g78", 9223372036854775807ll, 25, 0, ERANGE},
- {"3igoecjbmca687", 9223372036854775807ll, 26, 0, 0},
- {"3igoecjbmca688", 9223372036854775807ll, 26, 0, ERANGE},
- {"27c48l5b37oaop", 9223372036854775807ll, 27, 0, 0},
- {"27c48l5b37oaoq", 9223372036854775807ll, 27, 0, ERANGE},
- {"1bk39f3ah3dmq7", 9223372036854775807ll, 28, 0, 0},
- {"1bk39f3ah3dmq8", 9223372036854775807ll, 28, 0, ERANGE},
- {"q1se8f0m04isb", 9223372036854775807ll, 29, 0, 0},
- {"q1se8f0m04isc", 9223372036854775807ll, 29, 0, ERANGE},
- {"hajppbc1fc207", 9223372036854775807ll, 30, 0, 0},
- {"hajppbc1fc208", 9223372036854775807ll, 30, 0, ERANGE},
- {"bm03i95hia437", 9223372036854775807ll, 31, 0, 0},
- {"bm03i95hia438", 9223372036854775807ll, 31, 0, ERANGE},
- {"7vvvvvvvvvvvv", 9223372036854775807ll, 32, 0, 0},
- {"8000000000000", 9223372036854775807ll, 32, 0, ERANGE},
- {"5hg4ck9jd4u37", 9223372036854775807ll, 33, 0, 0},
- {"5hg4ck9jd4u38", 9223372036854775807ll, 33, 0, ERANGE},
- {"3tdtk1v8j6tpp", 9223372036854775807ll, 34, 0, 0},
- {"3tdtk1v8j6tpq", 9223372036854775807ll, 34, 0, ERANGE},
- {"2pijmikexrxp7", 9223372036854775807ll, 35, 0, 0},
- {"2pijmikexrxp8", 9223372036854775807ll, 35, 0, ERANGE},
- {"1y2p0ij32e8e7", 9223372036854775807ll, 36, 0, 0},
- {"1y2p0ij32e8e8", 9223372036854775807ll, 36, 0, ERANGE},
-
- {"-1000000000000000000000000000000000000000000000000000000000000000",
- -9223372036854775808ull, 2, 0, 0},
- {"-1000000000000000000000000000000000000000000000000000000000000001",
- -9223372036854775808ull, 2, 0, ERANGE},
- {"-2021110011022210012102010021220101220222",
- -9223372036854775808ull, 3, 0, 0},
- {"-2021110011022210012102010021220101221000",
- -9223372036854775808ull, 3, 0, ERANGE},
- {"-20000000000000000000000000000000", -9223372036854775808ull, 4, 0, 0},
- {"-20000000000000000000000000000001", -9223372036854775808ull, 4, 0, ERANGE},
- {"-1104332401304422434310311213", -9223372036854775808ull, 5, 0, 0},
- {"-1104332401304422434310311214", -9223372036854775808ull, 5, 0, ERANGE},
- {"-1540241003031030222122212", -9223372036854775808ull, 6, 0, 0},
- {"-1540241003031030222122213", -9223372036854775808ull, 6, 0, ERANGE},
- {"-22341010611245052052301", -9223372036854775808ull, 7, 0, 0},
- {"-22341010611245052052302", -9223372036854775808ull, 7, 0, ERANGE},
- {"-1000000000000000000000", -9223372036854775808ull, 8, 0, 0},
- {"-1000000000000000000001", -9223372036854775808ull, 8, 0, ERANGE},
- {"-67404283172107811828", -9223372036854775808ull, 9, 0, 0},
- {"-67404283172107811830", -9223372036854775808ull, 9, 0, ERANGE},
- {"-9223372036854775808", -9223372036854775808ull, 10, 0, 0},
- {"-9223372036854775809", -9223372036854775808ull, 10, 0, ERANGE},
- {"-1728002635214590698", -9223372036854775808ull, 11, 0, 0},
- {"-1728002635214590699", -9223372036854775808ull, 11, 0, ERANGE},
- {"-41a792678515120368", -9223372036854775808ull, 12, 0, 0},
- {"-41a792678515120369", -9223372036854775808ull, 12, 0, ERANGE},
- {"-10b269549075433c38", -9223372036854775808ull, 13, 0, 0},
- {"-10b269549075433c39", -9223372036854775808ull, 13, 0, ERANGE},
- {"-4340724c6c71dc7a8", -9223372036854775808ull, 14, 0, 0},
- {"-4340724c6c71dc7a9", -9223372036854775808ull, 14, 0, ERANGE},
- {"-160e2ad3246366808", -9223372036854775808ull, 15, 0, 0},
- {"-160e2ad3246366809", -9223372036854775808ull, 15, 0, ERANGE},
- {"-8000000000000000", -9223372036854775808ull, 16, 0, 0},
- {"-8000000000000001", -9223372036854775808ull, 16, 0, ERANGE},
- {"-33d3d8307b214009", -9223372036854775808ull, 17, 0, 0},
- {"-33d3d8307b21400a", -9223372036854775808ull, 17, 0, ERANGE},
- {"-16agh595df825fa8", -9223372036854775808ull, 18, 0, 0},
- {"-16agh595df825fa9", -9223372036854775808ull, 18, 0, ERANGE},
- {"-ba643dci0ffeehi", -9223372036854775808ull, 19, 0, 0},
- {"-ba643dci0ffeei0", -9223372036854775808ull, 19, 0, ERANGE},
- {"-5cbfjia3fh26ja8", -9223372036854775808ull, 20, 0, 0},
- {"-5cbfjia3fh26ja9", -9223372036854775808ull, 20, 0, ERANGE},
- {"-2heiciiie82dh98", -9223372036854775808ull, 21, 0, 0},
- {"-2heiciiie82dh99", -9223372036854775808ull, 21, 0, ERANGE},
- {"-1adaibb21dckfa8", -9223372036854775808ull, 22, 0, 0},
- {"-1adaibb21dckfa9", -9223372036854775808ull, 22, 0, ERANGE},
- {"-i6k448cf4192c3", -9223372036854775808ull, 23, 0, 0},
- {"-i6k448cf4192c4", -9223372036854775808ull, 23, 0, ERANGE},
- {"-acd772jnc9l0l8", -9223372036854775808ull, 24, 0, 0},
- {"-acd772jnc9l0l9", -9223372036854775808ull, 24, 0, ERANGE},
- {"-64ie1focnn5g78", -9223372036854775808ull, 25, 0, 0},
- {"-64ie1focnn5g79", -9223372036854775808ull, 25, 0, ERANGE},
- {"-3igoecjbmca688", -9223372036854775808ull, 26, 0, 0},
- {"-3igoecjbmca689", -9223372036854775808ull, 26, 0, ERANGE},
- {"-27c48l5b37oaoq", -9223372036854775808ull, 27, 0, 0},
- {"-27c48l5b37oap0", -9223372036854775808ull, 27, 0, ERANGE},
- {"-1bk39f3ah3dmq8", -9223372036854775808ull, 28, 0, 0},
- {"-1bk39f3ah3dmq9", -9223372036854775808ull, 28, 0, ERANGE},
- {"-q1se8f0m04isc", -9223372036854775808ull, 29, 0, 0},
- {"-q1se8f0m04isd", -9223372036854775808ull, 29, 0, ERANGE},
- {"-hajppbc1fc208", -9223372036854775808ull, 30, 0, 0},
- {"-hajppbc1fc209", -9223372036854775808ull, 30, 0, ERANGE},
- {"-bm03i95hia438", -9223372036854775808ull, 31, 0, 0},
- {"-bm03i95hia439", -9223372036854775808ull, 31, 0, ERANGE},
- {"-8000000000000", -9223372036854775808ull, 32, 0, 0},
- {"-8000000000001", -9223372036854775808ull, 32, 0, ERANGE},
- {"-5hg4ck9jd4u38", -9223372036854775808ull, 33, 0, 0},
- {"-5hg4ck9jd4u39", -9223372036854775808ull, 33, 0, ERANGE},
- {"-3tdtk1v8j6tpq", -9223372036854775808ull, 34, 0, 0},
- {"-3tdtk1v8j6tpr", -9223372036854775808ull, 34, 0, ERANGE},
- {"-2pijmikexrxp8", -9223372036854775808ull, 35, 0, 0},
- {"-2pijmikexrxp9", -9223372036854775808ull, 35, 0, ERANGE},
- {"-1y2p0ij32e8e8", -9223372036854775808ull, 36, 0, 0},
- {"-1y2p0ij32e8e9", -9223372036854775808ull, 36, 0, ERANGE},
- {NULL, 0, 0, 0, 0},
-
- /* Then unsigned. */
- {" 0", 0, 0, 0, 0},
- {"0xffffffffg", 0xffffffff, 0, 'g', 0},
- {"0xffffffffffffffffg", 0xffffffffffffffffull, 0, 'g', 0},
- {"-0xfedcba987654321", 0xf0123456789abcdfull, 0, 0, 0},
- {"0xf1f2f3f4f5f6f7f8f9", 0xffffffffffffffffull, 0, 0, ERANGE},
- {"-0x123456789abcdef01", 0xffffffffffffffffull, 0, 0, ERANGE},
-
- {"1111111111111111111111111111111111111111111111111111111111111111",
- 0xffffffffffffffff, 2, 0, 0},
- {"10000000000000000000000000000000000000000000000000000000000000000",
- 0xffffffffffffffff, 2, 0, ERANGE},
- {"11112220022122120101211020120210210211220",
- 0xffffffffffffffff, 3, 0, 0},
- {"11112220022122120101211020120210210211221",
- 0xffffffffffffffff, 3, 0, ERANGE},
- {"33333333333333333333333333333333", 0xffffffffffffffff, 4, 0, 0},
- {"100000000000000000000000000000000", 0xffffffffffffffff, 4, 0, ERANGE},
- {"2214220303114400424121122430", 0xffffffffffffffff, 5, 0, 0},
- {"2214220303114400424121122431", 0xffffffffffffffff, 5, 0, ERANGE},
- {"3520522010102100444244423", 0xffffffffffffffff, 6, 0, 0},
- {"3520522010102100444244424", 0xffffffffffffffff, 6, 0, ERANGE},
- {"45012021522523134134601", 0xffffffffffffffff, 7, 0, 0},
- {"45012021522523134134602", 0xffffffffffffffff, 7, 0, ERANGE},
- {"1777777777777777777777", 0xffffffffffffffff, 8, 0, 0},
- {"2000000000000000000000", 0xffffffffffffffff, 8, 0, ERANGE},
- {"145808576354216723756", 0xffffffffffffffff, 9, 0, 0},
- {"145808576354216723757", 0xffffffffffffffff, 9, 0, ERANGE},
- {"18446744073709551615", 0xffffffffffffffff, 10, 0, 0},
- {"18446744073709551616", 0xffffffffffffffff, 10, 0, ERANGE},
- {"335500516a429071284", 0xffffffffffffffff, 11, 0, 0},
- {"335500516a429071285", 0xffffffffffffffff, 11, 0, ERANGE},
- {"839365134a2a240713", 0xffffffffffffffff, 12, 0, 0},
- {"839365134a2a240714", 0xffffffffffffffff, 12, 0, ERANGE},
- {"219505a9511a867b72", 0xffffffffffffffff, 13, 0, 0},
- {"219505a9511a867b73", 0xffffffffffffffff, 13, 0, ERANGE},
- {"8681049adb03db171", 0xffffffffffffffff, 14, 0, 0},
- {"8681049adb03db172", 0xffffffffffffffff, 14, 0, ERANGE},
- {"2c1d56b648c6cd110", 0xffffffffffffffff, 15, 0, 0},
- {"2c1d56b648c6cd111", 0xffffffffffffffff, 15, 0, ERANGE},
- {"ffffffffffffffff", 0xffffffffffffffff, 16, 0, 0},
- {"10000000000000000", 0xffffffffffffffff, 16, 0, ERANGE},
- {"67979g60f5428010", 0xffffffffffffffff, 17, 0, 0},
- {"67979g60f5428011", 0xffffffffffffffff, 17, 0, ERANGE},
- {"2d3fgb0b9cg4bd2f", 0xffffffffffffffff, 18, 0, 0},
- {"2d3fgb0b9cg4bd2g", 0xffffffffffffffff, 18, 0, ERANGE},
- {"141c8786h1ccaagg", 0xffffffffffffffff, 19, 0, 0},
- {"141c8786h1ccaagh", 0xffffffffffffffff, 19, 0, ERANGE},
- {"b53bjh07be4dj0f", 0xffffffffffffffff, 20, 0, 0},
- {"b53bjh07be4dj0g", 0xffffffffffffffff, 20, 0, ERANGE},
- {"5e8g4ggg7g56dif", 0xffffffffffffffff, 21, 0, 0},
- {"5e8g4ggg7g56dig", 0xffffffffffffffff, 21, 0, ERANGE},
- {"2l4lf104353j8kf", 0xffffffffffffffff, 22, 0, 0},
- {"2l4lf104353j8kg", 0xffffffffffffffff, 22, 0, ERANGE},
- {"1ddh88h2782i515", 0xffffffffffffffff, 23, 0, 0},
- {"1ddh88h2782i516", 0xffffffffffffffff, 23, 0, ERANGE},
- {"l12ee5fn0ji1if", 0xffffffffffffffff, 24, 0, 0},
- {"l12ee5fn0ji1ig", 0xffffffffffffffff, 24, 0, ERANGE},
- {"c9c336o0mlb7ef", 0xffffffffffffffff, 25, 0, 0},
- {"c9c336o0mlb7eg", 0xffffffffffffffff, 25, 0, ERANGE},
- {"7b7n2pcniokcgf", 0xffffffffffffffff, 26, 0, 0},
- {"7b7n2pcniokcgg", 0xffffffffffffffff, 26, 0, ERANGE},
- {"4eo8hfam6fllmo", 0xffffffffffffffff, 27, 0, 0},
- {"4eo8hfam6fllmp", 0xffffffffffffffff, 27, 0, ERANGE},
- {"2nc6j26l66rhof", 0xffffffffffffffff, 28, 0, 0},
- {"2nc6j26l66rhog", 0xffffffffffffffff, 28, 0, ERANGE},
- {"1n3rsh11f098rn", 0xffffffffffffffff, 29, 0, 0},
- {"1n3rsh11f098ro", 0xffffffffffffffff, 29, 0, ERANGE},
- {"14l9lkmo30o40f", 0xffffffffffffffff, 30, 0, 0},
- {"14l9lkmo30o40g", 0xffffffffffffffff, 30, 0, ERANGE},
- {"nd075ib45k86f", 0xffffffffffffffff, 31, 0, 0},
- {"nd075ib45k86g", 0xffffffffffffffff, 31, 0, ERANGE},
- {"fvvvvvvvvvvvv", 0xffffffffffffffff, 32, 0, 0},
- {"g000000000000", 0xffffffffffffffff, 32, 0, ERANGE},
- {"b1w8p7j5q9r6f", 0xffffffffffffffff, 33, 0, 0},
- {"b1w8p7j5q9r6g", 0xffffffffffffffff, 33, 0, ERANGE},
- {"7orp63sh4dphh", 0xffffffffffffffff, 34, 0, 0},
- {"7orp63sh4dphi", 0xffffffffffffffff, 34, 0, ERANGE},
- {"5g24a25twkwff", 0xffffffffffffffff, 35, 0, 0},
- {"5g24a25twkwfg", 0xffffffffffffffff, 35, 0, ERANGE},
- {"3w5e11264sgsf", 0xffffffffffffffff, 36, 0, 0},
- {"3w5e11264sgsg", 0xffffffffffffffff, 36, 0, ERANGE},
- {NULL, 0, 0, 0, 0},
- };
-
-/* Prototypes for local functions. */
-static void expand (char *dst, int c);
-
-static int
-do_test (void)
-{
- const struct ltest *lt;
- char *ep;
- int status = 0;
- int save_errno;
-
- for (lt = tests; lt->str != NULL; ++lt)
- {
- long long int l;
-
- errno = 0;
- l = strtoll (lt->str, &ep, lt->base);
- save_errno = errno;
- printf ("strtoll(\"%s\", , %d) test %u",
- lt->str, lt->base, (unsigned int) (lt - tests));
- if (l == (long long int) lt->expect && *ep == lt->left
- && save_errno == lt->err)
- puts("\tOK");
- else
- {
- puts("\tBAD");
- if (l != (long long int) lt->expect)
- printf(" returns %lld, expected %lld\n",
- l, (long long int) lt->expect);
- if (lt->left != *ep)
- {
- char exp1[5], exp2[5];
- expand (exp1, *ep);
- expand (exp2, lt->left);
- printf (" leaves '%s', expected '%s'\n", exp1, exp2);
- }
- if (save_errno != lt->err)
- printf (" errno %d (%s) instead of %d (%s)\n",
- save_errno, strerror (save_errno),
- lt->err, strerror (lt->err));
- status = 1;
- }
- }
-
- for (++lt; lt->str != NULL; lt++)
- {
- unsigned long long int ul;
-
- errno = 0;
- ul = strtoull (lt->str, &ep, lt->base);
- save_errno = errno;
- printf ("strtoull(\"%s\", , %d) test %u",
- lt->str, lt->base, (unsigned int) (lt - tests));
- if (ul == lt->expect && *ep == lt->left && save_errno == lt->err)
- puts("\tOK");
- else
- {
- puts ("\tBAD");
- if (ul != lt->expect)
- printf (" returns %llu, expected %llu\n",
- ul, lt->expect);
- if (lt->left != *ep)
- {
- char exp1[5], exp2[5];
- expand (exp1, *ep);
- expand (exp2, lt->left);
- printf (" leaves '%s', expected '%s'\n", exp1, exp2);
- }
- if (save_errno != lt->err)
- printf (" errno %d (%s) instead of %d (%s)\n",
- save_errno, strerror (save_errno),
- lt->err, strerror (lt->err));
- status = 1;
- }
- }
-
- return status ? EXIT_FAILURE : EXIT_SUCCESS;
-}
-
-static void
-expand (char *dst, int c)
-{
- if (isprint (c))
- {
- dst[0] = c;
- dst[1] = '\0';
- }
- else
- (void) sprintf (dst, "%#.3o", (unsigned int) c);
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-system.c b/stdlib/tst-system.c
deleted file mode 100644
index 6cb62e1248..0000000000
--- a/stdlib/tst-system.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2002-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
- 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>
-
-
-static int
-do_test (void)
-{
- return system (":");
-}
-
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-thread-quick_exit.cc b/stdlib/tst-thread-quick_exit.cc
deleted file mode 100644
index 047df6043d..0000000000
--- a/stdlib/tst-thread-quick_exit.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Bug 20198: Do not call object destructors at exit.
- Copyright (C) 2016-2017 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 <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-struct A
-{
- ~A () { abort (); }
-};
-
-thread_local A a1;
-thread_local A a2;
-
-void
-__attribute__ ((noinline, noclone))
-optimization_barrier (A &)
-{
-}
-
-/* Call std::quick_exit from a non-main thread. */
-void *
-non_main_thread (void *)
-{
- optimization_barrier (a1);
- /* The C++11 standard in 18.5.12 says:
- "Objects shall not be destroyed as a result of calling
- quick_exit."
- If quick_exit calls the destructors the test aborts. */
- quick_exit (0);
-}
-
-static int
-do_test()
-{
- optimization_barrier (a2);
- pthread_t thr;
- int ret = pthread_create (&thr, NULL, non_main_thread, NULL);
- if (ret != 0)
- {
- errno = ret;
- printf ("error: pthread_create: %m\n");
- }
- pthread_join (thr, NULL);
- return 1;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-tininess.c b/stdlib/tst-tininess.c
deleted file mode 100644
index c032454f96..0000000000
--- a/stdlib/tst-tininess.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Test that tininess.h is correct for this architecture.
- Copyright (C) 2012-2017 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 <float.h>
-#include <stdio.h>
-#include <tininess.h>
-
-volatile float a = 0x1.fffp-126;
-volatile float b = 0x1.0008p-1;
-volatile float c;
-volatile float m = FLT_MIN;
-volatile float mm;
-
-static int
-do_test (void)
-{
- int result = 0;
-#ifdef FE_UNDERFLOW
- feclearexcept (FE_ALL_EXCEPT);
- mm = m * m;
- if (!fetestexcept (FE_UNDERFLOW))
- {
- puts ("underflow exception not supported at runtime, cannot test");
- return 0;
- }
- feclearexcept (FE_ALL_EXCEPT);
- c = a * b;
- if (fetestexcept (FE_UNDERFLOW))
- {
- if (TININESS_AFTER_ROUNDING)
- {
- puts ("tininess.h says after rounding, "
- "but detected before rounding");
- result = 1;
- }
- }
- else
- {
- if (!TININESS_AFTER_ROUNDING)
- {
- puts ("tininess.h says before rounding, "
- "but detected after rounding");
- result = 1;
- }
- }
-#else
- puts ("underflow exception not supported at compile time, cannot test");
-#endif
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-tls-atexit-lib.c b/stdlib/tst-tls-atexit-lib.c
deleted file mode 100644
index a227e4653c..0000000000
--- a/stdlib/tst-tls-atexit-lib.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Verify that DSO is unloaded only if its TLS objects are destroyed - the DSO.
- Copyright (C) 2013-2017 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 <stdlib.h>
-
-extern void *__dso_handle;
-
-typedef struct
-{
- void *val;
-} A;
-
-/* We only care about the destructor. */
-void A_dtor (void *obj)
-{
- ((A *)obj)->val = obj;
-}
-
-void reg_dtor (void)
-{
- static __thread A b;
- __cxa_thread_atexit_impl (A_dtor, &b, __dso_handle);
-}
diff --git a/stdlib/tst-tls-atexit-nodelete.c b/stdlib/tst-tls-atexit-nodelete.c
deleted file mode 100644
index 2293685144..0000000000
--- a/stdlib/tst-tls-atexit-nodelete.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Verify that a RTLD_NODELETE DSO is not unloaded even if its TLS objects are
- destroyed.
-
- Copyright (C) 2015-2017 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 NO_DELETE 1
-#define H2_RTLD_FLAGS (RTLD_LAZY | RTLD_NODELETE)
-#define LOADED_IS_GOOD true
-#include "tst-tls-atexit.c"
diff --git a/stdlib/tst-tls-atexit.c b/stdlib/tst-tls-atexit.c
deleted file mode 100644
index 6dbf49d460..0000000000
--- a/stdlib/tst-tls-atexit.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* Verify that DSO is unloaded only if its TLS objects are destroyed.
- Copyright (C) 2013-2017 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/>. */
-
-/* For the default case, i.e. NO_DELETE not defined, the test dynamically loads
- a DSO and spawns a thread that subsequently calls into the DSO to register a
- destructor for an object in the DSO and then calls dlclose on the handle for
- the DSO. When the thread exits, the DSO should not be unloaded or else the
- destructor called during thread exit will crash. Further in the main
- thread, the DSO is opened and closed again, at which point the DSO should be
- unloaded.
-
- When NO_DELETE is defined, the DSO is loaded twice, once with just RTLD_LAZY
- flag and the second time with the RTLD_NODELETE flag set. The thread is
- spawned, destructor registered and then thread exits without closing the
- DSO. In the main thread, the first handle is then closed, followed by the
- second handle. In the end, the DSO should remain loaded due to the
- RTLD_NODELETE flag being set in the second dlopen call. */
-
-#include <dlfcn.h>
-#include <pthread.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <link.h>
-#include <stdbool.h>
-
-#ifndef NO_DELETE
-# define LOADED_IS_GOOD false
-#endif
-
-#ifndef H2_RTLD_FLAGS
-# define H2_RTLD_FLAGS (RTLD_LAZY)
-#endif
-
-#define DSO_NAME "$ORIGIN/tst-tls-atexit-lib.so"
-
-/* Walk through the map in the _r_debug structure to see if our lib is still
- loaded. */
-static bool
-is_loaded (void)
-{
- struct link_map *lm = (struct link_map *) _r_debug.r_map;
-
- for (; lm; lm = lm->l_next)
- if (lm->l_type == lt_loaded && lm->l_name
- && strcmp (basename (DSO_NAME), basename (lm->l_name)) == 0)
- {
- printf ("%s is still loaded\n", lm->l_name);
- return true;
- }
- return false;
-}
-
-/* Accept a valid handle returned by DLOPEN, load the reg_dtor symbol to
- register a destructor and then call dlclose on the handle. The dlclose
- should not unload the DSO since the destructor has not been called yet. */
-static void *
-reg_dtor_and_close (void *h)
-{
- void (*reg_dtor) (void) = (void (*) (void)) dlsym (h, "reg_dtor");
-
- if (reg_dtor == NULL)
- {
- printf ("Unable to find symbol: %s\n", dlerror ());
- return (void *) (uintptr_t) 1;
- }
-
- reg_dtor ();
-
-#ifndef NO_DELETE
- dlclose (h);
-#endif
-
- return NULL;
-}
-
-static int
-spawn_thread (void *h)
-{
- pthread_t t;
- int ret;
- void *thr_ret;
-
- if ((ret = pthread_create (&t, NULL, reg_dtor_and_close, h)) != 0)
- {
- printf ("pthread_create failed: %s\n", strerror (ret));
- return 1;
- }
-
- if ((ret = pthread_join (t, &thr_ret)) != 0)
- {
- printf ("pthread_join failed: %s\n", strerror (ret));
- return 1;
- }
-
- if (thr_ret != NULL)
- return 1;
-
- return 0;
-}
-
-static int
-do_test (void)
-{
- /* Load the DSO. */
- void *h1 = dlopen (DSO_NAME, RTLD_LAZY);
- if (h1 == NULL)
- {
- printf ("h1: Unable to load DSO: %s\n", dlerror ());
- return 1;
- }
-
-#ifndef NO_DELETE
- if (spawn_thread (h1) != 0)
- return 1;
-#endif
-
- void *h2 = dlopen (DSO_NAME, H2_RTLD_FLAGS);
- if (h2 == NULL)
- {
- printf ("h2: Unable to load DSO: %s\n", dlerror ());
- return 1;
- }
-
-#ifdef NO_DELETE
- if (spawn_thread (h1) != 0)
- return 1;
-
- dlclose (h1);
-#endif
- dlclose (h2);
-
- /* Check link maps to ensure that the DSO has unloaded. In the normal case,
- the DSO should be unloaded if there are no uses. However, if one of the
- dlopen calls were with RTLD_NODELETE, the DSO should remain loaded. */
- return is_loaded () == LOADED_IS_GOOD ? 0 : 1;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-unsetenv1.c b/stdlib/tst-unsetenv1.c
deleted file mode 100644
index a2a760d241..0000000000
--- a/stdlib/tst-unsetenv1.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <stdlib.h>
-
-static int
-do_test (void)
-{
- clearenv ();
- unsetenv ("FOO");
- return 0;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-width-stdint.c b/stdlib/tst-width-stdint.c
deleted file mode 100644
index 9a4c4167b2..0000000000
--- a/stdlib/tst-width-stdint.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Test integer width macros in <stdint.h>.
- Copyright (C) 2016-2017 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 <signal.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <wchar.h>
-
-#define CHECK_WIDTH(TYPE, MAX, WIDTH) \
- do \
- { \
- if ((MAX >> ((TYPE) -1 < 0 ? (WIDTH - 2) : (WIDTH - 1))) != 1) \
- { \
- puts ("bad width of " #TYPE); \
- result = 1; \
- } \
- else \
- puts ("width of " #TYPE " OK"); \
- } \
- while (0)
-
-static int
-do_test (void)
-{
- int result = 0;
-
-#ifndef INT8_WIDTH
-# error "missing INT8_WIDTH"
-#endif
- CHECK_WIDTH (int8_t, INT8_MAX, INT8_WIDTH);
-#ifndef INT16_WIDTH
-# error "missing INT16_WIDTH"
-#endif
- CHECK_WIDTH (int16_t, INT16_MAX, INT16_WIDTH);
-#ifndef INT32_WIDTH
-# error "missing INT32_WIDTH"
-#endif
- CHECK_WIDTH (int32_t, INT32_MAX, INT32_WIDTH);
-#ifndef INT64_WIDTH
-# error "missing INT64_WIDTH"
-#endif
- CHECK_WIDTH (int64_t, INT64_MAX, INT64_WIDTH);
-#ifndef UINT8_WIDTH
-# error "missing UINT8_WIDTH"
-#endif
- CHECK_WIDTH (uint8_t, UINT8_MAX, UINT8_WIDTH);
-#ifndef UINT16_WIDTH
-# error "missing UINT16_WIDTH"
-#endif
- CHECK_WIDTH (uint16_t, UINT16_MAX, UINT16_WIDTH);
-#ifndef UINT32_WIDTH
-# error "missing UINT32_WIDTH"
-#endif
- CHECK_WIDTH (uint32_t, UINT32_MAX, UINT32_WIDTH);
-#ifndef UINT64_WIDTH
-# error "missing UINT64_WIDTH"
-#endif
- CHECK_WIDTH (uint64_t, UINT64_MAX, UINT64_WIDTH);
-
-#ifndef INT_LEAST8_WIDTH
-# error "missing INT_LEAST8_WIDTH"
-#endif
- CHECK_WIDTH (int_least8_t, INT_LEAST8_MAX, INT_LEAST8_WIDTH);
-#ifndef INT_LEAST16_WIDTH
-# error "missing INT_LEAST16_WIDTH"
-#endif
- CHECK_WIDTH (int_least16_t, INT_LEAST16_MAX, INT_LEAST16_WIDTH);
-#ifndef INT_LEAST32_WIDTH
-# error "missing INT_LEAST32_WIDTH"
-#endif
- CHECK_WIDTH (int_least32_t, INT_LEAST32_MAX, INT_LEAST32_WIDTH);
-#ifndef INT_LEAST64_WIDTH
-# error "missing INT_LEAST64_WIDTH"
-#endif
- CHECK_WIDTH (int_least64_t, INT_LEAST64_MAX, INT_LEAST64_WIDTH);
-#ifndef UINT_LEAST8_WIDTH
-# error "missing UINT_LEAST8_WIDTH"
-#endif
- CHECK_WIDTH (uint_least8_t, UINT_LEAST8_MAX, UINT_LEAST8_WIDTH);
-#ifndef UINT_LEAST16_WIDTH
-# error "missing UINT_LEAST16_WIDTH"
-#endif
- CHECK_WIDTH (uint_least16_t, UINT_LEAST16_MAX, UINT_LEAST16_WIDTH);
-#ifndef UINT_LEAST32_WIDTH
-# error "missing UINT_LEAST32_WIDTH"
-#endif
- CHECK_WIDTH (uint_least32_t, UINT_LEAST32_MAX, UINT_LEAST32_WIDTH);
-#ifndef UINT_LEAST64_WIDTH
-# error "missing UINT_LEAST64_WIDTH"
-#endif
- CHECK_WIDTH (uint_least64_t, UINT_LEAST64_MAX, UINT_LEAST64_WIDTH);
-
-#ifndef INT_FAST8_WIDTH
-# error "missing INT_FAST8_WIDTH"
-#endif
- CHECK_WIDTH (int_fast8_t, INT_FAST8_MAX, INT_FAST8_WIDTH);
-#ifndef INT_FAST16_WIDTH
-# error "missing INT_FAST16_WIDTH"
-#endif
- CHECK_WIDTH (int_fast16_t, INT_FAST16_MAX, INT_FAST16_WIDTH);
-#ifndef INT_FAST32_WIDTH
-# error "missing INT_FAST32_WIDTH"
-#endif
- CHECK_WIDTH (int_fast32_t, INT_FAST32_MAX, INT_FAST32_WIDTH);
-#ifndef INT_FAST64_WIDTH
-# error "missing INT_FAST64_WIDTH"
-#endif
- CHECK_WIDTH (int_fast64_t, INT_FAST64_MAX, INT_FAST64_WIDTH);
-#ifndef UINT_FAST8_WIDTH
-# error "missing UINT_FAST8_WIDTH"
-#endif
- CHECK_WIDTH (uint_fast8_t, UINT_FAST8_MAX, UINT_FAST8_WIDTH);
-#ifndef UINT_FAST16_WIDTH
-# error "missing UINT_FAST16_WIDTH"
-#endif
- CHECK_WIDTH (uint_fast16_t, UINT_FAST16_MAX, UINT_FAST16_WIDTH);
-#ifndef UINT_FAST32_WIDTH
-# error "missing UINT_FAST32_WIDTH"
-#endif
- CHECK_WIDTH (uint_fast32_t, UINT_FAST32_MAX, UINT_FAST32_WIDTH);
-#ifndef UINT_FAST64_WIDTH
-# error "missing UINT_FAST64_WIDTH"
-#endif
- CHECK_WIDTH (uint_fast64_t, UINT_FAST64_MAX, UINT_FAST64_WIDTH);
-
-#ifndef INTPTR_WIDTH
-# error "missing INTPTR_WIDTH"
-#endif
- CHECK_WIDTH (intptr_t, INTPTR_MAX, INTPTR_WIDTH);
-#ifndef UINTPTR_WIDTH
-# error "missing UINTPTR_WIDTH"
-#endif
- CHECK_WIDTH (uintptr_t, UINTPTR_MAX, UINTPTR_WIDTH);
-
-#ifndef INTMAX_WIDTH
-# error "missing INTMAX_WIDTH"
-#endif
- CHECK_WIDTH (intmax_t, INTMAX_MAX, INTMAX_WIDTH);
-#ifndef UINTMAX_WIDTH
-# error "missing UINTMAX_WIDTH"
-#endif
- CHECK_WIDTH (uintmax_t, UINTMAX_MAX, UINTMAX_WIDTH);
-
-#ifndef PTRDIFF_WIDTH
-# error "missing PTRDIFF_WIDTH"
-#endif
- CHECK_WIDTH (ptrdiff_t, PTRDIFF_MAX, PTRDIFF_WIDTH);
-#ifndef SIG_ATOMIC_WIDTH
-# error "missing SIG_ATOMIC_WIDTH"
-#endif
- CHECK_WIDTH (sig_atomic_t, SIG_ATOMIC_MAX, SIG_ATOMIC_WIDTH);
-#ifndef SIZE_WIDTH
-# error "missing SIZE_WIDTH"
-#endif
- CHECK_WIDTH (size_t, SIZE_MAX, SIZE_WIDTH);
-#ifndef WCHAR_WIDTH
-# error "missing WCHAR_WIDTH"
-#endif
- CHECK_WIDTH (wchar_t, WCHAR_MAX, WCHAR_WIDTH);
-#ifndef WINT_WIDTH
-# error "missing WINT_WIDTH"
-#endif
- CHECK_WIDTH (wint_t, WINT_MAX, WINT_WIDTH);
-
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-width.c b/stdlib/tst-width.c
deleted file mode 100644
index 326bd9d37d..0000000000
--- a/stdlib/tst-width.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Test integer width macros.
- Copyright (C) 2016-2017 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 <limits.h>
-#include <stdio.h>
-
-#define CHECK_WIDTH(TYPE, MAX, WIDTH) \
- do \
- { \
- if ((MAX >> ((TYPE) -1 < 0 ? (WIDTH - 2) : (WIDTH - 1))) != 1) \
- { \
- puts ("bad width of " #TYPE); \
- result = 1; \
- } \
- else \
- puts ("width of " #TYPE " OK"); \
- } \
- while (0)
-
-static int
-do_test (void)
-{
- int result = 0;
-#ifndef CHAR_WIDTH
-# error "missing CHAR_WIDTH"
-#endif
- CHECK_WIDTH (char, CHAR_MAX, CHAR_WIDTH);
-#ifndef SCHAR_WIDTH
-# error "missing SCHAR_WIDTH"
-#endif
- CHECK_WIDTH (signed char, SCHAR_MAX, SCHAR_WIDTH);
-#ifndef UCHAR_WIDTH
-# error "missing UCHAR_WIDTH"
-#endif
- CHECK_WIDTH (unsigned char, UCHAR_MAX, UCHAR_WIDTH);
-#ifndef SHRT_WIDTH
-# error "missing SHRT_WIDTH"
-#endif
- CHECK_WIDTH (signed short, SHRT_MAX, SHRT_WIDTH);
-#ifndef USHRT_WIDTH
-# error "missing USHRT_WIDTH"
-#endif
- CHECK_WIDTH (unsigned short, USHRT_MAX, USHRT_WIDTH);
-#ifndef INT_WIDTH
-# error "missing INT_WIDTH"
-#endif
- CHECK_WIDTH (signed int, INT_MAX, INT_WIDTH);
-#ifndef UINT_WIDTH
-# error "missing UINT_WIDTH"
-#endif
- CHECK_WIDTH (unsigned int, UINT_MAX, UINT_WIDTH);
-#ifndef LONG_WIDTH
-# error "missing LONG_WIDTH"
-#endif
- CHECK_WIDTH (signed long, LONG_MAX, LONG_WIDTH);
-#ifndef ULONG_WIDTH
-# error "missing ULONG_WIDTH"
-#endif
- CHECK_WIDTH (unsigned long, ULONG_MAX, ULONG_WIDTH);
-#ifndef LLONG_WIDTH
-# error "missing LLONG_WIDTH"
-#endif
- CHECK_WIDTH (signed long long, LLONG_MAX, LLONG_WIDTH);
-#ifndef ULLONG_WIDTH
-# error "missing ULLONG_WIDTH"
-#endif
- CHECK_WIDTH (unsigned long long, ULLONG_MAX, ULLONG_WIDTH);
- return result;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/tst-xpg-basename.c b/stdlib/tst-xpg-basename.c
deleted file mode 100644
index baf5361747..0000000000
--- a/stdlib/tst-xpg-basename.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright (C) 1999-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Andreas Jaeger <aj@suse.de>, 1999.
-
- 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 <libgen.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static struct
-{
- const char *path;
- const char *file;
-} tests [] =
-{
- { "/dir/file", "file" },
- { "file", "file"},
- { "/dir/file///", "file" },
- { "../file", "file" },
- { "/", "/" },
- { NULL, "."},
- { "", "."}
-};
-
-
-static int
-do_test (void)
-{
- size_t i = 0;
- int errors = 0;
- char path[1024];
- char *file;
-
- for (i = 0; i < sizeof (tests) / sizeof (tests [0]); ++i)
- {
- if (tests [i].path == NULL)
- file = __xpg_basename (NULL);
- else
- {
- strcpy (path, tests [i].path);
- file = __xpg_basename (path);
- }
- if (strcmp (file, tests [i].file))
- {
- printf ("Test with `%s' failed: Result is: `%s'.\n",
- (tests [i].path == NULL ? "NULL" : tests [i].path), file);
- errors = 1;
- }
- }
-
- return errors;
-}
-
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
diff --git a/stdlib/ucontext.h b/stdlib/ucontext.h
deleted file mode 100644
index 2cef5f7869..0000000000
--- a/stdlib/ucontext.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright (C) 1997-2017 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/>. */
-
-/* System V ABI compliant user-level context switching support. */
-
-#ifndef _UCONTEXT_H
-#define _UCONTEXT_H 1
-
-#include <features.h>
-
-/* Get machine dependent definition of data structures. */
-#include <sys/ucontext.h>
-
-__BEGIN_DECLS
-
-/* Get user context and store it in variable pointed to by UCP. */
-extern int getcontext (ucontext_t *__ucp) __THROWNL;
-
-/* Set user context from information of variable pointed to by UCP. */
-extern int setcontext (const ucontext_t *__ucp) __THROWNL;
-
-/* Save current context in context variable pointed to by OUCP and set
- context from variable pointed to by UCP. */
-extern int swapcontext (ucontext_t *__restrict __oucp,
- const ucontext_t *__restrict __ucp) __THROWNL;
-
-/* Manipulate user context UCP to continue with calling functions FUNC
- and the ARGC-1 parameters following ARGC when the context is used
- the next time in `setcontext' or `swapcontext'.
-
- We cannot say anything about the parameters FUNC takes; `void'
- is as good as any other choice. */
-extern void makecontext (ucontext_t *__ucp, void (*__func) (void),
- int __argc, ...) __THROW;
-
-__END_DECLS
-
-#endif /* ucontext.h */
diff --git a/stdlib/udiv_qrnnd.c b/stdlib/udiv_qrnnd.c
deleted file mode 100644
index d32796c04d..0000000000
--- a/stdlib/udiv_qrnnd.c
+++ /dev/null
@@ -1,10 +0,0 @@
-/* For some machines GNU MP needs to define an auxiliary function:
-
- udiv_qrnnd (quotient, remainder, high_numerator, low_numerator, denominator)
-
- Divides a two-word unsigned integer, composed by the integers
- HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and places the quotient
- in QUOTIENT and the remainder in REMAINDER. HIGH_NUMERATOR must be less
- than DENOMINATOR for correct operation. If, in addition, the most
- significant bit of DENOMINATOR must be 1, then the pre-processor symbol
- UDIV_NEEDS_NORMALIZATION is defined to 1. */
diff --git a/stdlib/wcstoimax.c b/stdlib/wcstoimax.c
deleted file mode 100644
index f1de70f320..0000000000
--- a/stdlib/wcstoimax.c
+++ /dev/null
@@ -1 +0,0 @@
-#error "The correct implementation must be chosen based on the `intmax_t' type"
diff --git a/stdlib/wcstombs.c b/stdlib/wcstombs.c
deleted file mode 100644
index 7e1667b4a1..0000000000
--- a/stdlib/wcstombs.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-#include <string.h>
-#include <wchar.h>
-
-
-/* Convert the `wchar_t' string in PWCS to a multibyte character string
- in S, writing no more than N characters. Return the number of bytes
- written, or (size_t) -1 if an invalid `wchar_t' was found. */
-size_t
-wcstombs (char *s, const wchar_t *pwcs, size_t n)
-{
- mbstate_t state;
-
- memset (&state, '\0', sizeof state);
-
- /* Return how many we wrote (or maybe an error). */
- return __wcsrtombs (s, &pwcs, n, &state);
-}
diff --git a/stdlib/wcstoumax.c b/stdlib/wcstoumax.c
deleted file mode 100644
index 508cb19f8c..0000000000
--- a/stdlib/wcstoumax.c
+++ /dev/null
@@ -1 +0,0 @@
-#error "The correct implementation must be chosen based on the `uintmax_t' type"
diff --git a/stdlib/wctomb.c b/stdlib/wctomb.c
deleted file mode 100644
index c14d4266ec..0000000000
--- a/stdlib/wctomb.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (C) 1991-2017 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 <stdlib.h>
-#include <string.h>
-#include <wchar.h>
-#include <gconv.h>
-#include <wcsmbs/wcsmbsload.h>
-
-
-/* Shared with __wctomb_chk. */
-mbstate_t __wctomb_state attribute_hidden;
-
-/* Convert WCHAR into its multibyte character representation,
- putting this in S and returning its length.
-
- Attention: this function should NEVER be intentionally used.
- The interface is completely stupid. The state is shared between
- all conversion functions. You should use instead the restartable
- version `wcrtomb'. */
-int
-wctomb (char *s, wchar_t wchar)
-{
- /* If S is NULL the function has to return null or not null
- depending on the encoding having a state depending encoding or
- not. */
- if (s == NULL)
- {
- const struct gconv_fcts *fcts;
-
- /* Get the conversion functions. */
- fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE));
-
- /* This is an extension in the Unix standard which does not directly
- violate ISO C. */
- memset (&__wctomb_state, '\0', sizeof __wctomb_state);
-
- return fcts->tomb->__stateful;
- }
-
- return __wcrtomb (s, wchar, &__wctomb_state);
-}
-libc_hidden_def (wctomb)
diff --git a/stdlib/xpg_basename.c b/stdlib/xpg_basename.c
deleted file mode 100644
index 57120f9cb2..0000000000
--- a/stdlib/xpg_basename.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Return basename of given pathname according to the weird XPG specification.
- Copyright (C) 1997-2017 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 <string.h>
-#include <libgen.h>
-
-
-char *
-__xpg_basename (char *filename)
-{
- char *p;
-
- if (filename == NULL || filename[0] == '\0')
- /* We return a pointer to a static string containing ".". */
- p = (char *) ".";
- else
- {
- p = strrchr (filename, '/');
-
- if (p == NULL)
- /* There is no slash in the filename. Return the whole string. */
- p = filename;
- else
- {
- if (p[1] == '\0')
- {
- /* We must remove trailing '/'. */
- while (p > filename && p[-1] == '/')
- --p;
-
- /* Now we can be in two situations:
- a) the string only contains '/' characters, so we return
- '/'
- b) p points past the last component, but we have to remove
- the trailing slash. */
- if (p > filename)
- {
- *p-- = '\0';
- while (p > filename && p[-1] != '/')
- --p;
- }
- else
- /* The last slash we already found is the right position
- to return. */
- while (p[1] != '\0')
- ++p;
- }
- else
- /* Go to the first character of the name. */
- ++p;
- }
- }
-
- return p;
-}