about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makeconfig12
-rw-r--r--Makefile3
-rw-r--r--Makefile.help4
-rw-r--r--NEWS7
-rw-r--r--SHARED-FILES2
-rw-r--r--benchtests/Makefile6
-rw-r--r--benchtests/README1
-rw-r--r--benchtests/bench-fclose.c75
-rw-r--r--bits/socket.h4
-rw-r--r--config.h.in3
-rw-r--r--dirent/versionsort64.c2
-rw-r--r--elf/Makefile16
-rw-r--r--elf/elf.h2
-rw-r--r--elf/libc-dl-profstub.c6
-rw-r--r--gmon/gmon.c3
-rw-r--r--inet/netinet/in.h8
-rw-r--r--libio/bits/types/struct_FILE.h4
-rw-r--r--libio/genops.c26
-rw-r--r--libio/oldstdfiles.c4
-rw-r--r--libio/stdfiles.c15
-rw-r--r--localedata/charmaps/UTF-834
-rw-r--r--localedata/cv_RU.UTF-8.in61
-rw-r--r--localedata/locales/cv_RU250
-rw-r--r--localedata/unicode-gen/HangulSyllableType.txt858
-rw-r--r--localedata/unicode-gen/Makefile11
-rw-r--r--localedata/unicode-gen/PropList.txt1827
-rwxr-xr-xlocaledata/unicode-gen/utf8_gen.py145
-rw-r--r--manual/lang.texi10
-rw-r--r--manual/math.texi14
-rw-r--r--math/Makefile126
-rw-r--r--math/Versions6
-rw-r--r--math/auto-libm-test-in51
-rw-r--r--math/auto-libm-test-out-log2p12713
-rw-r--r--math/bits/mathcalls.h3
-rw-r--r--math/gen-auto-libm-tests.c1
-rwxr-xr-xmath/gen-tgmath-tests.py1
-rw-r--r--math/libm-test-driver.c4
-rw-r--r--math/libm-test-log2p1.inc53
-rw-r--r--math/libm-test-support.c226
-rw-r--r--math/libm-test-support.h4
-rw-r--r--math/s_log2p1_template.c43
-rw-r--r--math/s_significand_template.c12
-rw-r--r--math/test-double-static.h1
-rw-r--r--math/test-float-static.h1
-rw-r--r--math/test-float128-static.h1
-rw-r--r--math/test-float32-static.h1
-rw-r--r--math/test-float32x-static.h1
-rw-r--r--math/test-float64-static.h1
-rw-r--r--math/test-float64x-static.h1
-rw-r--r--math/test-ibm128-static.h1
-rw-r--r--math/test-ldouble-static.h1
-rw-r--r--math/test-tgmath.c12
-rw-r--r--math/tgmath.h3
-rw-r--r--math/w_scalb_template.c12
-rw-r--r--misc/sys/cdefs.h9
-rw-r--r--resolv/res_debug.c1
-rwxr-xr-xscripts/build-many-glibcs.py2
-rw-r--r--socket/sys/un.h2
-rw-r--r--sysdeps/aarch64/fpu/Makefile8
-rw-r--r--sysdeps/aarch64/fpu/Versions15
-rw-r--r--sysdeps/aarch64/fpu/advsimd_f32_protos.h3
-rw-r--r--sysdeps/aarch64/fpu/atan2_advsimd.c1
-rw-r--r--sysdeps/aarch64/fpu/atan2_sve.c1
-rw-r--r--sysdeps/aarch64/fpu/bits/math-vector.h24
-rw-r--r--sysdeps/aarch64/fpu/cbrt_advsimd.c121
-rw-r--r--sysdeps/aarch64/fpu/cbrt_sve.c128
-rw-r--r--sysdeps/aarch64/fpu/cbrtf_advsimd.c123
-rw-r--r--sysdeps/aarch64/fpu/cbrtf_sve.c122
-rw-r--r--sysdeps/aarch64/fpu/finite_pow.h373
-rw-r--r--sysdeps/aarch64/fpu/hypot_advsimd.c97
-rw-r--r--sysdeps/aarch64/fpu/hypot_sve.c54
-rw-r--r--sysdeps/aarch64/fpu/hypotf_advsimd.c98
-rw-r--r--sysdeps/aarch64/fpu/hypotf_sve.c48
-rw-r--r--sysdeps/aarch64/fpu/pow_advsimd.c249
-rw-r--r--sysdeps/aarch64/fpu/pow_sve.c411
-rw-r--r--sysdeps/aarch64/fpu/powf_advsimd.c210
-rw-r--r--sysdeps/aarch64/fpu/powf_sve.c335
-rw-r--r--sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c3
-rw-r--r--sysdeps/aarch64/fpu/test-double-sve-wrappers.c3
-rw-r--r--sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c3
-rw-r--r--sysdeps/aarch64/fpu/test-float-sve-wrappers.c3
-rw-r--r--sysdeps/aarch64/fpu/v_pow_exp_data.c301
-rw-r--r--sysdeps/aarch64/fpu/v_pow_log_data.c186
-rw-r--r--sysdeps/aarch64/fpu/v_powf_data.c102
-rw-r--r--sysdeps/aarch64/fpu/vecmath_config.h42
-rw-r--r--sysdeps/aarch64/libm-test-ulps44
-rw-r--r--sysdeps/aarch64/multiarch/memchr_generic.S3
-rw-r--r--sysdeps/aarch64/multiarch/strlen_generic.S3
-rw-r--r--sysdeps/arm/libm-test-ulps16
-rw-r--r--sysdeps/i386/fpu/w_exp10_compat.c9
-rw-r--r--sysdeps/i386/fpu/w_fmod_compat.c7
-rw-r--r--sysdeps/i386/fpu/w_fmodf_compat.c7
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/libm-test-ulps24
-rw-r--r--sysdeps/i386/stpncpy.S2
-rw-r--r--sysdeps/ieee754/dbl-64/s_nearbyint.c2
-rw-r--r--sysdeps/ieee754/float128/s_isnanf128.c6
-rw-r--r--sysdeps/ieee754/flt-32/s_nearbyintf.c2
-rw-r--r--sysdeps/ieee754/ldbl-128/s_finitel.c2
-rw-r--r--sysdeps/ieee754/ldbl-128/s_isinfl.c2
-rw-r--r--sysdeps/ieee754/ldbl-128/s_nextafterl.c4
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/Versions3
-rw-r--r--sysdeps/ieee754/ldbl-64-128/s_copysignl.c4
-rw-r--r--sysdeps/ieee754/ldbl-64-128/s_frexpl.c4
-rw-r--r--sysdeps/ieee754/ldbl-64-128/s_modfl.c4
-rw-r--r--sysdeps/ieee754/ldbl-opt/Makefile302
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-log2p1.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/s_ldexpl.c4
-rw-r--r--sysdeps/loongarch/Makefile36
-rw-r--r--sysdeps/loongarch/configure36
-rw-r--r--sysdeps/loongarch/configure.ac17
-rw-r--r--sysdeps/loongarch/dl-machine.h52
-rw-r--r--sysdeps/loongarch/dl-tls.h9
-rw-r--r--sysdeps/loongarch/dl-tlsdesc.S436
-rw-r--r--sysdeps/loongarch/dl-tlsdesc.h49
-rw-r--r--sysdeps/loongarch/fpu_control.h4
-rw-r--r--sysdeps/loongarch/linkmap.h3
-rw-r--r--sysdeps/loongarch/lp64/libm-test-ulps20
-rw-r--r--sysdeps/loongarch/lp64/multiarch/strnlen-aligned.S2
-rw-r--r--sysdeps/loongarch/preconfigure1
-rw-r--r--sysdeps/loongarch/sys/asm.h1
-rw-r--r--sysdeps/loongarch/sys/regdef.h1
-rw-r--r--sysdeps/loongarch/tlsdesc.c39
-rw-r--r--sysdeps/loongarch/tlsdesc.sym28
-rw-r--r--sysdeps/loongarch/tst-gnu2-tls2.h377
-rw-r--r--sysdeps/m68k/m680x0/fpu/w_exp10_compat.c9
-rw-r--r--sysdeps/m68k/m680x0/fpu/w_fmod_compat.c5
-rw-r--r--sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c7
-rw-r--r--sysdeps/mach/hurd/bits/socket.h4
-rw-r--r--sysdeps/mach/hurd/i386/libm.abilist8
-rw-r--r--sysdeps/mach/hurd/x86_64/libm.abilist8
-rw-r--r--sysdeps/powerpc/fpu/libm-test-ulps24
-rw-r--r--sysdeps/powerpc/nofpu/Makefile1
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-power6.c4
-rw-r--r--sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-ppc32.c4
-rw-r--r--sysdeps/powerpc/powerpc64/configure4
-rw-r--r--sysdeps/powerpc/powerpc64/configure.ac4
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S3
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c14
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c3
-rw-r--r--sysdeps/s390/fpu/libm-test-ulps20
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/clone3.S1
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libmvec.abilist15
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/arc/clone3.S1
-rw-r--r--sysdeps/unix/sysv/linux/arc/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/arm/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/arm/clone3.S1
-rw-r--r--sysdeps/unix/sysv/linux/arm/le/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h4
-rw-r--r--sysdeps/unix/sysv/linux/csky/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/i386/clone3.S1
-rw-r--r--sysdeps/unix/sysv/linux/i386/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/loongarch/clone3.S1
-rw-r--r--sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/le/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/syscalls.list2
-rw-r--r--sysdeps/unix/sysv/linux/mips/clone3.S1
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/net/if_packet.h2
-rw-r--r--sysdeps/unix/sysv/linux/netash/ash.h2
-rw-r--r--sysdeps/unix/sysv/linux/neteconet/ec.h2
-rw-r--r--sysdeps/unix/sysv/linux/netiucv/iucv.h2
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/or1k/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/pidfd_getpid.c6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/clone3.S1
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist9
-rw-r--r--sysdeps/unix/sysv/linux/procutils.c5
-rw-r--r--sysdeps/unix/sysv/linux/procutils.h5
-rw-r--r--sysdeps/unix/sysv/linux/riscv/clone3.S1
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/Makefile1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/clone3.S1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/clone3.S1
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/sh/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/sh/le/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/sys/pidfd.h15
-rw-r--r--sysdeps/unix/sysv/linux/syscall-names.list4
-rw-r--r--sysdeps/unix/sysv/linux/tst-mman-consts.py2
-rwxr-xr-xsysdeps/unix/sysv/linux/tst-mount-consts.py4
-rw-r--r--sysdeps/unix/sysv/linux/tst-pidfd-consts.py2
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/clone3.S1
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist8
-rw-r--r--sysdeps/x86/tst-cpu-features-supports.c8
-rw-r--r--sysdeps/x86_64/dl-machine.h9
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps24
-rw-r--r--time/time.h4
202 files changed, 9472 insertions, 2337 deletions
diff --git a/Makeconfig b/Makeconfig
index 59e21d4c82..29819363da 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -768,6 +768,11 @@ run-built-tests = yes
 endif
 endif
 
+# Whether to build the static math tests
+ifndef build-math-static-tests
+build-math-static-tests = no
+endif
+
 # Whether to stop immediately when a test fails.  Nonempty means to
 # stop, empty means not to stop.
 ifndef stop-on-test-failure
@@ -899,9 +904,10 @@ endif
 +math-flags = -frounding-math
 
 # Logically only "libnldbl", "nonlib" and "testsuite" should be using
-# -fno-math-errno. However due to GCC bug #88576, only "libm" can use
-# -fno-math-errno.
-+extra-math-flags = $(if $(filter libm,$(in-module)),-fno-math-errno,-fmath-errno)
+# -fno-math-errno. However due to GCC bug #88576, only "libm" and
+# "libmvec" can use -fno-math-errno.
++extra-math-flags = $(if $(filter libmvec libm,$(in-module)),\
+                      -fno-math-errno,-fmath-errno)
 
 # Use 64 bit time_t support for installed programs
 installed-modules = nonlib nscd ldconfig locale_programs \
diff --git a/Makefile b/Makefile
index adf4749124..c84f266ce7 100644
--- a/Makefile
+++ b/Makefile
@@ -581,7 +581,8 @@ $(objpfx)lint-makefiles.out: scripts/lint-makefiles.sh
 # definitions of any symbols.
 tests-special += $(objpfx)link-static-libc.out
 $(objpfx)link-static-libc.out:
-	$(LINK.o) $(whole-archive) -r $(objpfx)libc.a -o /dev/null > $@ 2>&1; \
+	$(LINK.o) $(whole-archive) -nostdlib -nostartfiles -r \
+	  $(objpfx)libc.a -o /dev/null > $@ 2>&1; \
 	$(evaluate-test)
 
 # Print test summary for tests in $1 .sum file;
diff --git a/Makefile.help b/Makefile.help
index b49df9c5c9..17e7154797 100644
--- a/Makefile.help
+++ b/Makefile.help
@@ -33,6 +33,10 @@ test
 	Note that this will rebuild the test if needed, but will not
 	rebuild what "make all" would have rebuilt.
 
+build-math-static-tests
+	Enable extra math tests for static linking.  Use like this:
+		make test t=math/test-float-exp10-static build-math-static-tests=yes
+
 --
 Other useful hints:
 
diff --git a/NEWS b/NEWS
index 2234021a95..84efa46df3 100644
--- a/NEWS
+++ b/NEWS
@@ -21,6 +21,13 @@ Major new features:
   by _GNU_SOURCE, or by compiling with the GCC options -std=c23,
   -std=gnu23, -std=c2x or -std=gnu2x.
 
+* The following ISO C23 function families (introduced in TS
+  18661-4:2015) are now supported in <math.h>.  Each family includes
+  functions for float, double, long double, _FloatN and _FloatNx, and a
+  type-generic macro in <tgmath.h>.
+
+  - Logarithmic functions: log2p1.
+
 * A new tunable, glibc.rtld.enable_secure, used to run a program
   as if it were a setuid process. This is currently a testing tool to allow
   more extensive verification tests for AT_SECURE programs and not meant to
diff --git a/SHARED-FILES b/SHARED-FILES
index 179130d567..cb0356ce32 100644
--- a/SHARED-FILES
+++ b/SHARED-FILES
@@ -175,7 +175,7 @@ unicode:
   localedata/unicode-gen/unicode-license.txt
   localedata/unicode-gen/DerivedCoreProperties.txt
   localedata/unicode-gen/EastAsianWidth.txt
-  localedata/unicode-gen/PropList.txt
+  localedata/unicode-gen/HangulSyllableType.txt
 
 # The following files are shared with the upstream tzcode project and must be
 # updated regularly to stay in sync with the upstream releases.
diff --git a/benchtests/Makefile b/benchtests/Makefile
index 7e73b8504e..b74b5fe1ad 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -261,6 +261,10 @@ stdlib-benchset := \
   strtod \
   # stdlib-benchset
 
+stdio-benchset := \
+  fclose \
+  # stdio-benchset
+
 stdio-common-benchset := sprintf
 
 math-benchset := math-inlines
@@ -269,6 +273,7 @@ ifeq (${BENCHSET},)
 benchset := \
   $(hash-benchset) \
   $(math-benchset) \
+  $(stdio-benchset) \
   $(stdio-common-benchset) \
   $(stdlib-benchset) \
   $(string-benchset-all) \
@@ -419,6 +424,7 @@ VALIDBENCHSETNAMES := \
   malloc-simple \
   malloc-thread \
   math-benchset \
+  stdio-benchset \
   stdio-common-benchset \
   stdlib-benchset \
   string-benchset \
diff --git a/benchtests/README b/benchtests/README
index 998ba9b2b4..15d014a407 100644
--- a/benchtests/README
+++ b/benchtests/README
@@ -87,6 +87,7 @@ where BENCHSET may be a space-separated list of the following values:
     hash-benchset
     malloc-thread
     math-benchset
+    stdio-benchset
     stdio-common-benchset
     stdlib-benchset
     string-benchset
diff --git a/benchtests/bench-fclose.c b/benchtests/bench-fclose.c
new file mode 100644
index 0000000000..5f1c103d4f
--- /dev/null
+++ b/benchtests/bench-fclose.c
@@ -0,0 +1,75 @@
+/* Benchmark fclose.
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   Copyright The GNU Toolchain Authors.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "bench-timing.h"
+#include "json-lib.h"
+
+#define NUM_FILES	1000000
+#define NUM_FCLOSE	100
+
+int
+main (int argc, char **argv)
+{
+  json_ctx_t json_ctx;
+  json_init (&json_ctx, 0, stdout);
+  json_document_begin (&json_ctx);
+
+  json_attr_string (&json_ctx, "timing_type", TIMING_TYPE);
+  json_attr_object_begin (&json_ctx, "functions");
+  json_attr_object_begin (&json_ctx, "fclose");
+
+  FILE *ff, *keep[NUM_FCLOSE];
+  int i;
+
+  for (i = 0; i < NUM_FILES; i++)
+    {
+      ff = fdopen (STDIN_FILENO, "r");
+      if (!ff)
+	{
+	  fprintf (stderr, "### failed to fdopen: %m\n");
+	  return EXIT_FAILURE;
+	}
+      if (i < NUM_FCLOSE)
+	keep[i] = ff;
+    }
+
+  timing_t start, stop, elapsed;
+
+  TIMING_NOW (start);
+
+  for (i = 0; i < NUM_FCLOSE; i++)
+    fclose (keep[i]);
+
+  TIMING_NOW (stop);
+
+  TIMING_DIFF (elapsed, start, stop);
+
+  json_attr_uint (&json_ctx, "number of FILEs", NUM_FILES);
+  json_attr_uint (&json_ctx, "number of fclose calls", NUM_FCLOSE);
+  json_attr_uint (&json_ctx, "duration", elapsed);
+
+  json_attr_object_end (&json_ctx);
+  json_attr_object_end (&json_ctx);
+  json_document_end (&json_ctx);
+
+  return 0;
+}
diff --git a/bits/socket.h b/bits/socket.h
index 13de124bac..772074d52a 100644
--- a/bits/socket.h
+++ b/bits/socket.h
@@ -149,7 +149,7 @@ enum __socket_type
 #include <bits/sockaddr.h>
 
 /* Structure describing a generic socket address.  */
-struct sockaddr
+struct __attribute_struct_may_alias__ sockaddr
   {
     __SOCKADDR_COMMON (sa_);	/* Common data: address family and length.  */
     char sa_data[14];		/* Address data.  */
@@ -166,7 +166,7 @@ struct sockaddr
 #define _SS_PADSIZE \
   (_SS_SIZE - __SOCKADDR_COMMON_SIZE - sizeof (__ss_aligntype))
 
-struct sockaddr_storage
+struct __attribute_struct_may_alias__ sockaddr_storage
   {
     __SOCKADDR_COMMON (ss_);	/* Address family, etc.  */
     char __ss_padding[_SS_PADSIZE];
diff --git a/config.h.in b/config.h.in
index c4cc7d3b9a..9a83b774fa 100644
--- a/config.h.in
+++ b/config.h.in
@@ -141,6 +141,9 @@
 /* LOONGARCH floating-point ABI for ld.so.  */
 #undef LOONGARCH_ABI_FRLEN
 
+/* Define whether compiler support vector.  */
+#undef HAVE_LOONGARCH_VEC_COM
+
 /* Define whether ARM used hard-float and support VFPvX-D32.  */
 #undef HAVE_ARM_PCS_VFP_D32
 
diff --git a/dirent/versionsort64.c b/dirent/versionsort64.c
index 5ae404f1bd..5fe94e37ed 100644
--- a/dirent/versionsort64.c
+++ b/dirent/versionsort64.c
@@ -26,6 +26,6 @@ versionsort64 (const struct dirent64 **a, const struct dirent64 **b)
   return __strverscmp ((*a)->d_name, (*b)->d_name);
 }
 
-#if !_DIRENT_MATCHES_DIRENT64
+#if _DIRENT_MATCHES_DIRENT64
 weak_alias (versionsort64, versionsort)
 #endif
diff --git a/elf/Makefile b/elf/Makefile
index 280e777c19..57b3a19d36 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -1033,9 +1033,19 @@ test-xfail-tst-protected1b = yes
 endif
 ifeq (yesyes,$(have-fpie)$(build-shared))
 modules-names += tst-piemod1
-tests += tst-pie1 tst-pie2 tst-dlopen-pie tst-dlopen-tlsmodid-pie \
-  tst-dlopen-self-pie
-tests-pie += tst-pie1 tst-pie2 tst-dlopen-tlsmodid-pie tst-dlopen-self-pie
+tests += \
+  tst-dlopen-pie \
+  tst-dlopen-self-pie \
+  tst-dlopen-tlsmodid-pie \
+  tst-pie1 \
+  tst-pie2 \
+  # tests
+tests-pie += \
+  tst-dlopen-self-pie \
+  tst-dlopen-tlsmodid-pie \
+  tst-pie1 \
+  tst-pie2 \
+  # tests-pie
 ifeq (yes,$(have-protected-data))
 tests += vismain
 tests-pie += vismain
diff --git a/elf/elf.h b/elf/elf.h
index 55b2e87860..682bce5a94 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -4241,6 +4241,8 @@ enum
 #define R_LARCH_TLS_TPREL32	10
 #define R_LARCH_TLS_TPREL64	11
 #define R_LARCH_IRELATIVE	12
+#define R_LARCH_TLS_DESC32	13
+#define R_LARCH_TLS_DESC64	14
 
 /* Reserved for future relocs that the dynamic linker must understand.  */
 
diff --git a/elf/libc-dl-profstub.c b/elf/libc-dl-profstub.c
index 36a65f4616..dd12443f2c 100644
--- a/elf/libc-dl-profstub.c
+++ b/elf/libc-dl-profstub.c
@@ -19,17 +19,21 @@
 #include <dlfcn.h>
 #include <elf.h>
 #include <ldsodefs.h>
+#include <shlib-compat.h>
 
 /* This is the map for the shared object we profile.  It is defined here
    only because we test for this value being NULL or not.  */
 
-
+#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_40)
+attribute_compat_text_section
 void
 _dl_mcount_wrapper (void *selfpc)
 {
   GLRO(dl_mcount) ((ElfW(Addr)) RETURN_ADDRESS (0), (ElfW(Addr)) selfpc);
 }
 
+compat_symbol (libc, _dl_mcount_wrapper, _dl_mcount_wrapper, GLIBC_2_1);
+#endif
 
 void
 _dl_mcount_wrapper_check (void *selfpc)
diff --git a/gmon/gmon.c b/gmon/gmon.c
index 6439ed1caa..996b6a62a4 100644
--- a/gmon/gmon.c
+++ b/gmon/gmon.c
@@ -439,6 +439,7 @@ write_gmon (void)
 }
 
 
+#ifdef PROF
 void
 __write_profiling (void)
 {
@@ -448,7 +449,7 @@ __write_profiling (void)
     write_gmon ();
   _gmonparam.state = save;
 }
-#ifndef SHARED
+
 /* This symbol isn't used anywhere in the DSO and it is not exported.
    This would normally mean it should be removed to get the same API
    in static libraries.  But since profiling is special in static libs
diff --git a/inet/netinet/in.h b/inet/netinet/in.h
index fa57b61079..f684be5beb 100644
--- a/inet/netinet/in.h
+++ b/inet/netinet/in.h
@@ -244,7 +244,7 @@ extern const struct in6_addr in6addr_loopback;   /* ::1 */
 
 
 /* Structure describing an Internet socket address.  */
-struct sockaddr_in
+struct __attribute_struct_may_alias__ sockaddr_in
   {
     __SOCKADDR_COMMON (sin_);
     in_port_t sin_port;			/* Port number.  */
@@ -257,9 +257,11 @@ struct sockaddr_in
 			   - sizeof (struct in_addr)];
   };
 
-#if !__USE_KERNEL_IPV6_DEFS
+#if __USE_KERNEL_IPV6_DEFS
+struct __attribute_struct_may_alias__ sockaddr_in6;
+#else
 /* Ditto, for IPv6.  */
-struct sockaddr_in6
+struct __attribute_struct_may_alias__ sockaddr_in6
   {
     __SOCKADDR_COMMON (sin6_);
     in_port_t sin6_port;	/* Transport layer port # */
diff --git a/libio/bits/types/struct_FILE.h b/libio/bits/types/struct_FILE.h
index 7cdaae86f8..d8d26639d1 100644
--- a/libio/bits/types/struct_FILE.h
+++ b/libio/bits/types/struct_FILE.h
@@ -92,10 +92,10 @@ struct _IO_FILE_complete
   struct _IO_wide_data *_wide_data;
   struct _IO_FILE *_freeres_list;
   void *_freeres_buf;
-  size_t __pad5;
+  struct _IO_FILE **_prevchain;
   int _mode;
   /* Make sure we don't get into trouble again.  */
-  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+  char _unused2[15 * sizeof (int) - 5 * sizeof (void *)];
 };
 
 /* These macros are used by bits/stdio.h and internal headers.  */
diff --git a/libio/genops.c b/libio/genops.c
index bc45e60a09..994ee9c0b1 100644
--- a/libio/genops.c
+++ b/libio/genops.c
@@ -48,6 +48,19 @@ flush_cleanup (void *not_used)
 }
 #endif
 
+/* Fields in struct _IO_FILE after the _lock field are internal to
+   glibc and opaque to applications.  We can change them as long as
+   the size of struct _IO_FILE is unchanged, which is checked as the
+   part of glibc ABI with sizes of _IO_2_1_stdin_, _IO_2_1_stdout_
+   and _IO_2_1_stderr_.
+
+   NB: When _IO_vtable_offset (fp) == 0, copy relocation will cover the
+   whole struct _IO_FILE.  Otherwise, only fields up to the _lock field
+   will be copied.  */
+_Static_assert (offsetof (struct _IO_FILE, _prevchain)
+		> offsetof (struct _IO_FILE, _lock),
+		"offset of _prevchain > offset of _lock");
+
 void
 _IO_un_link (struct _IO_FILE_plus *fp)
 {
@@ -62,6 +75,14 @@ _IO_un_link (struct _IO_FILE_plus *fp)
 #endif
       if (_IO_list_all == NULL)
 	;
+      else if (_IO_vtable_offset ((FILE *) fp) == 0)
+	{
+	  FILE **pr = fp->file._prevchain;
+	  FILE *nx = fp->file._chain;
+	  *pr = nx;
+	  if (nx != NULL)
+	    nx->_prevchain = pr;
+	}
       else if (fp == _IO_list_all)
 	_IO_list_all = (struct _IO_FILE_plus *) _IO_list_all->file._chain;
       else
@@ -95,6 +116,11 @@ _IO_link_in (struct _IO_FILE_plus *fp)
       _IO_flockfile ((FILE *) fp);
 #endif
       fp->file._chain = (FILE *) _IO_list_all;
+      if (_IO_vtable_offset ((FILE *) fp) == 0)
+	{
+	  fp->file._prevchain = (FILE **) &_IO_list_all;
+	  _IO_list_all->file._prevchain = &fp->file._chain;
+	}
       _IO_list_all = fp;
 #ifdef _IO_MTSAFE_IO
       _IO_funlockfile ((FILE *) fp);
diff --git a/libio/oldstdfiles.c b/libio/oldstdfiles.c
index 30581dfad4..a6a908a248 100644
--- a/libio/oldstdfiles.c
+++ b/libio/oldstdfiles.c
@@ -48,6 +48,10 @@ DEF_STDFILE(_IO_stdin_, 0, 0, _IO_NO_WRITES);
 DEF_STDFILE(_IO_stdout_, 1, &_IO_stdin_, _IO_NO_READS);
 DEF_STDFILE(_IO_stderr_, 2, &_IO_stdout_, _IO_NO_READS+_IO_UNBUFFERED);
 
+compat_symbol (libc, _IO_stdin_, _IO_stdin_, GLIBC_2_0);
+compat_symbol (libc, _IO_stdout_, _IO_stdout_, GLIBC_2_0);
+compat_symbol (libc, _IO_stderr_, _IO_stderr_, GLIBC_2_0);
+
 #if defined __GNUC__ && __GNUC__ >= 2
 
 #include <stdio.h>
diff --git a/libio/stdfiles.c b/libio/stdfiles.c
index cd8eca8bf3..12db1645ef 100644
--- a/libio/stdfiles.c
+++ b/libio/stdfiles.c
@@ -54,4 +54,19 @@ DEF_STDFILE(_IO_2_1_stdout_, 1, &_IO_2_1_stdin_, _IO_NO_READS);
 DEF_STDFILE(_IO_2_1_stderr_, 2, &_IO_2_1_stdout_, _IO_NO_READS+_IO_UNBUFFERED);
 
 struct _IO_FILE_plus *_IO_list_all = &_IO_2_1_stderr_;
+
+/* Finish double-linking stdin, stdout, and stderr in a constructor.
+   Static initialization cannot complete the _prevchain setup.  */
+
+__THROW __attribute__ ((constructor))
+static void
+_IO_stdfiles_init (void)
+{
+  struct _IO_FILE **f;
+  for (f = (struct _IO_FILE **) &_IO_list_all;
+       *f != NULL;
+       f = &(*f)->_chain)
+    (*f)->_prevchain = f;
+}
+
 libc_hidden_data_def (_IO_list_all)
diff --git a/localedata/charmaps/UTF-8 b/localedata/charmaps/UTF-8
index c9e89f03da..bc694ec4c8 100644
--- a/localedata/charmaps/UTF-8
+++ b/localedata/charmaps/UTF-8
@@ -49856,13 +49856,27 @@ CHARMAP
 END CHARMAP
 
 % Character width according to Unicode 15.1.0.
-% - Default width is 1.
+% Width is determined by the following rules, in order of decreasing precedence:
+% - U+00AD SOFT HYPHEN has width 1, as a special case for compatibility (https://archive.is/b5Ck).
+% - U+115F HANGUL CHOSEONG FILLER has width 2.
+%   This character stands in for an intentionally omitted leading consonant
+%   in a Hangul syllable block; as such it must be assigned width 2 despite its lack
+%   of visible display to ensure that the complete block has the correct width.
+%   (See below for more information on Hangul syllables.)
+% - Combining jungseong and jongseong Hangul jamo have width 0; generated from
+%   "grep '^[^;]*;[VT]' HangulSyllableType.txt".
+%   One composed Hangul "syllable block" like 퓛 is made up of
+%   two to three individual component characters called "jamo".
+%   The complete block must have total width 2;
+%   to achieve this, we assign a width of 2 to leading "choseong" jamo,
+%   and of 0 to medial vowel "jungseong" and trailing "jongseong" jamo.
+% - Non-spacing and enclosing marks have width 0; generated from
+%   "grep -E '^[^;]*;[^;]*;(Mn|Me);' UnicodeData.txt".
+% - "Default_Ignorable_Code_Point"s have width 0; generated from
+%   "grep '^[^;]*;\s*Default_Ignorable_Code_Point' DerivedCoreProperties.txt".
 % - Double-width characters have width 2; generated from
-%        "grep '^[^;]*;\s*[WF]' EastAsianWidth.txt"
-% - Non-spacing characters have width 0; generated from PropList.txt or
-%   "grep '^[^;]*;[^;]*;[^;]*;[^;]*;NSM;' UnicodeData.txt"
-% - Format control characters have width 0; generated from
-%   "grep '^[^;]*;[^;]*;Cf;' UnicodeData.txt"
+%   "grep '^[^;]*;[WF]' EastAsianWidth.txt".
+% - Default width for all other characters is 1.
 WIDTH
 <U0300>...<U036F>	0
 <U0483>...<U0489>	0
@@ -50083,7 +50097,9 @@ WIDTH
 <U3099>...<U309A>	0
 <U309B>...<U30FF>	2
 <U3105>...<U312F>	2
-<U3131>...<U318E>	2
+<U3131>...<U3163>	2
+<U3164>	0
+<U3165>...<U318E>	2
 <U3190>...<U31E3>	2
 <U31EF>...<U321E>	2
 <U3220>...<UA48C>	2
@@ -50138,8 +50154,8 @@ WIDTH
 <UFE68>...<UFE6B>	2
 <UFEFF>	0
 <UFF01>...<UFF60>	2
+<UFFA0>	0
 <UFFE0>...<UFFE6>	2
-<UFFF9>...<UFFFB>	0
 <U000101FD>	0
 <U000102E0>	0
 <U00010376>...<U0001037A>	0
@@ -50240,7 +50256,7 @@ WIDTH
 <U00011F36>...<U00011F3A>	0
 <U00011F40>	0
 <U00011F42>	0
-<U00013430>...<U00013440>	0
+<U00013440>	0
 <U00013447>...<U00013455>	0
 <U00016AF0>...<U00016AF4>	0
 <U00016B30>...<U00016B36>	0
diff --git a/localedata/cv_RU.UTF-8.in b/localedata/cv_RU.UTF-8.in
index c6a8b31c24..684f82b39a 100644
--- a/localedata/cv_RU.UTF-8.in
+++ b/localedata/cv_RU.UTF-8.in
@@ -1,45 +1,16 @@
-a
-A
-az


-c
-e
-E
-ez


-h
-i
-j
-k
-l
-m
-n
-p
-r
-R
-rz


-šz
-s
-S
-sz




-şz
-șz
-t
-u
-U
-uz


-üz
-v
-y
-z
-Z
















diff --git a/localedata/locales/cv_RU b/localedata/locales/cv_RU
index e4c9877cad..d42c36d6d6 100644
--- a/localedata/locales/cv_RU
+++ b/localedata/locales/cv_RU
@@ -8,32 +8,20 @@ escape_char /
 % exempt you from the conditions of the license if your use would
 % otherwise be governed by that license.
 
-% Chuvash Language Locale for Russia
-% Language: cv
-% Territory: RU
-% Revision: 1.0
-% Date: 2009-10-13
-% Application: general
-% Users: general
-%
-% Based on the ru_RO
-% Modifed by:
-%    Adi Roiban <adi@roiban.ro>
-%    Ali Savatar
-%
+% Chuvash (Russian Federation) locale
 
 LC_IDENTIFICATION
 title      "Chuvash locale for Russia"
-source     "RAP"
-address    "Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark"
+source     "Olga Smirnova"
+address    ""
 contact    ""
-email      "bug-glibc-locales@gnu.org"
+email      "mistresssilvara@hotmail.com"
 tel        ""
 fax        ""
 language   "Chuvash"
 territory  "Russia"
 revision   "1.0"
-date       "2000-06-29"
+date       "2019-03-23"
 
 category "i18n:2012";LC_IDENTIFICATION
 category "i18n:2012";LC_CTYPE
@@ -49,160 +37,54 @@ category "i18n:2012";LC_TELEPHONE
 category "i18n:2012";LC_MEASUREMENT
 END LC_IDENTIFICATION
 
-LC_COLLATE
-% There is no collation information for Chuvash in CLDR.
-%
-% According to https://en.wikipedia.org/wiki/Chuvash_language
-% the writing system is Cyrillic.
-%
-% But our Chuvash locale here seems to use the Latin Alphabet ...
-%
-% I just adapt the collation rules which I found here to the
-% updated iso14651_t1_common file.
-copy "iso14651_t1"
-
-% The Chuvash alphabet has the following letters, ordered as below:
-% a ă c e ĕ h i j k l m n p r š s ş t u ü v y
-
-collating-symbol <a-breve>
-collating-symbol <e-breve>
-collating-symbol <s-caron>
-collating-symbol <s-cedilla>
-collating-symbol <u-diaerisis>
-
-reorder-after <AFTER-A>
-<a-breve>
-reorder-after <AFTER-E>
-<e-breve>
-reorder-after <AFTER-R>
-<s-caron>
-reorder-after <AFTER-S>
-<s-cedilla>
-reorder-after <AFTER-U>
-<u-diaerisis>
-
-<U0103>     <a-breve>;"<BASE><BASE>";"<MIN><MIN>";IGNORE % ă
-<U0102>     <a-breve>;"<BASE><BASE>";"<CAP><MIN>";IGNORE % Ă
-<U0115>     <e-breve>;"<BASE><BASE>";"<MIN><MIN>";IGNORE % ĕ
-<U0114>     <e-breve>;"<BASE><BASE>";"<CAP><MIN>";IGNORE % Ĕ
-<U0161>     <s-caron>;"<BASE><BASE>";"<MIN><MIN>";IGNORE % š
-<U0160>     <s-caron>;"<BASE><BASE>";"<CAP><MIN>";IGNORE % Š
-<U015F>   <s-cedilla>;"<BASE><BASE>";"<MIN><MIN>";IGNORE % ş
-<U015E>   <s-cedilla>;"<BASE><BASE>";"<CAP><MIN>";IGNORE % Ş
-<U0219>   <s-cedilla>;"<BASE><VRNT1>";"<MIN><MIN>";IGNORE % ș
-<U0218>   <s-cedilla>;"<BASE><VRNT1>";"<CAP><MIN>";IGNORE % Ș
-<U00FC> <u-diaerisis>;"<BASE><BASE>";"<MIN><MIN>";IGNORE % ü
-<U00DC> <u-diaerisis>;"<BASE><BASE>";"<CAP><MIN>";IGNORE % Ü
-
-reorder-end
-
-END LC_COLLATE
-
 LC_CTYPE
-copy "i18n"
-
-translit_start
-include  "translit_combining";""
-translit_end
+copy "ru_RU"
 END LC_CTYPE
 
-LC_MESSAGES
-yesexpr "^[+1yY]"
-noexpr  "^[-0nN]"
-END LC_MESSAGES
-
-LC_MONETARY
-int_curr_symbol           "RUB "
-
-% "t." - short for tenke(, Chuvash name for rouble
-currency_symbol "₽"
-
-mon_decimal_point         "."
-mon_thousands_sep         " "
-mon_grouping              3
-positive_sign             ""
-negative_sign             "-"
-int_frac_digits           2
-frac_digits               2
-p_cs_precedes             0
-p_sep_by_space            1
-n_cs_precedes             0
-n_sep_by_space            1
-p_sign_posn               1
-n_sign_posn               1
-END LC_MONETARY
-
 LC_NUMERIC
 copy "ru_RU"
 END LC_NUMERIC
 
 LC_TIME
-
-% Days of week:
-% vyrsarnikun (Sunday) - short vr
-% tuntikun (Monday) tn
-% ytlarikun (Tuesday) yt
-% junkun (Wednesday) jn
-% ke(s,nernikun (Thursday) ks,
-% ernekun (Friday) er
-% s<a(matkun (Saturday) s<m
-
-day 	"vyrsarnikun";/
-	"tuntikun";/
-	"ytlarikun";/
-	"junkun";/
-	"kĕşnernikun";/
-	"ernekun";/
-	"šămatkun"
-
-abday   "vr";/
-	"tn";/
-	"yt";/
-	"jn";/
-	"kş";/
-	"er";/
-	"šm"
-
-% Month names:
-% ka(rlac (January) - short KA(R
-% nara(s (February) NAR
-% pus< (March) PUS<
-% aka (April) AKA
-% s,u (May) S,U
-% s,e(rtme (June) S,E(R
-% uta( (July) UTA(
-% s,urla (August) S,UR
-% ava(n (September) AVA(
-% jupa (October) JUP
-% cu:k (November) CU:K
-% ras<tav (December) RAS<
-
-mon     "kărlac";/
-	"narăs";/
-	"puš";/
-	"aka";/
-	"şu";/
-	"şĕrtme";/
-	"ută";/
-	"şurla";/
-	"avăn";/
-	"jupa";/
-	"cük";/
-	"raštav"
-abmon   "KĂR";/
-	"NAR";/
-	"PUŠ";/
-	"AKA";/
-	"ŞU";/
-	"ŞĔR";/
-	"UTĂ";/
-	"ŞUR";/
-	"AVĂ";/
-	"JUP";/
-	"CÜK";/
-	"RAŠ"
-d_t_fmt   "%a %d %b %Y %T"
-date_fmt  "%a %d %b %Y %T %Z"
+day     "вырсарникун";/
+        "тунтикун";/
+        "ытларикун";/
+        "юнкун";/
+        "кӗҫнерникун";/
+        "эрнекун";/
+        "шӑматкун"
+abday   "вр";/
+        "тн";/
+        "ыт";/
+        "юн";/
+        "кҫ";/
+        "эр";/
+        "шм"
+mon     "кӑрлач";/
+        "нарӑс";/
+        "пуш";/
+        "ака";/
+        "ҫу";/
+        "ҫӗртме";/
+        "утӑ";/
+        "ҫурла";/
+        "авӑн";/
+        "юпа";/
+        "чӳк";/
+        "раштав"
+abmon   "кӑр";/
+        "нар";/
+        "пуш";/
+        "ака";/
+        "ҫӑв";/
+        "ҫрт";/
+        "утӑ";/
+        "ҫур";/
+        "авн";/
+        "юпа";/
+        "чӳк";/
+        "ршт"
+d_t_fmt "%a, %d, %b %Y %T"
 d_fmt     "%d.%m.%Y"
 t_fmt     "%T"
 am_pm     "";""
@@ -211,6 +93,35 @@ week 7;19971130;1
 first_weekday 2
 END LC_TIME
 
+LC_COLLATE
+% There is no collation information for Chuvash in CLDR.
+copy "iso14651_t1"
+
+collating-symbol <cyra-breve>
+collating-symbol <cyre-breve>
+collating-symbol <cyrs-desc>
+collating-symbol <cyru-dblacute>
+
+reorder-after <S0430> % а
+<cyra-breve>
+reorder-after <S0435> % е
+<cyre-breve>
+reorder-after <S0441> % с
+<cyrs-desc>
+reorder-after <S0443> % у
+<cyru-dblacute>
+
+<U04D0>	<cyra-breve>;<BASE>;<CAP>;<U04D0> % Ӑ
+<U04D1>	<cyra-breve>;<BASE>;<MIN>;<U04D1> % ӑ
+<U04D6>	<cyre-breve>;<BASE>;<CAP>;<U04D6> % Ӗ
+<U04D7>	<cyre-breve>;<BASE>;<MIN>;<U04D7> % ӗ
+<U04AA>	<cyrs-desc>;<BASE>;<CAP>;<U04AA> % Ҫ
+<U04AB>	<cyrs-desc>;<BASE>;<MIN>;<U04AB> % ҫ
+<U04F2>	<cyru-dblacute>;<BASE>;<CAP>;<U04F2> % Ӳ
+<U04F3>	<cyru-dblacute>;<BASE>;<MIN>;<U04F3> % ӳ
+reorder-end
+END LC_COLLATE
+
 LC_PAPER
 copy "ru_RU"
 END LC_PAPER
@@ -223,10 +134,21 @@ LC_MEASUREMENT
 copy "ru_RU"
 END LC_MEASUREMENT
 
+LC_MESSAGES
+yesexpr "^[yYиИ]"
+noexpr  "^[nNҫҪсС]"
+yesstr  "ия"
+nostr   "ҫук"
+END LC_MESSAGES
+
 LC_NAME
 copy "ru_RU"
 END LC_NAME
 
+LC_MONETARY
+copy "ru_RU"
+END LC_MONETARY
+
 LC_ADDRESS
 postal_fmt    "%f%N%a%N%d%N%b%N%s %h %e %r%N%z %T%N%c%N"
 country_ab2 "RU"
@@ -234,7 +156,7 @@ country_ab3 "RUS"
 country_num 643
 country_car    "RUS"
 % Чӑвашла
-lang_name    "Чӑвашла"
+lang_name    "чӑваш"
 lang_ab      "cv"
 lang_term    "chv"
 lang_lib     "chv"
diff --git a/localedata/unicode-gen/HangulSyllableType.txt b/localedata/unicode-gen/HangulSyllableType.txt
new file mode 100644
index 0000000000..98dafb10f1
--- /dev/null
+++ b/localedata/unicode-gen/HangulSyllableType.txt
@@ -0,0 +1,858 @@
+# HangulSyllableType-15.1.0.txt
+# Date: 2023-01-05, 20:34:42 GMT
+# © 2023 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see https://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+#   For documentation, see https://www.unicode.org/reports/tr44/
+
+# ================================================
+
+# Property:	Hangul_Syllable_Type
+
+#  All code points not explicitly listed for Hangul_Syllable_Type
+#  have the value Not_Applicable (NA).
+
+# @missing: 0000..10FFFF; Not_Applicable
+
+# ================================================
+
+# Hangul_Syllable_Type=Leading_Jamo
+
+1100..115F    ; L # Lo  [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER
+A960..A97C    ; L # Lo  [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
+
+# Total code points: 125
+
+# ================================================
+
+# Hangul_Syllable_Type=Vowel_Jamo
+
+1160..11A7    ; V # Lo  [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE
+D7B0..D7C6    ; V # Lo  [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
+
+# Total code points: 95
+
+# ================================================
+
+# Hangul_Syllable_Type=Trailing_Jamo
+
+11A8..11FF    ; T # Lo  [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN
+D7CB..D7FB    ; T # Lo  [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
+
+# Total code points: 137
+
+# ================================================
+
+# Hangul_Syllable_Type=LV_Syllable
+
+AC00          ; LV # Lo       HANGUL SYLLABLE GA
+AC1C          ; LV # Lo       HANGUL SYLLABLE GAE
+AC38          ; LV # Lo       HANGUL SYLLABLE GYA
+AC54          ; LV # Lo       HANGUL SYLLABLE GYAE
+AC70          ; LV # Lo       HANGUL SYLLABLE GEO
+AC8C          ; LV # Lo       HANGUL SYLLABLE GE
+ACA8          ; LV # Lo       HANGUL SYLLABLE GYEO
+ACC4          ; LV # Lo       HANGUL SYLLABLE GYE
+ACE0          ; LV # Lo       HANGUL SYLLABLE GO
+ACFC          ; LV # Lo       HANGUL SYLLABLE GWA
+AD18          ; LV # Lo       HANGUL SYLLABLE GWAE
+AD34          ; LV # Lo       HANGUL SYLLABLE GOE
+AD50          ; LV # Lo       HANGUL SYLLABLE GYO
+AD6C          ; LV # Lo       HANGUL SYLLABLE GU
+AD88          ; LV # Lo       HANGUL SYLLABLE GWEO
+ADA4          ; LV # Lo       HANGUL SYLLABLE GWE
+ADC0          ; LV # Lo       HANGUL SYLLABLE GWI
+ADDC          ; LV # Lo       HANGUL SYLLABLE GYU
+ADF8          ; LV # Lo       HANGUL SYLLABLE GEU
+AE14          ; LV # Lo       HANGUL SYLLABLE GYI
+AE30          ; LV # Lo       HANGUL SYLLABLE GI
+AE4C          ; LV # Lo       HANGUL SYLLABLE GGA
+AE68          ; LV # Lo       HANGUL SYLLABLE GGAE
+AE84          ; LV # Lo       HANGUL SYLLABLE GGYA
+AEA0          ; LV # Lo       HANGUL SYLLABLE GGYAE
+AEBC          ; LV # Lo       HANGUL SYLLABLE GGEO
+AED8          ; LV # Lo       HANGUL SYLLABLE GGE
+AEF4          ; LV # Lo       HANGUL SYLLABLE GGYEO
+AF10          ; LV # Lo       HANGUL SYLLABLE GGYE
+AF2C          ; LV # Lo       HANGUL SYLLABLE GGO
+AF48          ; LV # Lo       HANGUL SYLLABLE GGWA
+AF64          ; LV # Lo       HANGUL SYLLABLE GGWAE
+AF80          ; LV # Lo       HANGUL SYLLABLE GGOE
+AF9C          ; LV # Lo       HANGUL SYLLABLE GGYO
+AFB8          ; LV # Lo       HANGUL SYLLABLE GGU
+AFD4          ; LV # Lo       HANGUL SYLLABLE GGWEO
+AFF0          ; LV # Lo       HANGUL SYLLABLE GGWE
+B00C          ; LV # Lo       HANGUL SYLLABLE GGWI
+B028          ; LV # Lo       HANGUL SYLLABLE GGYU
+B044          ; LV # Lo       HANGUL SYLLABLE GGEU
+B060          ; LV # Lo       HANGUL SYLLABLE GGYI
+B07C          ; LV # Lo       HANGUL SYLLABLE GGI
+B098          ; LV # Lo       HANGUL SYLLABLE NA
+B0B4          ; LV # Lo       HANGUL SYLLABLE NAE
+B0D0          ; LV # Lo       HANGUL SYLLABLE NYA
+B0EC          ; LV # Lo       HANGUL SYLLABLE NYAE
+B108          ; LV # Lo       HANGUL SYLLABLE NEO
+B124          ; LV # Lo       HANGUL SYLLABLE NE
+B140          ; LV # Lo       HANGUL SYLLABLE NYEO
+B15C          ; LV # Lo       HANGUL SYLLABLE NYE
+B178          ; LV # Lo       HANGUL SYLLABLE NO
+B194          ; LV # Lo       HANGUL SYLLABLE NWA
+B1B0          ; LV # Lo       HANGUL SYLLABLE NWAE
+B1CC          ; LV # Lo       HANGUL SYLLABLE NOE
+B1E8          ; LV # Lo       HANGUL SYLLABLE NYO
+B204          ; LV # Lo       HANGUL SYLLABLE NU
+B220          ; LV # Lo       HANGUL SYLLABLE NWEO
+B23C          ; LV # Lo       HANGUL SYLLABLE NWE
+B258          ; LV # Lo       HANGUL SYLLABLE NWI
+B274          ; LV # Lo       HANGUL SYLLABLE NYU
+B290          ; LV # Lo       HANGUL SYLLABLE NEU
+B2AC          ; LV # Lo       HANGUL SYLLABLE NYI
+B2C8          ; LV # Lo       HANGUL SYLLABLE NI
+B2E4          ; LV # Lo       HANGUL SYLLABLE DA
+B300          ; LV # Lo       HANGUL SYLLABLE DAE
+B31C          ; LV # Lo       HANGUL SYLLABLE DYA
+B338          ; LV # Lo       HANGUL SYLLABLE DYAE
+B354          ; LV # Lo       HANGUL SYLLABLE DEO
+B370          ; LV # Lo       HANGUL SYLLABLE DE
+B38C          ; LV # Lo       HANGUL SYLLABLE DYEO
+B3A8          ; LV # Lo       HANGUL SYLLABLE DYE
+B3C4          ; LV # Lo       HANGUL SYLLABLE DO
+B3E0          ; LV # Lo       HANGUL SYLLABLE DWA
+B3FC          ; LV # Lo       HANGUL SYLLABLE DWAE
+B418          ; LV # Lo       HANGUL SYLLABLE DOE
+B434          ; LV # Lo       HANGUL SYLLABLE DYO
+B450          ; LV # Lo       HANGUL SYLLABLE DU
+B46C          ; LV # Lo       HANGUL SYLLABLE DWEO
+B488          ; LV # Lo       HANGUL SYLLABLE DWE
+B4A4          ; LV # Lo       HANGUL SYLLABLE DWI
+B4C0          ; LV # Lo       HANGUL SYLLABLE DYU
+B4DC          ; LV # Lo       HANGUL SYLLABLE DEU
+B4F8          ; LV # Lo       HANGUL SYLLABLE DYI
+B514          ; LV # Lo       HANGUL SYLLABLE DI
+B530          ; LV # Lo       HANGUL SYLLABLE DDA
+B54C          ; LV # Lo       HANGUL SYLLABLE DDAE
+B568          ; LV # Lo       HANGUL SYLLABLE DDYA
+B584          ; LV # Lo       HANGUL SYLLABLE DDYAE
+B5A0          ; LV # Lo       HANGUL SYLLABLE DDEO
+B5BC          ; LV # Lo       HANGUL SYLLABLE DDE
+B5D8          ; LV # Lo       HANGUL SYLLABLE DDYEO
+B5F4          ; LV # Lo       HANGUL SYLLABLE DDYE
+B610          ; LV # Lo       HANGUL SYLLABLE DDO
+B62C          ; LV # Lo       HANGUL SYLLABLE DDWA
+B648          ; LV # Lo       HANGUL SYLLABLE DDWAE
+B664          ; LV # Lo       HANGUL SYLLABLE DDOE
+B680          ; LV # Lo       HANGUL SYLLABLE DDYO
+B69C          ; LV # Lo       HANGUL SYLLABLE DDU
+B6B8          ; LV # Lo       HANGUL SYLLABLE DDWEO
+B6D4          ; LV # Lo       HANGUL SYLLABLE DDWE
+B6F0          ; LV # Lo       HANGUL SYLLABLE DDWI
+B70C          ; LV # Lo       HANGUL SYLLABLE DDYU
+B728          ; LV # Lo       HANGUL SYLLABLE DDEU
+B744          ; LV # Lo       HANGUL SYLLABLE DDYI
+B760          ; LV # Lo       HANGUL SYLLABLE DDI
+B77C          ; LV # Lo       HANGUL SYLLABLE RA
+B798          ; LV # Lo       HANGUL SYLLABLE RAE
+B7B4          ; LV # Lo       HANGUL SYLLABLE RYA
+B7D0          ; LV # Lo       HANGUL SYLLABLE RYAE
+B7EC          ; LV # Lo       HANGUL SYLLABLE REO
+B808          ; LV # Lo       HANGUL SYLLABLE RE
+B824          ; LV # Lo       HANGUL SYLLABLE RYEO
+B840          ; LV # Lo       HANGUL SYLLABLE RYE
+B85C          ; LV # Lo       HANGUL SYLLABLE RO
+B878          ; LV # Lo       HANGUL SYLLABLE RWA
+B894          ; LV # Lo       HANGUL SYLLABLE RWAE
+B8B0          ; LV # Lo       HANGUL SYLLABLE ROE
+B8CC          ; LV # Lo       HANGUL SYLLABLE RYO
+B8E8          ; LV # Lo       HANGUL SYLLABLE RU
+B904          ; LV # Lo       HANGUL SYLLABLE RWEO
+B920          ; LV # Lo       HANGUL SYLLABLE RWE
+B93C          ; LV # Lo       HANGUL SYLLABLE RWI
+B958          ; LV # Lo       HANGUL SYLLABLE RYU
+B974          ; LV # Lo       HANGUL SYLLABLE REU
+B990          ; LV # Lo       HANGUL SYLLABLE RYI
+B9AC          ; LV # Lo       HANGUL SYLLABLE RI
+B9C8          ; LV # Lo       HANGUL SYLLABLE MA
+B9E4          ; LV # Lo       HANGUL SYLLABLE MAE
+BA00          ; LV # Lo       HANGUL SYLLABLE MYA
+BA1C          ; LV # Lo       HANGUL SYLLABLE MYAE
+BA38          ; LV # Lo       HANGUL SYLLABLE MEO
+BA54          ; LV # Lo       HANGUL SYLLABLE ME
+BA70          ; LV # Lo       HANGUL SYLLABLE MYEO
+BA8C          ; LV # Lo       HANGUL SYLLABLE MYE
+BAA8          ; LV # Lo       HANGUL SYLLABLE MO
+BAC4          ; LV # Lo       HANGUL SYLLABLE MWA
+BAE0          ; LV # Lo       HANGUL SYLLABLE MWAE
+BAFC          ; LV # Lo       HANGUL SYLLABLE MOE
+BB18          ; LV # Lo       HANGUL SYLLABLE MYO
+BB34          ; LV # Lo       HANGUL SYLLABLE MU
+BB50          ; LV # Lo       HANGUL SYLLABLE MWEO
+BB6C          ; LV # Lo       HANGUL SYLLABLE MWE
+BB88          ; LV # Lo       HANGUL SYLLABLE MWI
+BBA4          ; LV # Lo       HANGUL SYLLABLE MYU
+BBC0          ; LV # Lo       HANGUL SYLLABLE MEU
+BBDC          ; LV # Lo       HANGUL SYLLABLE MYI
+BBF8          ; LV # Lo       HANGUL SYLLABLE MI
+BC14          ; LV # Lo       HANGUL SYLLABLE BA
+BC30          ; LV # Lo       HANGUL SYLLABLE BAE
+BC4C          ; LV # Lo       HANGUL SYLLABLE BYA
+BC68          ; LV # Lo       HANGUL SYLLABLE BYAE
+BC84          ; LV # Lo       HANGUL SYLLABLE BEO
+BCA0          ; LV # Lo       HANGUL SYLLABLE BE
+BCBC          ; LV # Lo       HANGUL SYLLABLE BYEO
+BCD8          ; LV # Lo       HANGUL SYLLABLE BYE
+BCF4          ; LV # Lo       HANGUL SYLLABLE BO
+BD10          ; LV # Lo       HANGUL SYLLABLE BWA
+BD2C          ; LV # Lo       HANGUL SYLLABLE BWAE
+BD48          ; LV # Lo       HANGUL SYLLABLE BOE
+BD64          ; LV # Lo       HANGUL SYLLABLE BYO
+BD80          ; LV # Lo       HANGUL SYLLABLE BU
+BD9C          ; LV # Lo       HANGUL SYLLABLE BWEO
+BDB8          ; LV # Lo       HANGUL SYLLABLE BWE
+BDD4          ; LV # Lo       HANGUL SYLLABLE BWI
+BDF0          ; LV # Lo       HANGUL SYLLABLE BYU
+BE0C          ; LV # Lo       HANGUL SYLLABLE BEU
+BE28          ; LV # Lo       HANGUL SYLLABLE BYI
+BE44          ; LV # Lo       HANGUL SYLLABLE BI
+BE60          ; LV # Lo       HANGUL SYLLABLE BBA
+BE7C          ; LV # Lo       HANGUL SYLLABLE BBAE
+BE98          ; LV # Lo       HANGUL SYLLABLE BBYA
+BEB4          ; LV # Lo       HANGUL SYLLABLE BBYAE
+BED0          ; LV # Lo       HANGUL SYLLABLE BBEO
+BEEC          ; LV # Lo       HANGUL SYLLABLE BBE
+BF08          ; LV # Lo       HANGUL SYLLABLE BBYEO
+BF24          ; LV # Lo       HANGUL SYLLABLE BBYE
+BF40          ; LV # Lo       HANGUL SYLLABLE BBO
+BF5C          ; LV # Lo       HANGUL SYLLABLE BBWA
+BF78          ; LV # Lo       HANGUL SYLLABLE BBWAE
+BF94          ; LV # Lo       HANGUL SYLLABLE BBOE
+BFB0          ; LV # Lo       HANGUL SYLLABLE BBYO
+BFCC          ; LV # Lo       HANGUL SYLLABLE BBU
+BFE8          ; LV # Lo       HANGUL SYLLABLE BBWEO
+C004          ; LV # Lo       HANGUL SYLLABLE BBWE
+C020          ; LV # Lo       HANGUL SYLLABLE BBWI
+C03C          ; LV # Lo       HANGUL SYLLABLE BBYU
+C058          ; LV # Lo       HANGUL SYLLABLE BBEU
+C074          ; LV # Lo       HANGUL SYLLABLE BBYI
+C090          ; LV # Lo       HANGUL SYLLABLE BBI
+C0AC          ; LV # Lo       HANGUL SYLLABLE SA
+C0C8          ; LV # Lo       HANGUL SYLLABLE SAE
+C0E4          ; LV # Lo       HANGUL SYLLABLE SYA
+C100          ; LV # Lo       HANGUL SYLLABLE SYAE
+C11C          ; LV # Lo       HANGUL SYLLABLE SEO
+C138          ; LV # Lo       HANGUL SYLLABLE SE
+C154          ; LV # Lo       HANGUL SYLLABLE SYEO
+C170          ; LV # Lo       HANGUL SYLLABLE SYE
+C18C          ; LV # Lo       HANGUL SYLLABLE SO
+C1A8          ; LV # Lo       HANGUL SYLLABLE SWA
+C1C4          ; LV # Lo       HANGUL SYLLABLE SWAE
+C1E0          ; LV # Lo       HANGUL SYLLABLE SOE
+C1FC          ; LV # Lo       HANGUL SYLLABLE SYO
+C218          ; LV # Lo       HANGUL SYLLABLE SU
+C234          ; LV # Lo       HANGUL SYLLABLE SWEO
+C250          ; LV # Lo       HANGUL SYLLABLE SWE
+C26C          ; LV # Lo       HANGUL SYLLABLE SWI
+C288          ; LV # Lo       HANGUL SYLLABLE SYU
+C2A4          ; LV # Lo       HANGUL SYLLABLE SEU
+C2C0          ; LV # Lo       HANGUL SYLLABLE SYI
+C2DC          ; LV # Lo       HANGUL SYLLABLE SI
+C2F8          ; LV # Lo       HANGUL SYLLABLE SSA
+C314          ; LV # Lo       HANGUL SYLLABLE SSAE
+C330          ; LV # Lo       HANGUL SYLLABLE SSYA
+C34C          ; LV # Lo       HANGUL SYLLABLE SSYAE
+C368          ; LV # Lo       HANGUL SYLLABLE SSEO
+C384          ; LV # Lo       HANGUL SYLLABLE SSE
+C3A0          ; LV # Lo       HANGUL SYLLABLE SSYEO
+C3BC          ; LV # Lo       HANGUL SYLLABLE SSYE
+C3D8          ; LV # Lo       HANGUL SYLLABLE SSO
+C3F4          ; LV # Lo       HANGUL SYLLABLE SSWA
+C410          ; LV # Lo       HANGUL SYLLABLE SSWAE
+C42C          ; LV # Lo       HANGUL SYLLABLE SSOE
+C448          ; LV # Lo       HANGUL SYLLABLE SSYO
+C464          ; LV # Lo       HANGUL SYLLABLE SSU
+C480          ; LV # Lo       HANGUL SYLLABLE SSWEO
+C49C          ; LV # Lo       HANGUL SYLLABLE SSWE
+C4B8          ; LV # Lo       HANGUL SYLLABLE SSWI
+C4D4          ; LV # Lo       HANGUL SYLLABLE SSYU
+C4F0          ; LV # Lo       HANGUL SYLLABLE SSEU
+C50C          ; LV # Lo       HANGUL SYLLABLE SSYI
+C528          ; LV # Lo       HANGUL SYLLABLE SSI
+C544          ; LV # Lo       HANGUL SYLLABLE A
+C560          ; LV # Lo       HANGUL SYLLABLE AE
+C57C          ; LV # Lo       HANGUL SYLLABLE YA
+C598          ; LV # Lo       HANGUL SYLLABLE YAE
+C5B4          ; LV # Lo       HANGUL SYLLABLE EO
+C5D0          ; LV # Lo       HANGUL SYLLABLE E
+C5EC          ; LV # Lo       HANGUL SYLLABLE YEO
+C608          ; LV # Lo       HANGUL SYLLABLE YE
+C624          ; LV # Lo       HANGUL SYLLABLE O
+C640          ; LV # Lo       HANGUL SYLLABLE WA
+C65C          ; LV # Lo       HANGUL SYLLABLE WAE
+C678          ; LV # Lo       HANGUL SYLLABLE OE
+C694          ; LV # Lo       HANGUL SYLLABLE YO
+C6B0          ; LV # Lo       HANGUL SYLLABLE U
+C6CC          ; LV # Lo       HANGUL SYLLABLE WEO
+C6E8          ; LV # Lo       HANGUL SYLLABLE WE
+C704          ; LV # Lo       HANGUL SYLLABLE WI
+C720          ; LV # Lo       HANGUL SYLLABLE YU
+C73C          ; LV # Lo       HANGUL SYLLABLE EU
+C758          ; LV # Lo       HANGUL SYLLABLE YI
+C774          ; LV # Lo       HANGUL SYLLABLE I
+C790          ; LV # Lo       HANGUL SYLLABLE JA
+C7AC          ; LV # Lo       HANGUL SYLLABLE JAE
+C7C8          ; LV # Lo       HANGUL SYLLABLE JYA
+C7E4          ; LV # Lo       HANGUL SYLLABLE JYAE
+C800          ; LV # Lo       HANGUL SYLLABLE JEO
+C81C          ; LV # Lo       HANGUL SYLLABLE JE
+C838          ; LV # Lo       HANGUL SYLLABLE JYEO
+C854          ; LV # Lo       HANGUL SYLLABLE JYE
+C870          ; LV # Lo       HANGUL SYLLABLE JO
+C88C          ; LV # Lo       HANGUL SYLLABLE JWA
+C8A8          ; LV # Lo       HANGUL SYLLABLE JWAE
+C8C4          ; LV # Lo       HANGUL SYLLABLE JOE
+C8E0          ; LV # Lo       HANGUL SYLLABLE JYO
+C8FC          ; LV # Lo       HANGUL SYLLABLE JU
+C918          ; LV # Lo       HANGUL SYLLABLE JWEO
+C934          ; LV # Lo       HANGUL SYLLABLE JWE
+C950          ; LV # Lo       HANGUL SYLLABLE JWI
+C96C          ; LV # Lo       HANGUL SYLLABLE JYU
+C988          ; LV # Lo       HANGUL SYLLABLE JEU
+C9A4          ; LV # Lo       HANGUL SYLLABLE JYI
+C9C0          ; LV # Lo       HANGUL SYLLABLE JI
+C9DC          ; LV # Lo       HANGUL SYLLABLE JJA
+C9F8          ; LV # Lo       HANGUL SYLLABLE JJAE
+CA14          ; LV # Lo       HANGUL SYLLABLE JJYA
+CA30          ; LV # Lo       HANGUL SYLLABLE JJYAE
+CA4C          ; LV # Lo       HANGUL SYLLABLE JJEO
+CA68          ; LV # Lo       HANGUL SYLLABLE JJE
+CA84          ; LV # Lo       HANGUL SYLLABLE JJYEO
+CAA0          ; LV # Lo       HANGUL SYLLABLE JJYE
+CABC          ; LV # Lo       HANGUL SYLLABLE JJO
+CAD8          ; LV # Lo       HANGUL SYLLABLE JJWA
+CAF4          ; LV # Lo       HANGUL SYLLABLE JJWAE
+CB10          ; LV # Lo       HANGUL SYLLABLE JJOE
+CB2C          ; LV # Lo       HANGUL SYLLABLE JJYO
+CB48          ; LV # Lo       HANGUL SYLLABLE JJU
+CB64          ; LV # Lo       HANGUL SYLLABLE JJWEO
+CB80          ; LV # Lo       HANGUL SYLLABLE JJWE
+CB9C          ; LV # Lo       HANGUL SYLLABLE JJWI
+CBB8          ; LV # Lo       HANGUL SYLLABLE JJYU
+CBD4          ; LV # Lo       HANGUL SYLLABLE JJEU
+CBF0          ; LV # Lo       HANGUL SYLLABLE JJYI
+CC0C          ; LV # Lo       HANGUL SYLLABLE JJI
+CC28          ; LV # Lo       HANGUL SYLLABLE CA
+CC44          ; LV # Lo       HANGUL SYLLABLE CAE
+CC60          ; LV # Lo       HANGUL SYLLABLE CYA
+CC7C          ; LV # Lo       HANGUL SYLLABLE CYAE
+CC98          ; LV # Lo       HANGUL SYLLABLE CEO
+CCB4          ; LV # Lo       HANGUL SYLLABLE CE
+CCD0          ; LV # Lo       HANGUL SYLLABLE CYEO
+CCEC          ; LV # Lo       HANGUL SYLLABLE CYE
+CD08          ; LV # Lo       HANGUL SYLLABLE CO
+CD24          ; LV # Lo       HANGUL SYLLABLE CWA
+CD40          ; LV # Lo       HANGUL SYLLABLE CWAE
+CD5C          ; LV # Lo       HANGUL SYLLABLE COE
+CD78          ; LV # Lo       HANGUL SYLLABLE CYO
+CD94          ; LV # Lo       HANGUL SYLLABLE CU
+CDB0          ; LV # Lo       HANGUL SYLLABLE CWEO
+CDCC          ; LV # Lo       HANGUL SYLLABLE CWE
+CDE8          ; LV # Lo       HANGUL SYLLABLE CWI
+CE04          ; LV # Lo       HANGUL SYLLABLE CYU
+CE20          ; LV # Lo       HANGUL SYLLABLE CEU
+CE3C          ; LV # Lo       HANGUL SYLLABLE CYI
+CE58          ; LV # Lo       HANGUL SYLLABLE CI
+CE74          ; LV # Lo       HANGUL SYLLABLE KA
+CE90          ; LV # Lo       HANGUL SYLLABLE KAE
+CEAC          ; LV # Lo       HANGUL SYLLABLE KYA
+CEC8          ; LV # Lo       HANGUL SYLLABLE KYAE
+CEE4          ; LV # Lo       HANGUL SYLLABLE KEO
+CF00          ; LV # Lo       HANGUL SYLLABLE KE
+CF1C          ; LV # Lo       HANGUL SYLLABLE KYEO
+CF38          ; LV # Lo       HANGUL SYLLABLE KYE
+CF54          ; LV # Lo       HANGUL SYLLABLE KO
+CF70          ; LV # Lo       HANGUL SYLLABLE KWA
+CF8C          ; LV # Lo       HANGUL SYLLABLE KWAE
+CFA8          ; LV # Lo       HANGUL SYLLABLE KOE
+CFC4          ; LV # Lo       HANGUL SYLLABLE KYO
+CFE0          ; LV # Lo       HANGUL SYLLABLE KU
+CFFC          ; LV # Lo       HANGUL SYLLABLE KWEO
+D018          ; LV # Lo       HANGUL SYLLABLE KWE
+D034          ; LV # Lo       HANGUL SYLLABLE KWI
+D050          ; LV # Lo       HANGUL SYLLABLE KYU
+D06C          ; LV # Lo       HANGUL SYLLABLE KEU
+D088          ; LV # Lo       HANGUL SYLLABLE KYI
+D0A4          ; LV # Lo       HANGUL SYLLABLE KI
+D0C0          ; LV # Lo       HANGUL SYLLABLE TA
+D0DC          ; LV # Lo       HANGUL SYLLABLE TAE
+D0F8          ; LV # Lo       HANGUL SYLLABLE TYA
+D114          ; LV # Lo       HANGUL SYLLABLE TYAE
+D130          ; LV # Lo       HANGUL SYLLABLE TEO
+D14C          ; LV # Lo       HANGUL SYLLABLE TE
+D168          ; LV # Lo       HANGUL SYLLABLE TYEO
+D184          ; LV # Lo       HANGUL SYLLABLE TYE
+D1A0          ; LV # Lo       HANGUL SYLLABLE TO
+D1BC          ; LV # Lo       HANGUL SYLLABLE TWA
+D1D8          ; LV # Lo       HANGUL SYLLABLE TWAE
+D1F4          ; LV # Lo       HANGUL SYLLABLE TOE
+D210          ; LV # Lo       HANGUL SYLLABLE TYO
+D22C          ; LV # Lo       HANGUL SYLLABLE TU
+D248          ; LV # Lo       HANGUL SYLLABLE TWEO
+D264          ; LV # Lo       HANGUL SYLLABLE TWE
+D280          ; LV # Lo       HANGUL SYLLABLE TWI
+D29C          ; LV # Lo       HANGUL SYLLABLE TYU
+D2B8          ; LV # Lo       HANGUL SYLLABLE TEU
+D2D4          ; LV # Lo       HANGUL SYLLABLE TYI
+D2F0          ; LV # Lo       HANGUL SYLLABLE TI
+D30C          ; LV # Lo       HANGUL SYLLABLE PA
+D328          ; LV # Lo       HANGUL SYLLABLE PAE
+D344          ; LV # Lo       HANGUL SYLLABLE PYA
+D360          ; LV # Lo       HANGUL SYLLABLE PYAE
+D37C          ; LV # Lo       HANGUL SYLLABLE PEO
+D398          ; LV # Lo       HANGUL SYLLABLE PE
+D3B4          ; LV # Lo       HANGUL SYLLABLE PYEO
+D3D0          ; LV # Lo       HANGUL SYLLABLE PYE
+D3EC          ; LV # Lo       HANGUL SYLLABLE PO
+D408          ; LV # Lo       HANGUL SYLLABLE PWA
+D424          ; LV # Lo       HANGUL SYLLABLE PWAE
+D440          ; LV # Lo       HANGUL SYLLABLE POE
+D45C          ; LV # Lo       HANGUL SYLLABLE PYO
+D478          ; LV # Lo       HANGUL SYLLABLE PU
+D494          ; LV # Lo       HANGUL SYLLABLE PWEO
+D4B0          ; LV # Lo       HANGUL SYLLABLE PWE
+D4CC          ; LV # Lo       HANGUL SYLLABLE PWI
+D4E8          ; LV # Lo       HANGUL SYLLABLE PYU
+D504          ; LV # Lo       HANGUL SYLLABLE PEU
+D520          ; LV # Lo       HANGUL SYLLABLE PYI
+D53C          ; LV # Lo       HANGUL SYLLABLE PI
+D558          ; LV # Lo       HANGUL SYLLABLE HA
+D574          ; LV # Lo       HANGUL SYLLABLE HAE
+D590          ; LV # Lo       HANGUL SYLLABLE HYA
+D5AC          ; LV # Lo       HANGUL SYLLABLE HYAE
+D5C8          ; LV # Lo       HANGUL SYLLABLE HEO
+D5E4          ; LV # Lo       HANGUL SYLLABLE HE
+D600          ; LV # Lo       HANGUL SYLLABLE HYEO
+D61C          ; LV # Lo       HANGUL SYLLABLE HYE
+D638          ; LV # Lo       HANGUL SYLLABLE HO
+D654          ; LV # Lo       HANGUL SYLLABLE HWA
+D670          ; LV # Lo       HANGUL SYLLABLE HWAE
+D68C          ; LV # Lo       HANGUL SYLLABLE HOE
+D6A8          ; LV # Lo       HANGUL SYLLABLE HYO
+D6C4          ; LV # Lo       HANGUL SYLLABLE HU
+D6E0          ; LV # Lo       HANGUL SYLLABLE HWEO
+D6FC          ; LV # Lo       HANGUL SYLLABLE HWE
+D718          ; LV # Lo       HANGUL SYLLABLE HWI
+D734          ; LV # Lo       HANGUL SYLLABLE HYU
+D750          ; LV # Lo       HANGUL SYLLABLE HEU
+D76C          ; LV # Lo       HANGUL SYLLABLE HYI
+D788          ; LV # Lo       HANGUL SYLLABLE HI
+
+# Total code points: 399
+
+# ================================================
+
+# Hangul_Syllable_Type=LVT_Syllable
+
+AC01..AC1B    ; LVT # Lo  [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH
+AC1D..AC37    ; LVT # Lo  [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH
+AC39..AC53    ; LVT # Lo  [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH
+AC55..AC6F    ; LVT # Lo  [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH
+AC71..AC8B    ; LVT # Lo  [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH
+AC8D..ACA7    ; LVT # Lo  [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH
+ACA9..ACC3    ; LVT # Lo  [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH
+ACC5..ACDF    ; LVT # Lo  [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH
+ACE1..ACFB    ; LVT # Lo  [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH
+ACFD..AD17    ; LVT # Lo  [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH
+AD19..AD33    ; LVT # Lo  [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH
+AD35..AD4F    ; LVT # Lo  [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH
+AD51..AD6B    ; LVT # Lo  [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH
+AD6D..AD87    ; LVT # Lo  [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH
+AD89..ADA3    ; LVT # Lo  [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH
+ADA5..ADBF    ; LVT # Lo  [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH
+ADC1..ADDB    ; LVT # Lo  [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH
+ADDD..ADF7    ; LVT # Lo  [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH
+ADF9..AE13    ; LVT # Lo  [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH
+AE15..AE2F    ; LVT # Lo  [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH
+AE31..AE4B    ; LVT # Lo  [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH
+AE4D..AE67    ; LVT # Lo  [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH
+AE69..AE83    ; LVT # Lo  [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH
+AE85..AE9F    ; LVT # Lo  [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH
+AEA1..AEBB    ; LVT # Lo  [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH
+AEBD..AED7    ; LVT # Lo  [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH
+AED9..AEF3    ; LVT # Lo  [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH
+AEF5..AF0F    ; LVT # Lo  [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH
+AF11..AF2B    ; LVT # Lo  [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH
+AF2D..AF47    ; LVT # Lo  [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH
+AF49..AF63    ; LVT # Lo  [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH
+AF65..AF7F    ; LVT # Lo  [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH
+AF81..AF9B    ; LVT # Lo  [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH
+AF9D..AFB7    ; LVT # Lo  [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH
+AFB9..AFD3    ; LVT # Lo  [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH
+AFD5..AFEF    ; LVT # Lo  [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH
+AFF1..B00B    ; LVT # Lo  [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH
+B00D..B027    ; LVT # Lo  [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH
+B029..B043    ; LVT # Lo  [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH
+B045..B05F    ; LVT # Lo  [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH
+B061..B07B    ; LVT # Lo  [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH
+B07D..B097    ; LVT # Lo  [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH
+B099..B0B3    ; LVT # Lo  [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH
+B0B5..B0CF    ; LVT # Lo  [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH
+B0D1..B0EB    ; LVT # Lo  [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH
+B0ED..B107    ; LVT # Lo  [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH
+B109..B123    ; LVT # Lo  [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH
+B125..B13F    ; LVT # Lo  [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH
+B141..B15B    ; LVT # Lo  [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH
+B15D..B177    ; LVT # Lo  [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH
+B179..B193    ; LVT # Lo  [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH
+B195..B1AF    ; LVT # Lo  [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH
+B1B1..B1CB    ; LVT # Lo  [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH
+B1CD..B1E7    ; LVT # Lo  [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH
+B1E9..B203    ; LVT # Lo  [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH
+B205..B21F    ; LVT # Lo  [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH
+B221..B23B    ; LVT # Lo  [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH
+B23D..B257    ; LVT # Lo  [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH
+B259..B273    ; LVT # Lo  [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH
+B275..B28F    ; LVT # Lo  [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH
+B291..B2AB    ; LVT # Lo  [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH
+B2AD..B2C7    ; LVT # Lo  [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH
+B2C9..B2E3    ; LVT # Lo  [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH
+B2E5..B2FF    ; LVT # Lo  [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH
+B301..B31B    ; LVT # Lo  [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH
+B31D..B337    ; LVT # Lo  [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH
+B339..B353    ; LVT # Lo  [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH
+B355..B36F    ; LVT # Lo  [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH
+B371..B38B    ; LVT # Lo  [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH
+B38D..B3A7    ; LVT # Lo  [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH
+B3A9..B3C3    ; LVT # Lo  [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH
+B3C5..B3DF    ; LVT # Lo  [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH
+B3E1..B3FB    ; LVT # Lo  [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH
+B3FD..B417    ; LVT # Lo  [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH
+B419..B433    ; LVT # Lo  [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH
+B435..B44F    ; LVT # Lo  [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH
+B451..B46B    ; LVT # Lo  [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH
+B46D..B487    ; LVT # Lo  [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH
+B489..B4A3    ; LVT # Lo  [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH
+B4A5..B4BF    ; LVT # Lo  [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH
+B4C1..B4DB    ; LVT # Lo  [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH
+B4DD..B4F7    ; LVT # Lo  [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH
+B4F9..B513    ; LVT # Lo  [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH
+B515..B52F    ; LVT # Lo  [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH
+B531..B54B    ; LVT # Lo  [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH
+B54D..B567    ; LVT # Lo  [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH
+B569..B583    ; LVT # Lo  [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH
+B585..B59F    ; LVT # Lo  [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH
+B5A1..B5BB    ; LVT # Lo  [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH
+B5BD..B5D7    ; LVT # Lo  [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH
+B5D9..B5F3    ; LVT # Lo  [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH
+B5F5..B60F    ; LVT # Lo  [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH
+B611..B62B    ; LVT # Lo  [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH
+B62D..B647    ; LVT # Lo  [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH
+B649..B663    ; LVT # Lo  [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH
+B665..B67F    ; LVT # Lo  [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH
+B681..B69B    ; LVT # Lo  [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH
+B69D..B6B7    ; LVT # Lo  [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH
+B6B9..B6D3    ; LVT # Lo  [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH
+B6D5..B6EF    ; LVT # Lo  [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH
+B6F1..B70B    ; LVT # Lo  [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH
+B70D..B727    ; LVT # Lo  [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH
+B729..B743    ; LVT # Lo  [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH
+B745..B75F    ; LVT # Lo  [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH
+B761..B77B    ; LVT # Lo  [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH
+B77D..B797    ; LVT # Lo  [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH
+B799..B7B3    ; LVT # Lo  [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH
+B7B5..B7CF    ; LVT # Lo  [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH
+B7D1..B7EB    ; LVT # Lo  [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH
+B7ED..B807    ; LVT # Lo  [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH
+B809..B823    ; LVT # Lo  [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH
+B825..B83F    ; LVT # Lo  [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH
+B841..B85B    ; LVT # Lo  [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH
+B85D..B877    ; LVT # Lo  [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH
+B879..B893    ; LVT # Lo  [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH
+B895..B8AF    ; LVT # Lo  [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH
+B8B1..B8CB    ; LVT # Lo  [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH
+B8CD..B8E7    ; LVT # Lo  [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH
+B8E9..B903    ; LVT # Lo  [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH
+B905..B91F    ; LVT # Lo  [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH
+B921..B93B    ; LVT # Lo  [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH
+B93D..B957    ; LVT # Lo  [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH
+B959..B973    ; LVT # Lo  [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH
+B975..B98F    ; LVT # Lo  [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH
+B991..B9AB    ; LVT # Lo  [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH
+B9AD..B9C7    ; LVT # Lo  [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH
+B9C9..B9E3    ; LVT # Lo  [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH
+B9E5..B9FF    ; LVT # Lo  [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH
+BA01..BA1B    ; LVT # Lo  [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH
+BA1D..BA37    ; LVT # Lo  [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH
+BA39..BA53    ; LVT # Lo  [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH
+BA55..BA6F    ; LVT # Lo  [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH
+BA71..BA8B    ; LVT # Lo  [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH
+BA8D..BAA7    ; LVT # Lo  [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH
+BAA9..BAC3    ; LVT # Lo  [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH
+BAC5..BADF    ; LVT # Lo  [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH
+BAE1..BAFB    ; LVT # Lo  [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH
+BAFD..BB17    ; LVT # Lo  [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH
+BB19..BB33    ; LVT # Lo  [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH
+BB35..BB4F    ; LVT # Lo  [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH
+BB51..BB6B    ; LVT # Lo  [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH
+BB6D..BB87    ; LVT # Lo  [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH
+BB89..BBA3    ; LVT # Lo  [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH
+BBA5..BBBF    ; LVT # Lo  [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH
+BBC1..BBDB    ; LVT # Lo  [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH
+BBDD..BBF7    ; LVT # Lo  [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH
+BBF9..BC13    ; LVT # Lo  [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH
+BC15..BC2F    ; LVT # Lo  [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH
+BC31..BC4B    ; LVT # Lo  [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH
+BC4D..BC67    ; LVT # Lo  [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH
+BC69..BC83    ; LVT # Lo  [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH
+BC85..BC9F    ; LVT # Lo  [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH
+BCA1..BCBB    ; LVT # Lo  [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH
+BCBD..BCD7    ; LVT # Lo  [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH
+BCD9..BCF3    ; LVT # Lo  [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH
+BCF5..BD0F    ; LVT # Lo  [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH
+BD11..BD2B    ; LVT # Lo  [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH
+BD2D..BD47    ; LVT # Lo  [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH
+BD49..BD63    ; LVT # Lo  [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH
+BD65..BD7F    ; LVT # Lo  [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH
+BD81..BD9B    ; LVT # Lo  [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH
+BD9D..BDB7    ; LVT # Lo  [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH
+BDB9..BDD3    ; LVT # Lo  [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH
+BDD5..BDEF    ; LVT # Lo  [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH
+BDF1..BE0B    ; LVT # Lo  [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH
+BE0D..BE27    ; LVT # Lo  [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH
+BE29..BE43    ; LVT # Lo  [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH
+BE45..BE5F    ; LVT # Lo  [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH
+BE61..BE7B    ; LVT # Lo  [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH
+BE7D..BE97    ; LVT # Lo  [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH
+BE99..BEB3    ; LVT # Lo  [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH
+BEB5..BECF    ; LVT # Lo  [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH
+BED1..BEEB    ; LVT # Lo  [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH
+BEED..BF07    ; LVT # Lo  [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH
+BF09..BF23    ; LVT # Lo  [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH
+BF25..BF3F    ; LVT # Lo  [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH
+BF41..BF5B    ; LVT # Lo  [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH
+BF5D..BF77    ; LVT # Lo  [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH
+BF79..BF93    ; LVT # Lo  [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH
+BF95..BFAF    ; LVT # Lo  [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH
+BFB1..BFCB    ; LVT # Lo  [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH
+BFCD..BFE7    ; LVT # Lo  [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH
+BFE9..C003    ; LVT # Lo  [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH
+C005..C01F    ; LVT # Lo  [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH
+C021..C03B    ; LVT # Lo  [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH
+C03D..C057    ; LVT # Lo  [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH
+C059..C073    ; LVT # Lo  [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH
+C075..C08F    ; LVT # Lo  [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH
+C091..C0AB    ; LVT # Lo  [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH
+C0AD..C0C7    ; LVT # Lo  [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH
+C0C9..C0E3    ; LVT # Lo  [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH
+C0E5..C0FF    ; LVT # Lo  [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH
+C101..C11B    ; LVT # Lo  [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH
+C11D..C137    ; LVT # Lo  [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH
+C139..C153    ; LVT # Lo  [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH
+C155..C16F    ; LVT # Lo  [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH
+C171..C18B    ; LVT # Lo  [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH
+C18D..C1A7    ; LVT # Lo  [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH
+C1A9..C1C3    ; LVT # Lo  [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH
+C1C5..C1DF    ; LVT # Lo  [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH
+C1E1..C1FB    ; LVT # Lo  [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH
+C1FD..C217    ; LVT # Lo  [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH
+C219..C233    ; LVT # Lo  [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH
+C235..C24F    ; LVT # Lo  [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH
+C251..C26B    ; LVT # Lo  [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH
+C26D..C287    ; LVT # Lo  [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH
+C289..C2A3    ; LVT # Lo  [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH
+C2A5..C2BF    ; LVT # Lo  [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH
+C2C1..C2DB    ; LVT # Lo  [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH
+C2DD..C2F7    ; LVT # Lo  [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH
+C2F9..C313    ; LVT # Lo  [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH
+C315..C32F    ; LVT # Lo  [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH
+C331..C34B    ; LVT # Lo  [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH
+C34D..C367    ; LVT # Lo  [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH
+C369..C383    ; LVT # Lo  [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH
+C385..C39F    ; LVT # Lo  [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH
+C3A1..C3BB    ; LVT # Lo  [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH
+C3BD..C3D7    ; LVT # Lo  [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH
+C3D9..C3F3    ; LVT # Lo  [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH
+C3F5..C40F    ; LVT # Lo  [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH
+C411..C42B    ; LVT # Lo  [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH
+C42D..C447    ; LVT # Lo  [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH
+C449..C463    ; LVT # Lo  [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH
+C465..C47F    ; LVT # Lo  [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH
+C481..C49B    ; LVT # Lo  [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH
+C49D..C4B7    ; LVT # Lo  [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH
+C4B9..C4D3    ; LVT # Lo  [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH
+C4D5..C4EF    ; LVT # Lo  [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH
+C4F1..C50B    ; LVT # Lo  [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH
+C50D..C527    ; LVT # Lo  [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH
+C529..C543    ; LVT # Lo  [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH
+C545..C55F    ; LVT # Lo  [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH
+C561..C57B    ; LVT # Lo  [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH
+C57D..C597    ; LVT # Lo  [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH
+C599..C5B3    ; LVT # Lo  [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH
+C5B5..C5CF    ; LVT # Lo  [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH
+C5D1..C5EB    ; LVT # Lo  [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH
+C5ED..C607    ; LVT # Lo  [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH
+C609..C623    ; LVT # Lo  [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH
+C625..C63F    ; LVT # Lo  [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH
+C641..C65B    ; LVT # Lo  [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH
+C65D..C677    ; LVT # Lo  [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH
+C679..C693    ; LVT # Lo  [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH
+C695..C6AF    ; LVT # Lo  [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH
+C6B1..C6CB    ; LVT # Lo  [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH
+C6CD..C6E7    ; LVT # Lo  [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH
+C6E9..C703    ; LVT # Lo  [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH
+C705..C71F    ; LVT # Lo  [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH
+C721..C73B    ; LVT # Lo  [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH
+C73D..C757    ; LVT # Lo  [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH
+C759..C773    ; LVT # Lo  [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH
+C775..C78F    ; LVT # Lo  [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH
+C791..C7AB    ; LVT # Lo  [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH
+C7AD..C7C7    ; LVT # Lo  [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH
+C7C9..C7E3    ; LVT # Lo  [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH
+C7E5..C7FF    ; LVT # Lo  [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH
+C801..C81B    ; LVT # Lo  [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH
+C81D..C837    ; LVT # Lo  [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH
+C839..C853    ; LVT # Lo  [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH
+C855..C86F    ; LVT # Lo  [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH
+C871..C88B    ; LVT # Lo  [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH
+C88D..C8A7    ; LVT # Lo  [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH
+C8A9..C8C3    ; LVT # Lo  [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH
+C8C5..C8DF    ; LVT # Lo  [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH
+C8E1..C8FB    ; LVT # Lo  [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH
+C8FD..C917    ; LVT # Lo  [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH
+C919..C933    ; LVT # Lo  [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH
+C935..C94F    ; LVT # Lo  [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH
+C951..C96B    ; LVT # Lo  [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH
+C96D..C987    ; LVT # Lo  [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH
+C989..C9A3    ; LVT # Lo  [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH
+C9A5..C9BF    ; LVT # Lo  [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH
+C9C1..C9DB    ; LVT # Lo  [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH
+C9DD..C9F7    ; LVT # Lo  [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH
+C9F9..CA13    ; LVT # Lo  [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH
+CA15..CA2F    ; LVT # Lo  [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH
+CA31..CA4B    ; LVT # Lo  [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH
+CA4D..CA67    ; LVT # Lo  [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH
+CA69..CA83    ; LVT # Lo  [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH
+CA85..CA9F    ; LVT # Lo  [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH
+CAA1..CABB    ; LVT # Lo  [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH
+CABD..CAD7    ; LVT # Lo  [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH
+CAD9..CAF3    ; LVT # Lo  [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH
+CAF5..CB0F    ; LVT # Lo  [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH
+CB11..CB2B    ; LVT # Lo  [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH
+CB2D..CB47    ; LVT # Lo  [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH
+CB49..CB63    ; LVT # Lo  [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH
+CB65..CB7F    ; LVT # Lo  [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH
+CB81..CB9B    ; LVT # Lo  [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH
+CB9D..CBB7    ; LVT # Lo  [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH
+CBB9..CBD3    ; LVT # Lo  [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH
+CBD5..CBEF    ; LVT # Lo  [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH
+CBF1..CC0B    ; LVT # Lo  [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH
+CC0D..CC27    ; LVT # Lo  [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH
+CC29..CC43    ; LVT # Lo  [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH
+CC45..CC5F    ; LVT # Lo  [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH
+CC61..CC7B    ; LVT # Lo  [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH
+CC7D..CC97    ; LVT # Lo  [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH
+CC99..CCB3    ; LVT # Lo  [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH
+CCB5..CCCF    ; LVT # Lo  [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH
+CCD1..CCEB    ; LVT # Lo  [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH
+CCED..CD07    ; LVT # Lo  [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH
+CD09..CD23    ; LVT # Lo  [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH
+CD25..CD3F    ; LVT # Lo  [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH
+CD41..CD5B    ; LVT # Lo  [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH
+CD5D..CD77    ; LVT # Lo  [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH
+CD79..CD93    ; LVT # Lo  [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH
+CD95..CDAF    ; LVT # Lo  [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH
+CDB1..CDCB    ; LVT # Lo  [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH
+CDCD..CDE7    ; LVT # Lo  [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH
+CDE9..CE03    ; LVT # Lo  [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH
+CE05..CE1F    ; LVT # Lo  [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH
+CE21..CE3B    ; LVT # Lo  [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH
+CE3D..CE57    ; LVT # Lo  [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH
+CE59..CE73    ; LVT # Lo  [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH
+CE75..CE8F    ; LVT # Lo  [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH
+CE91..CEAB    ; LVT # Lo  [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH
+CEAD..CEC7    ; LVT # Lo  [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH
+CEC9..CEE3    ; LVT # Lo  [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH
+CEE5..CEFF    ; LVT # Lo  [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH
+CF01..CF1B    ; LVT # Lo  [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH
+CF1D..CF37    ; LVT # Lo  [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH
+CF39..CF53    ; LVT # Lo  [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH
+CF55..CF6F    ; LVT # Lo  [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH
+CF71..CF8B    ; LVT # Lo  [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH
+CF8D..CFA7    ; LVT # Lo  [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH
+CFA9..CFC3    ; LVT # Lo  [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH
+CFC5..CFDF    ; LVT # Lo  [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH
+CFE1..CFFB    ; LVT # Lo  [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH
+CFFD..D017    ; LVT # Lo  [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH
+D019..D033    ; LVT # Lo  [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH
+D035..D04F    ; LVT # Lo  [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH
+D051..D06B    ; LVT # Lo  [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH
+D06D..D087    ; LVT # Lo  [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH
+D089..D0A3    ; LVT # Lo  [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH
+D0A5..D0BF    ; LVT # Lo  [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH
+D0C1..D0DB    ; LVT # Lo  [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH
+D0DD..D0F7    ; LVT # Lo  [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH
+D0F9..D113    ; LVT # Lo  [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH
+D115..D12F    ; LVT # Lo  [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH
+D131..D14B    ; LVT # Lo  [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH
+D14D..D167    ; LVT # Lo  [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH
+D169..D183    ; LVT # Lo  [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH
+D185..D19F    ; LVT # Lo  [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH
+D1A1..D1BB    ; LVT # Lo  [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH
+D1BD..D1D7    ; LVT # Lo  [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH
+D1D9..D1F3    ; LVT # Lo  [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH
+D1F5..D20F    ; LVT # Lo  [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH
+D211..D22B    ; LVT # Lo  [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH
+D22D..D247    ; LVT # Lo  [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH
+D249..D263    ; LVT # Lo  [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH
+D265..D27F    ; LVT # Lo  [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH
+D281..D29B    ; LVT # Lo  [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH
+D29D..D2B7    ; LVT # Lo  [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH
+D2B9..D2D3    ; LVT # Lo  [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH
+D2D5..D2EF    ; LVT # Lo  [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH
+D2F1..D30B    ; LVT # Lo  [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH
+D30D..D327    ; LVT # Lo  [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH
+D329..D343    ; LVT # Lo  [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH
+D345..D35F    ; LVT # Lo  [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH
+D361..D37B    ; LVT # Lo  [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH
+D37D..D397    ; LVT # Lo  [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH
+D399..D3B3    ; LVT # Lo  [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH
+D3B5..D3CF    ; LVT # Lo  [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH
+D3D1..D3EB    ; LVT # Lo  [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH
+D3ED..D407    ; LVT # Lo  [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH
+D409..D423    ; LVT # Lo  [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH
+D425..D43F    ; LVT # Lo  [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH
+D441..D45B    ; LVT # Lo  [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH
+D45D..D477    ; LVT # Lo  [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH
+D479..D493    ; LVT # Lo  [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH
+D495..D4AF    ; LVT # Lo  [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH
+D4B1..D4CB    ; LVT # Lo  [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH
+D4CD..D4E7    ; LVT # Lo  [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH
+D4E9..D503    ; LVT # Lo  [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH
+D505..D51F    ; LVT # Lo  [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH
+D521..D53B    ; LVT # Lo  [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH
+D53D..D557    ; LVT # Lo  [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH
+D559..D573    ; LVT # Lo  [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH
+D575..D58F    ; LVT # Lo  [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH
+D591..D5AB    ; LVT # Lo  [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH
+D5AD..D5C7    ; LVT # Lo  [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH
+D5C9..D5E3    ; LVT # Lo  [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH
+D5E5..D5FF    ; LVT # Lo  [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH
+D601..D61B    ; LVT # Lo  [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH
+D61D..D637    ; LVT # Lo  [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH
+D639..D653    ; LVT # Lo  [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH
+D655..D66F    ; LVT # Lo  [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH
+D671..D68B    ; LVT # Lo  [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH
+D68D..D6A7    ; LVT # Lo  [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH
+D6A9..D6C3    ; LVT # Lo  [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH
+D6C5..D6DF    ; LVT # Lo  [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH
+D6E1..D6FB    ; LVT # Lo  [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH
+D6FD..D717    ; LVT # Lo  [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH
+D719..D733    ; LVT # Lo  [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH
+D735..D74F    ; LVT # Lo  [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH
+D751..D76B    ; LVT # Lo  [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH
+D76D..D787    ; LVT # Lo  [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH
+D789..D7A3    ; LVT # Lo  [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH
+
+# Total code points: 10773
+
+# EOF
diff --git a/localedata/unicode-gen/Makefile b/localedata/unicode-gen/Makefile
index da74b1bfbd..48cefc2b8d 100644
--- a/localedata/unicode-gen/Makefile
+++ b/localedata/unicode-gen/Makefile
@@ -1,4 +1,5 @@
-# Copyright (C) 2015-2024 Free Software Foundation, Inc.
+# Copyright (C) 2015-2024 Free Software Foundation, Inc
+# Copyright The GNU Toolchain Authors.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -40,7 +41,7 @@ UNICODE_VERSION = 15.1.0
 PYTHON3 = python3
 WGET = wget
 
-DOWNLOADS = UnicodeData.txt DerivedCoreProperties.txt EastAsianWidth.txt PropList.txt
+DOWNLOADS = UnicodeData.txt DerivedCoreProperties.txt EastAsianWidth.txt HangulSyllableType.txt
 LICENSE = unicode-license.txt
 GENERATED = i18n_ctype tr_TR UTF-8 translit_combining translit_compat translit_circle translit_cjk_compat translit_font translit_fraction
 REPORTS = i18n_ctype-report UTF-8-report
@@ -91,10 +92,12 @@ tr_TR: gen_unicode_ctype.py
 	  -d DerivedCoreProperties.txt -i ../locales/tr_TR -o $@ \
 	  --unicode_version $(UNICODE_VERSION) --turkish
 
-UTF-8: UnicodeData.txt EastAsianWidth.txt
+UTF-8: UnicodeData.txt DerivedCoreProperties.txt EastAsianWidth.txt HangulSyllableType.txt
 UTF-8: utf8_gen.py
 	$(PYTHON3) utf8_gen.py -u UnicodeData.txt \
-	-e EastAsianWidth.txt -p PropList.txt \
+	-d DerivedCoreProperties.txt \
+	-e EastAsianWidth.txt \
+	-k HangulSyllableType.txt \
 	--unicode_version $(UNICODE_VERSION)
 
 UTF-8-report: UTF-8 ../charmaps/UTF-8
diff --git a/localedata/unicode-gen/PropList.txt b/localedata/unicode-gen/PropList.txt
deleted file mode 100644
index 777e8a2881..0000000000
--- a/localedata/unicode-gen/PropList.txt
+++ /dev/null
@@ -1,1827 +0,0 @@
-# PropList-15.1.0.txt
-# Date: 2023-08-01, 21:56:53 GMT
-# © 2023 Unicode®, Inc.
-# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see https://www.unicode.org/terms_of_use.html
-#
-# Unicode Character Database
-#   For documentation, see https://www.unicode.org/reports/tr44/
-
-# ================================================
-
-0009..000D    ; White_Space # Cc   [5] <control-0009>..<control-000D>
-0020          ; White_Space # Zs       SPACE
-0085          ; White_Space # Cc       <control-0085>
-00A0          ; White_Space # Zs       NO-BREAK SPACE
-1680          ; White_Space # Zs       OGHAM SPACE MARK
-2000..200A    ; White_Space # Zs  [11] EN QUAD..HAIR SPACE
-2028          ; White_Space # Zl       LINE SEPARATOR
-2029          ; White_Space # Zp       PARAGRAPH SEPARATOR
-202F          ; White_Space # Zs       NARROW NO-BREAK SPACE
-205F          ; White_Space # Zs       MEDIUM MATHEMATICAL SPACE
-3000          ; White_Space # Zs       IDEOGRAPHIC SPACE
-
-# Total code points: 25
-
-# ================================================
-
-061C          ; Bidi_Control # Cf       ARABIC LETTER MARK
-200E..200F    ; Bidi_Control # Cf   [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
-202A..202E    ; Bidi_Control # Cf   [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
-2066..2069    ; Bidi_Control # Cf   [4] LEFT-TO-RIGHT ISOLATE..POP DIRECTIONAL ISOLATE
-
-# Total code points: 12
-
-# ================================================
-
-200C..200D    ; Join_Control # Cf   [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
-
-# Total code points: 2
-
-# ================================================
-
-002D          ; Dash # Pd       HYPHEN-MINUS
-058A          ; Dash # Pd       ARMENIAN HYPHEN
-05BE          ; Dash # Pd       HEBREW PUNCTUATION MAQAF
-1400          ; Dash # Pd       CANADIAN SYLLABICS HYPHEN
-1806          ; Dash # Pd       MONGOLIAN TODO SOFT HYPHEN
-2010..2015    ; Dash # Pd   [6] HYPHEN..HORIZONTAL BAR
-2053          ; Dash # Po       SWUNG DASH
-207B          ; Dash # Sm       SUPERSCRIPT MINUS
-208B          ; Dash # Sm       SUBSCRIPT MINUS
-2212          ; Dash # Sm       MINUS SIGN
-2E17          ; Dash # Pd       DOUBLE OBLIQUE HYPHEN
-2E1A          ; Dash # Pd       HYPHEN WITH DIAERESIS
-2E3A..2E3B    ; Dash # Pd   [2] TWO-EM DASH..THREE-EM DASH
-2E40          ; Dash # Pd       DOUBLE HYPHEN
-2E5D          ; Dash # Pd       OBLIQUE HYPHEN
-301C          ; Dash # Pd       WAVE DASH
-3030          ; Dash # Pd       WAVY DASH
-30A0          ; Dash # Pd       KATAKANA-HIRAGANA DOUBLE HYPHEN
-FE31..FE32    ; Dash # Pd   [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
-FE58          ; Dash # Pd       SMALL EM DASH
-FE63          ; Dash # Pd       SMALL HYPHEN-MINUS
-FF0D          ; Dash # Pd       FULLWIDTH HYPHEN-MINUS
-10EAD         ; Dash # Pd       YEZIDI HYPHENATION MARK
-
-# Total code points: 30
-
-# ================================================
-
-002D          ; Hyphen # Pd       HYPHEN-MINUS
-00AD          ; Hyphen # Cf       SOFT HYPHEN
-058A          ; Hyphen # Pd       ARMENIAN HYPHEN
-1806          ; Hyphen # Pd       MONGOLIAN TODO SOFT HYPHEN
-2010..2011    ; Hyphen # Pd   [2] HYPHEN..NON-BREAKING HYPHEN
-2E17          ; Hyphen # Pd       DOUBLE OBLIQUE HYPHEN
-30FB          ; Hyphen # Po       KATAKANA MIDDLE DOT
-FE63          ; Hyphen # Pd       SMALL HYPHEN-MINUS
-FF0D          ; Hyphen # Pd       FULLWIDTH HYPHEN-MINUS
-FF65          ; Hyphen # Po       HALFWIDTH KATAKANA MIDDLE DOT
-
-# Total code points: 11
-
-# ================================================
-
-0022          ; Quotation_Mark # Po       QUOTATION MARK
-0027          ; Quotation_Mark # Po       APOSTROPHE
-00AB          ; Quotation_Mark # Pi       LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-00BB          ; Quotation_Mark # Pf       RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-2018          ; Quotation_Mark # Pi       LEFT SINGLE QUOTATION MARK
-2019          ; Quotation_Mark # Pf       RIGHT SINGLE QUOTATION MARK
-201A          ; Quotation_Mark # Ps       SINGLE LOW-9 QUOTATION MARK
-201B..201C    ; Quotation_Mark # Pi   [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
-201D          ; Quotation_Mark # Pf       RIGHT DOUBLE QUOTATION MARK
-201E          ; Quotation_Mark # Ps       DOUBLE LOW-9 QUOTATION MARK
-201F          ; Quotation_Mark # Pi       DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-2039          ; Quotation_Mark # Pi       SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-203A          ; Quotation_Mark # Pf       SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-2E42          ; Quotation_Mark # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
-300C          ; Quotation_Mark # Ps       LEFT CORNER BRACKET
-300D          ; Quotation_Mark # Pe       RIGHT CORNER BRACKET
-300E          ; Quotation_Mark # Ps       LEFT WHITE CORNER BRACKET
-300F          ; Quotation_Mark # Pe       RIGHT WHITE CORNER BRACKET
-301D          ; Quotation_Mark # Ps       REVERSED DOUBLE PRIME QUOTATION MARK
-301E..301F    ; Quotation_Mark # Pe   [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
-FE41          ; Quotation_Mark # Ps       PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
-FE42          ; Quotation_Mark # Pe       PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
-FE43          ; Quotation_Mark # Ps       PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
-FE44          ; Quotation_Mark # Pe       PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
-FF02          ; Quotation_Mark # Po       FULLWIDTH QUOTATION MARK
-FF07          ; Quotation_Mark # Po       FULLWIDTH APOSTROPHE
-FF62          ; Quotation_Mark # Ps       HALFWIDTH LEFT CORNER BRACKET
-FF63          ; Quotation_Mark # Pe       HALFWIDTH RIGHT CORNER BRACKET
-
-# Total code points: 30
-
-# ================================================
-
-0021          ; Terminal_Punctuation # Po       EXCLAMATION MARK
-002C          ; Terminal_Punctuation # Po       COMMA
-002E          ; Terminal_Punctuation # Po       FULL STOP
-003A..003B    ; Terminal_Punctuation # Po   [2] COLON..SEMICOLON
-003F          ; Terminal_Punctuation # Po       QUESTION MARK
-037E          ; Terminal_Punctuation # Po       GREEK QUESTION MARK
-0387          ; Terminal_Punctuation # Po       GREEK ANO TELEIA
-0589          ; Terminal_Punctuation # Po       ARMENIAN FULL STOP
-05C3          ; Terminal_Punctuation # Po       HEBREW PUNCTUATION SOF PASUQ
-060C          ; Terminal_Punctuation # Po       ARABIC COMMA
-061B          ; Terminal_Punctuation # Po       ARABIC SEMICOLON
-061D..061F    ; Terminal_Punctuation # Po   [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK
-06D4          ; Terminal_Punctuation # Po       ARABIC FULL STOP
-0700..070A    ; Terminal_Punctuation # Po  [11] SYRIAC END OF PARAGRAPH..SYRIAC CONTRACTION
-070C          ; Terminal_Punctuation # Po       SYRIAC HARKLEAN METOBELUS
-07F8..07F9    ; Terminal_Punctuation # Po   [2] NKO COMMA..NKO EXCLAMATION MARK
-0830..083E    ; Terminal_Punctuation # Po  [15] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU
-085E          ; Terminal_Punctuation # Po       MANDAIC PUNCTUATION
-0964..0965    ; Terminal_Punctuation # Po   [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
-0E5A..0E5B    ; Terminal_Punctuation # Po   [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
-0F08          ; Terminal_Punctuation # Po       TIBETAN MARK SBRUL SHAD
-0F0D..0F12    ; Terminal_Punctuation # Po   [6] TIBETAN MARK SHAD..TIBETAN MARK RGYA GRAM SHAD
-104A..104B    ; Terminal_Punctuation # Po   [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION
-1361..1368    ; Terminal_Punctuation # Po   [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR
-166E          ; Terminal_Punctuation # Po       CANADIAN SYLLABICS FULL STOP
-16EB..16ED    ; Terminal_Punctuation # Po   [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
-1735..1736    ; Terminal_Punctuation # Po   [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
-17D4..17D6    ; Terminal_Punctuation # Po   [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
-17DA          ; Terminal_Punctuation # Po       KHMER SIGN KOOMUUT
-1802..1805    ; Terminal_Punctuation # Po   [4] MONGOLIAN COMMA..MONGOLIAN FOUR DOTS
-1808..1809    ; Terminal_Punctuation # Po   [2] MONGOLIAN MANCHU COMMA..MONGOLIAN MANCHU FULL STOP
-1944..1945    ; Terminal_Punctuation # Po   [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
-1AA8..1AAB    ; Terminal_Punctuation # Po   [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU
-1B5A..1B5B    ; Terminal_Punctuation # Po   [2] BALINESE PANTI..BALINESE PAMADA
-1B5D..1B5F    ; Terminal_Punctuation # Po   [3] BALINESE CARIK PAMUNGKAH..BALINESE CARIK PAREREN
-1B7D..1B7E    ; Terminal_Punctuation # Po   [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
-1C3B..1C3F    ; Terminal_Punctuation # Po   [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK
-1C7E..1C7F    ; Terminal_Punctuation # Po   [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
-203C..203D    ; Terminal_Punctuation # Po   [2] DOUBLE EXCLAMATION MARK..INTERROBANG
-2047..2049    ; Terminal_Punctuation # Po   [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
-2E2E          ; Terminal_Punctuation # Po       REVERSED QUESTION MARK
-2E3C          ; Terminal_Punctuation # Po       STENOGRAPHIC FULL STOP
-2E41          ; Terminal_Punctuation # Po       REVERSED COMMA
-2E4C          ; Terminal_Punctuation # Po       MEDIEVAL COMMA
-2E4E..2E4F    ; Terminal_Punctuation # Po   [2] PUNCTUS ELEVATUS MARK..CORNISH VERSE DIVIDER
-2E53..2E54    ; Terminal_Punctuation # Po   [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK
-3001..3002    ; Terminal_Punctuation # Po   [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP
-A4FE..A4FF    ; Terminal_Punctuation # Po   [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP
-A60D..A60F    ; Terminal_Punctuation # Po   [3] VAI COMMA..VAI QUESTION MARK
-A6F3..A6F7    ; Terminal_Punctuation # Po   [5] BAMUM FULL STOP..BAMUM QUESTION MARK
-A876..A877    ; Terminal_Punctuation # Po   [2] PHAGS-PA MARK SHAD..PHAGS-PA MARK DOUBLE SHAD
-A8CE..A8CF    ; Terminal_Punctuation # Po   [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
-A92F          ; Terminal_Punctuation # Po       KAYAH LI SIGN SHYA
-A9C7..A9C9    ; Terminal_Punctuation # Po   [3] JAVANESE PADA PANGKAT..JAVANESE PADA LUNGSI
-AA5D..AA5F    ; Terminal_Punctuation # Po   [3] CHAM PUNCTUATION DANDA..CHAM PUNCTUATION TRIPLE DANDA
-AADF          ; Terminal_Punctuation # Po       TAI VIET SYMBOL KOI KOI
-AAF0..AAF1    ; Terminal_Punctuation # Po   [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM
-ABEB          ; Terminal_Punctuation # Po       MEETEI MAYEK CHEIKHEI
-FE50..FE52    ; Terminal_Punctuation # Po   [3] SMALL COMMA..SMALL FULL STOP
-FE54..FE57    ; Terminal_Punctuation # Po   [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
-FF01          ; Terminal_Punctuation # Po       FULLWIDTH EXCLAMATION MARK
-FF0C          ; Terminal_Punctuation # Po       FULLWIDTH COMMA
-FF0E          ; Terminal_Punctuation # Po       FULLWIDTH FULL STOP
-FF1A..FF1B    ; Terminal_Punctuation # Po   [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
-FF1F          ; Terminal_Punctuation # Po       FULLWIDTH QUESTION MARK
-FF61          ; Terminal_Punctuation # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
-FF64          ; Terminal_Punctuation # Po       HALFWIDTH IDEOGRAPHIC COMMA
-1039F         ; Terminal_Punctuation # Po       UGARITIC WORD DIVIDER
-103D0         ; Terminal_Punctuation # Po       OLD PERSIAN WORD DIVIDER
-10857         ; Terminal_Punctuation # Po       IMPERIAL ARAMAIC SECTION SIGN
-1091F         ; Terminal_Punctuation # Po       PHOENICIAN WORD SEPARATOR
-10A56..10A57  ; Terminal_Punctuation # Po   [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA
-10AF0..10AF5  ; Terminal_Punctuation # Po   [6] MANICHAEAN PUNCTUATION STAR..MANICHAEAN PUNCTUATION TWO DOTS
-10B3A..10B3F  ; Terminal_Punctuation # Po   [6] TINY TWO DOTS OVER ONE DOT PUNCTUATION..LARGE ONE RING OVER TWO RINGS PUNCTUATION
-10B99..10B9C  ; Terminal_Punctuation # Po   [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT
-10F55..10F59  ; Terminal_Punctuation # Po   [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
-10F86..10F89  ; Terminal_Punctuation # Po   [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS
-11047..1104D  ; Terminal_Punctuation # Po   [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS
-110BE..110C1  ; Terminal_Punctuation # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
-11141..11143  ; Terminal_Punctuation # Po   [3] CHAKMA DANDA..CHAKMA QUESTION MARK
-111C5..111C6  ; Terminal_Punctuation # Po   [2] SHARADA DANDA..SHARADA DOUBLE DANDA
-111CD         ; Terminal_Punctuation # Po       SHARADA SUTRA MARK
-111DE..111DF  ; Terminal_Punctuation # Po   [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2
-11238..1123C  ; Terminal_Punctuation # Po   [5] KHOJKI DANDA..KHOJKI DOUBLE SECTION MARK
-112A9         ; Terminal_Punctuation # Po       MULTANI SECTION MARK
-1144B..1144D  ; Terminal_Punctuation # Po   [3] NEWA DANDA..NEWA COMMA
-1145A..1145B  ; Terminal_Punctuation # Po   [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK
-115C2..115C5  ; Terminal_Punctuation # Po   [4] SIDDHAM DANDA..SIDDHAM SEPARATOR BAR
-115C9..115D7  ; Terminal_Punctuation # Po  [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
-11641..11642  ; Terminal_Punctuation # Po   [2] MODI DANDA..MODI DOUBLE DANDA
-1173C..1173E  ; Terminal_Punctuation # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
-11944         ; Terminal_Punctuation # Po       DIVES AKURU DOUBLE DANDA
-11946         ; Terminal_Punctuation # Po       DIVES AKURU END OF TEXT MARK
-11A42..11A43  ; Terminal_Punctuation # Po   [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD
-11A9B..11A9C  ; Terminal_Punctuation # Po   [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD
-11AA1..11AA2  ; Terminal_Punctuation # Po   [2] SOYOMBO TERMINAL MARK-1..SOYOMBO TERMINAL MARK-2
-11C41..11C43  ; Terminal_Punctuation # Po   [3] BHAIKSUKI DANDA..BHAIKSUKI WORD SEPARATOR
-11C71         ; Terminal_Punctuation # Po       MARCHEN MARK SHAD
-11EF7..11EF8  ; Terminal_Punctuation # Po   [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
-11F43..11F44  ; Terminal_Punctuation # Po   [2] KAWI DANDA..KAWI DOUBLE DANDA
-12470..12474  ; Terminal_Punctuation # Po   [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
-16A6E..16A6F  ; Terminal_Punctuation # Po   [2] MRO DANDA..MRO DOUBLE DANDA
-16AF5         ; Terminal_Punctuation # Po       BASSA VAH FULL STOP
-16B37..16B39  ; Terminal_Punctuation # Po   [3] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN CIM CHEEM
-16B44         ; Terminal_Punctuation # Po       PAHAWH HMONG SIGN XAUS
-16E97..16E98  ; Terminal_Punctuation # Po   [2] MEDEFAIDRIN COMMA..MEDEFAIDRIN FULL STOP
-1BC9F         ; Terminal_Punctuation # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
-1DA87..1DA8A  ; Terminal_Punctuation # Po   [4] SIGNWRITING COMMA..SIGNWRITING COLON
-
-# Total code points: 278
-
-# ================================================
-
-005E          ; Other_Math # Sk       CIRCUMFLEX ACCENT
-03D0..03D2    ; Other_Math # L&   [3] GREEK BETA SYMBOL..GREEK UPSILON WITH HOOK SYMBOL
-03D5          ; Other_Math # L&       GREEK PHI SYMBOL
-03F0..03F1    ; Other_Math # L&   [2] GREEK KAPPA SYMBOL..GREEK RHO SYMBOL
-03F4..03F5    ; Other_Math # L&   [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
-2016          ; Other_Math # Po       DOUBLE VERTICAL LINE
-2032..2034    ; Other_Math # Po   [3] PRIME..TRIPLE PRIME
-2040          ; Other_Math # Pc       CHARACTER TIE
-2061..2064    ; Other_Math # Cf   [4] FUNCTION APPLICATION..INVISIBLE PLUS
-207D          ; Other_Math # Ps       SUPERSCRIPT LEFT PARENTHESIS
-207E          ; Other_Math # Pe       SUPERSCRIPT RIGHT PARENTHESIS
-208D          ; Other_Math # Ps       SUBSCRIPT LEFT PARENTHESIS
-208E          ; Other_Math # Pe       SUBSCRIPT RIGHT PARENTHESIS
-20D0..20DC    ; Other_Math # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
-20E1          ; Other_Math # Mn       COMBINING LEFT RIGHT ARROW ABOVE
-20E5..20E6    ; Other_Math # Mn   [2] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING DOUBLE VERTICAL STROKE OVERLAY
-20EB..20EF    ; Other_Math # Mn   [5] COMBINING LONG DOUBLE SOLIDUS OVERLAY..COMBINING RIGHT ARROW BELOW
-2102          ; Other_Math # L&       DOUBLE-STRUCK CAPITAL C
-2107          ; Other_Math # L&       EULER CONSTANT
-210A..2113    ; Other_Math # L&  [10] SCRIPT SMALL G..SCRIPT SMALL L
-2115          ; Other_Math # L&       DOUBLE-STRUCK CAPITAL N
-2119..211D    ; Other_Math # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
-2124          ; Other_Math # L&       DOUBLE-STRUCK CAPITAL Z
-2128          ; Other_Math # L&       BLACK-LETTER CAPITAL Z
-2129          ; Other_Math # So       TURNED GREEK SMALL LETTER IOTA
-212C..212D    ; Other_Math # L&   [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C
-212F..2131    ; Other_Math # L&   [3] SCRIPT SMALL E..SCRIPT CAPITAL F
-2133..2134    ; Other_Math # L&   [2] SCRIPT CAPITAL M..SCRIPT SMALL O
-2135..2138    ; Other_Math # Lo   [4] ALEF SYMBOL..DALET SYMBOL
-213C..213F    ; Other_Math # L&   [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
-2145..2149    ; Other_Math # L&   [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
-2195..2199    ; Other_Math # So   [5] UP DOWN ARROW..SOUTH WEST ARROW
-219C..219F    ; Other_Math # So   [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
-21A1..21A2    ; Other_Math # So   [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
-21A4..21A5    ; Other_Math # So   [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
-21A7          ; Other_Math # So       DOWNWARDS ARROW FROM BAR
-21A9..21AD    ; Other_Math # So   [5] LEFTWARDS ARROW WITH HOOK..LEFT RIGHT WAVE ARROW
-21B0..21B1    ; Other_Math # So   [2] UPWARDS ARROW WITH TIP LEFTWARDS..UPWARDS ARROW WITH TIP RIGHTWARDS
-21B6..21B7    ; Other_Math # So   [2] ANTICLOCKWISE TOP SEMICIRCLE ARROW..CLOCKWISE TOP SEMICIRCLE ARROW
-21BC..21CD    ; Other_Math # So  [18] LEFTWARDS HARPOON WITH BARB UPWARDS..LEFTWARDS DOUBLE ARROW WITH STROKE
-21D0..21D1    ; Other_Math # So   [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
-21D3          ; Other_Math # So       DOWNWARDS DOUBLE ARROW
-21D5..21DB    ; Other_Math # So   [7] UP DOWN DOUBLE ARROW..RIGHTWARDS TRIPLE ARROW
-21DD          ; Other_Math # So       RIGHTWARDS SQUIGGLE ARROW
-21E4..21E5    ; Other_Math # So   [2] LEFTWARDS ARROW TO BAR..RIGHTWARDS ARROW TO BAR
-2308          ; Other_Math # Ps       LEFT CEILING
-2309          ; Other_Math # Pe       RIGHT CEILING
-230A          ; Other_Math # Ps       LEFT FLOOR
-230B          ; Other_Math # Pe       RIGHT FLOOR
-23B4..23B5    ; Other_Math # So   [2] TOP SQUARE BRACKET..BOTTOM SQUARE BRACKET
-23B7          ; Other_Math # So       RADICAL SYMBOL BOTTOM
-23D0          ; Other_Math # So       VERTICAL LINE EXTENSION
-23E2          ; Other_Math # So       WHITE TRAPEZIUM
-25A0..25A1    ; Other_Math # So   [2] BLACK SQUARE..WHITE SQUARE
-25AE..25B6    ; Other_Math # So   [9] BLACK VERTICAL RECTANGLE..BLACK RIGHT-POINTING TRIANGLE
-25BC..25C0    ; Other_Math # So   [5] BLACK DOWN-POINTING TRIANGLE..BLACK LEFT-POINTING TRIANGLE
-25C6..25C7    ; Other_Math # So   [2] BLACK DIAMOND..WHITE DIAMOND
-25CA..25CB    ; Other_Math # So   [2] LOZENGE..WHITE CIRCLE
-25CF..25D3    ; Other_Math # So   [5] BLACK CIRCLE..CIRCLE WITH UPPER HALF BLACK
-25E2          ; Other_Math # So       BLACK LOWER RIGHT TRIANGLE
-25E4          ; Other_Math # So       BLACK UPPER LEFT TRIANGLE
-25E7..25EC    ; Other_Math # So   [6] SQUARE WITH LEFT HALF BLACK..WHITE UP-POINTING TRIANGLE WITH DOT
-2605..2606    ; Other_Math # So   [2] BLACK STAR..WHITE STAR
-2640          ; Other_Math # So       FEMALE SIGN
-2642          ; Other_Math # So       MALE SIGN
-2660..2663    ; Other_Math # So   [4] BLACK SPADE SUIT..BLACK CLUB SUIT
-266D..266E    ; Other_Math # So   [2] MUSIC FLAT SIGN..MUSIC NATURAL SIGN
-27C5          ; Other_Math # Ps       LEFT S-SHAPED BAG DELIMITER
-27C6          ; Other_Math # Pe       RIGHT S-SHAPED BAG DELIMITER
-27E6          ; Other_Math # Ps       MATHEMATICAL LEFT WHITE SQUARE BRACKET
-27E7          ; Other_Math # Pe       MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-27E8          ; Other_Math # Ps       MATHEMATICAL LEFT ANGLE BRACKET
-27E9          ; Other_Math # Pe       MATHEMATICAL RIGHT ANGLE BRACKET
-27EA          ; Other_Math # Ps       MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-27EB          ; Other_Math # Pe       MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-27EC          ; Other_Math # Ps       MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
-27ED          ; Other_Math # Pe       MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
-27EE          ; Other_Math # Ps       MATHEMATICAL LEFT FLATTENED PARENTHESIS
-27EF          ; Other_Math # Pe       MATHEMATICAL RIGHT FLATTENED PARENTHESIS
-2983          ; Other_Math # Ps       LEFT WHITE CURLY BRACKET
-2984          ; Other_Math # Pe       RIGHT WHITE CURLY BRACKET
-2985          ; Other_Math # Ps       LEFT WHITE PARENTHESIS
-2986          ; Other_Math # Pe       RIGHT WHITE PARENTHESIS
-2987          ; Other_Math # Ps       Z NOTATION LEFT IMAGE BRACKET
-2988          ; Other_Math # Pe       Z NOTATION RIGHT IMAGE BRACKET
-2989          ; Other_Math # Ps       Z NOTATION LEFT BINDING BRACKET
-298A          ; Other_Math # Pe       Z NOTATION RIGHT BINDING BRACKET
-298B          ; Other_Math # Ps       LEFT SQUARE BRACKET WITH UNDERBAR
-298C          ; Other_Math # Pe       RIGHT SQUARE BRACKET WITH UNDERBAR
-298D          ; Other_Math # Ps       LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
-298E          ; Other_Math # Pe       RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-298F          ; Other_Math # Ps       LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2990          ; Other_Math # Pe       RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
-2991          ; Other_Math # Ps       LEFT ANGLE BRACKET WITH DOT
-2992          ; Other_Math # Pe       RIGHT ANGLE BRACKET WITH DOT
-2993          ; Other_Math # Ps       LEFT ARC LESS-THAN BRACKET
-2994          ; Other_Math # Pe       RIGHT ARC GREATER-THAN BRACKET
-2995          ; Other_Math # Ps       DOUBLE LEFT ARC GREATER-THAN BRACKET
-2996          ; Other_Math # Pe       DOUBLE RIGHT ARC LESS-THAN BRACKET
-2997          ; Other_Math # Ps       LEFT BLACK TORTOISE SHELL BRACKET
-2998          ; Other_Math # Pe       RIGHT BLACK TORTOISE SHELL BRACKET
-29D8          ; Other_Math # Ps       LEFT WIGGLY FENCE
-29D9          ; Other_Math # Pe       RIGHT WIGGLY FENCE
-29DA          ; Other_Math # Ps       LEFT DOUBLE WIGGLY FENCE
-29DB          ; Other_Math # Pe       RIGHT DOUBLE WIGGLY FENCE
-29FC          ; Other_Math # Ps       LEFT-POINTING CURVED ANGLE BRACKET
-29FD          ; Other_Math # Pe       RIGHT-POINTING CURVED ANGLE BRACKET
-FE61          ; Other_Math # Po       SMALL ASTERISK
-FE63          ; Other_Math # Pd       SMALL HYPHEN-MINUS
-FE68          ; Other_Math # Po       SMALL REVERSE SOLIDUS
-FF3C          ; Other_Math # Po       FULLWIDTH REVERSE SOLIDUS
-FF3E          ; Other_Math # Sk       FULLWIDTH CIRCUMFLEX ACCENT
-1D400..1D454  ; Other_Math # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
-1D456..1D49C  ; Other_Math # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
-1D49E..1D49F  ; Other_Math # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
-1D4A2         ; Other_Math # L&       MATHEMATICAL SCRIPT CAPITAL G
-1D4A5..1D4A6  ; Other_Math # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
-1D4A9..1D4AC  ; Other_Math # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
-1D4AE..1D4B9  ; Other_Math # L&  [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
-1D4BB         ; Other_Math # L&       MATHEMATICAL SCRIPT SMALL F
-1D4BD..1D4C3  ; Other_Math # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
-1D4C5..1D505  ; Other_Math # L&  [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
-1D507..1D50A  ; Other_Math # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
-1D50D..1D514  ; Other_Math # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
-1D516..1D51C  ; Other_Math # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
-1D51E..1D539  ; Other_Math # L&  [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
-1D53B..1D53E  ; Other_Math # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
-1D540..1D544  ; Other_Math # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
-1D546         ; Other_Math # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
-1D54A..1D550  ; Other_Math # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
-1D552..1D6A5  ; Other_Math # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
-1D6A8..1D6C0  ; Other_Math # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
-1D6C2..1D6DA  ; Other_Math # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
-1D6DC..1D6FA  ; Other_Math # L&  [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
-1D6FC..1D714  ; Other_Math # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
-1D716..1D734  ; Other_Math # L&  [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
-1D736..1D74E  ; Other_Math # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
-1D750..1D76E  ; Other_Math # L&  [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
-1D770..1D788  ; Other_Math # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
-1D78A..1D7A8  ; Other_Math # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
-1D7AA..1D7C2  ; Other_Math # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
-1D7C4..1D7CB  ; Other_Math # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
-1D7CE..1D7FF  ; Other_Math # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
-1EE00..1EE03  ; Other_Math # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
-1EE05..1EE1F  ; Other_Math # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
-1EE21..1EE22  ; Other_Math # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
-1EE24         ; Other_Math # Lo       ARABIC MATHEMATICAL INITIAL HEH
-1EE27         ; Other_Math # Lo       ARABIC MATHEMATICAL INITIAL HAH
-1EE29..1EE32  ; Other_Math # Lo  [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
-1EE34..1EE37  ; Other_Math # Lo   [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
-1EE39         ; Other_Math # Lo       ARABIC MATHEMATICAL INITIAL DAD
-1EE3B         ; Other_Math # Lo       ARABIC MATHEMATICAL INITIAL GHAIN
-1EE42         ; Other_Math # Lo       ARABIC MATHEMATICAL TAILED JEEM
-1EE47         ; Other_Math # Lo       ARABIC MATHEMATICAL TAILED HAH
-1EE49         ; Other_Math # Lo       ARABIC MATHEMATICAL TAILED YEH
-1EE4B         ; Other_Math # Lo       ARABIC MATHEMATICAL TAILED LAM
-1EE4D..1EE4F  ; Other_Math # Lo   [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
-1EE51..1EE52  ; Other_Math # Lo   [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
-1EE54         ; Other_Math # Lo       ARABIC MATHEMATICAL TAILED SHEEN
-1EE57         ; Other_Math # Lo       ARABIC MATHEMATICAL TAILED KHAH
-1EE59         ; Other_Math # Lo       ARABIC MATHEMATICAL TAILED DAD
-1EE5B         ; Other_Math # Lo       ARABIC MATHEMATICAL TAILED GHAIN
-1EE5D         ; Other_Math # Lo       ARABIC MATHEMATICAL TAILED DOTLESS NOON
-1EE5F         ; Other_Math # Lo       ARABIC MATHEMATICAL TAILED DOTLESS QAF
-1EE61..1EE62  ; Other_Math # Lo   [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
-1EE64         ; Other_Math # Lo       ARABIC MATHEMATICAL STRETCHED HEH
-1EE67..1EE6A  ; Other_Math # Lo   [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
-1EE6C..1EE72  ; Other_Math # Lo   [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
-1EE74..1EE77  ; Other_Math # Lo   [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
-1EE79..1EE7C  ; Other_Math # Lo   [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
-1EE7E         ; Other_Math # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
-1EE80..1EE89  ; Other_Math # Lo  [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
-1EE8B..1EE9B  ; Other_Math # Lo  [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
-1EEA1..1EEA3  ; Other_Math # Lo   [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
-1EEA5..1EEA9  ; Other_Math # Lo   [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
-1EEAB..1EEBB  ; Other_Math # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
-
-# Total code points: 1362
-
-# ================================================
-
-0030..0039    ; Hex_Digit # Nd  [10] DIGIT ZERO..DIGIT NINE
-0041..0046    ; Hex_Digit # L&   [6] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER F
-0061..0066    ; Hex_Digit # L&   [6] LATIN SMALL LETTER A..LATIN SMALL LETTER F
-FF10..FF19    ; Hex_Digit # Nd  [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
-FF21..FF26    ; Hex_Digit # L&   [6] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER F
-FF41..FF46    ; Hex_Digit # L&   [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER F
-
-# Total code points: 44
-
-# ================================================
-
-0030..0039    ; ASCII_Hex_Digit # Nd  [10] DIGIT ZERO..DIGIT NINE
-0041..0046    ; ASCII_Hex_Digit # L&   [6] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER F
-0061..0066    ; ASCII_Hex_Digit # L&   [6] LATIN SMALL LETTER A..LATIN SMALL LETTER F
-
-# Total code points: 22
-
-# ================================================
-
-0345          ; Other_Alphabetic # Mn       COMBINING GREEK YPOGEGRAMMENI
-05B0..05BD    ; Other_Alphabetic # Mn  [14] HEBREW POINT SHEVA..HEBREW POINT METEG
-05BF          ; Other_Alphabetic # Mn       HEBREW POINT RAFE
-05C1..05C2    ; Other_Alphabetic # Mn   [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
-05C4..05C5    ; Other_Alphabetic # Mn   [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
-05C7          ; Other_Alphabetic # Mn       HEBREW POINT QAMATS QATAN
-0610..061A    ; Other_Alphabetic # Mn  [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
-064B..0657    ; Other_Alphabetic # Mn  [13] ARABIC FATHATAN..ARABIC INVERTED DAMMA
-0659..065F    ; Other_Alphabetic # Mn   [7] ARABIC ZWARAKAY..ARABIC WAVY HAMZA BELOW
-0670          ; Other_Alphabetic # Mn       ARABIC LETTER SUPERSCRIPT ALEF
-06D6..06DC    ; Other_Alphabetic # Mn   [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
-06E1..06E4    ; Other_Alphabetic # Mn   [4] ARABIC SMALL HIGH DOTLESS HEAD OF KHAH..ARABIC SMALL HIGH MADDA
-06E7..06E8    ; Other_Alphabetic # Mn   [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
-06ED          ; Other_Alphabetic # Mn       ARABIC SMALL LOW MEEM
-0711          ; Other_Alphabetic # Mn       SYRIAC LETTER SUPERSCRIPT ALAPH
-0730..073F    ; Other_Alphabetic # Mn  [16] SYRIAC PTHAHA ABOVE..SYRIAC RWAHA
-07A6..07B0    ; Other_Alphabetic # Mn  [11] THAANA ABAFILI..THAANA SUKUN
-0816..0817    ; Other_Alphabetic # Mn   [2] SAMARITAN MARK IN..SAMARITAN MARK IN-ALAF
-081B..0823    ; Other_Alphabetic # Mn   [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
-0825..0827    ; Other_Alphabetic # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
-0829..082C    ; Other_Alphabetic # Mn   [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN
-08D4..08DF    ; Other_Alphabetic # Mn  [12] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH WORD WAQFA
-08E3..08E9    ; Other_Alphabetic # Mn   [7] ARABIC TURNED DAMMA BELOW..ARABIC CURLY KASRATAN
-08F0..0902    ; Other_Alphabetic # Mn  [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA
-0903          ; Other_Alphabetic # Mc       DEVANAGARI SIGN VISARGA
-093A          ; Other_Alphabetic # Mn       DEVANAGARI VOWEL SIGN OE
-093B          ; Other_Alphabetic # Mc       DEVANAGARI VOWEL SIGN OOE
-093E..0940    ; Other_Alphabetic # Mc   [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
-0941..0948    ; Other_Alphabetic # Mn   [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
-0949..094C    ; Other_Alphabetic # Mc   [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
-094E..094F    ; Other_Alphabetic # Mc   [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
-0955..0957    ; Other_Alphabetic # Mn   [3] DEVANAGARI VOWEL SIGN CANDRA LONG E..DEVANAGARI VOWEL SIGN UUE
-0962..0963    ; Other_Alphabetic # Mn   [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
-0981          ; Other_Alphabetic # Mn       BENGALI SIGN CANDRABINDU
-0982..0983    ; Other_Alphabetic # Mc   [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
-09BE..09C0    ; Other_Alphabetic # Mc   [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
-09C1..09C4    ; Other_Alphabetic # Mn   [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
-09C7..09C8    ; Other_Alphabetic # Mc   [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
-09CB..09CC    ; Other_Alphabetic # Mc   [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
-09D7          ; Other_Alphabetic # Mc       BENGALI AU LENGTH MARK
-09E2..09E3    ; Other_Alphabetic # Mn   [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
-0A01..0A02    ; Other_Alphabetic # Mn   [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
-0A03          ; Other_Alphabetic # Mc       GURMUKHI SIGN VISARGA
-0A3E..0A40    ; Other_Alphabetic # Mc   [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
-0A41..0A42    ; Other_Alphabetic # Mn   [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
-0A47..0A48    ; Other_Alphabetic # Mn   [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
-0A4B..0A4C    ; Other_Alphabetic # Mn   [2] GURMUKHI VOWEL SIGN OO..GURMUKHI VOWEL SIGN AU
-0A51          ; Other_Alphabetic # Mn       GURMUKHI SIGN UDAAT
-0A70..0A71    ; Other_Alphabetic # Mn   [2] GURMUKHI TIPPI..GURMUKHI ADDAK
-0A75          ; Other_Alphabetic # Mn       GURMUKHI SIGN YAKASH
-0A81..0A82    ; Other_Alphabetic # Mn   [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
-0A83          ; Other_Alphabetic # Mc       GUJARATI SIGN VISARGA
-0ABE..0AC0    ; Other_Alphabetic # Mc   [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
-0AC1..0AC5    ; Other_Alphabetic # Mn   [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
-0AC7..0AC8    ; Other_Alphabetic # Mn   [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
-0AC9          ; Other_Alphabetic # Mc       GUJARATI VOWEL SIGN CANDRA O
-0ACB..0ACC    ; Other_Alphabetic # Mc   [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
-0AE2..0AE3    ; Other_Alphabetic # Mn   [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
-0AFA..0AFC    ; Other_Alphabetic # Mn   [3] GUJARATI SIGN SUKUN..GUJARATI SIGN MADDAH
-0B01          ; Other_Alphabetic # Mn       ORIYA SIGN CANDRABINDU
-0B02..0B03    ; Other_Alphabetic # Mc   [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
-0B3E          ; Other_Alphabetic # Mc       ORIYA VOWEL SIGN AA
-0B3F          ; Other_Alphabetic # Mn       ORIYA VOWEL SIGN I
-0B40          ; Other_Alphabetic # Mc       ORIYA VOWEL SIGN II
-0B41..0B44    ; Other_Alphabetic # Mn   [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
-0B47..0B48    ; Other_Alphabetic # Mc   [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
-0B4B..0B4C    ; Other_Alphabetic # Mc   [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
-0B56          ; Other_Alphabetic # Mn       ORIYA AI LENGTH MARK
-0B57          ; Other_Alphabetic # Mc       ORIYA AU LENGTH MARK
-0B62..0B63    ; Other_Alphabetic # Mn   [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
-0B82          ; Other_Alphabetic # Mn       TAMIL SIGN ANUSVARA
-0BBE..0BBF    ; Other_Alphabetic # Mc   [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
-0BC0          ; Other_Alphabetic # Mn       TAMIL VOWEL SIGN II
-0BC1..0BC2    ; Other_Alphabetic # Mc   [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
-0BC6..0BC8    ; Other_Alphabetic # Mc   [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
-0BCA..0BCC    ; Other_Alphabetic # Mc   [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
-0BD7          ; Other_Alphabetic # Mc       TAMIL AU LENGTH MARK
-0C00          ; Other_Alphabetic # Mn       TELUGU SIGN COMBINING CANDRABINDU ABOVE
-0C01..0C03    ; Other_Alphabetic # Mc   [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
-0C04          ; Other_Alphabetic # Mn       TELUGU SIGN COMBINING ANUSVARA ABOVE
-0C3E..0C40    ; Other_Alphabetic # Mn   [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
-0C41..0C44    ; Other_Alphabetic # Mc   [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
-0C46..0C48    ; Other_Alphabetic # Mn   [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
-0C4A..0C4C    ; Other_Alphabetic # Mn   [3] TELUGU VOWEL SIGN O..TELUGU VOWEL SIGN AU
-0C55..0C56    ; Other_Alphabetic # Mn   [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
-0C62..0C63    ; Other_Alphabetic # Mn   [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
-0C81          ; Other_Alphabetic # Mn       KANNADA SIGN CANDRABINDU
-0C82..0C83    ; Other_Alphabetic # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
-0CBE          ; Other_Alphabetic # Mc       KANNADA VOWEL SIGN AA
-0CBF          ; Other_Alphabetic # Mn       KANNADA VOWEL SIGN I
-0CC0..0CC4    ; Other_Alphabetic # Mc   [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
-0CC6          ; Other_Alphabetic # Mn       KANNADA VOWEL SIGN E
-0CC7..0CC8    ; Other_Alphabetic # Mc   [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
-0CCA..0CCB    ; Other_Alphabetic # Mc   [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
-0CCC          ; Other_Alphabetic # Mn       KANNADA VOWEL SIGN AU
-0CD5..0CD6    ; Other_Alphabetic # Mc   [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
-0CE2..0CE3    ; Other_Alphabetic # Mn   [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
-0CF3          ; Other_Alphabetic # Mc       KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
-0D00..0D01    ; Other_Alphabetic # Mn   [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
-0D02..0D03    ; Other_Alphabetic # Mc   [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
-0D3E..0D40    ; Other_Alphabetic # Mc   [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
-0D41..0D44    ; Other_Alphabetic # Mn   [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
-0D46..0D48    ; Other_Alphabetic # Mc   [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
-0D4A..0D4C    ; Other_Alphabetic # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
-0D57          ; Other_Alphabetic # Mc       MALAYALAM AU LENGTH MARK
-0D62..0D63    ; Other_Alphabetic # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
-0D81          ; Other_Alphabetic # Mn       SINHALA SIGN CANDRABINDU
-0D82..0D83    ; Other_Alphabetic # Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
-0DCF..0DD1    ; Other_Alphabetic # Mc   [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
-0DD2..0DD4    ; Other_Alphabetic # Mn   [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
-0DD6          ; Other_Alphabetic # Mn       SINHALA VOWEL SIGN DIGA PAA-PILLA
-0DD8..0DDF    ; Other_Alphabetic # Mc   [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
-0DF2..0DF3    ; Other_Alphabetic # Mc   [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
-0E31          ; Other_Alphabetic # Mn       THAI CHARACTER MAI HAN-AKAT
-0E34..0E3A    ; Other_Alphabetic # Mn   [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
-0E4D          ; Other_Alphabetic # Mn       THAI CHARACTER NIKHAHIT
-0EB1          ; Other_Alphabetic # Mn       LAO VOWEL SIGN MAI KAN
-0EB4..0EB9    ; Other_Alphabetic # Mn   [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
-0EBB..0EBC    ; Other_Alphabetic # Mn   [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
-0ECD          ; Other_Alphabetic # Mn       LAO NIGGAHITA
-0F71..0F7E    ; Other_Alphabetic # Mn  [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
-0F7F          ; Other_Alphabetic # Mc       TIBETAN SIGN RNAM BCAD
-0F80..0F83    ; Other_Alphabetic # Mn   [4] TIBETAN VOWEL SIGN REVERSED I..TIBETAN SIGN SNA LDAN
-0F8D..0F97    ; Other_Alphabetic # Mn  [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
-0F99..0FBC    ; Other_Alphabetic # Mn  [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
-102B..102C    ; Other_Alphabetic # Mc   [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
-102D..1030    ; Other_Alphabetic # Mn   [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
-1031          ; Other_Alphabetic # Mc       MYANMAR VOWEL SIGN E
-1032..1036    ; Other_Alphabetic # Mn   [5] MYANMAR VOWEL SIGN AI..MYANMAR SIGN ANUSVARA
-1038          ; Other_Alphabetic # Mc       MYANMAR SIGN VISARGA
-103B..103C    ; Other_Alphabetic # Mc   [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
-103D..103E    ; Other_Alphabetic # Mn   [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
-1056..1057    ; Other_Alphabetic # Mc   [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
-1058..1059    ; Other_Alphabetic # Mn   [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
-105E..1060    ; Other_Alphabetic # Mn   [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
-1062..1064    ; Other_Alphabetic # Mc   [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
-1067..106D    ; Other_Alphabetic # Mc   [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
-1071..1074    ; Other_Alphabetic # Mn   [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
-1082          ; Other_Alphabetic # Mn       MYANMAR CONSONANT SIGN SHAN MEDIAL WA
-1083..1084    ; Other_Alphabetic # Mc   [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E
-1085..1086    ; Other_Alphabetic # Mn   [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
-1087..108C    ; Other_Alphabetic # Mc   [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
-108D          ; Other_Alphabetic # Mn       MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
-108F          ; Other_Alphabetic # Mc       MYANMAR SIGN RUMAI PALAUNG TONE-5
-109A..109C    ; Other_Alphabetic # Mc   [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A
-109D          ; Other_Alphabetic # Mn       MYANMAR VOWEL SIGN AITON AI
-1712..1713    ; Other_Alphabetic # Mn   [2] TAGALOG VOWEL SIGN I..TAGALOG VOWEL SIGN U
-1732..1733    ; Other_Alphabetic # Mn   [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
-1752..1753    ; Other_Alphabetic # Mn   [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
-1772..1773    ; Other_Alphabetic # Mn   [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
-17B6          ; Other_Alphabetic # Mc       KHMER VOWEL SIGN AA
-17B7..17BD    ; Other_Alphabetic # Mn   [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
-17BE..17C5    ; Other_Alphabetic # Mc   [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
-17C6          ; Other_Alphabetic # Mn       KHMER SIGN NIKAHIT
-17C7..17C8    ; Other_Alphabetic # Mc   [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
-1885..1886    ; Other_Alphabetic # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
-18A9          ; Other_Alphabetic # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
-1920..1922    ; Other_Alphabetic # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
-1923..1926    ; Other_Alphabetic # Mc   [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
-1927..1928    ; Other_Alphabetic # Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
-1929..192B    ; Other_Alphabetic # Mc   [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
-1930..1931    ; Other_Alphabetic # Mc   [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
-1932          ; Other_Alphabetic # Mn       LIMBU SMALL LETTER ANUSVARA
-1933..1938    ; Other_Alphabetic # Mc   [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
-1A17..1A18    ; Other_Alphabetic # Mn   [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
-1A19..1A1A    ; Other_Alphabetic # Mc   [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O
-1A1B          ; Other_Alphabetic # Mn       BUGINESE VOWEL SIGN AE
-1A55          ; Other_Alphabetic # Mc       TAI THAM CONSONANT SIGN MEDIAL RA
-1A56          ; Other_Alphabetic # Mn       TAI THAM CONSONANT SIGN MEDIAL LA
-1A57          ; Other_Alphabetic # Mc       TAI THAM CONSONANT SIGN LA TANG LAI
-1A58..1A5E    ; Other_Alphabetic # Mn   [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
-1A61          ; Other_Alphabetic # Mc       TAI THAM VOWEL SIGN A
-1A62          ; Other_Alphabetic # Mn       TAI THAM VOWEL SIGN MAI SAT
-1A63..1A64    ; Other_Alphabetic # Mc   [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA
-1A65..1A6C    ; Other_Alphabetic # Mn   [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
-1A6D..1A72    ; Other_Alphabetic # Mc   [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
-1A73..1A74    ; Other_Alphabetic # Mn   [2] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN MAI KANG
-1ABF..1AC0    ; Other_Alphabetic # Mn   [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW
-1ACC..1ACE    ; Other_Alphabetic # Mn   [3] COMBINING LATIN SMALL LETTER INSULAR G..COMBINING LATIN SMALL LETTER INSULAR T
-1B00..1B03    ; Other_Alphabetic # Mn   [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
-1B04          ; Other_Alphabetic # Mc       BALINESE SIGN BISAH
-1B35          ; Other_Alphabetic # Mc       BALINESE VOWEL SIGN TEDUNG
-1B36..1B3A    ; Other_Alphabetic # Mn   [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
-1B3B          ; Other_Alphabetic # Mc       BALINESE VOWEL SIGN RA REPA TEDUNG
-1B3C          ; Other_Alphabetic # Mn       BALINESE VOWEL SIGN LA LENGA
-1B3D..1B41    ; Other_Alphabetic # Mc   [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
-1B42          ; Other_Alphabetic # Mn       BALINESE VOWEL SIGN PEPET
-1B43          ; Other_Alphabetic # Mc       BALINESE VOWEL SIGN PEPET TEDUNG
-1B80..1B81    ; Other_Alphabetic # Mn   [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
-1B82          ; Other_Alphabetic # Mc       SUNDANESE SIGN PANGWISAD
-1BA1          ; Other_Alphabetic # Mc       SUNDANESE CONSONANT SIGN PAMINGKAL
-1BA2..1BA5    ; Other_Alphabetic # Mn   [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
-1BA6..1BA7    ; Other_Alphabetic # Mc   [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
-1BA8..1BA9    ; Other_Alphabetic # Mn   [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
-1BAC..1BAD    ; Other_Alphabetic # Mn   [2] SUNDANESE CONSONANT SIGN PASANGAN MA..SUNDANESE CONSONANT SIGN PASANGAN WA
-1BE7          ; Other_Alphabetic # Mc       BATAK VOWEL SIGN E
-1BE8..1BE9    ; Other_Alphabetic # Mn   [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
-1BEA..1BEC    ; Other_Alphabetic # Mc   [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
-1BED          ; Other_Alphabetic # Mn       BATAK VOWEL SIGN KARO O
-1BEE          ; Other_Alphabetic # Mc       BATAK VOWEL SIGN U
-1BEF..1BF1    ; Other_Alphabetic # Mn   [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
-1C24..1C2B    ; Other_Alphabetic # Mc   [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
-1C2C..1C33    ; Other_Alphabetic # Mn   [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
-1C34..1C35    ; Other_Alphabetic # Mc   [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
-1C36          ; Other_Alphabetic # Mn       LEPCHA SIGN RAN
-1DE7..1DF4    ; Other_Alphabetic # Mn  [14] COMBINING LATIN SMALL LETTER ALPHA..COMBINING LATIN SMALL LETTER U WITH DIAERESIS
-24B6..24E9    ; Other_Alphabetic # So  [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z
-2DE0..2DFF    ; Other_Alphabetic # Mn  [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
-A674..A67B    ; Other_Alphabetic # Mn   [8] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA
-A69E..A69F    ; Other_Alphabetic # Mn   [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
-A802          ; Other_Alphabetic # Mn       SYLOTI NAGRI SIGN DVISVARA
-A80B          ; Other_Alphabetic # Mn       SYLOTI NAGRI SIGN ANUSVARA
-A823..A824    ; Other_Alphabetic # Mc   [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
-A825..A826    ; Other_Alphabetic # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
-A827          ; Other_Alphabetic # Mc       SYLOTI NAGRI VOWEL SIGN OO
-A880..A881    ; Other_Alphabetic # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
-A8B4..A8C3    ; Other_Alphabetic # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
-A8C5          ; Other_Alphabetic # Mn       SAURASHTRA SIGN CANDRABINDU
-A8FF          ; Other_Alphabetic # Mn       DEVANAGARI VOWEL SIGN AY
-A926..A92A    ; Other_Alphabetic # Mn   [5] KAYAH LI VOWEL UE..KAYAH LI VOWEL O
-A947..A951    ; Other_Alphabetic # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
-A952          ; Other_Alphabetic # Mc       REJANG CONSONANT SIGN H
-A980..A982    ; Other_Alphabetic # Mn   [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
-A983          ; Other_Alphabetic # Mc       JAVANESE SIGN WIGNYAN
-A9B4..A9B5    ; Other_Alphabetic # Mc   [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
-A9B6..A9B9    ; Other_Alphabetic # Mn   [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
-A9BA..A9BB    ; Other_Alphabetic # Mc   [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
-A9BC..A9BD    ; Other_Alphabetic # Mn   [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
-A9BE..A9BF    ; Other_Alphabetic # Mc   [2] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE CONSONANT SIGN CAKRA
-A9E5          ; Other_Alphabetic # Mn       MYANMAR SIGN SHAN SAW
-AA29..AA2E    ; Other_Alphabetic # Mn   [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
-AA2F..AA30    ; Other_Alphabetic # Mc   [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
-AA31..AA32    ; Other_Alphabetic # Mn   [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
-AA33..AA34    ; Other_Alphabetic # Mc   [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
-AA35..AA36    ; Other_Alphabetic # Mn   [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
-AA43          ; Other_Alphabetic # Mn       CHAM CONSONANT SIGN FINAL NG
-AA4C          ; Other_Alphabetic # Mn       CHAM CONSONANT SIGN FINAL M
-AA4D          ; Other_Alphabetic # Mc       CHAM CONSONANT SIGN FINAL H
-AA7B          ; Other_Alphabetic # Mc       MYANMAR SIGN PAO KAREN TONE
-AA7C          ; Other_Alphabetic # Mn       MYANMAR SIGN TAI LAING TONE-2
-AA7D          ; Other_Alphabetic # Mc       MYANMAR SIGN TAI LAING TONE-5
-AAB0          ; Other_Alphabetic # Mn       TAI VIET MAI KANG
-AAB2..AAB4    ; Other_Alphabetic # Mn   [3] TAI VIET VOWEL I..TAI VIET VOWEL U
-AAB7..AAB8    ; Other_Alphabetic # Mn   [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
-AABE          ; Other_Alphabetic # Mn       TAI VIET VOWEL AM
-AAEB          ; Other_Alphabetic # Mc       MEETEI MAYEK VOWEL SIGN II
-AAEC..AAED    ; Other_Alphabetic # Mn   [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
-AAEE..AAEF    ; Other_Alphabetic # Mc   [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU
-AAF5          ; Other_Alphabetic # Mc       MEETEI MAYEK VOWEL SIGN VISARGA
-ABE3..ABE4    ; Other_Alphabetic # Mc   [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
-ABE5          ; Other_Alphabetic # Mn       MEETEI MAYEK VOWEL SIGN ANAP
-ABE6..ABE7    ; Other_Alphabetic # Mc   [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP
-ABE8          ; Other_Alphabetic # Mn       MEETEI MAYEK VOWEL SIGN UNAP
-ABE9..ABEA    ; Other_Alphabetic # Mc   [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG
-FB1E          ; Other_Alphabetic # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
-10376..1037A  ; Other_Alphabetic # Mn   [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
-10A01..10A03  ; Other_Alphabetic # Mn   [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
-10A05..10A06  ; Other_Alphabetic # Mn   [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
-10A0C..10A0F  ; Other_Alphabetic # Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
-10D24..10D27  ; Other_Alphabetic # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
-10EAB..10EAC  ; Other_Alphabetic # Mn   [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
-11000         ; Other_Alphabetic # Mc       BRAHMI SIGN CANDRABINDU
-11001         ; Other_Alphabetic # Mn       BRAHMI SIGN ANUSVARA
-11002         ; Other_Alphabetic # Mc       BRAHMI SIGN VISARGA
-11038..11045  ; Other_Alphabetic # Mn  [14] BRAHMI VOWEL SIGN AA..BRAHMI VOWEL SIGN AU
-11073..11074  ; Other_Alphabetic # Mn   [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
-11080..11081  ; Other_Alphabetic # Mn   [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA
-11082         ; Other_Alphabetic # Mc       KAITHI SIGN VISARGA
-110B0..110B2  ; Other_Alphabetic # Mc   [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
-110B3..110B6  ; Other_Alphabetic # Mn   [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
-110B7..110B8  ; Other_Alphabetic # Mc   [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
-110C2         ; Other_Alphabetic # Mn       KAITHI VOWEL SIGN VOCALIC R
-11100..11102  ; Other_Alphabetic # Mn   [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
-11127..1112B  ; Other_Alphabetic # Mn   [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
-1112C         ; Other_Alphabetic # Mc       CHAKMA VOWEL SIGN E
-1112D..11132  ; Other_Alphabetic # Mn   [6] CHAKMA VOWEL SIGN AI..CHAKMA AU MARK
-11145..11146  ; Other_Alphabetic # Mc   [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
-11180..11181  ; Other_Alphabetic # Mn   [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
-11182         ; Other_Alphabetic # Mc       SHARADA SIGN VISARGA
-111B3..111B5  ; Other_Alphabetic # Mc   [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
-111B6..111BE  ; Other_Alphabetic # Mn   [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
-111BF         ; Other_Alphabetic # Mc       SHARADA VOWEL SIGN AU
-111CE         ; Other_Alphabetic # Mc       SHARADA VOWEL SIGN PRISHTHAMATRA E
-111CF         ; Other_Alphabetic # Mn       SHARADA SIGN INVERTED CANDRABINDU
-1122C..1122E  ; Other_Alphabetic # Mc   [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
-1122F..11231  ; Other_Alphabetic # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
-11232..11233  ; Other_Alphabetic # Mc   [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
-11234         ; Other_Alphabetic # Mn       KHOJKI SIGN ANUSVARA
-11237         ; Other_Alphabetic # Mn       KHOJKI SIGN SHADDA
-1123E         ; Other_Alphabetic # Mn       KHOJKI SIGN SUKUN
-11241         ; Other_Alphabetic # Mn       KHOJKI VOWEL SIGN VOCALIC R
-112DF         ; Other_Alphabetic # Mn       KHUDAWADI SIGN ANUSVARA
-112E0..112E2  ; Other_Alphabetic # Mc   [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
-112E3..112E8  ; Other_Alphabetic # Mn   [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU
-11300..11301  ; Other_Alphabetic # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
-11302..11303  ; Other_Alphabetic # Mc   [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
-1133E..1133F  ; Other_Alphabetic # Mc   [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I
-11340         ; Other_Alphabetic # Mn       GRANTHA VOWEL SIGN II
-11341..11344  ; Other_Alphabetic # Mc   [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
-11347..11348  ; Other_Alphabetic # Mc   [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
-1134B..1134C  ; Other_Alphabetic # Mc   [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU
-11357         ; Other_Alphabetic # Mc       GRANTHA AU LENGTH MARK
-11362..11363  ; Other_Alphabetic # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
-11435..11437  ; Other_Alphabetic # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
-11438..1143F  ; Other_Alphabetic # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
-11440..11441  ; Other_Alphabetic # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
-11443..11444  ; Other_Alphabetic # Mn   [2] NEWA SIGN CANDRABINDU..NEWA SIGN ANUSVARA
-11445         ; Other_Alphabetic # Mc       NEWA SIGN VISARGA
-114B0..114B2  ; Other_Alphabetic # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
-114B3..114B8  ; Other_Alphabetic # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
-114B9         ; Other_Alphabetic # Mc       TIRHUTA VOWEL SIGN E
-114BA         ; Other_Alphabetic # Mn       TIRHUTA VOWEL SIGN SHORT E
-114BB..114BE  ; Other_Alphabetic # Mc   [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU
-114BF..114C0  ; Other_Alphabetic # Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
-114C1         ; Other_Alphabetic # Mc       TIRHUTA SIGN VISARGA
-115AF..115B1  ; Other_Alphabetic # Mc   [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II
-115B2..115B5  ; Other_Alphabetic # Mn   [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
-115B8..115BB  ; Other_Alphabetic # Mc   [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU
-115BC..115BD  ; Other_Alphabetic # Mn   [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
-115BE         ; Other_Alphabetic # Mc       SIDDHAM SIGN VISARGA
-115DC..115DD  ; Other_Alphabetic # Mn   [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
-11630..11632  ; Other_Alphabetic # Mc   [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II
-11633..1163A  ; Other_Alphabetic # Mn   [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
-1163B..1163C  ; Other_Alphabetic # Mc   [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU
-1163D         ; Other_Alphabetic # Mn       MODI SIGN ANUSVARA
-1163E         ; Other_Alphabetic # Mc       MODI SIGN VISARGA
-11640         ; Other_Alphabetic # Mn       MODI SIGN ARDHACANDRA
-116AB         ; Other_Alphabetic # Mn       TAKRI SIGN ANUSVARA
-116AC         ; Other_Alphabetic # Mc       TAKRI SIGN VISARGA
-116AD         ; Other_Alphabetic # Mn       TAKRI VOWEL SIGN AA
-116AE..116AF  ; Other_Alphabetic # Mc   [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
-116B0..116B5  ; Other_Alphabetic # Mn   [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
-1171D..1171F  ; Other_Alphabetic # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
-11720..11721  ; Other_Alphabetic # Mc   [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
-11722..11725  ; Other_Alphabetic # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
-11726         ; Other_Alphabetic # Mc       AHOM VOWEL SIGN E
-11727..1172A  ; Other_Alphabetic # Mn   [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM
-1182C..1182E  ; Other_Alphabetic # Mc   [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
-1182F..11837  ; Other_Alphabetic # Mn   [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
-11838         ; Other_Alphabetic # Mc       DOGRA SIGN VISARGA
-11930..11935  ; Other_Alphabetic # Mc   [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E
-11937..11938  ; Other_Alphabetic # Mc   [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
-1193B..1193C  ; Other_Alphabetic # Mn   [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
-11940         ; Other_Alphabetic # Mc       DIVES AKURU MEDIAL YA
-11942         ; Other_Alphabetic # Mc       DIVES AKURU MEDIAL RA
-119D1..119D3  ; Other_Alphabetic # Mc   [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
-119D4..119D7  ; Other_Alphabetic # Mn   [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
-119DA..119DB  ; Other_Alphabetic # Mn   [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
-119DC..119DF  ; Other_Alphabetic # Mc   [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA
-119E4         ; Other_Alphabetic # Mc       NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
-11A01..11A0A  ; Other_Alphabetic # Mn  [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
-11A35..11A38  ; Other_Alphabetic # Mn   [4] ZANABAZAR SQUARE SIGN CANDRABINDU..ZANABAZAR SQUARE SIGN ANUSVARA
-11A39         ; Other_Alphabetic # Mc       ZANABAZAR SQUARE SIGN VISARGA
-11A3B..11A3E  ; Other_Alphabetic # Mn   [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
-11A51..11A56  ; Other_Alphabetic # Mn   [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
-11A57..11A58  ; Other_Alphabetic # Mc   [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU
-11A59..11A5B  ; Other_Alphabetic # Mn   [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
-11A8A..11A96  ; Other_Alphabetic # Mn  [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
-11A97         ; Other_Alphabetic # Mc       SOYOMBO SIGN VISARGA
-11C2F         ; Other_Alphabetic # Mc       BHAIKSUKI VOWEL SIGN AA
-11C30..11C36  ; Other_Alphabetic # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
-11C38..11C3D  ; Other_Alphabetic # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
-11C3E         ; Other_Alphabetic # Mc       BHAIKSUKI SIGN VISARGA
-11C92..11CA7  ; Other_Alphabetic # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
-11CA9         ; Other_Alphabetic # Mc       MARCHEN SUBJOINED LETTER YA
-11CAA..11CB0  ; Other_Alphabetic # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
-11CB1         ; Other_Alphabetic # Mc       MARCHEN VOWEL SIGN I
-11CB2..11CB3  ; Other_Alphabetic # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
-11CB4         ; Other_Alphabetic # Mc       MARCHEN VOWEL SIGN O
-11CB5..11CB6  ; Other_Alphabetic # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
-11D31..11D36  ; Other_Alphabetic # Mn   [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
-11D3A         ; Other_Alphabetic # Mn       MASARAM GONDI VOWEL SIGN E
-11D3C..11D3D  ; Other_Alphabetic # Mn   [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
-11D3F..11D41  ; Other_Alphabetic # Mn   [3] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI SIGN VISARGA
-11D43         ; Other_Alphabetic # Mn       MASARAM GONDI SIGN CANDRA
-11D47         ; Other_Alphabetic # Mn       MASARAM GONDI RA-KARA
-11D8A..11D8E  ; Other_Alphabetic # Mc   [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
-11D90..11D91  ; Other_Alphabetic # Mn   [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
-11D93..11D94  ; Other_Alphabetic # Mc   [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
-11D95         ; Other_Alphabetic # Mn       GUNJALA GONDI SIGN ANUSVARA
-11D96         ; Other_Alphabetic # Mc       GUNJALA GONDI SIGN VISARGA
-11EF3..11EF4  ; Other_Alphabetic # Mn   [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
-11EF5..11EF6  ; Other_Alphabetic # Mc   [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
-11F00..11F01  ; Other_Alphabetic # Mn   [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
-11F03         ; Other_Alphabetic # Mc       KAWI SIGN VISARGA
-11F34..11F35  ; Other_Alphabetic # Mc   [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA
-11F36..11F3A  ; Other_Alphabetic # Mn   [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
-11F3E..11F3F  ; Other_Alphabetic # Mc   [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
-11F40         ; Other_Alphabetic # Mn       KAWI VOWEL SIGN EU
-16F4F         ; Other_Alphabetic # Mn       MIAO SIGN CONSONANT MODIFIER BAR
-16F51..16F87  ; Other_Alphabetic # Mc  [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
-16F8F..16F92  ; Other_Alphabetic # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
-16FF0..16FF1  ; Other_Alphabetic # Mc   [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
-1BC9E         ; Other_Alphabetic # Mn       DUPLOYAN DOUBLE MARK
-1E000..1E006  ; Other_Alphabetic # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
-1E008..1E018  ; Other_Alphabetic # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
-1E01B..1E021  ; Other_Alphabetic # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
-1E023..1E024  ; Other_Alphabetic # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
-1E026..1E02A  ; Other_Alphabetic # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
-1E08F         ; Other_Alphabetic # Mn       COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-1E947         ; Other_Alphabetic # Mn       ADLAM HAMZA
-1F130..1F149  ; Other_Alphabetic # So  [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z
-1F150..1F169  ; Other_Alphabetic # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
-1F170..1F189  ; Other_Alphabetic # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
-
-# Total code points: 1425
-
-# ================================================
-
-3006          ; Ideographic # Lo       IDEOGRAPHIC CLOSING MARK
-3007          ; Ideographic # Nl       IDEOGRAPHIC NUMBER ZERO
-3021..3029    ; Ideographic # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
-3038..303A    ; Ideographic # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
-3400..4DBF    ; Ideographic # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
-4E00..9FFF    ; Ideographic # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF
-F900..FA6D    ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
-FA70..FAD9    ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
-16FE4         ; Ideographic # Mn       KHITAN SMALL SCRIPT FILLER
-17000..187F7  ; Ideographic # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
-18800..18CD5  ; Ideographic # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
-18D00..18D08  ; Ideographic # Lo   [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
-1B170..1B2FB  ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
-20000..2A6DF  ; Ideographic # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
-2A700..2B739  ; Ideographic # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
-2B740..2B81D  ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
-2B820..2CEA1  ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
-2CEB0..2EBE0  ; Ideographic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
-2EBF0..2EE5D  ; Ideographic # Lo [622] CJK UNIFIED IDEOGRAPH-2EBF0..CJK UNIFIED IDEOGRAPH-2EE5D
-2F800..2FA1D  ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
-30000..3134A  ; Ideographic # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
-31350..323AF  ; Ideographic # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
-
-# Total code points: 106476
-
-# ================================================
-
-005E          ; Diacritic # Sk       CIRCUMFLEX ACCENT
-0060          ; Diacritic # Sk       GRAVE ACCENT
-00A8          ; Diacritic # Sk       DIAERESIS
-00AF          ; Diacritic # Sk       MACRON
-00B4          ; Diacritic # Sk       ACUTE ACCENT
-00B7          ; Diacritic # Po       MIDDLE DOT
-00B8          ; Diacritic # Sk       CEDILLA
-02B0..02C1    ; Diacritic # Lm  [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
-02C2..02C5    ; Diacritic # Sk   [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
-02C6..02D1    ; Diacritic # Lm  [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
-02D2..02DF    ; Diacritic # Sk  [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
-02E0..02E4    ; Diacritic # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-02E5..02EB    ; Diacritic # Sk   [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK
-02EC          ; Diacritic # Lm       MODIFIER LETTER VOICING
-02ED          ; Diacritic # Sk       MODIFIER LETTER UNASPIRATED
-02EE          ; Diacritic # Lm       MODIFIER LETTER DOUBLE APOSTROPHE
-02EF..02FF    ; Diacritic # Sk  [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
-0300..034E    ; Diacritic # Mn  [79] COMBINING GRAVE ACCENT..COMBINING UPWARDS ARROW BELOW
-0350..0357    ; Diacritic # Mn   [8] COMBINING RIGHT ARROWHEAD ABOVE..COMBINING RIGHT HALF RING ABOVE
-035D..0362    ; Diacritic # Mn   [6] COMBINING DOUBLE BREVE..COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-0374          ; Diacritic # Lm       GREEK NUMERAL SIGN
-0375          ; Diacritic # Sk       GREEK LOWER NUMERAL SIGN
-037A          ; Diacritic # Lm       GREEK YPOGEGRAMMENI
-0384..0385    ; Diacritic # Sk   [2] GREEK TONOS..GREEK DIALYTIKA TONOS
-0483..0487    ; Diacritic # Mn   [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
-0559          ; Diacritic # Lm       ARMENIAN MODIFIER LETTER LEFT HALF RING
-0591..05A1    ; Diacritic # Mn  [17] HEBREW ACCENT ETNAHTA..HEBREW ACCENT PAZER
-05A3..05BD    ; Diacritic # Mn  [27] HEBREW ACCENT MUNAH..HEBREW POINT METEG
-05BF          ; Diacritic # Mn       HEBREW POINT RAFE
-05C1..05C2    ; Diacritic # Mn   [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
-05C4          ; Diacritic # Mn       HEBREW MARK UPPER DOT
-064B..0652    ; Diacritic # Mn   [8] ARABIC FATHATAN..ARABIC SUKUN
-0657..0658    ; Diacritic # Mn   [2] ARABIC INVERTED DAMMA..ARABIC MARK NOON GHUNNA
-06DF..06E0    ; Diacritic # Mn   [2] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
-06E5..06E6    ; Diacritic # Lm   [2] ARABIC SMALL WAW..ARABIC SMALL YEH
-06EA..06EC    ; Diacritic # Mn   [3] ARABIC EMPTY CENTRE LOW STOP..ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
-0730..074A    ; Diacritic # Mn  [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
-07A6..07B0    ; Diacritic # Mn  [11] THAANA ABAFILI..THAANA SUKUN
-07EB..07F3    ; Diacritic # Mn   [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
-07F4..07F5    ; Diacritic # Lm   [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
-0818..0819    ; Diacritic # Mn   [2] SAMARITAN MARK OCCLUSION..SAMARITAN MARK DAGESH
-0898..089F    ; Diacritic # Mn   [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
-08C9          ; Diacritic # Lm       ARABIC SMALL FARSI YEH
-08CA..08D2    ; Diacritic # Mn   [9] ARABIC SMALL HIGH FARSI YEH..ARABIC LARGE ROUND DOT INSIDE CIRCLE BELOW
-08E3..08FE    ; Diacritic # Mn  [28] ARABIC TURNED DAMMA BELOW..ARABIC DAMMA WITH DOT
-093C          ; Diacritic # Mn       DEVANAGARI SIGN NUKTA
-094D          ; Diacritic # Mn       DEVANAGARI SIGN VIRAMA
-0951..0954    ; Diacritic # Mn   [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
-0971          ; Diacritic # Lm       DEVANAGARI SIGN HIGH SPACING DOT
-09BC          ; Diacritic # Mn       BENGALI SIGN NUKTA
-09CD          ; Diacritic # Mn       BENGALI SIGN VIRAMA
-0A3C          ; Diacritic # Mn       GURMUKHI SIGN NUKTA
-0A4D          ; Diacritic # Mn       GURMUKHI SIGN VIRAMA
-0ABC          ; Diacritic # Mn       GUJARATI SIGN NUKTA
-0ACD          ; Diacritic # Mn       GUJARATI SIGN VIRAMA
-0AFD..0AFF    ; Diacritic # Mn   [3] GUJARATI SIGN THREE-DOT NUKTA ABOVE..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
-0B3C          ; Diacritic # Mn       ORIYA SIGN NUKTA
-0B4D          ; Diacritic # Mn       ORIYA SIGN VIRAMA
-0B55          ; Diacritic # Mn       ORIYA SIGN OVERLINE
-0BCD          ; Diacritic # Mn       TAMIL SIGN VIRAMA
-0C3C          ; Diacritic # Mn       TELUGU SIGN NUKTA
-0C4D          ; Diacritic # Mn       TELUGU SIGN VIRAMA
-0CBC          ; Diacritic # Mn       KANNADA SIGN NUKTA
-0CCD          ; Diacritic # Mn       KANNADA SIGN VIRAMA
-0D3B..0D3C    ; Diacritic # Mn   [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
-0D4D          ; Diacritic # Mn       MALAYALAM SIGN VIRAMA
-0DCA          ; Diacritic # Mn       SINHALA SIGN AL-LAKUNA
-0E47..0E4C    ; Diacritic # Mn   [6] THAI CHARACTER MAITAIKHU..THAI CHARACTER THANTHAKHAT
-0E4E          ; Diacritic # Mn       THAI CHARACTER YAMAKKAN
-0EBA          ; Diacritic # Mn       LAO SIGN PALI VIRAMA
-0EC8..0ECC    ; Diacritic # Mn   [5] LAO TONE MAI EK..LAO CANCELLATION MARK
-0F18..0F19    ; Diacritic # Mn   [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
-0F35          ; Diacritic # Mn       TIBETAN MARK NGAS BZUNG NYI ZLA
-0F37          ; Diacritic # Mn       TIBETAN MARK NGAS BZUNG SGOR RTAGS
-0F39          ; Diacritic # Mn       TIBETAN MARK TSA -PHRU
-0F3E..0F3F    ; Diacritic # Mc   [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
-0F82..0F84    ; Diacritic # Mn   [3] TIBETAN SIGN NYI ZLA NAA DA..TIBETAN MARK HALANTA
-0F86..0F87    ; Diacritic # Mn   [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
-0FC6          ; Diacritic # Mn       TIBETAN SYMBOL PADMA GDAN
-1037          ; Diacritic # Mn       MYANMAR SIGN DOT BELOW
-1039..103A    ; Diacritic # Mn   [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
-1063..1064    ; Diacritic # Mc   [2] MYANMAR TONE MARK SGAW KAREN HATHI..MYANMAR TONE MARK SGAW KAREN KE PHO
-1069..106D    ; Diacritic # Mc   [5] MYANMAR SIGN WESTERN PWO KAREN TONE-1..MYANMAR SIGN WESTERN PWO KAREN TONE-5
-1087..108C    ; Diacritic # Mc   [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
-108D          ; Diacritic # Mn       MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
-108F          ; Diacritic # Mc       MYANMAR SIGN RUMAI PALAUNG TONE-5
-109A..109B    ; Diacritic # Mc   [2] MYANMAR SIGN KHAMTI TONE-1..MYANMAR SIGN KHAMTI TONE-3
-135D..135F    ; Diacritic # Mn   [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
-1714          ; Diacritic # Mn       TAGALOG SIGN VIRAMA
-1715          ; Diacritic # Mc       TAGALOG SIGN PAMUDPOD
-17C9..17D3    ; Diacritic # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
-17DD          ; Diacritic # Mn       KHMER SIGN ATTHACAN
-1939..193B    ; Diacritic # Mn   [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
-1A75..1A7C    ; Diacritic # Mn   [8] TAI THAM SIGN TONE-1..TAI THAM SIGN KHUEN-LUE KARAN
-1A7F          ; Diacritic # Mn       TAI THAM COMBINING CRYPTOGRAMMIC DOT
-1AB0..1ABD    ; Diacritic # Mn  [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
-1ABE          ; Diacritic # Me       COMBINING PARENTHESES OVERLAY
-1AC1..1ACB    ; Diacritic # Mn  [11] COMBINING LEFT PARENTHESIS ABOVE LEFT..COMBINING TRIPLE ACUTE ACCENT
-1B34          ; Diacritic # Mn       BALINESE SIGN REREKAN
-1B44          ; Diacritic # Mc       BALINESE ADEG ADEG
-1B6B..1B73    ; Diacritic # Mn   [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
-1BAA          ; Diacritic # Mc       SUNDANESE SIGN PAMAAEH
-1BAB          ; Diacritic # Mn       SUNDANESE SIGN VIRAMA
-1C36..1C37    ; Diacritic # Mn   [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
-1C78..1C7D    ; Diacritic # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
-1CD0..1CD2    ; Diacritic # Mn   [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
-1CD3          ; Diacritic # Po       VEDIC SIGN NIHSHVASA
-1CD4..1CE0    ; Diacritic # Mn  [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
-1CE1          ; Diacritic # Mc       VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
-1CE2..1CE8    ; Diacritic # Mn   [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
-1CED          ; Diacritic # Mn       VEDIC SIGN TIRYAK
-1CF4          ; Diacritic # Mn       VEDIC TONE CANDRA ABOVE
-1CF7          ; Diacritic # Mc       VEDIC SIGN ATIKRAMA
-1CF8..1CF9    ; Diacritic # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
-1D2C..1D6A    ; Diacritic # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
-1DC4..1DCF    ; Diacritic # Mn  [12] COMBINING MACRON-ACUTE..COMBINING ZIGZAG BELOW
-1DF5..1DFF    ; Diacritic # Mn  [11] COMBINING UP TACK ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
-1FBD          ; Diacritic # Sk       GREEK KORONIS
-1FBF..1FC1    ; Diacritic # Sk   [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
-1FCD..1FCF    ; Diacritic # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
-1FDD..1FDF    ; Diacritic # Sk   [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
-1FED..1FEF    ; Diacritic # Sk   [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
-1FFD..1FFE    ; Diacritic # Sk   [2] GREEK OXIA..GREEK DASIA
-2CEF..2CF1    ; Diacritic # Mn   [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS
-2E2F          ; Diacritic # Lm       VERTICAL TILDE
-302A..302D    ; Diacritic # Mn   [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
-302E..302F    ; Diacritic # Mc   [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
-3099..309A    ; Diacritic # Mn   [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309B..309C    ; Diacritic # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-30FC          ; Diacritic # Lm       KATAKANA-HIRAGANA PROLONGED SOUND MARK
-A66F          ; Diacritic # Mn       COMBINING CYRILLIC VZMET
-A67C..A67D    ; Diacritic # Mn   [2] COMBINING CYRILLIC KAVYKA..COMBINING CYRILLIC PAYEROK
-A67F          ; Diacritic # Lm       CYRILLIC PAYEROK
-A69C..A69D    ; Diacritic # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
-A6F0..A6F1    ; Diacritic # Mn   [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
-A700..A716    ; Diacritic # Sk  [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
-A717..A71F    ; Diacritic # Lm   [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
-A720..A721    ; Diacritic # Sk   [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
-A788          ; Diacritic # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
-A789..A78A    ; Diacritic # Sk   [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
-A7F8..A7F9    ; Diacritic # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
-A8C4          ; Diacritic # Mn       SAURASHTRA SIGN VIRAMA
-A8E0..A8F1    ; Diacritic # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
-A92B..A92D    ; Diacritic # Mn   [3] KAYAH LI TONE PLOPHU..KAYAH LI TONE CALYA PLOPHU
-A92E          ; Diacritic # Po       KAYAH LI SIGN CWI
-A953          ; Diacritic # Mc       REJANG VIRAMA
-A9B3          ; Diacritic # Mn       JAVANESE SIGN CECAK TELU
-A9C0          ; Diacritic # Mc       JAVANESE PANGKON
-A9E5          ; Diacritic # Mn       MYANMAR SIGN SHAN SAW
-AA7B          ; Diacritic # Mc       MYANMAR SIGN PAO KAREN TONE
-AA7C          ; Diacritic # Mn       MYANMAR SIGN TAI LAING TONE-2
-AA7D          ; Diacritic # Mc       MYANMAR SIGN TAI LAING TONE-5
-AABF          ; Diacritic # Mn       TAI VIET TONE MAI EK
-AAC0          ; Diacritic # Lo       TAI VIET TONE MAI NUENG
-AAC1          ; Diacritic # Mn       TAI VIET TONE MAI THO
-AAC2          ; Diacritic # Lo       TAI VIET TONE MAI SONG
-AAF6          ; Diacritic # Mn       MEETEI MAYEK VIRAMA
-AB5B          ; Diacritic # Sk       MODIFIER BREVE WITH INVERTED BREVE
-AB5C..AB5F    ; Diacritic # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
-AB69          ; Diacritic # Lm       MODIFIER LETTER SMALL TURNED W
-AB6A..AB6B    ; Diacritic # Sk   [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK
-ABEC          ; Diacritic # Mc       MEETEI MAYEK LUM IYEK
-ABED          ; Diacritic # Mn       MEETEI MAYEK APUN IYEK
-FB1E          ; Diacritic # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
-FE20..FE2F    ; Diacritic # Mn  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
-FF3E          ; Diacritic # Sk       FULLWIDTH CIRCUMFLEX ACCENT
-FF40          ; Diacritic # Sk       FULLWIDTH GRAVE ACCENT
-FF70          ; Diacritic # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF9E..FF9F    ; Diacritic # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-FFE3          ; Diacritic # Sk       FULLWIDTH MACRON
-102E0         ; Diacritic # Mn       COPTIC EPACT THOUSANDS MARK
-10780..10785  ; Diacritic # Lm   [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
-10787..107B0  ; Diacritic # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
-107B2..107BA  ; Diacritic # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
-10AE5..10AE6  ; Diacritic # Mn   [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
-10D22..10D23  ; Diacritic # Lo   [2] HANIFI ROHINGYA MARK SAKIN..HANIFI ROHINGYA MARK NA KHONNA
-10D24..10D27  ; Diacritic # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
-10EFD..10EFF  ; Diacritic # Mn   [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
-10F46..10F50  ; Diacritic # Mn  [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
-10F82..10F85  ; Diacritic # Mn   [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
-11046         ; Diacritic # Mn       BRAHMI VIRAMA
-11070         ; Diacritic # Mn       BRAHMI SIGN OLD TAMIL VIRAMA
-110B9..110BA  ; Diacritic # Mn   [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
-11133..11134  ; Diacritic # Mn   [2] CHAKMA VIRAMA..CHAKMA MAAYYAA
-11173         ; Diacritic # Mn       MAHAJANI SIGN NUKTA
-111C0         ; Diacritic # Mc       SHARADA SIGN VIRAMA
-111CA..111CC  ; Diacritic # Mn   [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK
-11235         ; Diacritic # Mc       KHOJKI SIGN VIRAMA
-11236         ; Diacritic # Mn       KHOJKI SIGN NUKTA
-112E9..112EA  ; Diacritic # Mn   [2] KHUDAWADI SIGN NUKTA..KHUDAWADI SIGN VIRAMA
-1133C         ; Diacritic # Mn       GRANTHA SIGN NUKTA
-1134D         ; Diacritic # Mc       GRANTHA SIGN VIRAMA
-11366..1136C  ; Diacritic # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
-11370..11374  ; Diacritic # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
-11442         ; Diacritic # Mn       NEWA SIGN VIRAMA
-11446         ; Diacritic # Mn       NEWA SIGN NUKTA
-114C2..114C3  ; Diacritic # Mn   [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
-115BF..115C0  ; Diacritic # Mn   [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
-1163F         ; Diacritic # Mn       MODI SIGN VIRAMA
-116B6         ; Diacritic # Mc       TAKRI SIGN VIRAMA
-116B7         ; Diacritic # Mn       TAKRI SIGN NUKTA
-1172B         ; Diacritic # Mn       AHOM SIGN KILLER
-11839..1183A  ; Diacritic # Mn   [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
-1193D         ; Diacritic # Mc       DIVES AKURU SIGN HALANTA
-1193E         ; Diacritic # Mn       DIVES AKURU VIRAMA
-11943         ; Diacritic # Mn       DIVES AKURU SIGN NUKTA
-119E0         ; Diacritic # Mn       NANDINAGARI SIGN VIRAMA
-11A34         ; Diacritic # Mn       ZANABAZAR SQUARE SIGN VIRAMA
-11A47         ; Diacritic # Mn       ZANABAZAR SQUARE SUBJOINER
-11A99         ; Diacritic # Mn       SOYOMBO SUBJOINER
-11C3F         ; Diacritic # Mn       BHAIKSUKI SIGN VIRAMA
-11D42         ; Diacritic # Mn       MASARAM GONDI SIGN NUKTA
-11D44..11D45  ; Diacritic # Mn   [2] MASARAM GONDI SIGN HALANTA..MASARAM GONDI VIRAMA
-11D97         ; Diacritic # Mn       GUNJALA GONDI VIRAMA
-13447..13455  ; Diacritic # Mn  [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
-16AF0..16AF4  ; Diacritic # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
-16B30..16B36  ; Diacritic # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
-16F8F..16F92  ; Diacritic # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
-16F93..16F9F  ; Diacritic # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
-16FF0..16FF1  ; Diacritic # Mc   [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
-1AFF0..1AFF3  ; Diacritic # Lm   [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
-1AFF5..1AFFB  ; Diacritic # Lm   [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
-1AFFD..1AFFE  ; Diacritic # Lm   [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
-1CF00..1CF2D  ; Diacritic # Mn  [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
-1CF30..1CF46  ; Diacritic # Mn  [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
-1D167..1D169  ; Diacritic # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
-1D16D..1D172  ; Diacritic # Mc   [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
-1D17B..1D182  ; Diacritic # Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
-1D185..1D18B  ; Diacritic # Mn   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
-1D1AA..1D1AD  ; Diacritic # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
-1E030..1E06D  ; Diacritic # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
-1E130..1E136  ; Diacritic # Mn   [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
-1E2AE         ; Diacritic # Mn       TOTO SIGN RISING TONE
-1E2EC..1E2EF  ; Diacritic # Mn   [4] WANCHO TONE TUP..WANCHO TONE KOINI
-1E8D0..1E8D6  ; Diacritic # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
-1E944..1E946  ; Diacritic # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
-1E948..1E94A  ; Diacritic # Mn   [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA
-
-# Total code points: 1144
-
-# ================================================
-
-00B7          ; Extender # Po       MIDDLE DOT
-02D0..02D1    ; Extender # Lm   [2] MODIFIER LETTER TRIANGULAR COLON..MODIFIER LETTER HALF TRIANGULAR COLON
-0640          ; Extender # Lm       ARABIC TATWEEL
-07FA          ; Extender # Lm       NKO LAJANYALAN
-0B55          ; Extender # Mn       ORIYA SIGN OVERLINE
-0E46          ; Extender # Lm       THAI CHARACTER MAIYAMOK
-0EC6          ; Extender # Lm       LAO KO LA
-180A          ; Extender # Po       MONGOLIAN NIRUGU
-1843          ; Extender # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
-1AA7          ; Extender # Lm       TAI THAM SIGN MAI YAMOK
-1C36          ; Extender # Mn       LEPCHA SIGN RAN
-1C7B          ; Extender # Lm       OL CHIKI RELAA
-3005          ; Extender # Lm       IDEOGRAPHIC ITERATION MARK
-3031..3035    ; Extender # Lm   [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
-309D..309E    ; Extender # Lm   [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
-30FC..30FE    ; Extender # Lm   [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
-A015          ; Extender # Lm       YI SYLLABLE WU
-A60C          ; Extender # Lm       VAI SYLLABLE LENGTHENER
-A9CF          ; Extender # Lm       JAVANESE PANGRANGKEP
-A9E6          ; Extender # Lm       MYANMAR MODIFIER LETTER SHAN REDUPLICATION
-AA70          ; Extender # Lm       MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
-AADD          ; Extender # Lm       TAI VIET SYMBOL SAM
-AAF3..AAF4    ; Extender # Lm   [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
-FF70          ; Extender # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-10781..10782  ; Extender # Lm   [2] MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON..MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON
-1135D         ; Extender # Lo       GRANTHA SIGN PLUTA
-115C6..115C8  ; Extender # Po   [3] SIDDHAM REPETITION MARK-1..SIDDHAM REPETITION MARK-3
-11A98         ; Extender # Mn       SOYOMBO GEMINATION MARK
-16B42..16B43  ; Extender # Lm   [2] PAHAWH HMONG SIGN VOS NRUA..PAHAWH HMONG SIGN IB YAM
-16FE0..16FE1  ; Extender # Lm   [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
-16FE3         ; Extender # Lm       OLD CHINESE ITERATION MARK
-1E13C..1E13D  ; Extender # Lm   [2] NYIAKENG PUACHUE HMONG SIGN XW XW..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
-1E944..1E946  ; Extender # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
-
-# Total code points: 50
-
-# ================================================
-
-00AA          ; Other_Lowercase # Lo       FEMININE ORDINAL INDICATOR
-00BA          ; Other_Lowercase # Lo       MASCULINE ORDINAL INDICATOR
-02B0..02B8    ; Other_Lowercase # Lm   [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
-02C0..02C1    ; Other_Lowercase # Lm   [2] MODIFIER LETTER GLOTTAL STOP..MODIFIER LETTER REVERSED GLOTTAL STOP
-02E0..02E4    ; Other_Lowercase # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-0345          ; Other_Lowercase # Mn       COMBINING GREEK YPOGEGRAMMENI
-037A          ; Other_Lowercase # Lm       GREEK YPOGEGRAMMENI
-10FC          ; Other_Lowercase # Lm       MODIFIER LETTER GEORGIAN NAR
-1D2C..1D6A    ; Other_Lowercase # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
-1D78          ; Other_Lowercase # Lm       MODIFIER LETTER CYRILLIC EN
-1D9B..1DBF    ; Other_Lowercase # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
-2071          ; Other_Lowercase # Lm       SUPERSCRIPT LATIN SMALL LETTER I
-207F          ; Other_Lowercase # Lm       SUPERSCRIPT LATIN SMALL LETTER N
-2090..209C    ; Other_Lowercase # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
-2170..217F    ; Other_Lowercase # Nl  [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
-24D0..24E9    ; Other_Lowercase # So  [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
-2C7C..2C7D    ; Other_Lowercase # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
-A69C..A69D    ; Other_Lowercase # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
-A770          ; Other_Lowercase # Lm       MODIFIER LETTER US
-A7F2..A7F4    ; Other_Lowercase # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
-A7F8..A7F9    ; Other_Lowercase # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
-AB5C..AB5F    ; Other_Lowercase # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
-AB69          ; Other_Lowercase # Lm       MODIFIER LETTER SMALL TURNED W
-10780         ; Other_Lowercase # Lm       MODIFIER LETTER SMALL CAPITAL AA
-10783..10785  ; Other_Lowercase # Lm   [3] MODIFIER LETTER SMALL AE..MODIFIER LETTER SMALL B WITH HOOK
-10787..107B0  ; Other_Lowercase # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
-107B2..107BA  ; Other_Lowercase # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
-1E030..1E06D  ; Other_Lowercase # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
-
-# Total code points: 311
-
-# ================================================
-
-2160..216F    ; Other_Uppercase # Nl  [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND
-24B6..24CF    ; Other_Uppercase # So  [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z
-1F130..1F149  ; Other_Uppercase # So  [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z
-1F150..1F169  ; Other_Uppercase # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
-1F170..1F189  ; Other_Uppercase # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
-
-# Total code points: 120
-
-# ================================================
-
-FDD0..FDEF    ; Noncharacter_Code_Point # Cn  [32] <noncharacter-FDD0>..<noncharacter-FDEF>
-FFFE..FFFF    ; Noncharacter_Code_Point # Cn   [2] <noncharacter-FFFE>..<noncharacter-FFFF>
-1FFFE..1FFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-1FFFE>..<noncharacter-1FFFF>
-2FFFE..2FFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-2FFFE>..<noncharacter-2FFFF>
-3FFFE..3FFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-3FFFE>..<noncharacter-3FFFF>
-4FFFE..4FFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-4FFFE>..<noncharacter-4FFFF>
-5FFFE..5FFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-5FFFE>..<noncharacter-5FFFF>
-6FFFE..6FFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-6FFFE>..<noncharacter-6FFFF>
-7FFFE..7FFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-7FFFE>..<noncharacter-7FFFF>
-8FFFE..8FFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-8FFFE>..<noncharacter-8FFFF>
-9FFFE..9FFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-9FFFE>..<noncharacter-9FFFF>
-AFFFE..AFFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-AFFFE>..<noncharacter-AFFFF>
-BFFFE..BFFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-BFFFE>..<noncharacter-BFFFF>
-CFFFE..CFFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-CFFFE>..<noncharacter-CFFFF>
-DFFFE..DFFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-DFFFE>..<noncharacter-DFFFF>
-EFFFE..EFFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-EFFFE>..<noncharacter-EFFFF>
-FFFFE..FFFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-FFFFE>..<noncharacter-FFFFF>
-10FFFE..10FFFF; Noncharacter_Code_Point # Cn   [2] <noncharacter-10FFFE>..<noncharacter-10FFFF>
-
-# Total code points: 66
-
-# ================================================
-
-09BE          ; Other_Grapheme_Extend # Mc       BENGALI VOWEL SIGN AA
-09D7          ; Other_Grapheme_Extend # Mc       BENGALI AU LENGTH MARK
-0B3E          ; Other_Grapheme_Extend # Mc       ORIYA VOWEL SIGN AA
-0B57          ; Other_Grapheme_Extend # Mc       ORIYA AU LENGTH MARK
-0BBE          ; Other_Grapheme_Extend # Mc       TAMIL VOWEL SIGN AA
-0BD7          ; Other_Grapheme_Extend # Mc       TAMIL AU LENGTH MARK
-0CC2          ; Other_Grapheme_Extend # Mc       KANNADA VOWEL SIGN UU
-0CD5..0CD6    ; Other_Grapheme_Extend # Mc   [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
-0D3E          ; Other_Grapheme_Extend # Mc       MALAYALAM VOWEL SIGN AA
-0D57          ; Other_Grapheme_Extend # Mc       MALAYALAM AU LENGTH MARK
-0DCF          ; Other_Grapheme_Extend # Mc       SINHALA VOWEL SIGN AELA-PILLA
-0DDF          ; Other_Grapheme_Extend # Mc       SINHALA VOWEL SIGN GAYANUKITTA
-1B35          ; Other_Grapheme_Extend # Mc       BALINESE VOWEL SIGN TEDUNG
-200C          ; Other_Grapheme_Extend # Cf       ZERO WIDTH NON-JOINER
-302E..302F    ; Other_Grapheme_Extend # Mc   [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
-FF9E..FF9F    ; Other_Grapheme_Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-1133E         ; Other_Grapheme_Extend # Mc       GRANTHA VOWEL SIGN AA
-11357         ; Other_Grapheme_Extend # Mc       GRANTHA AU LENGTH MARK
-114B0         ; Other_Grapheme_Extend # Mc       TIRHUTA VOWEL SIGN AA
-114BD         ; Other_Grapheme_Extend # Mc       TIRHUTA VOWEL SIGN SHORT O
-115AF         ; Other_Grapheme_Extend # Mc       SIDDHAM VOWEL SIGN AA
-11930         ; Other_Grapheme_Extend # Mc       DIVES AKURU VOWEL SIGN AA
-1D165         ; Other_Grapheme_Extend # Mc       MUSICAL SYMBOL COMBINING STEM
-1D16E..1D172  ; Other_Grapheme_Extend # Mc   [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
-E0020..E007F  ; Other_Grapheme_Extend # Cf  [96] TAG SPACE..CANCEL TAG
-
-# Total code points: 127
-
-# ================================================
-
-2FF0..2FF1    ; IDS_Binary_Operator # So   [2] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
-2FF4..2FFD    ; IDS_Binary_Operator # So  [10] IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND..IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER RIGHT
-31EF          ; IDS_Binary_Operator # So       IDEOGRAPHIC DESCRIPTION CHARACTER SUBTRACTION
-
-# Total code points: 13
-
-# ================================================
-
-2FF2..2FF3    ; IDS_Trinary_Operator # So   [2] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
-
-# Total code points: 2
-
-# ================================================
-
-2FFE..2FFF    ; IDS_Unary_Operator # So   [2] IDEOGRAPHIC DESCRIPTION CHARACTER HORIZONTAL REFLECTION..IDEOGRAPHIC DESCRIPTION CHARACTER ROTATION
-
-# Total code points: 2
-
-# ================================================
-
-2E80..2E99    ; Radical # So  [26] CJK RADICAL REPEAT..CJK RADICAL RAP
-2E9B..2EF3    ; Radical # So  [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
-2F00..2FD5    ; Radical # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
-
-# Total code points: 329
-
-# ================================================
-
-3400..4DBF    ; Unified_Ideograph # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
-4E00..9FFF    ; Unified_Ideograph # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF
-FA0E..FA0F    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
-FA11          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA11
-FA13..FA14    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
-FA1F          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA1F
-FA21          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA21
-FA23..FA24    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24
-FA27..FA29    ; Unified_Ideograph # Lo   [3] CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29
-20000..2A6DF  ; Unified_Ideograph # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
-2A700..2B739  ; Unified_Ideograph # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
-2B740..2B81D  ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
-2B820..2CEA1  ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
-2CEB0..2EBE0  ; Unified_Ideograph # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
-2EBF0..2EE5D  ; Unified_Ideograph # Lo [622] CJK UNIFIED IDEOGRAPH-2EBF0..CJK UNIFIED IDEOGRAPH-2EE5D
-30000..3134A  ; Unified_Ideograph # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
-31350..323AF  ; Unified_Ideograph # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
-
-# Total code points: 97680
-
-# ================================================
-
-034F          ; Other_Default_Ignorable_Code_Point # Mn       COMBINING GRAPHEME JOINER
-115F..1160    ; Other_Default_Ignorable_Code_Point # Lo   [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER
-17B4..17B5    ; Other_Default_Ignorable_Code_Point # Mn   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
-2065          ; Other_Default_Ignorable_Code_Point # Cn       <reserved-2065>
-3164          ; Other_Default_Ignorable_Code_Point # Lo       HANGUL FILLER
-FFA0          ; Other_Default_Ignorable_Code_Point # Lo       HALFWIDTH HANGUL FILLER
-FFF0..FFF8    ; Other_Default_Ignorable_Code_Point # Cn   [9] <reserved-FFF0>..<reserved-FFF8>
-E0000         ; Other_Default_Ignorable_Code_Point # Cn       <reserved-E0000>
-E0002..E001F  ; Other_Default_Ignorable_Code_Point # Cn  [30] <reserved-E0002>..<reserved-E001F>
-E0080..E00FF  ; Other_Default_Ignorable_Code_Point # Cn [128] <reserved-E0080>..<reserved-E00FF>
-E01F0..E0FFF  ; Other_Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
-
-# Total code points: 3776
-
-# ================================================
-
-0149          ; Deprecated # L&       LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-0673          ; Deprecated # Lo       ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
-0F77          ; Deprecated # Mn       TIBETAN VOWEL SIGN VOCALIC RR
-0F79          ; Deprecated # Mn       TIBETAN VOWEL SIGN VOCALIC LL
-17A3..17A4    ; Deprecated # Lo   [2] KHMER INDEPENDENT VOWEL QAQ..KHMER INDEPENDENT VOWEL QAA
-206A..206F    ; Deprecated # Cf   [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
-2329          ; Deprecated # Ps       LEFT-POINTING ANGLE BRACKET
-232A          ; Deprecated # Pe       RIGHT-POINTING ANGLE BRACKET
-E0001         ; Deprecated # Cf       LANGUAGE TAG
-
-# Total code points: 15
-
-# ================================================
-
-0069..006A    ; Soft_Dotted # L&   [2] LATIN SMALL LETTER I..LATIN SMALL LETTER J
-012F          ; Soft_Dotted # L&       LATIN SMALL LETTER I WITH OGONEK
-0249          ; Soft_Dotted # L&       LATIN SMALL LETTER J WITH STROKE
-0268          ; Soft_Dotted # L&       LATIN SMALL LETTER I WITH STROKE
-029D          ; Soft_Dotted # L&       LATIN SMALL LETTER J WITH CROSSED-TAIL
-02B2          ; Soft_Dotted # Lm       MODIFIER LETTER SMALL J
-03F3          ; Soft_Dotted # L&       GREEK LETTER YOT
-0456          ; Soft_Dotted # L&       CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0458          ; Soft_Dotted # L&       CYRILLIC SMALL LETTER JE
-1D62          ; Soft_Dotted # Lm       LATIN SUBSCRIPT SMALL LETTER I
-1D96          ; Soft_Dotted # L&       LATIN SMALL LETTER I WITH RETROFLEX HOOK
-1DA4          ; Soft_Dotted # Lm       MODIFIER LETTER SMALL I WITH STROKE
-1DA8          ; Soft_Dotted # Lm       MODIFIER LETTER SMALL J WITH CROSSED-TAIL
-1E2D          ; Soft_Dotted # L&       LATIN SMALL LETTER I WITH TILDE BELOW
-1ECB          ; Soft_Dotted # L&       LATIN SMALL LETTER I WITH DOT BELOW
-2071          ; Soft_Dotted # Lm       SUPERSCRIPT LATIN SMALL LETTER I
-2148..2149    ; Soft_Dotted # L&   [2] DOUBLE-STRUCK ITALIC SMALL I..DOUBLE-STRUCK ITALIC SMALL J
-2C7C          ; Soft_Dotted # Lm       LATIN SUBSCRIPT SMALL LETTER J
-1D422..1D423  ; Soft_Dotted # L&   [2] MATHEMATICAL BOLD SMALL I..MATHEMATICAL BOLD SMALL J
-1D456..1D457  ; Soft_Dotted # L&   [2] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL J
-1D48A..1D48B  ; Soft_Dotted # L&   [2] MATHEMATICAL BOLD ITALIC SMALL I..MATHEMATICAL BOLD ITALIC SMALL J
-1D4BE..1D4BF  ; Soft_Dotted # L&   [2] MATHEMATICAL SCRIPT SMALL I..MATHEMATICAL SCRIPT SMALL J
-1D4F2..1D4F3  ; Soft_Dotted # L&   [2] MATHEMATICAL BOLD SCRIPT SMALL I..MATHEMATICAL BOLD SCRIPT SMALL J
-1D526..1D527  ; Soft_Dotted # L&   [2] MATHEMATICAL FRAKTUR SMALL I..MATHEMATICAL FRAKTUR SMALL J
-1D55A..1D55B  ; Soft_Dotted # L&   [2] MATHEMATICAL DOUBLE-STRUCK SMALL I..MATHEMATICAL DOUBLE-STRUCK SMALL J
-1D58E..1D58F  ; Soft_Dotted # L&   [2] MATHEMATICAL BOLD FRAKTUR SMALL I..MATHEMATICAL BOLD FRAKTUR SMALL J
-1D5C2..1D5C3  ; Soft_Dotted # L&   [2] MATHEMATICAL SANS-SERIF SMALL I..MATHEMATICAL SANS-SERIF SMALL J
-1D5F6..1D5F7  ; Soft_Dotted # L&   [2] MATHEMATICAL SANS-SERIF BOLD SMALL I..MATHEMATICAL SANS-SERIF BOLD SMALL J
-1D62A..1D62B  ; Soft_Dotted # L&   [2] MATHEMATICAL SANS-SERIF ITALIC SMALL I..MATHEMATICAL SANS-SERIF ITALIC SMALL J
-1D65E..1D65F  ; Soft_Dotted # L&   [2] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
-1D692..1D693  ; Soft_Dotted # L&   [2] MATHEMATICAL MONOSPACE SMALL I..MATHEMATICAL MONOSPACE SMALL J
-1DF1A         ; Soft_Dotted # L&       LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK
-1E04C..1E04D  ; Soft_Dotted # Lm   [2] MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I..MODIFIER LETTER CYRILLIC SMALL JE
-1E068         ; Soft_Dotted # Lm       CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-
-# Total code points: 50
-
-# ================================================
-
-0E40..0E44    ; Logical_Order_Exception # Lo   [5] THAI CHARACTER SARA E..THAI CHARACTER SARA AI MAIMALAI
-0EC0..0EC4    ; Logical_Order_Exception # Lo   [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
-19B5..19B7    ; Logical_Order_Exception # Lo   [3] NEW TAI LUE VOWEL SIGN E..NEW TAI LUE VOWEL SIGN O
-19BA          ; Logical_Order_Exception # Lo       NEW TAI LUE VOWEL SIGN AY
-AAB5..AAB6    ; Logical_Order_Exception # Lo   [2] TAI VIET VOWEL E..TAI VIET VOWEL O
-AAB9          ; Logical_Order_Exception # Lo       TAI VIET VOWEL UEA
-AABB..AABC    ; Logical_Order_Exception # Lo   [2] TAI VIET VOWEL AUE..TAI VIET VOWEL AY
-
-# Total code points: 19
-
-# ================================================
-
-1885..1886    ; Other_ID_Start # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
-2118          ; Other_ID_Start # Sm       SCRIPT CAPITAL P
-212E          ; Other_ID_Start # So       ESTIMATED SYMBOL
-309B..309C    ; Other_ID_Start # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-
-# Total code points: 6
-
-# ================================================
-
-00B7          ; Other_ID_Continue # Po       MIDDLE DOT
-0387          ; Other_ID_Continue # Po       GREEK ANO TELEIA
-1369..1371    ; Other_ID_Continue # No   [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE
-19DA          ; Other_ID_Continue # No       NEW TAI LUE THAM DIGIT ONE
-200C..200D    ; Other_ID_Continue # Cf   [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
-30FB          ; Other_ID_Continue # Po       KATAKANA MIDDLE DOT
-FF65          ; Other_ID_Continue # Po       HALFWIDTH KATAKANA MIDDLE DOT
-
-# Total code points: 16
-
-# ================================================
-
-00B2..00B3    ; ID_Compat_Math_Continue # No   [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
-00B9          ; ID_Compat_Math_Continue # No       SUPERSCRIPT ONE
-2070          ; ID_Compat_Math_Continue # No       SUPERSCRIPT ZERO
-2074..2079    ; ID_Compat_Math_Continue # No   [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
-207A..207C    ; ID_Compat_Math_Continue # Sm   [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
-207D          ; ID_Compat_Math_Continue # Ps       SUPERSCRIPT LEFT PARENTHESIS
-207E          ; ID_Compat_Math_Continue # Pe       SUPERSCRIPT RIGHT PARENTHESIS
-2080..2089    ; ID_Compat_Math_Continue # No  [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
-208A..208C    ; ID_Compat_Math_Continue # Sm   [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
-208D          ; ID_Compat_Math_Continue # Ps       SUBSCRIPT LEFT PARENTHESIS
-208E          ; ID_Compat_Math_Continue # Pe       SUBSCRIPT RIGHT PARENTHESIS
-2202          ; ID_Compat_Math_Continue # Sm       PARTIAL DIFFERENTIAL
-2207          ; ID_Compat_Math_Continue # Sm       NABLA
-221E          ; ID_Compat_Math_Continue # Sm       INFINITY
-1D6C1         ; ID_Compat_Math_Continue # Sm       MATHEMATICAL BOLD NABLA
-1D6DB         ; ID_Compat_Math_Continue # Sm       MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
-1D6FB         ; ID_Compat_Math_Continue # Sm       MATHEMATICAL ITALIC NABLA
-1D715         ; ID_Compat_Math_Continue # Sm       MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
-1D735         ; ID_Compat_Math_Continue # Sm       MATHEMATICAL BOLD ITALIC NABLA
-1D74F         ; ID_Compat_Math_Continue # Sm       MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
-1D76F         ; ID_Compat_Math_Continue # Sm       MATHEMATICAL SANS-SERIF BOLD NABLA
-1D789         ; ID_Compat_Math_Continue # Sm       MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
-1D7A9         ; ID_Compat_Math_Continue # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
-1D7C3         ; ID_Compat_Math_Continue # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
-
-# Total code points: 43
-
-# ================================================
-
-2202          ; ID_Compat_Math_Start # Sm       PARTIAL DIFFERENTIAL
-2207          ; ID_Compat_Math_Start # Sm       NABLA
-221E          ; ID_Compat_Math_Start # Sm       INFINITY
-1D6C1         ; ID_Compat_Math_Start # Sm       MATHEMATICAL BOLD NABLA
-1D6DB         ; ID_Compat_Math_Start # Sm       MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
-1D6FB         ; ID_Compat_Math_Start # Sm       MATHEMATICAL ITALIC NABLA
-1D715         ; ID_Compat_Math_Start # Sm       MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
-1D735         ; ID_Compat_Math_Start # Sm       MATHEMATICAL BOLD ITALIC NABLA
-1D74F         ; ID_Compat_Math_Start # Sm       MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
-1D76F         ; ID_Compat_Math_Start # Sm       MATHEMATICAL SANS-SERIF BOLD NABLA
-1D789         ; ID_Compat_Math_Start # Sm       MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
-1D7A9         ; ID_Compat_Math_Start # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
-1D7C3         ; ID_Compat_Math_Start # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
-
-# Total code points: 13
-
-# ================================================
-
-0021          ; Sentence_Terminal # Po       EXCLAMATION MARK
-002E          ; Sentence_Terminal # Po       FULL STOP
-003F          ; Sentence_Terminal # Po       QUESTION MARK
-0589          ; Sentence_Terminal # Po       ARMENIAN FULL STOP
-061D..061F    ; Sentence_Terminal # Po   [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK
-06D4          ; Sentence_Terminal # Po       ARABIC FULL STOP
-0700..0702    ; Sentence_Terminal # Po   [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP
-07F9          ; Sentence_Terminal # Po       NKO EXCLAMATION MARK
-0837          ; Sentence_Terminal # Po       SAMARITAN PUNCTUATION MELODIC QITSA
-0839          ; Sentence_Terminal # Po       SAMARITAN PUNCTUATION QITSA
-083D..083E    ; Sentence_Terminal # Po   [2] SAMARITAN PUNCTUATION SOF MASHFAAT..SAMARITAN PUNCTUATION ANNAAU
-0964..0965    ; Sentence_Terminal # Po   [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
-104A..104B    ; Sentence_Terminal # Po   [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION
-1362          ; Sentence_Terminal # Po       ETHIOPIC FULL STOP
-1367..1368    ; Sentence_Terminal # Po   [2] ETHIOPIC QUESTION MARK..ETHIOPIC PARAGRAPH SEPARATOR
-166E          ; Sentence_Terminal # Po       CANADIAN SYLLABICS FULL STOP
-1735..1736    ; Sentence_Terminal # Po   [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
-17D4..17D5    ; Sentence_Terminal # Po   [2] KHMER SIGN KHAN..KHMER SIGN BARIYOOSAN
-1803          ; Sentence_Terminal # Po       MONGOLIAN FULL STOP
-1809          ; Sentence_Terminal # Po       MONGOLIAN MANCHU FULL STOP
-1944..1945    ; Sentence_Terminal # Po   [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
-1AA8..1AAB    ; Sentence_Terminal # Po   [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU
-1B5A..1B5B    ; Sentence_Terminal # Po   [2] BALINESE PANTI..BALINESE PAMADA
-1B5E..1B5F    ; Sentence_Terminal # Po   [2] BALINESE CARIK SIKI..BALINESE CARIK PAREREN
-1B7D..1B7E    ; Sentence_Terminal # Po   [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
-1C3B..1C3C    ; Sentence_Terminal # Po   [2] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION NYET THYOOM TA-ROL
-1C7E..1C7F    ; Sentence_Terminal # Po   [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
-203C..203D    ; Sentence_Terminal # Po   [2] DOUBLE EXCLAMATION MARK..INTERROBANG
-2047..2049    ; Sentence_Terminal # Po   [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
-2E2E          ; Sentence_Terminal # Po       REVERSED QUESTION MARK
-2E3C          ; Sentence_Terminal # Po       STENOGRAPHIC FULL STOP
-2E53..2E54    ; Sentence_Terminal # Po   [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK
-3002          ; Sentence_Terminal # Po       IDEOGRAPHIC FULL STOP
-A4FF          ; Sentence_Terminal # Po       LISU PUNCTUATION FULL STOP
-A60E..A60F    ; Sentence_Terminal # Po   [2] VAI FULL STOP..VAI QUESTION MARK
-A6F3          ; Sentence_Terminal # Po       BAMUM FULL STOP
-A6F7          ; Sentence_Terminal # Po       BAMUM QUESTION MARK
-A876..A877    ; Sentence_Terminal # Po   [2] PHAGS-PA MARK SHAD..PHAGS-PA MARK DOUBLE SHAD
-A8CE..A8CF    ; Sentence_Terminal # Po   [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
-A92F          ; Sentence_Terminal # Po       KAYAH LI SIGN SHYA
-A9C8..A9C9    ; Sentence_Terminal # Po   [2] JAVANESE PADA LINGSA..JAVANESE PADA LUNGSI
-AA5D..AA5F    ; Sentence_Terminal # Po   [3] CHAM PUNCTUATION DANDA..CHAM PUNCTUATION TRIPLE DANDA
-AAF0..AAF1    ; Sentence_Terminal # Po   [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM
-ABEB          ; Sentence_Terminal # Po       MEETEI MAYEK CHEIKHEI
-FE52          ; Sentence_Terminal # Po       SMALL FULL STOP
-FE56..FE57    ; Sentence_Terminal # Po   [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK
-FF01          ; Sentence_Terminal # Po       FULLWIDTH EXCLAMATION MARK
-FF0E          ; Sentence_Terminal # Po       FULLWIDTH FULL STOP
-FF1F          ; Sentence_Terminal # Po       FULLWIDTH QUESTION MARK
-FF61          ; Sentence_Terminal # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
-10A56..10A57  ; Sentence_Terminal # Po   [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA
-10F55..10F59  ; Sentence_Terminal # Po   [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
-10F86..10F89  ; Sentence_Terminal # Po   [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS
-11047..11048  ; Sentence_Terminal # Po   [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA
-110BE..110C1  ; Sentence_Terminal # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
-11141..11143  ; Sentence_Terminal # Po   [3] CHAKMA DANDA..CHAKMA QUESTION MARK
-111C5..111C6  ; Sentence_Terminal # Po   [2] SHARADA DANDA..SHARADA DOUBLE DANDA
-111CD         ; Sentence_Terminal # Po       SHARADA SUTRA MARK
-111DE..111DF  ; Sentence_Terminal # Po   [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2
-11238..11239  ; Sentence_Terminal # Po   [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA
-1123B..1123C  ; Sentence_Terminal # Po   [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK
-112A9         ; Sentence_Terminal # Po       MULTANI SECTION MARK
-1144B..1144C  ; Sentence_Terminal # Po   [2] NEWA DANDA..NEWA DOUBLE DANDA
-115C2..115C3  ; Sentence_Terminal # Po   [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA
-115C9..115D7  ; Sentence_Terminal # Po  [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
-11641..11642  ; Sentence_Terminal # Po   [2] MODI DANDA..MODI DOUBLE DANDA
-1173C..1173E  ; Sentence_Terminal # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
-11944         ; Sentence_Terminal # Po       DIVES AKURU DOUBLE DANDA
-11946         ; Sentence_Terminal # Po       DIVES AKURU END OF TEXT MARK
-11A42..11A43  ; Sentence_Terminal # Po   [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD
-11A9B..11A9C  ; Sentence_Terminal # Po   [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD
-11C41..11C42  ; Sentence_Terminal # Po   [2] BHAIKSUKI DANDA..BHAIKSUKI DOUBLE DANDA
-11EF7..11EF8  ; Sentence_Terminal # Po   [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
-11F43..11F44  ; Sentence_Terminal # Po   [2] KAWI DANDA..KAWI DOUBLE DANDA
-16A6E..16A6F  ; Sentence_Terminal # Po   [2] MRO DANDA..MRO DOUBLE DANDA
-16AF5         ; Sentence_Terminal # Po       BASSA VAH FULL STOP
-16B37..16B38  ; Sentence_Terminal # Po   [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB
-16B44         ; Sentence_Terminal # Po       PAHAWH HMONG SIGN XAUS
-16E98         ; Sentence_Terminal # Po       MEDEFAIDRIN FULL STOP
-1BC9F         ; Sentence_Terminal # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
-1DA88         ; Sentence_Terminal # Po       SIGNWRITING FULL STOP
-
-# Total code points: 156
-
-# ================================================
-
-180B..180D    ; Variation_Selector # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
-180F          ; Variation_Selector # Mn       MONGOLIAN FREE VARIATION SELECTOR FOUR
-FE00..FE0F    ; Variation_Selector # Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
-E0100..E01EF  ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
-
-# Total code points: 260
-
-# ================================================
-
-0009..000D    ; Pattern_White_Space # Cc   [5] <control-0009>..<control-000D>
-0020          ; Pattern_White_Space # Zs       SPACE
-0085          ; Pattern_White_Space # Cc       <control-0085>
-200E..200F    ; Pattern_White_Space # Cf   [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
-2028          ; Pattern_White_Space # Zl       LINE SEPARATOR
-2029          ; Pattern_White_Space # Zp       PARAGRAPH SEPARATOR
-
-# Total code points: 11
-
-# ================================================
-
-0021..0023    ; Pattern_Syntax # Po   [3] EXCLAMATION MARK..NUMBER SIGN
-0024          ; Pattern_Syntax # Sc       DOLLAR SIGN
-0025..0027    ; Pattern_Syntax # Po   [3] PERCENT SIGN..APOSTROPHE
-0028          ; Pattern_Syntax # Ps       LEFT PARENTHESIS
-0029          ; Pattern_Syntax # Pe       RIGHT PARENTHESIS
-002A          ; Pattern_Syntax # Po       ASTERISK
-002B          ; Pattern_Syntax # Sm       PLUS SIGN
-002C          ; Pattern_Syntax # Po       COMMA
-002D          ; Pattern_Syntax # Pd       HYPHEN-MINUS
-002E..002F    ; Pattern_Syntax # Po   [2] FULL STOP..SOLIDUS
-003A..003B    ; Pattern_Syntax # Po   [2] COLON..SEMICOLON
-003C..003E    ; Pattern_Syntax # Sm   [3] LESS-THAN SIGN..GREATER-THAN SIGN
-003F..0040    ; Pattern_Syntax # Po   [2] QUESTION MARK..COMMERCIAL AT
-005B          ; Pattern_Syntax # Ps       LEFT SQUARE BRACKET
-005C          ; Pattern_Syntax # Po       REVERSE SOLIDUS
-005D          ; Pattern_Syntax # Pe       RIGHT SQUARE BRACKET
-005E          ; Pattern_Syntax # Sk       CIRCUMFLEX ACCENT
-0060          ; Pattern_Syntax # Sk       GRAVE ACCENT
-007B          ; Pattern_Syntax # Ps       LEFT CURLY BRACKET
-007C          ; Pattern_Syntax # Sm       VERTICAL LINE
-007D          ; Pattern_Syntax # Pe       RIGHT CURLY BRACKET
-007E          ; Pattern_Syntax # Sm       TILDE
-00A1          ; Pattern_Syntax # Po       INVERTED EXCLAMATION MARK
-00A2..00A5    ; Pattern_Syntax # Sc   [4] CENT SIGN..YEN SIGN
-00A6          ; Pattern_Syntax # So       BROKEN BAR
-00A7          ; Pattern_Syntax # Po       SECTION SIGN
-00A9          ; Pattern_Syntax # So       COPYRIGHT SIGN
-00AB          ; Pattern_Syntax # Pi       LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-00AC          ; Pattern_Syntax # Sm       NOT SIGN
-00AE          ; Pattern_Syntax # So       REGISTERED SIGN
-00B0          ; Pattern_Syntax # So       DEGREE SIGN
-00B1          ; Pattern_Syntax # Sm       PLUS-MINUS SIGN
-00B6          ; Pattern_Syntax # Po       PILCROW SIGN
-00BB          ; Pattern_Syntax # Pf       RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-00BF          ; Pattern_Syntax # Po       INVERTED QUESTION MARK
-00D7          ; Pattern_Syntax # Sm       MULTIPLICATION SIGN
-00F7          ; Pattern_Syntax # Sm       DIVISION SIGN
-2010..2015    ; Pattern_Syntax # Pd   [6] HYPHEN..HORIZONTAL BAR
-2016..2017    ; Pattern_Syntax # Po   [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE
-2018          ; Pattern_Syntax # Pi       LEFT SINGLE QUOTATION MARK
-2019          ; Pattern_Syntax # Pf       RIGHT SINGLE QUOTATION MARK
-201A          ; Pattern_Syntax # Ps       SINGLE LOW-9 QUOTATION MARK
-201B..201C    ; Pattern_Syntax # Pi   [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
-201D          ; Pattern_Syntax # Pf       RIGHT DOUBLE QUOTATION MARK
-201E          ; Pattern_Syntax # Ps       DOUBLE LOW-9 QUOTATION MARK
-201F          ; Pattern_Syntax # Pi       DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-2020..2027    ; Pattern_Syntax # Po   [8] DAGGER..HYPHENATION POINT
-2030..2038    ; Pattern_Syntax # Po   [9] PER MILLE SIGN..CARET
-2039          ; Pattern_Syntax # Pi       SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-203A          ; Pattern_Syntax # Pf       SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-203B..203E    ; Pattern_Syntax # Po   [4] REFERENCE MARK..OVERLINE
-2041..2043    ; Pattern_Syntax # Po   [3] CARET INSERTION POINT..HYPHEN BULLET
-2044          ; Pattern_Syntax # Sm       FRACTION SLASH
-2045          ; Pattern_Syntax # Ps       LEFT SQUARE BRACKET WITH QUILL
-2046          ; Pattern_Syntax # Pe       RIGHT SQUARE BRACKET WITH QUILL
-2047..2051    ; Pattern_Syntax # Po  [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY
-2052          ; Pattern_Syntax # Sm       COMMERCIAL MINUS SIGN
-2053          ; Pattern_Syntax # Po       SWUNG DASH
-2055..205E    ; Pattern_Syntax # Po  [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS
-2190..2194    ; Pattern_Syntax # Sm   [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
-2195..2199    ; Pattern_Syntax # So   [5] UP DOWN ARROW..SOUTH WEST ARROW
-219A..219B    ; Pattern_Syntax # Sm   [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
-219C..219F    ; Pattern_Syntax # So   [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
-21A0          ; Pattern_Syntax # Sm       RIGHTWARDS TWO HEADED ARROW
-21A1..21A2    ; Pattern_Syntax # So   [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
-21A3          ; Pattern_Syntax # Sm       RIGHTWARDS ARROW WITH TAIL
-21A4..21A5    ; Pattern_Syntax # So   [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
-21A6          ; Pattern_Syntax # Sm       RIGHTWARDS ARROW FROM BAR
-21A7..21AD    ; Pattern_Syntax # So   [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW
-21AE          ; Pattern_Syntax # Sm       LEFT RIGHT ARROW WITH STROKE
-21AF..21CD    ; Pattern_Syntax # So  [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE
-21CE..21CF    ; Pattern_Syntax # Sm   [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
-21D0..21D1    ; Pattern_Syntax # So   [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
-21D2          ; Pattern_Syntax # Sm       RIGHTWARDS DOUBLE ARROW
-21D3          ; Pattern_Syntax # So       DOWNWARDS DOUBLE ARROW
-21D4          ; Pattern_Syntax # Sm       LEFT RIGHT DOUBLE ARROW
-21D5..21F3    ; Pattern_Syntax # So  [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW
-21F4..22FF    ; Pattern_Syntax # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP
-2300..2307    ; Pattern_Syntax # So   [8] DIAMETER SIGN..WAVY LINE
-2308          ; Pattern_Syntax # Ps       LEFT CEILING
-2309          ; Pattern_Syntax # Pe       RIGHT CEILING
-230A          ; Pattern_Syntax # Ps       LEFT FLOOR
-230B          ; Pattern_Syntax # Pe       RIGHT FLOOR
-230C..231F    ; Pattern_Syntax # So  [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER
-2320..2321    ; Pattern_Syntax # Sm   [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
-2322..2328    ; Pattern_Syntax # So   [7] FROWN..KEYBOARD
-2329          ; Pattern_Syntax # Ps       LEFT-POINTING ANGLE BRACKET
-232A          ; Pattern_Syntax # Pe       RIGHT-POINTING ANGLE BRACKET
-232B..237B    ; Pattern_Syntax # So  [81] ERASE TO THE LEFT..NOT CHECK MARK
-237C          ; Pattern_Syntax # Sm       RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
-237D..239A    ; Pattern_Syntax # So  [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
-239B..23B3    ; Pattern_Syntax # Sm  [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
-23B4..23DB    ; Pattern_Syntax # So  [40] TOP SQUARE BRACKET..FUSE
-23DC..23E1    ; Pattern_Syntax # Sm   [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-23E2..2426    ; Pattern_Syntax # So  [69] WHITE TRAPEZIUM..SYMBOL FOR SUBSTITUTE FORM TWO
-2427..243F    ; Pattern_Syntax # Cn  [25] <reserved-2427>..<reserved-243F>
-2440..244A    ; Pattern_Syntax # So  [11] OCR HOOK..OCR DOUBLE BACKSLASH
-244B..245F    ; Pattern_Syntax # Cn  [21] <reserved-244B>..<reserved-245F>
-2500..25B6    ; Pattern_Syntax # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE
-25B7          ; Pattern_Syntax # Sm       WHITE RIGHT-POINTING TRIANGLE
-25B8..25C0    ; Pattern_Syntax # So   [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE
-25C1          ; Pattern_Syntax # Sm       WHITE LEFT-POINTING TRIANGLE
-25C2..25F7    ; Pattern_Syntax # So  [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
-25F8..25FF    ; Pattern_Syntax # Sm   [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
-2600..266E    ; Pattern_Syntax # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN
-266F          ; Pattern_Syntax # Sm       MUSIC SHARP SIGN
-2670..2767    ; Pattern_Syntax # So [248] WEST SYRIAC CROSS..ROTATED FLORAL HEART BULLET
-2768          ; Pattern_Syntax # Ps       MEDIUM LEFT PARENTHESIS ORNAMENT
-2769          ; Pattern_Syntax # Pe       MEDIUM RIGHT PARENTHESIS ORNAMENT
-276A          ; Pattern_Syntax # Ps       MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-276B          ; Pattern_Syntax # Pe       MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-276C          ; Pattern_Syntax # Ps       MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-276D          ; Pattern_Syntax # Pe       MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-276E          ; Pattern_Syntax # Ps       HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
-276F          ; Pattern_Syntax # Pe       HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
-2770          ; Pattern_Syntax # Ps       HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-2771          ; Pattern_Syntax # Pe       HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-2772          ; Pattern_Syntax # Ps       LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
-2773          ; Pattern_Syntax # Pe       LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
-2774          ; Pattern_Syntax # Ps       MEDIUM LEFT CURLY BRACKET ORNAMENT
-2775          ; Pattern_Syntax # Pe       MEDIUM RIGHT CURLY BRACKET ORNAMENT
-2794..27BF    ; Pattern_Syntax # So  [44] HEAVY WIDE-HEADED RIGHTWARDS ARROW..DOUBLE CURLY LOOP
-27C0..27C4    ; Pattern_Syntax # Sm   [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
-27C5          ; Pattern_Syntax # Ps       LEFT S-SHAPED BAG DELIMITER
-27C6          ; Pattern_Syntax # Pe       RIGHT S-SHAPED BAG DELIMITER
-27C7..27E5    ; Pattern_Syntax # Sm  [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK
-27E6          ; Pattern_Syntax # Ps       MATHEMATICAL LEFT WHITE SQUARE BRACKET
-27E7          ; Pattern_Syntax # Pe       MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-27E8          ; Pattern_Syntax # Ps       MATHEMATICAL LEFT ANGLE BRACKET
-27E9          ; Pattern_Syntax # Pe       MATHEMATICAL RIGHT ANGLE BRACKET
-27EA          ; Pattern_Syntax # Ps       MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-27EB          ; Pattern_Syntax # Pe       MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-27EC          ; Pattern_Syntax # Ps       MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
-27ED          ; Pattern_Syntax # Pe       MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
-27EE          ; Pattern_Syntax # Ps       MATHEMATICAL LEFT FLATTENED PARENTHESIS
-27EF          ; Pattern_Syntax # Pe       MATHEMATICAL RIGHT FLATTENED PARENTHESIS
-27F0..27FF    ; Pattern_Syntax # Sm  [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
-2800..28FF    ; Pattern_Syntax # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
-2900..2982    ; Pattern_Syntax # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON
-2983          ; Pattern_Syntax # Ps       LEFT WHITE CURLY BRACKET
-2984          ; Pattern_Syntax # Pe       RIGHT WHITE CURLY BRACKET
-2985          ; Pattern_Syntax # Ps       LEFT WHITE PARENTHESIS
-2986          ; Pattern_Syntax # Pe       RIGHT WHITE PARENTHESIS
-2987          ; Pattern_Syntax # Ps       Z NOTATION LEFT IMAGE BRACKET
-2988          ; Pattern_Syntax # Pe       Z NOTATION RIGHT IMAGE BRACKET
-2989          ; Pattern_Syntax # Ps       Z NOTATION LEFT BINDING BRACKET
-298A          ; Pattern_Syntax # Pe       Z NOTATION RIGHT BINDING BRACKET
-298B          ; Pattern_Syntax # Ps       LEFT SQUARE BRACKET WITH UNDERBAR
-298C          ; Pattern_Syntax # Pe       RIGHT SQUARE BRACKET WITH UNDERBAR
-298D          ; Pattern_Syntax # Ps       LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
-298E          ; Pattern_Syntax # Pe       RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-298F          ; Pattern_Syntax # Ps       LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
-2990          ; Pattern_Syntax # Pe       RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
-2991          ; Pattern_Syntax # Ps       LEFT ANGLE BRACKET WITH DOT
-2992          ; Pattern_Syntax # Pe       RIGHT ANGLE BRACKET WITH DOT
-2993          ; Pattern_Syntax # Ps       LEFT ARC LESS-THAN BRACKET
-2994          ; Pattern_Syntax # Pe       RIGHT ARC GREATER-THAN BRACKET
-2995          ; Pattern_Syntax # Ps       DOUBLE LEFT ARC GREATER-THAN BRACKET
-2996          ; Pattern_Syntax # Pe       DOUBLE RIGHT ARC LESS-THAN BRACKET
-2997          ; Pattern_Syntax # Ps       LEFT BLACK TORTOISE SHELL BRACKET
-2998          ; Pattern_Syntax # Pe       RIGHT BLACK TORTOISE SHELL BRACKET
-2999..29D7    ; Pattern_Syntax # Sm  [63] DOTTED FENCE..BLACK HOURGLASS
-29D8          ; Pattern_Syntax # Ps       LEFT WIGGLY FENCE
-29D9          ; Pattern_Syntax # Pe       RIGHT WIGGLY FENCE
-29DA          ; Pattern_Syntax # Ps       LEFT DOUBLE WIGGLY FENCE
-29DB          ; Pattern_Syntax # Pe       RIGHT DOUBLE WIGGLY FENCE
-29DC..29FB    ; Pattern_Syntax # Sm  [32] INCOMPLETE INFINITY..TRIPLE PLUS
-29FC          ; Pattern_Syntax # Ps       LEFT-POINTING CURVED ANGLE BRACKET
-29FD          ; Pattern_Syntax # Pe       RIGHT-POINTING CURVED ANGLE BRACKET
-29FE..2AFF    ; Pattern_Syntax # Sm [258] TINY..N-ARY WHITE VERTICAL BAR
-2B00..2B2F    ; Pattern_Syntax # So  [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE
-2B30..2B44    ; Pattern_Syntax # Sm  [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET
-2B45..2B46    ; Pattern_Syntax # So   [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW
-2B47..2B4C    ; Pattern_Syntax # Sm   [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
-2B4D..2B73    ; Pattern_Syntax # So  [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
-2B74..2B75    ; Pattern_Syntax # Cn   [2] <reserved-2B74>..<reserved-2B75>
-2B76..2B95    ; Pattern_Syntax # So  [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
-2B96          ; Pattern_Syntax # Cn       <reserved-2B96>
-2B97..2BFF    ; Pattern_Syntax # So [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL
-2E00..2E01    ; Pattern_Syntax # Po   [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
-2E02          ; Pattern_Syntax # Pi       LEFT SUBSTITUTION BRACKET
-2E03          ; Pattern_Syntax # Pf       RIGHT SUBSTITUTION BRACKET
-2E04          ; Pattern_Syntax # Pi       LEFT DOTTED SUBSTITUTION BRACKET
-2E05          ; Pattern_Syntax # Pf       RIGHT DOTTED SUBSTITUTION BRACKET
-2E06..2E08    ; Pattern_Syntax # Po   [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER
-2E09          ; Pattern_Syntax # Pi       LEFT TRANSPOSITION BRACKET
-2E0A          ; Pattern_Syntax # Pf       RIGHT TRANSPOSITION BRACKET
-2E0B          ; Pattern_Syntax # Po       RAISED SQUARE
-2E0C          ; Pattern_Syntax # Pi       LEFT RAISED OMISSION BRACKET
-2E0D          ; Pattern_Syntax # Pf       RIGHT RAISED OMISSION BRACKET
-2E0E..2E16    ; Pattern_Syntax # Po   [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE
-2E17          ; Pattern_Syntax # Pd       DOUBLE OBLIQUE HYPHEN
-2E18..2E19    ; Pattern_Syntax # Po   [2] INVERTED INTERROBANG..PALM BRANCH
-2E1A          ; Pattern_Syntax # Pd       HYPHEN WITH DIAERESIS
-2E1B          ; Pattern_Syntax # Po       TILDE WITH RING ABOVE
-2E1C          ; Pattern_Syntax # Pi       LEFT LOW PARAPHRASE BRACKET
-2E1D          ; Pattern_Syntax # Pf       RIGHT LOW PARAPHRASE BRACKET
-2E1E..2E1F    ; Pattern_Syntax # Po   [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW
-2E20          ; Pattern_Syntax # Pi       LEFT VERTICAL BAR WITH QUILL
-2E21          ; Pattern_Syntax # Pf       RIGHT VERTICAL BAR WITH QUILL
-2E22          ; Pattern_Syntax # Ps       TOP LEFT HALF BRACKET
-2E23          ; Pattern_Syntax # Pe       TOP RIGHT HALF BRACKET
-2E24          ; Pattern_Syntax # Ps       BOTTOM LEFT HALF BRACKET
-2E25          ; Pattern_Syntax # Pe       BOTTOM RIGHT HALF BRACKET
-2E26          ; Pattern_Syntax # Ps       LEFT SIDEWAYS U BRACKET
-2E27          ; Pattern_Syntax # Pe       RIGHT SIDEWAYS U BRACKET
-2E28          ; Pattern_Syntax # Ps       LEFT DOUBLE PARENTHESIS
-2E29          ; Pattern_Syntax # Pe       RIGHT DOUBLE PARENTHESIS
-2E2A..2E2E    ; Pattern_Syntax # Po   [5] TWO DOTS OVER ONE DOT PUNCTUATION..REVERSED QUESTION MARK
-2E2F          ; Pattern_Syntax # Lm       VERTICAL TILDE
-2E30..2E39    ; Pattern_Syntax # Po  [10] RING POINT..TOP HALF SECTION SIGN
-2E3A..2E3B    ; Pattern_Syntax # Pd   [2] TWO-EM DASH..THREE-EM DASH
-2E3C..2E3F    ; Pattern_Syntax # Po   [4] STENOGRAPHIC FULL STOP..CAPITULUM
-2E40          ; Pattern_Syntax # Pd       DOUBLE HYPHEN
-2E41          ; Pattern_Syntax # Po       REVERSED COMMA
-2E42          ; Pattern_Syntax # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
-2E43..2E4F    ; Pattern_Syntax # Po  [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
-2E50..2E51    ; Pattern_Syntax # So   [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR
-2E52..2E54    ; Pattern_Syntax # Po   [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK
-2E55          ; Pattern_Syntax # Ps       LEFT SQUARE BRACKET WITH STROKE
-2E56          ; Pattern_Syntax # Pe       RIGHT SQUARE BRACKET WITH STROKE
-2E57          ; Pattern_Syntax # Ps       LEFT SQUARE BRACKET WITH DOUBLE STROKE
-2E58          ; Pattern_Syntax # Pe       RIGHT SQUARE BRACKET WITH DOUBLE STROKE
-2E59          ; Pattern_Syntax # Ps       TOP HALF LEFT PARENTHESIS
-2E5A          ; Pattern_Syntax # Pe       TOP HALF RIGHT PARENTHESIS
-2E5B          ; Pattern_Syntax # Ps       BOTTOM HALF LEFT PARENTHESIS
-2E5C          ; Pattern_Syntax # Pe       BOTTOM HALF RIGHT PARENTHESIS
-2E5D          ; Pattern_Syntax # Pd       OBLIQUE HYPHEN
-2E5E..2E7F    ; Pattern_Syntax # Cn  [34] <reserved-2E5E>..<reserved-2E7F>
-3001..3003    ; Pattern_Syntax # Po   [3] IDEOGRAPHIC COMMA..DITTO MARK
-3008          ; Pattern_Syntax # Ps       LEFT ANGLE BRACKET
-3009          ; Pattern_Syntax # Pe       RIGHT ANGLE BRACKET
-300A          ; Pattern_Syntax # Ps       LEFT DOUBLE ANGLE BRACKET
-300B          ; Pattern_Syntax # Pe       RIGHT DOUBLE ANGLE BRACKET
-300C          ; Pattern_Syntax # Ps       LEFT CORNER BRACKET
-300D          ; Pattern_Syntax # Pe       RIGHT CORNER BRACKET
-300E          ; Pattern_Syntax # Ps       LEFT WHITE CORNER BRACKET
-300F          ; Pattern_Syntax # Pe       RIGHT WHITE CORNER BRACKET
-3010          ; Pattern_Syntax # Ps       LEFT BLACK LENTICULAR BRACKET
-3011          ; Pattern_Syntax # Pe       RIGHT BLACK LENTICULAR BRACKET
-3012..3013    ; Pattern_Syntax # So   [2] POSTAL MARK..GETA MARK
-3014          ; Pattern_Syntax # Ps       LEFT TORTOISE SHELL BRACKET
-3015          ; Pattern_Syntax # Pe       RIGHT TORTOISE SHELL BRACKET
-3016          ; Pattern_Syntax # Ps       LEFT WHITE LENTICULAR BRACKET
-3017          ; Pattern_Syntax # Pe       RIGHT WHITE LENTICULAR BRACKET
-3018          ; Pattern_Syntax # Ps       LEFT WHITE TORTOISE SHELL BRACKET
-3019          ; Pattern_Syntax # Pe       RIGHT WHITE TORTOISE SHELL BRACKET
-301A          ; Pattern_Syntax # Ps       LEFT WHITE SQUARE BRACKET
-301B          ; Pattern_Syntax # Pe       RIGHT WHITE SQUARE BRACKET
-301C          ; Pattern_Syntax # Pd       WAVE DASH
-301D          ; Pattern_Syntax # Ps       REVERSED DOUBLE PRIME QUOTATION MARK
-301E..301F    ; Pattern_Syntax # Pe   [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
-3020          ; Pattern_Syntax # So       POSTAL MARK FACE
-3030          ; Pattern_Syntax # Pd       WAVY DASH
-FD3E          ; Pattern_Syntax # Pe       ORNATE LEFT PARENTHESIS
-FD3F          ; Pattern_Syntax # Ps       ORNATE RIGHT PARENTHESIS
-FE45..FE46    ; Pattern_Syntax # Po   [2] SESAME DOT..WHITE SESAME DOT
-
-# Total code points: 2760
-
-# ================================================
-
-0600..0605    ; Prepended_Concatenation_Mark # Cf   [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
-06DD          ; Prepended_Concatenation_Mark # Cf       ARABIC END OF AYAH
-070F          ; Prepended_Concatenation_Mark # Cf       SYRIAC ABBREVIATION MARK
-0890..0891    ; Prepended_Concatenation_Mark # Cf   [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
-08E2          ; Prepended_Concatenation_Mark # Cf       ARABIC DISPUTED END OF AYAH
-110BD         ; Prepended_Concatenation_Mark # Cf       KAITHI NUMBER SIGN
-110CD         ; Prepended_Concatenation_Mark # Cf       KAITHI NUMBER SIGN ABOVE
-
-# Total code points: 13
-
-# ================================================
-
-1F1E6..1F1FF  ; Regional_Indicator # So  [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
-
-# Total code points: 26
-
-# EOF
diff --git a/localedata/unicode-gen/utf8_gen.py b/localedata/unicode-gen/utf8_gen.py
index e273607b67..1be197a8f7 100755
--- a/localedata/unicode-gen/utf8_gen.py
+++ b/localedata/unicode-gen/utf8_gen.py
@@ -1,6 +1,7 @@
 #!/usr/bin/python3
 # -*- coding: utf-8 -*-
 # Copyright (C) 2014-2024 Free Software Foundation, Inc.
+# Copyright The GNU Toolchain Authors.
 # This file is part of the GNU C Library.
 #
 # The GNU C Library is free software; you can redistribute it and/or
@@ -28,7 +29,6 @@ It will output UTF-8 file
 '''
 
 import argparse
-import sys
 import re
 import unicode_utils
 
@@ -200,30 +200,40 @@ def write_header_charmap(outfile):
 
 def write_header_width(outfile, unicode_version):
     '''Writes the header on top of the WIDTH section to the output file'''
-    outfile.write('% Character width according to Unicode '
-                  + '{:s}.\n'.format(unicode_version))
-    outfile.write('% - Default width is 1.\n')
+    outfile.write('% Character width according to Unicode {:s}.\n'.format(unicode_version))
+    outfile.write('% Width is determined by the following rules, in order of decreasing precedence:\n')
+    outfile.write('% - U+00AD SOFT HYPHEN has width 1, as a special case for compatibility (https://archive.is/b5Ck).\n')
+    outfile.write('% - U+115F HANGUL CHOSEONG FILLER has width 2.\n')
+    outfile.write('%   This character stands in for an intentionally omitted leading consonant\n')
+    outfile.write('%   in a Hangul syllable block; as such it must be assigned width 2 despite its lack\n')
+    outfile.write('%   of visible display to ensure that the complete block has the correct width.\n')
+    outfile.write('%   (See below for more information on Hangul syllables.)\n')
+    outfile.write('% - Combining jungseong and jongseong Hangul jamo have width 0; generated from\n')
+    outfile.write('%   "grep \'^[^;]*;[VT]\' HangulSyllableType.txt".\n')
+    outfile.write('%   One composed Hangul "syllable block" like 퓛 is made up of\n')
+    outfile.write('%   two to three individual component characters called "jamo".\n')
+    outfile.write('%   The complete block must have total width 2;\n')
+    outfile.write('%   to achieve this, we assign a width of 2 to leading "choseong" jamo,\n')
+    outfile.write('%   and of 0 to medial vowel "jungseong" and trailing "jongseong" jamo.\n')
+    outfile.write('% - Non-spacing and enclosing marks have width 0; generated from\n')
+    outfile.write('%   "grep -E \'^[^;]*;[^;]*;(Mn|Me);\' UnicodeData.txt".\n')
+    outfile.write('% - "Default_Ignorable_Code_Point"s have width 0; generated from\n')
+    outfile.write('%   "grep \'^[^;]*;\\s*Default_Ignorable_Code_Point\' DerivedCoreProperties.txt".\n')
     outfile.write('% - Double-width characters have width 2; generated from\n')
-    outfile.write('%        "grep \'^[^;]*;\\s*[WF]\' EastAsianWidth.txt"\n')
-    outfile.write('% - Non-spacing characters have width 0; '
-                  + 'generated from PropList.txt or\n')
-    outfile.write('%   "grep \'^[^;]*;[^;]*;[^;]*;[^;]*;NSM;\' '
-                  + 'UnicodeData.txt"\n')
-    outfile.write('% - Format control characters have width 0; '
-                  + 'generated from\n')
-    outfile.write("%   \"grep '^[^;]*;[^;]*;Cf;' UnicodeData.txt\"\n")
-#   Not needed covered by Cf
-#    outfile.write("% - Zero width characters have width 0; generated from\n")
-#    outfile.write("%   \"grep '^[^;]*;ZERO WIDTH ' UnicodeData.txt\"\n")
+    outfile.write('%   "grep \'^[^;]*;[WF]\' EastAsianWidth.txt".\n')
+    outfile.write('% - Default width for all other characters is 1.\n')
     outfile.write("WIDTH\n")
 
-def process_width(outfile, ulines, elines, plines):
-    '''ulines are lines from UnicodeData.txt, elines are lines from
-    EastAsianWidth.txt containing characters with width “W” or “F”,
-    plines are lines from PropList.txt which contain characters
-    with the property “Prepended_Concatenation_Mark”.
-
+def process_width(outfile, ulines, dlines, elines, klines):
+    '''ulines are lines from UnicodeData.txt.
+    elines are lines from EastAsianWidth.txt containing characters with width
+    “W” or “F”.
+    dlines are lines from DerivedCoreProperties.txt which contain
+    characters with the property “Default_Ignorable_Code_Point”.
+    klines are lines from HangulSyllableType.txt which contain characters
+    with syllable type “V” or “T”.
     '''
+    # Wide and fullwidth characters have width 1
     width_dict = {}
     for line in elines:
         fields = line.split(";")
@@ -235,14 +245,14 @@ def process_width(outfile, ulines, elines, plines):
                          int(code_points[1], 16)+1):
             width_dict[key] = 2
 
+    # Nonspacing and enclosing marks have width 0
     for line in ulines:
         fields = line.split(";")
-        if fields[4] == "NSM" or fields[2] in ("Cf", "Me", "Mn"):
+        if fields[4] == "NSM" or fields[2] in ("Me", "Mn"):
             width_dict[int(fields[0], 16)] = 0
 
-    for line in plines:
-        # Characters with the property “Prepended_Concatenation_Mark”
-        # should have the width 1:
+    # Conjoining vowel and trailing jamo have width 0
+    for line in klines:
         fields = line.split(";")
         if not '..' in fields[0]:
             code_points = (fields[0], fields[0])
@@ -250,21 +260,26 @@ def process_width(outfile, ulines, elines, plines):
             code_points = fields[0].split("..")
         for key in range(int(code_points[0], 16),
                          int(code_points[1], 16)+1):
-            del width_dict[key] # default width is 1
-
-    # handle special cases for compatibility
-    for key in list((0x00AD,)):
-        # https://www.cs.tut.fi/~jkorpela/shy.html
-        if key in width_dict:
-            del width_dict[key] # default width is 1
-    for key in list(range(0x1160, 0x1200)):
-        # Hangul jungseong and jongseong:
-        if key in unicode_utils.UNICODE_ATTRIBUTES:
-            width_dict[key] = 0
-    for key in list(range(0xD7B0, 0xD800)):
-        # Hangul jungseong and jongseong:
-        if key in unicode_utils.UNICODE_ATTRIBUTES:
             width_dict[key] = 0
+
+    # “Default_Ignorable_Code_Point”s have width 0
+    for line in dlines:
+        fields = line.split(";")
+        if not '..' in fields[0]:
+            code_points = (fields[0], fields[0])
+        else:
+            code_points = fields[0].split("..")
+        for key in range(int(code_points[0], 16),
+                         int(code_points[1], 16)+1):
+            width_dict[key] = 0 # default width is 1
+
+
+    # Special case: U+00AD SOFT HYPHEN
+    del width_dict[0x00AD]
+
+    # Special case: U+115F HANGUL CHOSEONG FILLER
+    width_dict[0x115F] = 2
+
     for key in list(range(0x3248, 0x3250)):
         # These are “A” which means we can decide whether to treat them
         # as “W” or “N” based on context:
@@ -302,7 +317,7 @@ def process_width(outfile, ulines, elines, plines):
 if __name__ == "__main__":
     PARSER = argparse.ArgumentParser(
         description='''
-        Generate a UTF-8 file from UnicodeData.txt, EastAsianWidth.txt, and PropList.txt.
+        Generate a UTF-8 file from UnicodeData.txt, DerivedCoreProperties.txt, EastAsianWidth.txt, and HangulSyllableType.txt
         ''')
     PARSER.add_argument(
         '-u', '--unicode_data_file',
@@ -312,6 +327,13 @@ if __name__ == "__main__":
         help=('The UnicodeData.txt file to read, '
               + 'default: %(default)s'))
     PARSER.add_argument(
+        '-d', '--derived_core_properties_file',
+        nargs='?',
+        type=str,
+        default='DerivedCoreProperties.txt',
+        help=('The DerivedCoreProperties.txt file to read, '
+              + 'default: %(default)s'))
+    PARSER.add_argument(
         '-e', '--east_asian_with_file',
         nargs='?',
         type=str,
@@ -319,11 +341,11 @@ if __name__ == "__main__":
         help=('The EastAsianWidth.txt file to read, '
               + 'default: %(default)s'))
     PARSER.add_argument(
-        '-p', '--prop_list_file',
+        '-k', '--hangul_syllable_type_file',
         nargs='?',
         type=str,
-        default='PropList.txt',
-        help=('The PropList.txt file to read, '
+        default='HangulSyllableType.txt',
+        help=('The HangulSyllableType.txt file to read, '
               + 'default: %(default)s'))
     PARSER.add_argument(
         '--unicode_version',
@@ -336,27 +358,35 @@ if __name__ == "__main__":
     unicode_utils.fill_attributes(ARGS.unicode_data_file)
     with open(ARGS.unicode_data_file, mode='r') as UNIDATA_FILE:
         UNICODE_DATA_LINES = UNIDATA_FILE.readlines()
-    with open(ARGS.east_asian_with_file, mode='r') as EAST_ASIAN_WIDTH_FILE:
-        EAST_ASIAN_WIDTH_LINES = []
-        for LINE in EAST_ASIAN_WIDTH_FILE:
-            # If characters from EastAsianWidth.txt which are from
-            # reserved ranges (i.e. not yet assigned code points)
+    with open(ARGS.derived_core_properties_file, mode='r') as DERIVED_CORE_PROPERTIES_FILE:
+        DERIVED_CORE_PROPERTIES_LINES = []
+        for LINE in DERIVED_CORE_PROPERTIES_FILE:
+            # If characters which are from reserved ranges
+            # (i.e. not yet assigned code points)
             # are added to the WIDTH section of the UTF-8 file, then
             # “make check” produces “Unknown Character” errors for
             # these code points because such unassigned code points
             # are not in the CHARMAP section of the UTF-8 file.
             #
-            # Therefore, we skip all reserved code points when reading
-            # the EastAsianWidth.txt file.
-            if re.match(r'.*<reserved-.+>\.\.<reserved-.+>.*', LINE):
+            # Therefore, we skip all reserved code points.
+            if re.match(r'.*<reserved-.+>', LINE):
+                continue
+            if re.match(r'^[^;]*;\s*Default_Ignorable_Code_Point', LINE):
+                DERIVED_CORE_PROPERTIES_LINES.append(LINE.strip())
+    with open(ARGS.east_asian_with_file, mode='r') as EAST_ASIAN_WIDTH_FILE:
+        EAST_ASIAN_WIDTH_LINES = []
+        for LINE in EAST_ASIAN_WIDTH_FILE:
+            if re.match(r'.*<reserved-.+>', LINE):
                 continue
             if re.match(r'^[^;]*;\s*[WF]', LINE):
                 EAST_ASIAN_WIDTH_LINES.append(LINE.strip())
-    with open(ARGS.prop_list_file, mode='r') as PROP_LIST_FILE:
-        PROP_LIST_LINES = []
-        for LINE in PROP_LIST_FILE:
-            if re.match(r'^[^;]*;[\s]*Prepended_Concatenation_Mark', LINE):
-                PROP_LIST_LINES.append(LINE.strip())
+    with open(ARGS.hangul_syllable_type_file, mode='r') as HANGUL_SYLLABLE_TYPE_FILE:
+        HANGUL_SYLLABLE_TYPE_LINES = []
+        for LINE in HANGUL_SYLLABLE_TYPE_FILE:
+            if re.match(r'.*<reserved-.+>', LINE):
+                continue
+            if re.match(r'^[^;]*;\s*[VT]', LINE):
+                HANGUL_SYLLABLE_TYPE_LINES.append(LINE.strip())
     with open('UTF-8', mode='w') as OUTFILE:
         # Processing UnicodeData.txt and write CHARMAP to UTF-8 file
         write_header_charmap(OUTFILE)
@@ -366,6 +396,7 @@ if __name__ == "__main__":
         write_header_width(OUTFILE, ARGS.unicode_version)
         process_width(OUTFILE,
                       UNICODE_DATA_LINES,
+                      DERIVED_CORE_PROPERTIES_LINES,
                       EAST_ASIAN_WIDTH_LINES,
-                      PROP_LIST_LINES)
+                      HANGUL_SYLLABLE_TYPE_LINES)
         OUTFILE.write("END WIDTH\n")
diff --git a/manual/lang.texi b/manual/lang.texi
index 40cd9ddd77..cd90ff60d2 100644
--- a/manual/lang.texi
+++ b/manual/lang.texi
@@ -1065,7 +1065,7 @@ macros are supposed to be at least @code{10}.
 @standards{C90, float.h}
 This is the smallest possible exponent value for type @code{float}.
 More precisely, it is the minimum negative integer such that the value
-@code{FLT_RADIX} raised to this power minus 1 can be represented as a
+@code{FLT_RADIX} raised to one less than this power can be represented as a
 normalized floating point number of type @code{float}.
 
 @item DBL_MIN_EXP
@@ -1078,7 +1078,7 @@ These are similar to @code{FLT_MIN_EXP}, but for the data types
 @item FLT_MIN_10_EXP
 @standards{C90, float.h}
 This is the minimum negative integer such that @code{10} raised to this
-power minus 1 can be represented as a normalized floating point number
+power can be represented as a normalized floating point number
 of type @code{float}.  This is supposed to be @code{-37} or even less.
 
 @item DBL_MIN_10_EXP
@@ -1091,8 +1091,8 @@ These are similar to @code{FLT_MIN_10_EXP}, but for the data types
 @standards{C90, float.h}
 This is the largest possible exponent value for type @code{float}.  More
 precisely, this is the maximum positive integer such that value
-@code{FLT_RADIX} raised to this power minus 1 can be represented as a
-floating point number of type @code{float}.
+@code{FLT_RADIX} raised to one less than this power can be represented as a
+finite floating point number of type @code{float}.
 
 @item DBL_MAX_EXP
 @itemx LDBL_MAX_EXP
@@ -1103,7 +1103,7 @@ These are similar to @code{FLT_MAX_EXP}, but for the data types
 @item FLT_MAX_10_EXP
 @standards{C90, float.h}
 This is the maximum positive integer such that @code{10} raised to this
-power minus 1 can be represented as a normalized floating point number
+power can be represented as a finite floating point number
 of type @code{float}.  This is supposed to be at least @code{37}.
 
 @item DBL_MAX_10_EXP
diff --git a/manual/math.texi b/manual/math.texi
index dfb685a71e..c99501ccb1 100644
--- a/manual/math.texi
+++ b/manual/math.texi
@@ -754,6 +754,20 @@ They are computed in a way that is accurate even if @var{x} is
 near zero.
 @end deftypefun
 
+@deftypefun double log2p1 (double @var{x})
+@deftypefunx float log2p1f (float @var{x})
+@deftypefunx {long double} log2p1l (long double @var{x})
+@deftypefunx _FloatN log2p1fN (_Float@var{N} @var{x})
+@deftypefunx _FloatNx log2p1fNx (_Float@var{N}x @var{x})
+@standards{TS 18661-4:2015, math.h}
+@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
+These functions return a value equivalent to @w{@code{log2 (1 + @var{x})}}.
+They are computed in a way that is accurate even if @var{x} is
+near zero.
+
+The @code{log2p1} functions are from TS 18661-4:2015.
+@end deftypefun
+
 @cindex complex exponentiation functions
 @cindex complex logarithm functions
 
diff --git a/math/Makefile b/math/Makefile
index 435939aedb..58e5c070cf 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -127,6 +127,7 @@ gen-libm-calls = \
   s_fminimum_numF \
   s_fminmagF \
   s_iseqsigF \
+  s_log2p1F \
   s_nanF \
   s_nextdownF \
   s_significandF \
@@ -592,8 +593,10 @@ endif
 
 libm-vec-tests = $(addprefix test-,$(libmvec-tests))
 libm-test-support = $(foreach t,$(test-types),libm-test-support-$(t))
-test-extras += $(libm-test-support)
-extra-test-objs += $(addsuffix .o, $(libm-test-support))
+libm-test-support-static = $(foreach t,$(test-types),libm-test-support-$(t)-static)
+test-extras += $(libm-test-support) $(libm-test-support-static)
+extra-test-objs += $(addsuffix .o, $(libm-test-support)) \
+		   $(addsuffix .o, $(libm-test-support-static))
 libm-vec-test-wrappers = $(addsuffix -wrappers, $(libm-vec-tests))
 test-extras += $(libm-vec-test-wrappers)
 extra-test-objs += $(addsuffix .o, $(libm-vec-test-wrappers))
@@ -650,6 +653,7 @@ libm-test-funcs-auto = \
   log10 \
   log1p \
   log2 \
+  log2p1 \
   pow \
   sin \
   sincos \
@@ -662,12 +666,10 @@ libm-test-funcs-auto = \
   y1 \
   yn \
   # libm-test-funcs-auto
-libm-test-funcs-noauto = \
+libm-test-funcs-noauto-base = \
   canonicalize \
   ceil \
   cimag \
-  compat_totalorder \
-  compat_totalordermag \
   conj \
   copysign \
   cproj \
@@ -738,6 +740,11 @@ libm-test-funcs-noauto = \
   trunc \
   ufromfp \
   ufromfpx \
+  # libm-test-funcs-noauto-base
+libm-test-funcs-noauto = \
+  $(libm-test-funcs-noauto-base) \
+  compat_totalorder \
+  compat_totalordermag \
   # libm-test-funcs-noauto
 libm-test-funcs-compat = \
   compat_totalorder \
@@ -814,6 +821,71 @@ $(libm-test-c-narrow-obj): $(objpfx)libm-test%.c: libm-test%.inc \
 	$(make-target-directory)
 	$(PYTHON) gen-libm-test.py -c $< -a auto-libm-test-out$* -C $@
 
+
+libm-test-funcs-auto-static = \
+  $(libm-test-funcs-auto) \
+  # libm-test-funcs-auto-static
+libm-test-funcs-noauto-static = \
+  $(libm-test-funcs-noauto-base) \
+  # libm-test-funcs-noauto-static
+libm-test-funcs-narrow-static = \
+  $(libm-test-funcs-narrow) \
+  # libm-test-funcs-narrow-static
+libm-test-funcs-all-static = $(libm-test-funcs-auto-static) $(libm-test-funcs-noauto-static)
+
+libm-test-c-auto-static = $(foreach f,$(libm-test-funcs-auto-static),libm-test-$(f)-static.c)
+libm-test-c-noauto-static = $(foreach f,$(libm-test-funcs-noauto-static),libm-test-$(f)-static.c)
+libm-test-c-narrow-static = $(foreach f,$(libm-test-funcs-narrow-static),\
+				 libm-test-narrow-$(f)-static.c)
+generated += $(libm-test-c-auto-static) $(libm-test-c-noauto-static) $(libm-test-c-narrow-static)
+
+libm-tests-normal-static = $(foreach t,$(libm-tests-base-normal),\
+				$(foreach f,$(libm-test-funcs-all-static),\
+					    $(t)-$(f)-static))
+libm-tests-narrow-static = $(foreach t,$(libm-tests-base-narrow-static),\
+				$(foreach f,$(libm-test-funcs-narrow-static),\
+					    $(t)-$(f)-static))
+libm-tests-vector-static = $(foreach t,$(libmvec-tests-static),\
+				$(foreach f,$($(t)-funcs),test-$(t)-$(f)-static))
+libm-tests-static = $(libm-tests-normal-static) $(libm-tests-narrow-static) $(libm-tests-vector-static)
+libm-tests-for-type-static = $(foreach f,$(libm-test-funcs-all-static),\
+					 test-$(1)-$(f)-static test-i$(1)-$(f)-static) \
+			     $(filter test-$(1)-%,$(libm-tests-vector-static) \
+						  $(libm-tests-narrow-static))
+
+libm-tests.o += $(addsuffix .o,$(libm-tests-static))
+
+ifeq ($(build-math-static-tests),yes)
+tests-static += $(libm-tests-static)
+generated += $(addsuffix .c,$(libm-tests)) \
+	     $(foreach t,$(test-types),libm-test-support-$(t)-static.c)
+endif
+
+libm-test-c-auto-obj-static = $(addprefix $(objpfx),$(libm-test-c-auto-static))
+libm-test-c-noauto-obj-static = $(addprefix $(objpfx),$(libm-test-c-noauto-static))
+libm-test-c-narrow-obj-static = $(addprefix $(objpfx),$(libm-test-c-narrow-static))
+
+# Use the same input test definitions for both dynamic and static tests.
+.SECONDEXPANSION:
+$(libm-test-c-noauto-obj-static): $(objpfx)libm-test%.c: libm-test$$(subst -static,,%).inc \
+							 gen-libm-test.py
+	$(make-target-directory)
+	$(PYTHON) gen-libm-test.py -c $< -a /dev/null -C $@
+
+.SECONDEXPANSION:
+$(libm-test-c-auto-obj-static): $(objpfx)libm-test%.c: libm-test$$(subst -static,,%).inc \
+						       gen-libm-test.py \
+						       auto-libm-test-out$$(subst -static,,%)
+	$(make-target-directory)
+	$(PYTHON) gen-libm-test.py -c $< -a auto-libm-test-out`echo $* | sed 's/-static//'` -C $@
+
+.SECONDEXPANSION:
+$(libm-test-c-narrow-obj-static): $(objpfx)libm-test%.c: libm-test$$(subst -static,,%).inc \
+							 gen-libm-test.py \
+							 auto-libm-test-out$$(subst -static,,%)
+	$(make-target-directory)
+	$(PYTHON) gen-libm-test.py -c $< -a auto-libm-test-out`echo $* | sed 's/-static//'` -C $@
+
 # Tests for totalorder compat symbols reuse the table of tests as
 # processed by gen-libm-test.py, so add dependencies on the generated
 # .c files.
@@ -892,6 +964,7 @@ tgmath3-macros = \
   log10 \
   log1p \
   log2 \
+  log2p1 \
   logb \
   lrint \
   lround \
@@ -1041,6 +1114,18 @@ $(foreach t,$(libm-tests-normal),$(objpfx)$(t).c): $(objpfx)test-%.c:
 	  echo "#include <libm-test-$$func.c>"; \
 	) > $@
 
+$(foreach t,$(libm-tests-normal-static),$(objpfx)$(t).c): $(objpfx)test-%.c:
+	type_func=$*; \
+	type=$${type_func%%-*}; \
+	func=$${type_func#*-}; \
+	( \
+	  echo "#include <test-$$type.h>"; \
+	  echo "#include <test-math-exceptions.h>"; \
+	  echo "#include <test-math-errno.h>"; \
+	  echo "#include <test-math-scalar.h>"; \
+	  echo "#include <libm-test-$$func.c>"; \
+	) > $@
+
 $(foreach t,$(libm-tests-narrow),$(objpfx)$(t).c): $(objpfx)test-%.c:
 	type_pair_func=$*; \
 	type_pair=$${type_pair_func%-*}; \
@@ -1075,6 +1160,13 @@ $(foreach t,$(test-types),\
 	  echo "#include <libm-test-support.c>"; \
 	) > $@
 
+$(foreach t,$(test-types),\
+	    $(objpfx)libm-test-support-$(t)-static.c): $(objpfx)libm-test-support-%.c:
+	( \
+	  echo "#include <test-$*.h>"; \
+	  echo "#include <libm-test-support.c>"; \
+	) > $@
+
 $(addprefix $(objpfx), $(libm-tests.o)): $(objpfx)libm-test-ulps.h
 
 define o-iterator-doit
@@ -1085,6 +1177,13 @@ object-suffixes-left := $(libm-tests-base)
 include $(o-iterator)
 
 define o-iterator-doit
+$(foreach f,$(libm-test-funcs-all-static),\
+	    $(objpfx)$(o)-$(f)-static.o): $(objpfx)$(o)%.o: $(objpfx)libm-test%.c
+endef
+object-suffixes-left := $(libm-tests-base)
+include $(o-iterator)
+
+define o-iterator-doit
 $(foreach f,$(libm-test-funcs-narrow),\
 	    $(objpfx)$(o)-$(f).o): $(objpfx)$(o)%.o: \
 				   $(objpfx)libm-test-narrow%.c
@@ -1100,6 +1199,13 @@ object-suffixes-left := $(libm-tests-base-normal)
 include $(o-iterator)
 
 define o-iterator-doit
+$(foreach f,$(libm-test-funcs-all-static),\
+	    $(objpfx)$(o)-$(f)-static.o): CFLAGS += $(libm-test-no-inline-cflags)
+endef
+object-suffixes-left := $(libm-tests-base-normal)
+include $(o-iterator)
+
+define o-iterator-doit
 $(foreach f,$(libm-test-funcs-narrow),\
 	    $(objpfx)$(o)-$(f).o): CFLAGS += $(libm-test-no-inline-cflags)
 endef
@@ -1121,6 +1227,13 @@ object-suffixes-left := $(test-types)
 include $(o-iterator)
 
 define o-iterator-doit
+$(addprefix $(objpfx),\
+	    $(call libm-tests-for-type-static,$(o))): $(objpfx)libm-test-support-$(o)-static.o
+endef
+object-suffixes-left := $(test-types)
+include $(o-iterator)
+
+define o-iterator-doit
 $(objpfx)libm-test-support-$(o).o: CFLAGS += $(libm-test-no-inline-cflags)
 endef
 object-suffixes-left := $(test-types)
@@ -1264,6 +1377,7 @@ CFLAGS-e_log.c += -fno-builtin-logl
 CFLAGS-w_log10.c += -fno-builtin-log10l
 CFLAGS-w_log1p.c += -fno-builtin-log1pl
 CFLAGS-e_log2.c += -fno-builtin-log2l
+CFLAGS-s_log2p1.c += -fno-builtin-log2p1l
 CFLAGS-s_logb.c += -fno-builtin-logbl
 CFLAGS-s_lrint.c += -fno-builtin-lrintl
 CFLAGS-s_lround.c += -fno-builtin-lroundl
@@ -1389,6 +1503,7 @@ CFLAGS-e_log.c += -fno-builtin-logf32x -fno-builtin-logf64
 CFLAGS-w_log10.c += -fno-builtin-log10f32x -fno-builtin-log10f64
 CFLAGS-w_log1p.c += -fno-builtin-log1pf32x -fno-builtin-log1pf64
 CFLAGS-e_log2.c += -fno-builtin-log2f32x -fno-builtin-log2f64
+CFLAGS-s_log2p1.c += -fno-builtin-log2p1f32x -fno-builtin-log2p1f64
 CFLAGS-s_logb.c += -fno-builtin-logbf32x -fno-builtin-logbf64
 CFLAGS-s_lrint.c += -fno-builtin-lrintf32x -fno-builtin-lrintf64
 CFLAGS-s_lround.c += -fno-builtin-lroundf32x -fno-builtin-lroundf64
@@ -1503,6 +1618,7 @@ CFLAGS-e_logf.c += -fno-builtin-logf32
 CFLAGS-w_log10f.c += -fno-builtin-log10f32
 CFLAGS-w_log1pf.c += -fno-builtin-log1pf32
 CFLAGS-e_log2f.c += -fno-builtin-log2f32
+CFLAGS-s_log2p1f.c += -fno-builtin-log2p1f32
 CFLAGS-s_logbf.c += -fno-builtin-logbf32
 CFLAGS-s_lrintf.c += -fno-builtin-lrintf32
 CFLAGS-s_lroundf.c += -fno-builtin-lroundf32
diff --git a/math/Versions b/math/Versions
index 26e15cedea..46b9b87010 100644
--- a/math/Versions
+++ b/math/Versions
@@ -639,4 +639,10 @@ libm {
     # No SVID compatible error handling.
     exp10;
   }
+  GLIBC_2.40 {
+    # Functions not involving _Float64x or _Float128, for all configurations.
+    log2p1; log2p1f; log2p1l; log2p1f32; log2p1f64; log2p1f32x;
+    # Functions involving _Float64x or _Float128, for some configurations.
+    log2p1f64x; log2p1f128;
+  }
 }
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 05d7ae5002..8982338b3a 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -6664,6 +6664,57 @@ log2 min
 log2 min_subnorm
 log2 max
 
+log2p1 0
+log2p1 -0
+log2p1 e-1
+log2p1 -0.25
+log2p1 -0.875
+log2p1 0x1p-5
+log2p1 0x1p-10
+log2p1 0x1p-15
+log2p1 0x1p-20
+log2p1 0x1p-25
+log2p1 0x1p-30
+log2p1 0x1p-35
+log2p1 0x1p-40
+log2p1 0x1p-45
+log2p1 0x1p-50
+log2p1 0x1p-55
+log2p1 0x1p-60
+log2p1 0x1p-100
+log2p1 0x1p-600
+log2p1 0x1p-10000
+log2p1 min
+log2p1 min_subnorm
+log2p1 -min
+log2p1 -min_subnorm
+log2p1 0x1p10
+log2p1 0x1p20
+log2p1 0x1p30
+log2p1 0x1p50
+log2p1 0x1p60
+log2p1 0x1p100
+log2p1 0x1p1000
+log2p1 0x6.a0cf42befce9ed4085ef59254b48p-4
+log2p1 max
+
+log2p1 0x7.2a4368p-4
+log2p1 0x6.d3a118p-4
+log2p1 0x5.03f228p+0
+log2p1 0x7.264963888ac9p-4
+log2p1 0x8.786bdp-4
+log2p1 0x7.89dc17790eeb4p-4
+log2p1 0x9.81ccf8887c24a7bp-4
+log2p1 0xa.5028608bd65f38dp-4
+log2p1 0x5.bf78873e20a2d468p-4
+log2p1 0x7.aa5198p-4
+log2p1 0x2.564fap+0
+log2p1 0x7.fc242a2235222ef8p-4
+log2p1 -0x4.f37d3c9ce0b14bdd86eb157df5d4p-4
+log2p1 0x7.2eca50c4d93196362b4f37f6e8dcp-4
+log2p1 -0x6.3fef3067427e43dfcde9e48f74bcp-4
+log2p1 0x6.af53d00fd2845d4772260ef5adc4p-4
+
 mul 0 0
 mul 0 -0
 mul -0 0
diff --git a/math/auto-libm-test-out-log2p1 b/math/auto-libm-test-out-log2p1
new file mode 100644
index 0000000000..c8ec972d6f
--- /dev/null
+++ b/math/auto-libm-test-out-log2p1
@@ -0,0 +1,2713 @@
+log2p1 0
+= log2p1 downward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+log2p1 -0
+= log2p1 downward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 tonearest binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 towardzero binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 upward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 downward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 tonearest binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 towardzero binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 upward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 downward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 tonearest intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 towardzero intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 upward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 downward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 tonearest m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 towardzero m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 upward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 downward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 tonearest binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 towardzero binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 upward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 downward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 tonearest ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 towardzero ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log2p1 upward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+log2p1 e-1
+= log2p1 downward binary32 0x1.b7e152p+0 : 0x1.715476p+0 : inexact-ok
+= log2p1 tonearest binary32 0x1.b7e152p+0 : 0x1.715476p+0 : inexact-ok
+= log2p1 towardzero binary32 0x1.b7e152p+0 : 0x1.715476p+0 : inexact-ok
+= log2p1 upward binary32 0x1.b7e152p+0 : 0x1.715478p+0 : inexact-ok
+= log2p1 downward binary64 0x1.b7e152p+0 : 0x1.715476a649bcdp+0 : inexact-ok
+= log2p1 tonearest binary64 0x1.b7e152p+0 : 0x1.715476a649bcep+0 : inexact-ok
+= log2p1 towardzero binary64 0x1.b7e152p+0 : 0x1.715476a649bcdp+0 : inexact-ok
+= log2p1 upward binary64 0x1.b7e152p+0 : 0x1.715476a649bcep+0 : inexact-ok
+= log2p1 downward intel96 0x1.b7e152p+0 : 0x1.715476a649bcdd1p+0 : inexact-ok
+= log2p1 tonearest intel96 0x1.b7e152p+0 : 0x1.715476a649bcdd1p+0 : inexact-ok
+= log2p1 towardzero intel96 0x1.b7e152p+0 : 0x1.715476a649bcdd1p+0 : inexact-ok
+= log2p1 upward intel96 0x1.b7e152p+0 : 0x1.715476a649bcdd12p+0 : inexact-ok
+= log2p1 downward m68k96 0x1.b7e152p+0 : 0x1.715476a649bcdd1p+0 : inexact-ok
+= log2p1 tonearest m68k96 0x1.b7e152p+0 : 0x1.715476a649bcdd1p+0 : inexact-ok
+= log2p1 towardzero m68k96 0x1.b7e152p+0 : 0x1.715476a649bcdd1p+0 : inexact-ok
+= log2p1 upward m68k96 0x1.b7e152p+0 : 0x1.715476a649bcdd12p+0 : inexact-ok
+= log2p1 downward binary128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f7243p+0 : inexact-ok
+= log2p1 tonearest binary128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f7243p+0 : inexact-ok
+= log2p1 towardzero binary128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f7243p+0 : inexact-ok
+= log2p1 upward binary128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f7244p+0 : inexact-ok
+= log2p1 downward ibm128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f72p+0 : inexact-ok
+= log2p1 tonearest ibm128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f728p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f72p+0 : inexact-ok
+= log2p1 upward ibm128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f728p+0 : inexact-ok
+= log2p1 downward binary32 0x1.b7e15p+0 : 0x1.715474p+0 : inexact-ok
+= log2p1 tonearest binary32 0x1.b7e15p+0 : 0x1.715476p+0 : inexact-ok
+= log2p1 towardzero binary32 0x1.b7e15p+0 : 0x1.715474p+0 : inexact-ok
+= log2p1 upward binary32 0x1.b7e15p+0 : 0x1.715476p+0 : inexact-ok
+= log2p1 downward binary64 0x1.b7e15p+0 : 0x1.715475968cddcp+0 : inexact-ok
+= log2p1 tonearest binary64 0x1.b7e15p+0 : 0x1.715475968cddcp+0 : inexact-ok
+= log2p1 towardzero binary64 0x1.b7e15p+0 : 0x1.715475968cddcp+0 : inexact-ok
+= log2p1 upward binary64 0x1.b7e15p+0 : 0x1.715475968cdddp+0 : inexact-ok
+= log2p1 downward intel96 0x1.b7e15p+0 : 0x1.715475968cddc4e6p+0 : inexact-ok
+= log2p1 tonearest intel96 0x1.b7e15p+0 : 0x1.715475968cddc4e6p+0 : inexact-ok
+= log2p1 towardzero intel96 0x1.b7e15p+0 : 0x1.715475968cddc4e6p+0 : inexact-ok
+= log2p1 upward intel96 0x1.b7e15p+0 : 0x1.715475968cddc4e8p+0 : inexact-ok
+= log2p1 downward m68k96 0x1.b7e15p+0 : 0x1.715475968cddc4e6p+0 : inexact-ok
+= log2p1 tonearest m68k96 0x1.b7e15p+0 : 0x1.715475968cddc4e6p+0 : inexact-ok
+= log2p1 towardzero m68k96 0x1.b7e15p+0 : 0x1.715475968cddc4e6p+0 : inexact-ok
+= log2p1 upward m68k96 0x1.b7e15p+0 : 0x1.715475968cddc4e8p+0 : inexact-ok
+= log2p1 downward binary128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a7c7p+0 : inexact-ok
+= log2p1 tonearest binary128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a7c8p+0 : inexact-ok
+= log2p1 towardzero binary128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a7c7p+0 : inexact-ok
+= log2p1 upward binary128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a7c8p+0 : inexact-ok
+= log2p1 downward ibm128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a78p+0 : inexact-ok
+= log2p1 tonearest ibm128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a8p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a78p+0 : inexact-ok
+= log2p1 upward ibm128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a8p+0 : inexact-ok
+= log2p1 downward binary64 0x1.b7e151628aed3p+0 : 0x1.71547652b82fep+0 : inexact-ok
+= log2p1 tonearest binary64 0x1.b7e151628aed3p+0 : 0x1.71547652b82fep+0 : inexact-ok
+= log2p1 towardzero binary64 0x1.b7e151628aed3p+0 : 0x1.71547652b82fep+0 : inexact-ok
+= log2p1 upward binary64 0x1.b7e151628aed3p+0 : 0x1.71547652b82ffp+0 : inexact-ok
+= log2p1 downward intel96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46ep+0 : inexact-ok
+= log2p1 tonearest intel96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46ep+0 : inexact-ok
+= log2p1 towardzero intel96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46ep+0 : inexact-ok
+= log2p1 upward intel96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe47p+0 : inexact-ok
+= log2p1 downward m68k96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46ep+0 : inexact-ok
+= log2p1 tonearest m68k96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46ep+0 : inexact-ok
+= log2p1 towardzero m68k96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46ep+0 : inexact-ok
+= log2p1 upward m68k96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe47p+0 : inexact-ok
+= log2p1 downward binary128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510ab9p+0 : inexact-ok
+= log2p1 tonearest binary128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510ab9p+0 : inexact-ok
+= log2p1 towardzero binary128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510ab9p+0 : inexact-ok
+= log2p1 upward binary128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510abap+0 : inexact-ok
+= log2p1 downward ibm128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510a8p+0 : inexact-ok
+= log2p1 tonearest ibm128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510a8p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510a8p+0 : inexact-ok
+= log2p1 upward ibm128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510bp+0 : inexact-ok
+= log2p1 downward binary64 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdp+0 : inexact-ok
+= log2p1 tonearest binary64 0x1.b7e151628aed2p+0 : 0x1.71547652b82fep+0 : inexact-ok
+= log2p1 towardzero binary64 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdp+0 : inexact-ok
+= log2p1 upward binary64 0x1.b7e151628aed2p+0 : 0x1.71547652b82fep+0 : inexact-ok
+= log2p1 downward intel96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbfp+0 : inexact-ok
+= log2p1 tonearest intel96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbfp+0 : inexact-ok
+= log2p1 towardzero intel96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbfp+0 : inexact-ok
+= log2p1 upward intel96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf2p+0 : inexact-ok
+= log2p1 downward m68k96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbfp+0 : inexact-ok
+= log2p1 tonearest m68k96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbfp+0 : inexact-ok
+= log2p1 towardzero m68k96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbfp+0 : inexact-ok
+= log2p1 upward m68k96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf2p+0 : inexact-ok
+= log2p1 downward binary128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5e62p+0 : inexact-ok
+= log2p1 tonearest binary128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5e62p+0 : inexact-ok
+= log2p1 towardzero binary128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5e62p+0 : inexact-ok
+= log2p1 upward binary128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5e63p+0 : inexact-ok
+= log2p1 downward ibm128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5ep+0 : inexact-ok
+= log2p1 tonearest ibm128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5e8p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5ep+0 : inexact-ok
+= log2p1 upward ibm128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5e8p+0 : inexact-ok
+= log2p1 downward intel96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe178p+0 : inexact-ok
+= log2p1 tonearest intel96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe178p+0 : inexact-ok
+= log2p1 towardzero intel96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe178p+0 : inexact-ok
+= log2p1 upward intel96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe17ap+0 : inexact-ok
+= log2p1 downward m68k96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe178p+0 : inexact-ok
+= log2p1 tonearest m68k96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe178p+0 : inexact-ok
+= log2p1 towardzero m68k96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe178p+0 : inexact-ok
+= log2p1 upward m68k96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe17ap+0 : inexact-ok
+= log2p1 downward binary128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6b29p+0 : inexact-ok
+= log2p1 tonearest binary128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6b29p+0 : inexact-ok
+= log2p1 towardzero binary128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6b29p+0 : inexact-ok
+= log2p1 upward binary128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6b2ap+0 : inexact-ok
+= log2p1 downward ibm128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6bp+0 : inexact-ok
+= log2p1 tonearest ibm128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6bp+0 : inexact-ok
+= log2p1 towardzero ibm128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6bp+0 : inexact-ok
+= log2p1 upward ibm128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6b8p+0 : inexact-ok
+= log2p1 downward intel96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe176p+0 : inexact-ok
+= log2p1 tonearest intel96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe178p+0 : inexact-ok
+= log2p1 towardzero intel96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe176p+0 : inexact-ok
+= log2p1 upward intel96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe178p+0 : inexact-ok
+= log2p1 downward m68k96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe176p+0 : inexact-ok
+= log2p1 tonearest m68k96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe178p+0 : inexact-ok
+= log2p1 towardzero m68k96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe176p+0 : inexact-ok
+= log2p1 upward m68k96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe178p+0 : inexact-ok
+= log2p1 downward binary128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbc53p+0 : inexact-ok
+= log2p1 tonearest binary128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbc54p+0 : inexact-ok
+= log2p1 towardzero binary128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbc53p+0 : inexact-ok
+= log2p1 upward binary128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbc54p+0 : inexact-ok
+= log2p1 downward ibm128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbcp+0 : inexact-ok
+= log2p1 tonearest ibm128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbc8p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbcp+0 : inexact-ok
+= log2p1 upward ibm128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbc8p+0 : inexact-ok
+= log2p1 downward binary128 0x1.b7e151628aed2a6abf7158809cf5p+0 : 0x1.71547652b82fe1777d0ffda0d23ap+0 : inexact-ok
+= log2p1 tonearest binary128 0x1.b7e151628aed2a6abf7158809cf5p+0 : 0x1.71547652b82fe1777d0ffda0d23bp+0 : inexact-ok
+= log2p1 towardzero binary128 0x1.b7e151628aed2a6abf7158809cf5p+0 : 0x1.71547652b82fe1777d0ffda0d23ap+0 : inexact-ok
+= log2p1 upward binary128 0x1.b7e151628aed2a6abf7158809cf5p+0 : 0x1.71547652b82fe1777d0ffda0d23bp+0 : inexact-ok
+= log2p1 downward binary128 0x1.b7e151628aed2a6abf7158809cf4p+0 : 0x1.71547652b82fe1777d0ffda0d239p+0 : inexact-ok
+= log2p1 tonearest binary128 0x1.b7e151628aed2a6abf7158809cf4p+0 : 0x1.71547652b82fe1777d0ffda0d23ap+0 : inexact-ok
+= log2p1 towardzero binary128 0x1.b7e151628aed2a6abf7158809cf4p+0 : 0x1.71547652b82fe1777d0ffda0d239p+0 : inexact-ok
+= log2p1 upward binary128 0x1.b7e151628aed2a6abf7158809cf4p+0 : 0x1.71547652b82fe1777d0ffda0d23ap+0 : inexact-ok
+= log2p1 downward binary128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d24p+0 : inexact-ok
+= log2p1 tonearest binary128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d24p+0 : inexact-ok
+= log2p1 towardzero binary128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d24p+0 : inexact-ok
+= log2p1 upward binary128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d241p+0 : inexact-ok
+= log2p1 downward ibm128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d2p+0 : inexact-ok
+= log2p1 tonearest ibm128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d28p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d2p+0 : inexact-ok
+= log2p1 upward ibm128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d28p+0 : inexact-ok
+= log2p1 downward binary128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d1fcp+0 : inexact-ok
+= log2p1 tonearest binary128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d1fcp+0 : inexact-ok
+= log2p1 towardzero binary128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d1fcp+0 : inexact-ok
+= log2p1 upward binary128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d1fdp+0 : inexact-ok
+= log2p1 downward ibm128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d18p+0 : inexact-ok
+= log2p1 tonearest ibm128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d2p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d18p+0 : inexact-ok
+= log2p1 upward ibm128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d2p+0 : inexact-ok
+log2p1 -0.25
+= log2p1 downward binary32 -0x4p-4 : -0x6.a3fe6p-4 : inexact-ok
+= log2p1 tonearest binary32 -0x4p-4 : -0x6.a3fe6p-4 : inexact-ok
+= log2p1 towardzero binary32 -0x4p-4 : -0x6.a3fe58p-4 : inexact-ok
+= log2p1 upward binary32 -0x4p-4 : -0x6.a3fe58p-4 : inexact-ok
+= log2p1 downward binary64 -0x4p-4 : -0x6.a3fe5c604297cp-4 : inexact-ok
+= log2p1 tonearest binary64 -0x4p-4 : -0x6.a3fe5c6042978p-4 : inexact-ok
+= log2p1 towardzero binary64 -0x4p-4 : -0x6.a3fe5c6042978p-4 : inexact-ok
+= log2p1 upward binary64 -0x4p-4 : -0x6.a3fe5c6042978p-4 : inexact-ok
+= log2p1 downward intel96 -0x4p-4 : -0x6.a3fe5c6042978608p-4 : inexact-ok
+= log2p1 tonearest intel96 -0x4p-4 : -0x6.a3fe5c6042978608p-4 : inexact-ok
+= log2p1 towardzero intel96 -0x4p-4 : -0x6.a3fe5c60429786p-4 : inexact-ok
+= log2p1 upward intel96 -0x4p-4 : -0x6.a3fe5c60429786p-4 : inexact-ok
+= log2p1 downward m68k96 -0x4p-4 : -0x6.a3fe5c6042978608p-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x4p-4 : -0x6.a3fe5c6042978608p-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x4p-4 : -0x6.a3fe5c60429786p-4 : inexact-ok
+= log2p1 upward m68k96 -0x4p-4 : -0x6.a3fe5c60429786p-4 : inexact-ok
+= log2p1 downward binary128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f9748p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f9744p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f9744p-4 : inexact-ok
+= log2p1 upward binary128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f9744p-4 : inexact-ok
+= log2p1 downward ibm128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f98p-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f98p-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f96p-4 : inexact-ok
+= log2p1 upward ibm128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f96p-4 : inexact-ok
+log2p1 -0.875
+= log2p1 downward binary32 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 tonearest binary32 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 towardzero binary32 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 upward binary32 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 downward binary64 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 tonearest binary64 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 towardzero binary64 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 upward binary64 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 downward intel96 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 tonearest intel96 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 towardzero intel96 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 upward intel96 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 downward m68k96 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 tonearest m68k96 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 towardzero m68k96 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 upward m68k96 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 downward binary128 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 tonearest binary128 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 towardzero binary128 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 upward binary128 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 downward ibm128 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 tonearest ibm128 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 towardzero ibm128 -0xep-4 : -0x3p+0 : inexact-ok
+= log2p1 upward ibm128 -0xep-4 : -0x3p+0 : inexact-ok
+log2p1 0x1p-5
+= log2p1 downward binary32 0x8p-8 : 0xb.5d69bp-8 : inexact-ok
+= log2p1 tonearest binary32 0x8p-8 : 0xb.5d69cp-8 : inexact-ok
+= log2p1 towardzero binary32 0x8p-8 : 0xb.5d69bp-8 : inexact-ok
+= log2p1 upward binary32 0x8p-8 : 0xb.5d69cp-8 : inexact-ok
+= log2p1 downward binary64 0x8p-8 : 0xb.5d69bac77ec38p-8 : inexact-ok
+= log2p1 tonearest binary64 0x8p-8 : 0xb.5d69bac77ec38p-8 : inexact-ok
+= log2p1 towardzero binary64 0x8p-8 : 0xb.5d69bac77ec38p-8 : inexact-ok
+= log2p1 upward binary64 0x8p-8 : 0xb.5d69bac77ec4p-8 : inexact-ok
+= log2p1 downward intel96 0x8p-8 : 0xb.5d69bac77ec3989p-8 : inexact-ok
+= log2p1 tonearest intel96 0x8p-8 : 0xb.5d69bac77ec398ap-8 : inexact-ok
+= log2p1 towardzero intel96 0x8p-8 : 0xb.5d69bac77ec3989p-8 : inexact-ok
+= log2p1 upward intel96 0x8p-8 : 0xb.5d69bac77ec398ap-8 : inexact-ok
+= log2p1 downward m68k96 0x8p-8 : 0xb.5d69bac77ec3989p-8 : inexact-ok
+= log2p1 tonearest m68k96 0x8p-8 : 0xb.5d69bac77ec398ap-8 : inexact-ok
+= log2p1 towardzero m68k96 0x8p-8 : 0xb.5d69bac77ec3989p-8 : inexact-ok
+= log2p1 upward m68k96 0x8p-8 : 0xb.5d69bac77ec398ap-8 : inexact-ok
+= log2p1 downward binary128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5be08p-8 : inexact-ok
+= log2p1 tonearest binary128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5be088p-8 : inexact-ok
+= log2p1 towardzero binary128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5be08p-8 : inexact-ok
+= log2p1 upward binary128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5be088p-8 : inexact-ok
+= log2p1 downward ibm128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5bep-8 : inexact-ok
+= log2p1 tonearest ibm128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5bep-8 : inexact-ok
+= log2p1 towardzero ibm128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5bep-8 : inexact-ok
+= log2p1 upward ibm128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5be4p-8 : inexact-ok
+log2p1 0x1p-10
+= log2p1 downward binary32 0x4p-12 : 0x5.c49948p-12 : inexact-ok
+= log2p1 tonearest binary32 0x4p-12 : 0x5.c4995p-12 : inexact-ok
+= log2p1 towardzero binary32 0x4p-12 : 0x5.c49948p-12 : inexact-ok
+= log2p1 upward binary32 0x4p-12 : 0x5.c4995p-12 : inexact-ok
+= log2p1 downward binary64 0x4p-12 : 0x5.c4994dd0fd15p-12 : inexact-ok
+= log2p1 tonearest binary64 0x4p-12 : 0x5.c4994dd0fd15p-12 : inexact-ok
+= log2p1 towardzero binary64 0x4p-12 : 0x5.c4994dd0fd15p-12 : inexact-ok
+= log2p1 upward binary64 0x4p-12 : 0x5.c4994dd0fd154p-12 : inexact-ok
+= log2p1 downward intel96 0x4p-12 : 0x5.c4994dd0fd1507e8p-12 : inexact-ok
+= log2p1 tonearest intel96 0x4p-12 : 0x5.c4994dd0fd1507e8p-12 : inexact-ok
+= log2p1 towardzero intel96 0x4p-12 : 0x5.c4994dd0fd1507e8p-12 : inexact-ok
+= log2p1 upward intel96 0x4p-12 : 0x5.c4994dd0fd1507fp-12 : inexact-ok
+= log2p1 downward m68k96 0x4p-12 : 0x5.c4994dd0fd1507e8p-12 : inexact-ok
+= log2p1 tonearest m68k96 0x4p-12 : 0x5.c4994dd0fd1507e8p-12 : inexact-ok
+= log2p1 towardzero m68k96 0x4p-12 : 0x5.c4994dd0fd1507e8p-12 : inexact-ok
+= log2p1 upward m68k96 0x4p-12 : 0x5.c4994dd0fd1507fp-12 : inexact-ok
+= log2p1 downward binary128 0x4p-12 : 0x5.c4994dd0fd1507ea7e50e498deb4p-12 : inexact-ok
+= log2p1 tonearest binary128 0x4p-12 : 0x5.c4994dd0fd1507ea7e50e498deb8p-12 : inexact-ok
+= log2p1 towardzero binary128 0x4p-12 : 0x5.c4994dd0fd1507ea7e50e498deb4p-12 : inexact-ok
+= log2p1 upward binary128 0x4p-12 : 0x5.c4994dd0fd1507ea7e50e498deb8p-12 : inexact-ok
+= log2p1 downward ibm128 0x4p-12 : 0x5.c4994dd0fd1507ea7e50e498dep-12 : inexact-ok
+= log2p1 tonearest ibm128 0x4p-12 : 0x5.c4994dd0fd1507ea7e50e498dep-12 : inexact-ok
+= log2p1 towardzero ibm128 0x4p-12 : 0x5.c4994dd0fd1507ea7e50e498dep-12 : inexact-ok
+= log2p1 upward ibm128 0x4p-12 : 0x5.c4994dd0fd1507ea7e50e498ep-12 : inexact-ok
+log2p1 0x1p-15
+= log2p1 downward binary32 0x2p-16 : 0x2.e2a608p-16 : inexact-ok
+= log2p1 tonearest binary32 0x2p-16 : 0x2.e2a60cp-16 : inexact-ok
+= log2p1 towardzero binary32 0x2p-16 : 0x2.e2a608p-16 : inexact-ok
+= log2p1 upward binary32 0x2p-16 : 0x2.e2a60cp-16 : inexact-ok
+= log2p1 downward binary64 0x2p-16 : 0x2.e2a60a005c95cp-16 : inexact-ok
+= log2p1 tonearest binary64 0x2p-16 : 0x2.e2a60a005c95cp-16 : inexact-ok
+= log2p1 towardzero binary64 0x2p-16 : 0x2.e2a60a005c95cp-16 : inexact-ok
+= log2p1 upward binary64 0x2p-16 : 0x2.e2a60a005c95ep-16 : inexact-ok
+= log2p1 downward intel96 0x2p-16 : 0x2.e2a60a005c95c8ccp-16 : inexact-ok
+= log2p1 tonearest intel96 0x2p-16 : 0x2.e2a60a005c95c8ccp-16 : inexact-ok
+= log2p1 towardzero intel96 0x2p-16 : 0x2.e2a60a005c95c8ccp-16 : inexact-ok
+= log2p1 upward intel96 0x2p-16 : 0x2.e2a60a005c95c8dp-16 : inexact-ok
+= log2p1 downward m68k96 0x2p-16 : 0x2.e2a60a005c95c8ccp-16 : inexact-ok
+= log2p1 tonearest m68k96 0x2p-16 : 0x2.e2a60a005c95c8ccp-16 : inexact-ok
+= log2p1 towardzero m68k96 0x2p-16 : 0x2.e2a60a005c95c8ccp-16 : inexact-ok
+= log2p1 upward m68k96 0x2p-16 : 0x2.e2a60a005c95c8dp-16 : inexact-ok
+= log2p1 downward binary128 0x2p-16 : 0x2.e2a60a005c95c8cdda0c94035caap-16 : inexact-ok
+= log2p1 tonearest binary128 0x2p-16 : 0x2.e2a60a005c95c8cdda0c94035caap-16 : inexact-ok
+= log2p1 towardzero binary128 0x2p-16 : 0x2.e2a60a005c95c8cdda0c94035caap-16 : inexact-ok
+= log2p1 upward binary128 0x2p-16 : 0x2.e2a60a005c95c8cdda0c94035cacp-16 : inexact-ok
+= log2p1 downward ibm128 0x2p-16 : 0x2.e2a60a005c95c8cdda0c94035cp-16 : inexact-ok
+= log2p1 tonearest ibm128 0x2p-16 : 0x2.e2a60a005c95c8cdda0c94035dp-16 : inexact-ok
+= log2p1 towardzero ibm128 0x2p-16 : 0x2.e2a60a005c95c8cdda0c94035cp-16 : inexact-ok
+= log2p1 upward ibm128 0x2p-16 : 0x2.e2a60a005c95c8cdda0c94035dp-16 : inexact-ok
+log2p1 0x1p-20
+= log2p1 downward binary32 0x1p-20 : 0x1.71546ap-20 : inexact-ok
+= log2p1 tonearest binary32 0x1p-20 : 0x1.71546ap-20 : inexact-ok
+= log2p1 towardzero binary32 0x1p-20 : 0x1.71546ap-20 : inexact-ok
+= log2p1 upward binary32 0x1p-20 : 0x1.71546cp-20 : inexact-ok
+= log2p1 downward binary64 0x1p-20 : 0x1.71546ac814f86p-20 : inexact-ok
+= log2p1 tonearest binary64 0x1p-20 : 0x1.71546ac814f86p-20 : inexact-ok
+= log2p1 towardzero binary64 0x1p-20 : 0x1.71546ac814f86p-20 : inexact-ok
+= log2p1 upward binary64 0x1p-20 : 0x1.71546ac814f87p-20 : inexact-ok
+= log2p1 downward intel96 0x1p-20 : 0x1.71546ac814f867d6p-20 : inexact-ok
+= log2p1 tonearest intel96 0x1p-20 : 0x1.71546ac814f867d8p-20 : inexact-ok
+= log2p1 towardzero intel96 0x1p-20 : 0x1.71546ac814f867d6p-20 : inexact-ok
+= log2p1 upward intel96 0x1p-20 : 0x1.71546ac814f867d8p-20 : inexact-ok
+= log2p1 downward m68k96 0x1p-20 : 0x1.71546ac814f867d6p-20 : inexact-ok
+= log2p1 tonearest m68k96 0x1p-20 : 0x1.71546ac814f867d8p-20 : inexact-ok
+= log2p1 towardzero m68k96 0x1p-20 : 0x1.71546ac814f867d6p-20 : inexact-ok
+= log2p1 upward m68k96 0x1p-20 : 0x1.71546ac814f867d8p-20 : inexact-ok
+= log2p1 downward binary128 0x1p-20 : 0x1.71546ac814f867d7a99ac240f177p-20 : inexact-ok
+= log2p1 tonearest binary128 0x1p-20 : 0x1.71546ac814f867d7a99ac240f178p-20 : inexact-ok
+= log2p1 towardzero binary128 0x1p-20 : 0x1.71546ac814f867d7a99ac240f177p-20 : inexact-ok
+= log2p1 upward binary128 0x1p-20 : 0x1.71546ac814f867d7a99ac240f178p-20 : inexact-ok
+= log2p1 downward ibm128 0x1p-20 : 0x1.71546ac814f867d7a99ac240f1p-20 : inexact-ok
+= log2p1 tonearest ibm128 0x1p-20 : 0x1.71546ac814f867d7a99ac240f18p-20 : inexact-ok
+= log2p1 towardzero ibm128 0x1p-20 : 0x1.71546ac814f867d7a99ac240f1p-20 : inexact-ok
+= log2p1 upward ibm128 0x1p-20 : 0x1.71546ac814f867d7a99ac240f18p-20 : inexact-ok
+log2p1 0x1p-25
+= log2p1 downward binary32 0x8p-28 : 0xb.8aa3ap-28 : inexact-ok
+= log2p1 tonearest binary32 0x8p-28 : 0xb.8aa3bp-28 : inexact-ok
+= log2p1 towardzero binary32 0x8p-28 : 0xb.8aa3ap-28 : inexact-ok
+= log2p1 upward binary32 0x8p-28 : 0xb.8aa3bp-28 : inexact-ok
+= log2p1 downward binary64 0x8p-28 : 0xb.8aa3afb31893p-28 : inexact-ok
+= log2p1 tonearest binary64 0x8p-28 : 0xb.8aa3afb318938p-28 : inexact-ok
+= log2p1 towardzero binary64 0x8p-28 : 0xb.8aa3afb31893p-28 : inexact-ok
+= log2p1 upward binary64 0x8p-28 : 0xb.8aa3afb318938p-28 : inexact-ok
+= log2p1 downward intel96 0x8p-28 : 0xb.8aa3afb318935c8p-28 : inexact-ok
+= log2p1 tonearest intel96 0x8p-28 : 0xb.8aa3afb318935c8p-28 : inexact-ok
+= log2p1 towardzero intel96 0x8p-28 : 0xb.8aa3afb318935c8p-28 : inexact-ok
+= log2p1 upward intel96 0x8p-28 : 0xb.8aa3afb318935c9p-28 : inexact-ok
+= log2p1 downward m68k96 0x8p-28 : 0xb.8aa3afb318935c8p-28 : inexact-ok
+= log2p1 tonearest m68k96 0x8p-28 : 0xb.8aa3afb318935c8p-28 : inexact-ok
+= log2p1 towardzero m68k96 0x8p-28 : 0xb.8aa3afb318935c8p-28 : inexact-ok
+= log2p1 upward m68k96 0x8p-28 : 0xb.8aa3afb318935c9p-28 : inexact-ok
+= log2p1 downward binary128 0x8p-28 : 0xb.8aa3afb318935c83d742790eedb8p-28 : inexact-ok
+= log2p1 tonearest binary128 0x8p-28 : 0xb.8aa3afb318935c83d742790eedcp-28 : inexact-ok
+= log2p1 towardzero binary128 0x8p-28 : 0xb.8aa3afb318935c83d742790eedb8p-28 : inexact-ok
+= log2p1 upward binary128 0x8p-28 : 0xb.8aa3afb318935c83d742790eedcp-28 : inexact-ok
+= log2p1 downward ibm128 0x8p-28 : 0xb.8aa3afb318935c83d742790eecp-28 : inexact-ok
+= log2p1 tonearest ibm128 0x8p-28 : 0xb.8aa3afb318935c83d742790eecp-28 : inexact-ok
+= log2p1 towardzero ibm128 0x8p-28 : 0xb.8aa3afb318935c83d742790eecp-28 : inexact-ok
+= log2p1 upward ibm128 0x8p-28 : 0xb.8aa3afb318935c83d742790efp-28 : inexact-ok
+log2p1 0x1p-30
+= log2p1 downward binary32 0x4p-32 : 0x5.c551d8p-32 : inexact-ok
+= log2p1 tonearest binary32 0x4p-32 : 0x5.c551d8p-32 : inexact-ok
+= log2p1 towardzero binary32 0x4p-32 : 0x5.c551d8p-32 : inexact-ok
+= log2p1 upward binary32 0x4p-32 : 0x5.c551ep-32 : inexact-ok
+= log2p1 downward binary64 0x4p-32 : 0x5.c551d93f561bcp-32 : inexact-ok
+= log2p1 tonearest binary64 0x4p-32 : 0x5.c551d93f561bcp-32 : inexact-ok
+= log2p1 towardzero binary64 0x4p-32 : 0x5.c551d93f561bcp-32 : inexact-ok
+= log2p1 upward binary64 0x4p-32 : 0x5.c551d93f561cp-32 : inexact-ok
+= log2p1 downward intel96 0x4p-32 : 0x5.c551d93f561bd36p-32 : inexact-ok
+= log2p1 tonearest intel96 0x4p-32 : 0x5.c551d93f561bd368p-32 : inexact-ok
+= log2p1 towardzero intel96 0x4p-32 : 0x5.c551d93f561bd36p-32 : inexact-ok
+= log2p1 upward intel96 0x4p-32 : 0x5.c551d93f561bd368p-32 : inexact-ok
+= log2p1 downward m68k96 0x4p-32 : 0x5.c551d93f561bd36p-32 : inexact-ok
+= log2p1 tonearest m68k96 0x4p-32 : 0x5.c551d93f561bd368p-32 : inexact-ok
+= log2p1 towardzero m68k96 0x4p-32 : 0x5.c551d93f561bd36p-32 : inexact-ok
+= log2p1 upward m68k96 0x4p-32 : 0x5.c551d93f561bd368p-32 : inexact-ok
+= log2p1 downward binary128 0x4p-32 : 0x5.c551d93f561bd366f9cac6a50f48p-32 : inexact-ok
+= log2p1 tonearest binary128 0x4p-32 : 0x5.c551d93f561bd366f9cac6a50f48p-32 : inexact-ok
+= log2p1 towardzero binary128 0x4p-32 : 0x5.c551d93f561bd366f9cac6a50f48p-32 : inexact-ok
+= log2p1 upward binary128 0x4p-32 : 0x5.c551d93f561bd366f9cac6a50f4cp-32 : inexact-ok
+= log2p1 downward ibm128 0x4p-32 : 0x5.c551d93f561bd366f9cac6a50ep-32 : inexact-ok
+= log2p1 tonearest ibm128 0x4p-32 : 0x5.c551d93f561bd366f9cac6a51p-32 : inexact-ok
+= log2p1 towardzero ibm128 0x4p-32 : 0x5.c551d93f561bd366f9cac6a50ep-32 : inexact-ok
+= log2p1 upward ibm128 0x4p-32 : 0x5.c551d93f561bd366f9cac6a51p-32 : inexact-ok
+log2p1 0x1p-35
+= log2p1 downward binary32 0x2p-36 : 0x2.e2a8ecp-36 : inexact-ok
+= log2p1 tonearest binary32 0x2p-36 : 0x2.e2a8ecp-36 : inexact-ok
+= log2p1 towardzero binary32 0x2p-36 : 0x2.e2a8ecp-36 : inexact-ok
+= log2p1 upward binary32 0x2p-36 : 0x2.e2a8fp-36 : inexact-ok
+= log2p1 downward binary64 0x2p-36 : 0x2.e2a8eca542352p-36 : inexact-ok
+= log2p1 tonearest binary64 0x2p-36 : 0x2.e2a8eca542354p-36 : inexact-ok
+= log2p1 towardzero binary64 0x2p-36 : 0x2.e2a8eca542352p-36 : inexact-ok
+= log2p1 upward binary64 0x2p-36 : 0x2.e2a8eca542354p-36 : inexact-ok
+= log2p1 downward intel96 0x2p-36 : 0x2.e2a8eca542353424p-36 : inexact-ok
+= log2p1 tonearest intel96 0x2p-36 : 0x2.e2a8eca542353424p-36 : inexact-ok
+= log2p1 towardzero intel96 0x2p-36 : 0x2.e2a8eca542353424p-36 : inexact-ok
+= log2p1 upward intel96 0x2p-36 : 0x2.e2a8eca542353428p-36 : inexact-ok
+= log2p1 downward m68k96 0x2p-36 : 0x2.e2a8eca542353424p-36 : inexact-ok
+= log2p1 tonearest m68k96 0x2p-36 : 0x2.e2a8eca542353424p-36 : inexact-ok
+= log2p1 towardzero m68k96 0x2p-36 : 0x2.e2a8eca542353424p-36 : inexact-ok
+= log2p1 upward m68k96 0x2p-36 : 0x2.e2a8eca542353428p-36 : inexact-ok
+= log2p1 downward binary128 0x2p-36 : 0x2.e2a8eca542353424a6f2e04e3bb6p-36 : inexact-ok
+= log2p1 tonearest binary128 0x2p-36 : 0x2.e2a8eca542353424a6f2e04e3bb8p-36 : inexact-ok
+= log2p1 towardzero binary128 0x2p-36 : 0x2.e2a8eca542353424a6f2e04e3bb6p-36 : inexact-ok
+= log2p1 upward binary128 0x2p-36 : 0x2.e2a8eca542353424a6f2e04e3bb8p-36 : inexact-ok
+= log2p1 downward ibm128 0x2p-36 : 0x2.e2a8eca542353424a6f2e04e3bp-36 : inexact-ok
+= log2p1 tonearest ibm128 0x2p-36 : 0x2.e2a8eca542353424a6f2e04e3cp-36 : inexact-ok
+= log2p1 towardzero ibm128 0x2p-36 : 0x2.e2a8eca542353424a6f2e04e3bp-36 : inexact-ok
+= log2p1 upward ibm128 0x2p-36 : 0x2.e2a8eca542353424a6f2e04e3cp-36 : inexact-ok
+log2p1 0x1p-40
+= log2p1 downward binary32 0x1p-40 : 0x1.715476p-40 : inexact-ok
+= log2p1 tonearest binary32 0x1p-40 : 0x1.715476p-40 : inexact-ok
+= log2p1 towardzero binary32 0x1p-40 : 0x1.715476p-40 : inexact-ok
+= log2p1 upward binary32 0x1p-40 : 0x1.715478p-40 : inexact-ok
+= log2p1 downward binary64 0x1p-40 : 0x1.71547652b7773p-40 : inexact-ok
+= log2p1 tonearest binary64 0x1p-40 : 0x1.71547652b7773p-40 : inexact-ok
+= log2p1 towardzero binary64 0x1p-40 : 0x1.71547652b7773p-40 : inexact-ok
+= log2p1 upward binary64 0x1p-40 : 0x1.71547652b7774p-40 : inexact-ok
+= log2p1 downward intel96 0x1p-40 : 0x1.71547652b777373cp-40 : inexact-ok
+= log2p1 tonearest intel96 0x1p-40 : 0x1.71547652b777373cp-40 : inexact-ok
+= log2p1 towardzero intel96 0x1p-40 : 0x1.71547652b777373cp-40 : inexact-ok
+= log2p1 upward intel96 0x1p-40 : 0x1.71547652b777373ep-40 : inexact-ok
+= log2p1 downward m68k96 0x1p-40 : 0x1.71547652b777373cp-40 : inexact-ok
+= log2p1 tonearest m68k96 0x1p-40 : 0x1.71547652b777373cp-40 : inexact-ok
+= log2p1 towardzero m68k96 0x1p-40 : 0x1.71547652b777373cp-40 : inexact-ok
+= log2p1 upward m68k96 0x1p-40 : 0x1.71547652b777373ep-40 : inexact-ok
+= log2p1 downward binary128 0x1p-40 : 0x1.71547652b777373c53b460cc3decp-40 : inexact-ok
+= log2p1 tonearest binary128 0x1p-40 : 0x1.71547652b777373c53b460cc3dedp-40 : inexact-ok
+= log2p1 towardzero binary128 0x1p-40 : 0x1.71547652b777373c53b460cc3decp-40 : inexact-ok
+= log2p1 upward binary128 0x1p-40 : 0x1.71547652b777373c53b460cc3dedp-40 : inexact-ok
+= log2p1 downward ibm128 0x1p-40 : 0x1.71547652b777373c53b460cc3d8p-40 : inexact-ok
+= log2p1 tonearest ibm128 0x1p-40 : 0x1.71547652b777373c53b460cc3ep-40 : inexact-ok
+= log2p1 towardzero ibm128 0x1p-40 : 0x1.71547652b777373c53b460cc3d8p-40 : inexact-ok
+= log2p1 upward ibm128 0x1p-40 : 0x1.71547652b777373c53b460cc3ep-40 : inexact-ok
+log2p1 0x1p-45
+= log2p1 downward binary32 0x8p-48 : 0xb.8aa3bp-48 : inexact-ok
+= log2p1 tonearest binary32 0x8p-48 : 0xb.8aa3bp-48 : inexact-ok
+= log2p1 towardzero binary32 0x8p-48 : 0xb.8aa3bp-48 : inexact-ok
+= log2p1 upward binary32 0x8p-48 : 0xb.8aa3cp-48 : inexact-ok
+= log2p1 downward binary64 0x8p-48 : 0xb.8aa3b295c1508p-48 : inexact-ok
+= log2p1 tonearest binary64 0x8p-48 : 0xb.8aa3b295c151p-48 : inexact-ok
+= log2p1 towardzero binary64 0x8p-48 : 0xb.8aa3b295c1508p-48 : inexact-ok
+= log2p1 upward binary64 0x8p-48 : 0xb.8aa3b295c151p-48 : inexact-ok
+= log2p1 downward intel96 0x8p-48 : 0xb.8aa3b295c150e12p-48 : inexact-ok
+= log2p1 tonearest intel96 0x8p-48 : 0xb.8aa3b295c150e13p-48 : inexact-ok
+= log2p1 towardzero intel96 0x8p-48 : 0xb.8aa3b295c150e12p-48 : inexact-ok
+= log2p1 upward intel96 0x8p-48 : 0xb.8aa3b295c150e13p-48 : inexact-ok
+= log2p1 downward m68k96 0x8p-48 : 0xb.8aa3b295c150e12p-48 : inexact-ok
+= log2p1 tonearest m68k96 0x8p-48 : 0xb.8aa3b295c150e13p-48 : inexact-ok
+= log2p1 towardzero m68k96 0x8p-48 : 0xb.8aa3b295c150e12p-48 : inexact-ok
+= log2p1 upward m68k96 0x8p-48 : 0xb.8aa3b295c150e13p-48 : inexact-ok
+= log2p1 downward binary128 0x8p-48 : 0xb.8aa3b295c150e12d1e28e8009b3p-48 : inexact-ok
+= log2p1 tonearest binary128 0x8p-48 : 0xb.8aa3b295c150e12d1e28e8009b3p-48 : inexact-ok
+= log2p1 towardzero binary128 0x8p-48 : 0xb.8aa3b295c150e12d1e28e8009b3p-48 : inexact-ok
+= log2p1 upward binary128 0x8p-48 : 0xb.8aa3b295c150e12d1e28e8009b38p-48 : inexact-ok
+= log2p1 downward ibm128 0x8p-48 : 0xb.8aa3b295c150e12d1e28e80098p-48 : inexact-ok
+= log2p1 tonearest ibm128 0x8p-48 : 0xb.8aa3b295c150e12d1e28e8009cp-48 : inexact-ok
+= log2p1 towardzero ibm128 0x8p-48 : 0xb.8aa3b295c150e12d1e28e80098p-48 : inexact-ok
+= log2p1 upward ibm128 0x8p-48 : 0xb.8aa3b295c150e12d1e28e8009cp-48 : inexact-ok
+log2p1 0x1p-50
+= log2p1 downward binary32 0x4p-52 : 0x5.c551d8p-52 : inexact-ok
+= log2p1 tonearest binary32 0x4p-52 : 0x5.c551d8p-52 : inexact-ok
+= log2p1 towardzero binary32 0x4p-52 : 0x5.c551d8p-52 : inexact-ok
+= log2p1 upward binary32 0x4p-52 : 0x5.c551ep-52 : inexact-ok
+= log2p1 downward binary64 0x4p-52 : 0x5.c551d94ae0becp-52 : inexact-ok
+= log2p1 tonearest binary64 0x4p-52 : 0x5.c551d94ae0becp-52 : inexact-ok
+= log2p1 towardzero binary64 0x4p-52 : 0x5.c551d94ae0becp-52 : inexact-ok
+= log2p1 upward binary64 0x4p-52 : 0x5.c551d94ae0bfp-52 : inexact-ok
+= log2p1 downward intel96 0x4p-52 : 0x5.c551d94ae0becd3p-52 : inexact-ok
+= log2p1 tonearest intel96 0x4p-52 : 0x5.c551d94ae0becd3p-52 : inexact-ok
+= log2p1 towardzero intel96 0x4p-52 : 0x5.c551d94ae0becd3p-52 : inexact-ok
+= log2p1 upward intel96 0x4p-52 : 0x5.c551d94ae0becd38p-52 : inexact-ok
+= log2p1 downward m68k96 0x4p-52 : 0x5.c551d94ae0becd3p-52 : inexact-ok
+= log2p1 tonearest m68k96 0x4p-52 : 0x5.c551d94ae0becd3p-52 : inexact-ok
+= log2p1 towardzero m68k96 0x4p-52 : 0x5.c551d94ae0becd3p-52 : inexact-ok
+= log2p1 upward m68k96 0x4p-52 : 0x5.c551d94ae0becd38p-52 : inexact-ok
+= log2p1 downward binary128 0x4p-52 : 0x5.c551d94ae0becd33b9169a6b76f4p-52 : inexact-ok
+= log2p1 tonearest binary128 0x4p-52 : 0x5.c551d94ae0becd33b9169a6b76f4p-52 : inexact-ok
+= log2p1 towardzero binary128 0x4p-52 : 0x5.c551d94ae0becd33b9169a6b76f4p-52 : inexact-ok
+= log2p1 upward binary128 0x4p-52 : 0x5.c551d94ae0becd33b9169a6b76f8p-52 : inexact-ok
+= log2p1 downward ibm128 0x4p-52 : 0x5.c551d94ae0becd33b9169a6b76p-52 : inexact-ok
+= log2p1 tonearest ibm128 0x4p-52 : 0x5.c551d94ae0becd33b9169a6b76p-52 : inexact-ok
+= log2p1 towardzero ibm128 0x4p-52 : 0x5.c551d94ae0becd33b9169a6b76p-52 : inexact-ok
+= log2p1 upward ibm128 0x4p-52 : 0x5.c551d94ae0becd33b9169a6b78p-52 : inexact-ok
+log2p1 0x1p-55
+= log2p1 downward binary32 0x2p-56 : 0x2.e2a8ecp-56 : inexact-ok
+= log2p1 tonearest binary32 0x2p-56 : 0x2.e2a8ecp-56 : inexact-ok
+= log2p1 towardzero binary32 0x2p-56 : 0x2.e2a8ecp-56 : inexact-ok
+= log2p1 upward binary32 0x2p-56 : 0x2.e2a8fp-56 : inexact-ok
+= log2p1 downward binary64 0x2p-56 : 0x2.e2a8eca5705fcp-56 : inexact-ok
+= log2p1 tonearest binary64 0x2p-56 : 0x2.e2a8eca5705fcp-56 : inexact-ok
+= log2p1 towardzero binary64 0x2p-56 : 0x2.e2a8eca5705fcp-56 : inexact-ok
+= log2p1 upward binary64 0x2p-56 : 0x2.e2a8eca5705fep-56 : inexact-ok
+= log2p1 downward intel96 0x2p-56 : 0x2.e2a8eca5705fc00cp-56 : inexact-ok
+= log2p1 tonearest intel96 0x2p-56 : 0x2.e2a8eca5705fc00cp-56 : inexact-ok
+= log2p1 towardzero intel96 0x2p-56 : 0x2.e2a8eca5705fc00cp-56 : inexact-ok
+= log2p1 upward intel96 0x2p-56 : 0x2.e2a8eca5705fc01p-56 : inexact-ok
+= log2p1 downward m68k96 0x2p-56 : 0x2.e2a8eca5705fc00cp-56 : inexact-ok
+= log2p1 tonearest m68k96 0x2p-56 : 0x2.e2a8eca5705fc00cp-56 : inexact-ok
+= log2p1 towardzero m68k96 0x2p-56 : 0x2.e2a8eca5705fc00cp-56 : inexact-ok
+= log2p1 upward m68k96 0x2p-56 : 0x2.e2a8eca5705fc01p-56 : inexact-ok
+= log2p1 downward binary128 0x2p-56 : 0x2.e2a8eca5705fc00c513355d144b4p-56 : inexact-ok
+= log2p1 tonearest binary128 0x2p-56 : 0x2.e2a8eca5705fc00c513355d144b6p-56 : inexact-ok
+= log2p1 towardzero binary128 0x2p-56 : 0x2.e2a8eca5705fc00c513355d144b4p-56 : inexact-ok
+= log2p1 upward binary128 0x2p-56 : 0x2.e2a8eca5705fc00c513355d144b6p-56 : inexact-ok
+= log2p1 downward ibm128 0x2p-56 : 0x2.e2a8eca5705fc00c513355d144p-56 : inexact-ok
+= log2p1 tonearest ibm128 0x2p-56 : 0x2.e2a8eca5705fc00c513355d145p-56 : inexact-ok
+= log2p1 towardzero ibm128 0x2p-56 : 0x2.e2a8eca5705fc00c513355d144p-56 : inexact-ok
+= log2p1 upward ibm128 0x2p-56 : 0x2.e2a8eca5705fc00c513355d145p-56 : inexact-ok
+log2p1 0x1p-60
+= log2p1 downward binary32 0x1p-60 : 0x1.715476p-60 : inexact-ok
+= log2p1 tonearest binary32 0x1p-60 : 0x1.715476p-60 : inexact-ok
+= log2p1 towardzero binary32 0x1p-60 : 0x1.715476p-60 : inexact-ok
+= log2p1 upward binary32 0x1p-60 : 0x1.715478p-60 : inexact-ok
+= log2p1 downward binary64 0x1p-60 : 0x1.71547652b82fep-60 : inexact-ok
+= log2p1 tonearest binary64 0x1p-60 : 0x1.71547652b82fep-60 : inexact-ok
+= log2p1 towardzero binary64 0x1p-60 : 0x1.71547652b82fep-60 : inexact-ok
+= log2p1 upward binary64 0x1p-60 : 0x1.71547652b82ffp-60 : inexact-ok
+= log2p1 downward intel96 0x1p-60 : 0x1.71547652b82fe16ap-60 : inexact-ok
+= log2p1 tonearest intel96 0x1p-60 : 0x1.71547652b82fe16cp-60 : inexact-ok
+= log2p1 towardzero intel96 0x1p-60 : 0x1.71547652b82fe16ap-60 : inexact-ok
+= log2p1 upward intel96 0x1p-60 : 0x1.71547652b82fe16cp-60 : inexact-ok
+= log2p1 downward m68k96 0x1p-60 : 0x1.71547652b82fe16ap-60 : inexact-ok
+= log2p1 tonearest m68k96 0x1p-60 : 0x1.71547652b82fe16cp-60 : inexact-ok
+= log2p1 towardzero m68k96 0x1p-60 : 0x1.71547652b82fe16ap-60 : inexact-ok
+= log2p1 upward m68k96 0x1p-60 : 0x1.71547652b82fe16cp-60 : inexact-ok
+= log2p1 downward binary128 0x1p-60 : 0x1.71547652b82fe16bf26c4b0b10bbp-60 : inexact-ok
+= log2p1 tonearest binary128 0x1p-60 : 0x1.71547652b82fe16bf26c4b0b10bbp-60 : inexact-ok
+= log2p1 towardzero binary128 0x1p-60 : 0x1.71547652b82fe16bf26c4b0b10bbp-60 : inexact-ok
+= log2p1 upward binary128 0x1p-60 : 0x1.71547652b82fe16bf26c4b0b10bcp-60 : inexact-ok
+= log2p1 downward ibm128 0x1p-60 : 0x1.71547652b82fe16bf26c4b0b108p-60 : inexact-ok
+= log2p1 tonearest ibm128 0x1p-60 : 0x1.71547652b82fe16bf26c4b0b108p-60 : inexact-ok
+= log2p1 towardzero ibm128 0x1p-60 : 0x1.71547652b82fe16bf26c4b0b108p-60 : inexact-ok
+= log2p1 upward ibm128 0x1p-60 : 0x1.71547652b82fe16bf26c4b0b11p-60 : inexact-ok
+log2p1 0x1p-100
+= log2p1 downward binary32 0x1p-100 : 0x1.715476p-100 : inexact-ok
+= log2p1 tonearest binary32 0x1p-100 : 0x1.715476p-100 : inexact-ok
+= log2p1 towardzero binary32 0x1p-100 : 0x1.715476p-100 : inexact-ok
+= log2p1 upward binary32 0x1p-100 : 0x1.715478p-100 : inexact-ok
+= log2p1 downward binary64 0x1p-100 : 0x1.71547652b82fep-100 : inexact-ok
+= log2p1 tonearest binary64 0x1p-100 : 0x1.71547652b82fep-100 : inexact-ok
+= log2p1 towardzero binary64 0x1p-100 : 0x1.71547652b82fep-100 : inexact-ok
+= log2p1 upward binary64 0x1p-100 : 0x1.71547652b82ffp-100 : inexact-ok
+= log2p1 downward intel96 0x1p-100 : 0x1.71547652b82fe176p-100 : inexact-ok
+= log2p1 tonearest intel96 0x1p-100 : 0x1.71547652b82fe178p-100 : inexact-ok
+= log2p1 towardzero intel96 0x1p-100 : 0x1.71547652b82fe176p-100 : inexact-ok
+= log2p1 upward intel96 0x1p-100 : 0x1.71547652b82fe178p-100 : inexact-ok
+= log2p1 downward m68k96 0x1p-100 : 0x1.71547652b82fe176p-100 : inexact-ok
+= log2p1 tonearest m68k96 0x1p-100 : 0x1.71547652b82fe178p-100 : inexact-ok
+= log2p1 towardzero m68k96 0x1p-100 : 0x1.71547652b82fe176p-100 : inexact-ok
+= log2p1 upward m68k96 0x1p-100 : 0x1.71547652b82fe178p-100 : inexact-ok
+= log2p1 downward binary128 0x1p-100 : 0x1.71547652b82fe1777d0ffda0c6afp-100 : inexact-ok
+= log2p1 tonearest binary128 0x1p-100 : 0x1.71547652b82fe1777d0ffda0c6bp-100 : inexact-ok
+= log2p1 towardzero binary128 0x1p-100 : 0x1.71547652b82fe1777d0ffda0c6afp-100 : inexact-ok
+= log2p1 upward binary128 0x1p-100 : 0x1.71547652b82fe1777d0ffda0c6bp-100 : inexact-ok
+= log2p1 downward ibm128 0x1p-100 : 0x1.71547652b82fe1777d0ffda0c68p-100 : inexact-ok
+= log2p1 tonearest ibm128 0x1p-100 : 0x1.71547652b82fe1777d0ffda0c68p-100 : inexact-ok
+= log2p1 towardzero ibm128 0x1p-100 : 0x1.71547652b82fe1777d0ffda0c68p-100 : inexact-ok
+= log2p1 upward ibm128 0x1p-100 : 0x1.71547652b82fe1777d0ffda0c7p-100 : inexact-ok
+log2p1 0x1p-600
+= log2p1 downward binary32 0x8p-152 : 0x8p-152 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary32 0x8p-152 : 0x8p-152 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary32 0x8p-152 : 0x8p-152 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary32 0x8p-152 : 0x1p-148 : inexact-ok underflow errno-erange-ok
+= log2p1 downward binary64 0x8p-152 : 0xb.8aa3b295c17fp-152 : inexact-ok
+= log2p1 tonearest binary64 0x8p-152 : 0xb.8aa3b295c17fp-152 : inexact-ok
+= log2p1 towardzero binary64 0x8p-152 : 0xb.8aa3b295c17fp-152 : inexact-ok
+= log2p1 upward binary64 0x8p-152 : 0xb.8aa3b295c17f8p-152 : inexact-ok
+= log2p1 downward intel96 0x8p-152 : 0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 tonearest intel96 0x8p-152 : 0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 towardzero intel96 0x8p-152 : 0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 upward intel96 0x8p-152 : 0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 downward m68k96 0x8p-152 : 0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 tonearest m68k96 0x8p-152 : 0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 towardzero m68k96 0x8p-152 : 0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 upward m68k96 0x8p-152 : 0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 downward binary128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0691dp-152 : inexact-ok
+= log2p1 tonearest binary128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0691dp-152 : inexact-ok
+= log2p1 towardzero binary128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0691dp-152 : inexact-ok
+= log2p1 upward binary128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0691d8p-152 : inexact-ok
+= log2p1 downward ibm128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed069p-152 : inexact-ok
+= log2p1 tonearest ibm128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed069p-152 : inexact-ok
+= log2p1 towardzero ibm128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed069p-152 : inexact-ok
+= log2p1 upward ibm128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0694p-152 : inexact-ok
+= log2p1 downward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward binary64 0x1p-600 : 0x1.71547652b82fep-600 : inexact-ok
+= log2p1 tonearest binary64 0x1p-600 : 0x1.71547652b82fep-600 : inexact-ok
+= log2p1 towardzero binary64 0x1p-600 : 0x1.71547652b82fep-600 : inexact-ok
+= log2p1 upward binary64 0x1p-600 : 0x1.71547652b82ffp-600 : inexact-ok
+= log2p1 downward intel96 0x1p-600 : 0x1.71547652b82fe176p-600 : inexact-ok
+= log2p1 tonearest intel96 0x1p-600 : 0x1.71547652b82fe178p-600 : inexact-ok
+= log2p1 towardzero intel96 0x1p-600 : 0x1.71547652b82fe176p-600 : inexact-ok
+= log2p1 upward intel96 0x1p-600 : 0x1.71547652b82fe178p-600 : inexact-ok
+= log2p1 downward m68k96 0x1p-600 : 0x1.71547652b82fe176p-600 : inexact-ok
+= log2p1 tonearest m68k96 0x1p-600 : 0x1.71547652b82fe178p-600 : inexact-ok
+= log2p1 towardzero m68k96 0x1p-600 : 0x1.71547652b82fe176p-600 : inexact-ok
+= log2p1 upward m68k96 0x1p-600 : 0x1.71547652b82fe178p-600 : inexact-ok
+= log2p1 downward binary128 0x1p-600 : 0x1.71547652b82fe1777d0ffda0d23ap-600 : inexact-ok
+= log2p1 tonearest binary128 0x1p-600 : 0x1.71547652b82fe1777d0ffda0d23ap-600 : inexact-ok
+= log2p1 towardzero binary128 0x1p-600 : 0x1.71547652b82fe1777d0ffda0d23ap-600 : inexact-ok
+= log2p1 upward binary128 0x1p-600 : 0x1.71547652b82fe1777d0ffda0d23bp-600 : inexact-ok
+= log2p1 downward ibm128 0x1p-600 : 0x1.71547652b82fe1777d0ffda0d2p-600 : inexact-ok
+= log2p1 tonearest ibm128 0x1p-600 : 0x1.71547652b82fe1777d0ffda0d2p-600 : inexact-ok
+= log2p1 towardzero ibm128 0x1p-600 : 0x1.71547652b82fe1777d0ffda0d2p-600 : inexact-ok
+= log2p1 upward ibm128 0x1p-600 : 0x1.71547652b82fe1777d0ffda0d28p-600 : inexact-ok
+log2p1 0x1p-10000
+= log2p1 downward binary32 0x8p-152 : 0x8p-152 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary32 0x8p-152 : 0x8p-152 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary32 0x8p-152 : 0x8p-152 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary32 0x8p-152 : 0x1p-148 : inexact-ok underflow errno-erange-ok
+= log2p1 downward binary64 0x8p-152 : 0xb.8aa3b295c17fp-152 : inexact-ok
+= log2p1 tonearest binary64 0x8p-152 : 0xb.8aa3b295c17fp-152 : inexact-ok
+= log2p1 towardzero binary64 0x8p-152 : 0xb.8aa3b295c17fp-152 : inexact-ok
+= log2p1 upward binary64 0x8p-152 : 0xb.8aa3b295c17f8p-152 : inexact-ok
+= log2p1 downward intel96 0x8p-152 : 0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 tonearest intel96 0x8p-152 : 0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 towardzero intel96 0x8p-152 : 0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 upward intel96 0x8p-152 : 0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 downward m68k96 0x8p-152 : 0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 tonearest m68k96 0x8p-152 : 0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 towardzero m68k96 0x8p-152 : 0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 upward m68k96 0x8p-152 : 0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 downward binary128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0691dp-152 : inexact-ok
+= log2p1 tonearest binary128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0691dp-152 : inexact-ok
+= log2p1 towardzero binary128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0691dp-152 : inexact-ok
+= log2p1 upward binary128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0691d8p-152 : inexact-ok
+= log2p1 downward ibm128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed069p-152 : inexact-ok
+= log2p1 tonearest ibm128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed069p-152 : inexact-ok
+= log2p1 towardzero ibm128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed069p-152 : inexact-ok
+= log2p1 upward ibm128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0694p-152 : inexact-ok
+= log2p1 downward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 tonearest ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 upward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log2p1 downward binary64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary64 0x4p-1076 : 0x8p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 downward intel96 0x4p-1076 : 0x5.c551d94ae0bf85d8p-1076 : inexact-ok
+= log2p1 tonearest intel96 0x4p-1076 : 0x5.c551d94ae0bf85ep-1076 : inexact-ok
+= log2p1 towardzero intel96 0x4p-1076 : 0x5.c551d94ae0bf85d8p-1076 : inexact-ok
+= log2p1 upward intel96 0x4p-1076 : 0x5.c551d94ae0bf85ep-1076 : inexact-ok
+= log2p1 downward m68k96 0x4p-1076 : 0x5.c551d94ae0bf85d8p-1076 : inexact-ok
+= log2p1 tonearest m68k96 0x4p-1076 : 0x5.c551d94ae0bf85ep-1076 : inexact-ok
+= log2p1 towardzero m68k96 0x4p-1076 : 0x5.c551d94ae0bf85d8p-1076 : inexact-ok
+= log2p1 upward m68k96 0x4p-1076 : 0x5.c551d94ae0bf85ep-1076 : inexact-ok
+= log2p1 downward binary128 0x4p-1076 : 0x5.c551d94ae0bf85ddf43ff68348e8p-1076 : inexact-ok
+= log2p1 tonearest binary128 0x4p-1076 : 0x5.c551d94ae0bf85ddf43ff68348e8p-1076 : inexact-ok
+= log2p1 towardzero binary128 0x4p-1076 : 0x5.c551d94ae0bf85ddf43ff68348e8p-1076 : inexact-ok
+= log2p1 upward binary128 0x4p-1076 : 0x5.c551d94ae0bf85ddf43ff68348ecp-1076 : inexact-ok
+= log2p1 downward ibm128 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest ibm128 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero ibm128 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 upward ibm128 0x4p-1076 : 0x8p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 downward intel96 0x1p-10000 : 0x1.71547652b82fe176p-10000 : inexact-ok
+= log2p1 tonearest intel96 0x1p-10000 : 0x1.71547652b82fe178p-10000 : inexact-ok
+= log2p1 towardzero intel96 0x1p-10000 : 0x1.71547652b82fe176p-10000 : inexact-ok
+= log2p1 upward intel96 0x1p-10000 : 0x1.71547652b82fe178p-10000 : inexact-ok
+= log2p1 downward m68k96 0x1p-10000 : 0x1.71547652b82fe176p-10000 : inexact-ok
+= log2p1 tonearest m68k96 0x1p-10000 : 0x1.71547652b82fe178p-10000 : inexact-ok
+= log2p1 towardzero m68k96 0x1p-10000 : 0x1.71547652b82fe176p-10000 : inexact-ok
+= log2p1 upward m68k96 0x1p-10000 : 0x1.71547652b82fe178p-10000 : inexact-ok
+= log2p1 downward binary128 0x1p-10000 : 0x1.71547652b82fe1777d0ffda0d23ap-10000 : inexact-ok
+= log2p1 tonearest binary128 0x1p-10000 : 0x1.71547652b82fe1777d0ffda0d23ap-10000 : inexact-ok
+= log2p1 towardzero binary128 0x1p-10000 : 0x1.71547652b82fe1777d0ffda0d23ap-10000 : inexact-ok
+= log2p1 upward binary128 0x1p-10000 : 0x1.71547652b82fe1777d0ffda0d23bp-10000 : inexact-ok
+log2p1 min
+= log2p1 downward binary32 0x4p-128 : 0x5.c551d8p-128 : inexact-ok
+= log2p1 tonearest binary32 0x4p-128 : 0x5.c551d8p-128 : inexact-ok
+= log2p1 towardzero binary32 0x4p-128 : 0x5.c551d8p-128 : inexact-ok
+= log2p1 upward binary32 0x4p-128 : 0x5.c551ep-128 : inexact-ok
+= log2p1 downward binary64 0x4p-128 : 0x5.c551d94ae0bf8p-128 : inexact-ok
+= log2p1 tonearest binary64 0x4p-128 : 0x5.c551d94ae0bf8p-128 : inexact-ok
+= log2p1 towardzero binary64 0x4p-128 : 0x5.c551d94ae0bf8p-128 : inexact-ok
+= log2p1 upward binary64 0x4p-128 : 0x5.c551d94ae0bfcp-128 : inexact-ok
+= log2p1 downward intel96 0x4p-128 : 0x5.c551d94ae0bf85d8p-128 : inexact-ok
+= log2p1 tonearest intel96 0x4p-128 : 0x5.c551d94ae0bf85ep-128 : inexact-ok
+= log2p1 towardzero intel96 0x4p-128 : 0x5.c551d94ae0bf85d8p-128 : inexact-ok
+= log2p1 upward intel96 0x4p-128 : 0x5.c551d94ae0bf85ep-128 : inexact-ok
+= log2p1 downward m68k96 0x4p-128 : 0x5.c551d94ae0bf85d8p-128 : inexact-ok
+= log2p1 tonearest m68k96 0x4p-128 : 0x5.c551d94ae0bf85ep-128 : inexact-ok
+= log2p1 towardzero m68k96 0x4p-128 : 0x5.c551d94ae0bf85d8p-128 : inexact-ok
+= log2p1 upward m68k96 0x4p-128 : 0x5.c551d94ae0bf85ep-128 : inexact-ok
+= log2p1 downward binary128 0x4p-128 : 0x5.c551d94ae0bf85ddf43ff68348e8p-128 : inexact-ok
+= log2p1 tonearest binary128 0x4p-128 : 0x5.c551d94ae0bf85ddf43ff68348e8p-128 : inexact-ok
+= log2p1 towardzero binary128 0x4p-128 : 0x5.c551d94ae0bf85ddf43ff68348e8p-128 : inexact-ok
+= log2p1 upward binary128 0x4p-128 : 0x5.c551d94ae0bf85ddf43ff68348ecp-128 : inexact-ok
+= log2p1 downward ibm128 0x4p-128 : 0x5.c551d94ae0bf85ddf43ff68348p-128 : inexact-ok
+= log2p1 tonearest ibm128 0x4p-128 : 0x5.c551d94ae0bf85ddf43ff68348p-128 : inexact-ok
+= log2p1 towardzero ibm128 0x4p-128 : 0x5.c551d94ae0bf85ddf43ff68348p-128 : inexact-ok
+= log2p1 upward ibm128 0x4p-128 : 0x5.c551d94ae0bf85ddf43ff6834ap-128 : inexact-ok
+= log2p1 downward binary64 0x4p-1024 : 0x5.c551d94ae0bf8p-1024 : inexact-ok
+= log2p1 tonearest binary64 0x4p-1024 : 0x5.c551d94ae0bf8p-1024 : inexact-ok
+= log2p1 towardzero binary64 0x4p-1024 : 0x5.c551d94ae0bf8p-1024 : inexact-ok
+= log2p1 upward binary64 0x4p-1024 : 0x5.c551d94ae0bfcp-1024 : inexact-ok
+= log2p1 downward intel96 0x4p-1024 : 0x5.c551d94ae0bf85d8p-1024 : inexact-ok
+= log2p1 tonearest intel96 0x4p-1024 : 0x5.c551d94ae0bf85ep-1024 : inexact-ok
+= log2p1 towardzero intel96 0x4p-1024 : 0x5.c551d94ae0bf85d8p-1024 : inexact-ok
+= log2p1 upward intel96 0x4p-1024 : 0x5.c551d94ae0bf85ep-1024 : inexact-ok
+= log2p1 downward m68k96 0x4p-1024 : 0x5.c551d94ae0bf85d8p-1024 : inexact-ok
+= log2p1 tonearest m68k96 0x4p-1024 : 0x5.c551d94ae0bf85ep-1024 : inexact-ok
+= log2p1 towardzero m68k96 0x4p-1024 : 0x5.c551d94ae0bf85d8p-1024 : inexact-ok
+= log2p1 upward m68k96 0x4p-1024 : 0x5.c551d94ae0bf85ep-1024 : inexact-ok
+= log2p1 downward binary128 0x4p-1024 : 0x5.c551d94ae0bf85ddf43ff68348e8p-1024 : inexact-ok
+= log2p1 tonearest binary128 0x4p-1024 : 0x5.c551d94ae0bf85ddf43ff68348e8p-1024 : inexact-ok
+= log2p1 towardzero binary128 0x4p-1024 : 0x5.c551d94ae0bf85ddf43ff68348e8p-1024 : inexact-ok
+= log2p1 upward binary128 0x4p-1024 : 0x5.c551d94ae0bf85ddf43ff68348ecp-1024 : inexact-ok
+= log2p1 downward ibm128 0x4p-1024 : 0x5.c551d94ae0bf8p-1024 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest ibm128 0x4p-1024 : 0x5.c551d94ae0bf8p-1024 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero ibm128 0x4p-1024 : 0x5.c551d94ae0bf8p-1024 : inexact-ok underflow errno-erange-ok
+= log2p1 upward ibm128 0x4p-1024 : 0x5.c551d94ae0bfcp-1024 : inexact-ok underflow errno-erange-ok
+= log2p1 downward intel96 0x4p-16384 : 0x5.c551d94ae0bf85d8p-16384 : inexact-ok
+= log2p1 tonearest intel96 0x4p-16384 : 0x5.c551d94ae0bf85ep-16384 : inexact-ok
+= log2p1 towardzero intel96 0x4p-16384 : 0x5.c551d94ae0bf85d8p-16384 : inexact-ok
+= log2p1 upward intel96 0x4p-16384 : 0x5.c551d94ae0bf85ep-16384 : inexact-ok
+= log2p1 downward m68k96 0x4p-16384 : 0x5.c551d94ae0bf85d8p-16384 : inexact-ok
+= log2p1 tonearest m68k96 0x4p-16384 : 0x5.c551d94ae0bf85ep-16384 : inexact-ok
+= log2p1 towardzero m68k96 0x4p-16384 : 0x5.c551d94ae0bf85d8p-16384 : inexact-ok
+= log2p1 upward m68k96 0x4p-16384 : 0x5.c551d94ae0bf85ep-16384 : inexact-ok
+= log2p1 downward binary128 0x4p-16384 : 0x5.c551d94ae0bf85ddf43ff68348e8p-16384 : inexact-ok
+= log2p1 tonearest binary128 0x4p-16384 : 0x5.c551d94ae0bf85ddf43ff68348e8p-16384 : inexact-ok
+= log2p1 towardzero binary128 0x4p-16384 : 0x5.c551d94ae0bf85ddf43ff68348e8p-16384 : inexact-ok
+= log2p1 upward binary128 0x4p-16384 : 0x5.c551d94ae0bf85ddf43ff68348ecp-16384 : inexact-ok
+= log2p1 downward intel96 0x2p-16384 : 0x2.e2a8eca5705fc2e8p-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest intel96 0x2p-16384 : 0x2.e2a8eca5705fc2fp-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero intel96 0x2p-16384 : 0x2.e2a8eca5705fc2e8p-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 upward intel96 0x2p-16384 : 0x2.e2a8eca5705fc2fp-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 downward m68k96 0x2p-16384 : 0x2.e2a8eca5705fc2ecp-16384 : inexact-ok
+= log2p1 tonearest m68k96 0x2p-16384 : 0x2.e2a8eca5705fc2fp-16384 : inexact-ok
+= log2p1 towardzero m68k96 0x2p-16384 : 0x2.e2a8eca5705fc2ecp-16384 : inexact-ok
+= log2p1 upward m68k96 0x2p-16384 : 0x2.e2a8eca5705fc2fp-16384 : inexact-ok
+= log2p1 downward binary128 0x2p-16384 : 0x2.e2a8eca5705fc2eefa1ffb41a474p-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary128 0x2p-16384 : 0x2.e2a8eca5705fc2eefa1ffb41a474p-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary128 0x2p-16384 : 0x2.e2a8eca5705fc2eefa1ffb41a474p-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary128 0x2p-16384 : 0x2.e2a8eca5705fc2eefa1ffb41a478p-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 downward binary64 0x8p-972 : 0xb.8aa3b295c17fp-972 : inexact-ok
+= log2p1 tonearest binary64 0x8p-972 : 0xb.8aa3b295c17fp-972 : inexact-ok
+= log2p1 towardzero binary64 0x8p-972 : 0xb.8aa3b295c17fp-972 : inexact-ok
+= log2p1 upward binary64 0x8p-972 : 0xb.8aa3b295c17f8p-972 : inexact-ok
+= log2p1 downward intel96 0x8p-972 : 0xb.8aa3b295c17f0bbp-972 : inexact-ok
+= log2p1 tonearest intel96 0x8p-972 : 0xb.8aa3b295c17f0bcp-972 : inexact-ok
+= log2p1 towardzero intel96 0x8p-972 : 0xb.8aa3b295c17f0bbp-972 : inexact-ok
+= log2p1 upward intel96 0x8p-972 : 0xb.8aa3b295c17f0bcp-972 : inexact-ok
+= log2p1 downward m68k96 0x8p-972 : 0xb.8aa3b295c17f0bbp-972 : inexact-ok
+= log2p1 tonearest m68k96 0x8p-972 : 0xb.8aa3b295c17f0bcp-972 : inexact-ok
+= log2p1 towardzero m68k96 0x8p-972 : 0xb.8aa3b295c17f0bbp-972 : inexact-ok
+= log2p1 upward m68k96 0x8p-972 : 0xb.8aa3b295c17f0bcp-972 : inexact-ok
+= log2p1 downward binary128 0x8p-972 : 0xb.8aa3b295c17f0bbbe87fed0691dp-972 : inexact-ok
+= log2p1 tonearest binary128 0x8p-972 : 0xb.8aa3b295c17f0bbbe87fed0691dp-972 : inexact-ok
+= log2p1 towardzero binary128 0x8p-972 : 0xb.8aa3b295c17f0bbbe87fed0691dp-972 : inexact-ok
+= log2p1 upward binary128 0x8p-972 : 0xb.8aa3b295c17f0bbbe87fed0691d8p-972 : inexact-ok
+= log2p1 downward ibm128 0x8p-972 : 0xb.8aa3b295c17f0bbbe87fed069p-972 : inexact-ok
+= log2p1 tonearest ibm128 0x8p-972 : 0xb.8aa3b295c17f0bbbe87fed069p-972 : inexact-ok
+= log2p1 towardzero ibm128 0x8p-972 : 0xb.8aa3b295c17f0bbbe87fed069p-972 : inexact-ok
+= log2p1 upward ibm128 0x8p-972 : 0xb.8aa3b295c17f0bbbe87fed0694p-972 : inexact-ok
+log2p1 min_subnorm
+= log2p1 downward binary32 0x8p-152 : 0x8p-152 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary32 0x8p-152 : 0x8p-152 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary32 0x8p-152 : 0x8p-152 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary32 0x8p-152 : 0x1p-148 : inexact-ok underflow errno-erange-ok
+= log2p1 downward binary64 0x8p-152 : 0xb.8aa3b295c17fp-152 : inexact-ok
+= log2p1 tonearest binary64 0x8p-152 : 0xb.8aa3b295c17fp-152 : inexact-ok
+= log2p1 towardzero binary64 0x8p-152 : 0xb.8aa3b295c17fp-152 : inexact-ok
+= log2p1 upward binary64 0x8p-152 : 0xb.8aa3b295c17f8p-152 : inexact-ok
+= log2p1 downward intel96 0x8p-152 : 0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 tonearest intel96 0x8p-152 : 0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 towardzero intel96 0x8p-152 : 0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 upward intel96 0x8p-152 : 0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 downward m68k96 0x8p-152 : 0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 tonearest m68k96 0x8p-152 : 0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 towardzero m68k96 0x8p-152 : 0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 upward m68k96 0x8p-152 : 0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 downward binary128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0691dp-152 : inexact-ok
+= log2p1 tonearest binary128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0691dp-152 : inexact-ok
+= log2p1 towardzero binary128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0691dp-152 : inexact-ok
+= log2p1 upward binary128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0691d8p-152 : inexact-ok
+= log2p1 downward ibm128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed069p-152 : inexact-ok
+= log2p1 tonearest ibm128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed069p-152 : inexact-ok
+= log2p1 towardzero ibm128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed069p-152 : inexact-ok
+= log2p1 upward ibm128 0x8p-152 : 0xb.8aa3b295c17f0bbbe87fed0694p-152 : inexact-ok
+= log2p1 downward binary64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary64 0x4p-1076 : 0x8p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 downward intel96 0x4p-1076 : 0x5.c551d94ae0bf85d8p-1076 : inexact-ok
+= log2p1 tonearest intel96 0x4p-1076 : 0x5.c551d94ae0bf85ep-1076 : inexact-ok
+= log2p1 towardzero intel96 0x4p-1076 : 0x5.c551d94ae0bf85d8p-1076 : inexact-ok
+= log2p1 upward intel96 0x4p-1076 : 0x5.c551d94ae0bf85ep-1076 : inexact-ok
+= log2p1 downward m68k96 0x4p-1076 : 0x5.c551d94ae0bf85d8p-1076 : inexact-ok
+= log2p1 tonearest m68k96 0x4p-1076 : 0x5.c551d94ae0bf85ep-1076 : inexact-ok
+= log2p1 towardzero m68k96 0x4p-1076 : 0x5.c551d94ae0bf85d8p-1076 : inexact-ok
+= log2p1 upward m68k96 0x4p-1076 : 0x5.c551d94ae0bf85ep-1076 : inexact-ok
+= log2p1 downward binary128 0x4p-1076 : 0x5.c551d94ae0bf85ddf43ff68348e8p-1076 : inexact-ok
+= log2p1 tonearest binary128 0x4p-1076 : 0x5.c551d94ae0bf85ddf43ff68348e8p-1076 : inexact-ok
+= log2p1 towardzero binary128 0x4p-1076 : 0x5.c551d94ae0bf85ddf43ff68348e8p-1076 : inexact-ok
+= log2p1 upward binary128 0x4p-1076 : 0x5.c551d94ae0bf85ddf43ff68348ecp-1076 : inexact-ok
+= log2p1 downward ibm128 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest ibm128 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero ibm128 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 upward ibm128 0x4p-1076 : 0x8p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 downward intel96 0x8p-16448 : 0x8p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest intel96 0x8p-16448 : 0x8p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero intel96 0x8p-16448 : 0x8p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 upward intel96 0x8p-16448 : 0x1p-16444 : inexact-ok underflow errno-erange-ok
+= log2p1 downward m68k96 0x8p-16448 : 0x8p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest m68k96 0x8p-16448 : 0xcp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero m68k96 0x8p-16448 : 0x8p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 upward m68k96 0x8p-16448 : 0xcp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 downward binary128 0x8p-16448 : 0xb.8aa3b295c17cp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary128 0x8p-16448 : 0xb.8aa3b295c18p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary128 0x8p-16448 : 0xb.8aa3b295c17cp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary128 0x8p-16448 : 0xb.8aa3b295c18p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 downward m68k96 0x4p-16448 : 0x4p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest m68k96 0x4p-16448 : 0x4p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero m68k96 0x4p-16448 : 0x4p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 upward m68k96 0x4p-16448 : 0x8p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 downward binary128 0x4p-16448 : 0x5.c551d94ae0bcp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary128 0x4p-16448 : 0x5.c551d94ae0cp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary128 0x4p-16448 : 0x5.c551d94ae0bcp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary128 0x4p-16448 : 0x5.c551d94ae0cp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 downward binary128 0x4p-16496 : 0x4p-16496 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary128 0x4p-16496 : 0x4p-16496 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary128 0x4p-16496 : 0x4p-16496 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary128 0x4p-16496 : 0x8p-16496 : inexact-ok underflow errno-erange-ok
+log2p1 -min
+= log2p1 downward binary32 -0x4p-128 : -0x5.c551ep-128 : inexact-ok
+= log2p1 tonearest binary32 -0x4p-128 : -0x5.c551d8p-128 : inexact-ok
+= log2p1 towardzero binary32 -0x4p-128 : -0x5.c551d8p-128 : inexact-ok
+= log2p1 upward binary32 -0x4p-128 : -0x5.c551d8p-128 : inexact-ok
+= log2p1 downward binary64 -0x4p-128 : -0x5.c551d94ae0bfcp-128 : inexact-ok
+= log2p1 tonearest binary64 -0x4p-128 : -0x5.c551d94ae0bf8p-128 : inexact-ok
+= log2p1 towardzero binary64 -0x4p-128 : -0x5.c551d94ae0bf8p-128 : inexact-ok
+= log2p1 upward binary64 -0x4p-128 : -0x5.c551d94ae0bf8p-128 : inexact-ok
+= log2p1 downward intel96 -0x4p-128 : -0x5.c551d94ae0bf85ep-128 : inexact-ok
+= log2p1 tonearest intel96 -0x4p-128 : -0x5.c551d94ae0bf85ep-128 : inexact-ok
+= log2p1 towardzero intel96 -0x4p-128 : -0x5.c551d94ae0bf85d8p-128 : inexact-ok
+= log2p1 upward intel96 -0x4p-128 : -0x5.c551d94ae0bf85d8p-128 : inexact-ok
+= log2p1 downward m68k96 -0x4p-128 : -0x5.c551d94ae0bf85ep-128 : inexact-ok
+= log2p1 tonearest m68k96 -0x4p-128 : -0x5.c551d94ae0bf85ep-128 : inexact-ok
+= log2p1 towardzero m68k96 -0x4p-128 : -0x5.c551d94ae0bf85d8p-128 : inexact-ok
+= log2p1 upward m68k96 -0x4p-128 : -0x5.c551d94ae0bf85d8p-128 : inexact-ok
+= log2p1 downward binary128 -0x4p-128 : -0x5.c551d94ae0bf85ddf43ff68348ecp-128 : inexact-ok
+= log2p1 tonearest binary128 -0x4p-128 : -0x5.c551d94ae0bf85ddf43ff68348e8p-128 : inexact-ok
+= log2p1 towardzero binary128 -0x4p-128 : -0x5.c551d94ae0bf85ddf43ff68348e8p-128 : inexact-ok
+= log2p1 upward binary128 -0x4p-128 : -0x5.c551d94ae0bf85ddf43ff68348e8p-128 : inexact-ok
+= log2p1 downward ibm128 -0x4p-128 : -0x5.c551d94ae0bf85ddf43ff6834ap-128 : inexact-ok
+= log2p1 tonearest ibm128 -0x4p-128 : -0x5.c551d94ae0bf85ddf43ff68348p-128 : inexact-ok
+= log2p1 towardzero ibm128 -0x4p-128 : -0x5.c551d94ae0bf85ddf43ff68348p-128 : inexact-ok
+= log2p1 upward ibm128 -0x4p-128 : -0x5.c551d94ae0bf85ddf43ff68348p-128 : inexact-ok
+= log2p1 downward binary64 -0x4p-1024 : -0x5.c551d94ae0bfcp-1024 : inexact-ok
+= log2p1 tonearest binary64 -0x4p-1024 : -0x5.c551d94ae0bf8p-1024 : inexact-ok
+= log2p1 towardzero binary64 -0x4p-1024 : -0x5.c551d94ae0bf8p-1024 : inexact-ok
+= log2p1 upward binary64 -0x4p-1024 : -0x5.c551d94ae0bf8p-1024 : inexact-ok
+= log2p1 downward intel96 -0x4p-1024 : -0x5.c551d94ae0bf85ep-1024 : inexact-ok
+= log2p1 tonearest intel96 -0x4p-1024 : -0x5.c551d94ae0bf85ep-1024 : inexact-ok
+= log2p1 towardzero intel96 -0x4p-1024 : -0x5.c551d94ae0bf85d8p-1024 : inexact-ok
+= log2p1 upward intel96 -0x4p-1024 : -0x5.c551d94ae0bf85d8p-1024 : inexact-ok
+= log2p1 downward m68k96 -0x4p-1024 : -0x5.c551d94ae0bf85ep-1024 : inexact-ok
+= log2p1 tonearest m68k96 -0x4p-1024 : -0x5.c551d94ae0bf85ep-1024 : inexact-ok
+= log2p1 towardzero m68k96 -0x4p-1024 : -0x5.c551d94ae0bf85d8p-1024 : inexact-ok
+= log2p1 upward m68k96 -0x4p-1024 : -0x5.c551d94ae0bf85d8p-1024 : inexact-ok
+= log2p1 downward binary128 -0x4p-1024 : -0x5.c551d94ae0bf85ddf43ff68348ecp-1024 : inexact-ok
+= log2p1 tonearest binary128 -0x4p-1024 : -0x5.c551d94ae0bf85ddf43ff68348e8p-1024 : inexact-ok
+= log2p1 towardzero binary128 -0x4p-1024 : -0x5.c551d94ae0bf85ddf43ff68348e8p-1024 : inexact-ok
+= log2p1 upward binary128 -0x4p-1024 : -0x5.c551d94ae0bf85ddf43ff68348e8p-1024 : inexact-ok
+= log2p1 downward ibm128 -0x4p-1024 : -0x5.c551d94ae0bfcp-1024 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest ibm128 -0x4p-1024 : -0x5.c551d94ae0bf8p-1024 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero ibm128 -0x4p-1024 : -0x5.c551d94ae0bf8p-1024 : inexact-ok underflow errno-erange-ok
+= log2p1 upward ibm128 -0x4p-1024 : -0x5.c551d94ae0bf8p-1024 : inexact-ok underflow errno-erange-ok
+= log2p1 downward intel96 -0x4p-16384 : -0x5.c551d94ae0bf85ep-16384 : inexact-ok
+= log2p1 tonearest intel96 -0x4p-16384 : -0x5.c551d94ae0bf85ep-16384 : inexact-ok
+= log2p1 towardzero intel96 -0x4p-16384 : -0x5.c551d94ae0bf85d8p-16384 : inexact-ok
+= log2p1 upward intel96 -0x4p-16384 : -0x5.c551d94ae0bf85d8p-16384 : inexact-ok
+= log2p1 downward m68k96 -0x4p-16384 : -0x5.c551d94ae0bf85ep-16384 : inexact-ok
+= log2p1 tonearest m68k96 -0x4p-16384 : -0x5.c551d94ae0bf85ep-16384 : inexact-ok
+= log2p1 towardzero m68k96 -0x4p-16384 : -0x5.c551d94ae0bf85d8p-16384 : inexact-ok
+= log2p1 upward m68k96 -0x4p-16384 : -0x5.c551d94ae0bf85d8p-16384 : inexact-ok
+= log2p1 downward binary128 -0x4p-16384 : -0x5.c551d94ae0bf85ddf43ff68348ecp-16384 : inexact-ok
+= log2p1 tonearest binary128 -0x4p-16384 : -0x5.c551d94ae0bf85ddf43ff68348e8p-16384 : inexact-ok
+= log2p1 towardzero binary128 -0x4p-16384 : -0x5.c551d94ae0bf85ddf43ff68348e8p-16384 : inexact-ok
+= log2p1 upward binary128 -0x4p-16384 : -0x5.c551d94ae0bf85ddf43ff68348e8p-16384 : inexact-ok
+= log2p1 downward intel96 -0x2p-16384 : -0x2.e2a8eca5705fc2fp-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest intel96 -0x2p-16384 : -0x2.e2a8eca5705fc2fp-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero intel96 -0x2p-16384 : -0x2.e2a8eca5705fc2e8p-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 upward intel96 -0x2p-16384 : -0x2.e2a8eca5705fc2e8p-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 downward m68k96 -0x2p-16384 : -0x2.e2a8eca5705fc2fp-16384 : inexact-ok
+= log2p1 tonearest m68k96 -0x2p-16384 : -0x2.e2a8eca5705fc2fp-16384 : inexact-ok
+= log2p1 towardzero m68k96 -0x2p-16384 : -0x2.e2a8eca5705fc2ecp-16384 : inexact-ok
+= log2p1 upward m68k96 -0x2p-16384 : -0x2.e2a8eca5705fc2ecp-16384 : inexact-ok
+= log2p1 downward binary128 -0x2p-16384 : -0x2.e2a8eca5705fc2eefa1ffb41a478p-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary128 -0x2p-16384 : -0x2.e2a8eca5705fc2eefa1ffb41a474p-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary128 -0x2p-16384 : -0x2.e2a8eca5705fc2eefa1ffb41a474p-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary128 -0x2p-16384 : -0x2.e2a8eca5705fc2eefa1ffb41a474p-16384 : inexact-ok underflow errno-erange-ok
+= log2p1 downward binary64 -0x8p-972 : -0xb.8aa3b295c17f8p-972 : inexact-ok
+= log2p1 tonearest binary64 -0x8p-972 : -0xb.8aa3b295c17fp-972 : inexact-ok
+= log2p1 towardzero binary64 -0x8p-972 : -0xb.8aa3b295c17fp-972 : inexact-ok
+= log2p1 upward binary64 -0x8p-972 : -0xb.8aa3b295c17fp-972 : inexact-ok
+= log2p1 downward intel96 -0x8p-972 : -0xb.8aa3b295c17f0bcp-972 : inexact-ok
+= log2p1 tonearest intel96 -0x8p-972 : -0xb.8aa3b295c17f0bcp-972 : inexact-ok
+= log2p1 towardzero intel96 -0x8p-972 : -0xb.8aa3b295c17f0bbp-972 : inexact-ok
+= log2p1 upward intel96 -0x8p-972 : -0xb.8aa3b295c17f0bbp-972 : inexact-ok
+= log2p1 downward m68k96 -0x8p-972 : -0xb.8aa3b295c17f0bcp-972 : inexact-ok
+= log2p1 tonearest m68k96 -0x8p-972 : -0xb.8aa3b295c17f0bcp-972 : inexact-ok
+= log2p1 towardzero m68k96 -0x8p-972 : -0xb.8aa3b295c17f0bbp-972 : inexact-ok
+= log2p1 upward m68k96 -0x8p-972 : -0xb.8aa3b295c17f0bbp-972 : inexact-ok
+= log2p1 downward binary128 -0x8p-972 : -0xb.8aa3b295c17f0bbbe87fed0691d8p-972 : inexact-ok
+= log2p1 tonearest binary128 -0x8p-972 : -0xb.8aa3b295c17f0bbbe87fed0691dp-972 : inexact-ok
+= log2p1 towardzero binary128 -0x8p-972 : -0xb.8aa3b295c17f0bbbe87fed0691dp-972 : inexact-ok
+= log2p1 upward binary128 -0x8p-972 : -0xb.8aa3b295c17f0bbbe87fed0691dp-972 : inexact-ok
+= log2p1 downward ibm128 -0x8p-972 : -0xb.8aa3b295c17f0bbbe87fed0694p-972 : inexact-ok
+= log2p1 tonearest ibm128 -0x8p-972 : -0xb.8aa3b295c17f0bbbe87fed069p-972 : inexact-ok
+= log2p1 towardzero ibm128 -0x8p-972 : -0xb.8aa3b295c17f0bbbe87fed069p-972 : inexact-ok
+= log2p1 upward ibm128 -0x8p-972 : -0xb.8aa3b295c17f0bbbe87fed069p-972 : inexact-ok
+log2p1 -min_subnorm
+= log2p1 downward binary32 -0x8p-152 : -0x1p-148 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary32 -0x8p-152 : -0x8p-152 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary32 -0x8p-152 : -0x8p-152 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary32 -0x8p-152 : -0x8p-152 : inexact-ok underflow errno-erange-ok
+= log2p1 downward binary64 -0x8p-152 : -0xb.8aa3b295c17f8p-152 : inexact-ok
+= log2p1 tonearest binary64 -0x8p-152 : -0xb.8aa3b295c17fp-152 : inexact-ok
+= log2p1 towardzero binary64 -0x8p-152 : -0xb.8aa3b295c17fp-152 : inexact-ok
+= log2p1 upward binary64 -0x8p-152 : -0xb.8aa3b295c17fp-152 : inexact-ok
+= log2p1 downward intel96 -0x8p-152 : -0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 tonearest intel96 -0x8p-152 : -0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 towardzero intel96 -0x8p-152 : -0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 upward intel96 -0x8p-152 : -0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 downward m68k96 -0x8p-152 : -0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 tonearest m68k96 -0x8p-152 : -0xb.8aa3b295c17f0bcp-152 : inexact-ok
+= log2p1 towardzero m68k96 -0x8p-152 : -0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 upward m68k96 -0x8p-152 : -0xb.8aa3b295c17f0bbp-152 : inexact-ok
+= log2p1 downward binary128 -0x8p-152 : -0xb.8aa3b295c17f0bbbe87fed0691d8p-152 : inexact-ok
+= log2p1 tonearest binary128 -0x8p-152 : -0xb.8aa3b295c17f0bbbe87fed0691dp-152 : inexact-ok
+= log2p1 towardzero binary128 -0x8p-152 : -0xb.8aa3b295c17f0bbbe87fed0691dp-152 : inexact-ok
+= log2p1 upward binary128 -0x8p-152 : -0xb.8aa3b295c17f0bbbe87fed0691dp-152 : inexact-ok
+= log2p1 downward ibm128 -0x8p-152 : -0xb.8aa3b295c17f0bbbe87fed0694p-152 : inexact-ok
+= log2p1 tonearest ibm128 -0x8p-152 : -0xb.8aa3b295c17f0bbbe87fed069p-152 : inexact-ok
+= log2p1 towardzero ibm128 -0x8p-152 : -0xb.8aa3b295c17f0bbbe87fed069p-152 : inexact-ok
+= log2p1 upward ibm128 -0x8p-152 : -0xb.8aa3b295c17f0bbbe87fed069p-152 : inexact-ok
+= log2p1 downward binary64 -0x4p-1076 : -0x8p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary64 -0x4p-1076 : -0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary64 -0x4p-1076 : -0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary64 -0x4p-1076 : -0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 downward intel96 -0x4p-1076 : -0x5.c551d94ae0bf85ep-1076 : inexact-ok
+= log2p1 tonearest intel96 -0x4p-1076 : -0x5.c551d94ae0bf85ep-1076 : inexact-ok
+= log2p1 towardzero intel96 -0x4p-1076 : -0x5.c551d94ae0bf85d8p-1076 : inexact-ok
+= log2p1 upward intel96 -0x4p-1076 : -0x5.c551d94ae0bf85d8p-1076 : inexact-ok
+= log2p1 downward m68k96 -0x4p-1076 : -0x5.c551d94ae0bf85ep-1076 : inexact-ok
+= log2p1 tonearest m68k96 -0x4p-1076 : -0x5.c551d94ae0bf85ep-1076 : inexact-ok
+= log2p1 towardzero m68k96 -0x4p-1076 : -0x5.c551d94ae0bf85d8p-1076 : inexact-ok
+= log2p1 upward m68k96 -0x4p-1076 : -0x5.c551d94ae0bf85d8p-1076 : inexact-ok
+= log2p1 downward binary128 -0x4p-1076 : -0x5.c551d94ae0bf85ddf43ff68348ecp-1076 : inexact-ok
+= log2p1 tonearest binary128 -0x4p-1076 : -0x5.c551d94ae0bf85ddf43ff68348e8p-1076 : inexact-ok
+= log2p1 towardzero binary128 -0x4p-1076 : -0x5.c551d94ae0bf85ddf43ff68348e8p-1076 : inexact-ok
+= log2p1 upward binary128 -0x4p-1076 : -0x5.c551d94ae0bf85ddf43ff68348e8p-1076 : inexact-ok
+= log2p1 downward ibm128 -0x4p-1076 : -0x8p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest ibm128 -0x4p-1076 : -0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero ibm128 -0x4p-1076 : -0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 upward ibm128 -0x4p-1076 : -0x4p-1076 : inexact-ok underflow errno-erange-ok
+= log2p1 downward intel96 -0x8p-16448 : -0x1p-16444 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest intel96 -0x8p-16448 : -0x8p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero intel96 -0x8p-16448 : -0x8p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 upward intel96 -0x8p-16448 : -0x8p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 downward m68k96 -0x8p-16448 : -0xcp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest m68k96 -0x8p-16448 : -0xcp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero m68k96 -0x8p-16448 : -0x8p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 upward m68k96 -0x8p-16448 : -0x8p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 downward binary128 -0x8p-16448 : -0xb.8aa3b295c18p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary128 -0x8p-16448 : -0xb.8aa3b295c18p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary128 -0x8p-16448 : -0xb.8aa3b295c17cp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary128 -0x8p-16448 : -0xb.8aa3b295c17cp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 downward m68k96 -0x4p-16448 : -0x8p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest m68k96 -0x4p-16448 : -0x4p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero m68k96 -0x4p-16448 : -0x4p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 upward m68k96 -0x4p-16448 : -0x4p-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 downward binary128 -0x4p-16448 : -0x5.c551d94ae0cp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary128 -0x4p-16448 : -0x5.c551d94ae0cp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary128 -0x4p-16448 : -0x5.c551d94ae0bcp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary128 -0x4p-16448 : -0x5.c551d94ae0bcp-16448 : inexact-ok underflow errno-erange-ok
+= log2p1 downward binary128 -0x4p-16496 : -0x8p-16496 : inexact-ok underflow errno-erange-ok
+= log2p1 tonearest binary128 -0x4p-16496 : -0x4p-16496 : inexact-ok underflow errno-erange-ok
+= log2p1 towardzero binary128 -0x4p-16496 : -0x4p-16496 : inexact-ok underflow errno-erange-ok
+= log2p1 upward binary128 -0x4p-16496 : -0x4p-16496 : inexact-ok underflow errno-erange-ok
+log2p1 0x1p10
+= log2p1 downward binary32 0x4p+8 : 0xa.005c4p+0 : inexact-ok
+= log2p1 tonearest binary32 0x4p+8 : 0xa.005c5p+0 : inexact-ok
+= log2p1 towardzero binary32 0x4p+8 : 0xa.005c4p+0 : inexact-ok
+= log2p1 upward binary32 0x4p+8 : 0xa.005c5p+0 : inexact-ok
+= log2p1 downward binary64 0x4p+8 : 0xa.005c4994dd0f8p+0 : inexact-ok
+= log2p1 tonearest binary64 0x4p+8 : 0xa.005c4994dd1p+0 : inexact-ok
+= log2p1 towardzero binary64 0x4p+8 : 0xa.005c4994dd0f8p+0 : inexact-ok
+= log2p1 upward binary64 0x4p+8 : 0xa.005c4994dd1p+0 : inexact-ok
+= log2p1 downward intel96 0x4p+8 : 0xa.005c4994dd0fd15p+0 : inexact-ok
+= log2p1 tonearest intel96 0x4p+8 : 0xa.005c4994dd0fd15p+0 : inexact-ok
+= log2p1 towardzero intel96 0x4p+8 : 0xa.005c4994dd0fd15p+0 : inexact-ok
+= log2p1 upward intel96 0x4p+8 : 0xa.005c4994dd0fd16p+0 : inexact-ok
+= log2p1 downward m68k96 0x4p+8 : 0xa.005c4994dd0fd15p+0 : inexact-ok
+= log2p1 tonearest m68k96 0x4p+8 : 0xa.005c4994dd0fd15p+0 : inexact-ok
+= log2p1 towardzero m68k96 0x4p+8 : 0xa.005c4994dd0fd15p+0 : inexact-ok
+= log2p1 upward m68k96 0x4p+8 : 0xa.005c4994dd0fd16p+0 : inexact-ok
+= log2p1 downward binary128 0x4p+8 : 0xa.005c4994dd0fd1507ea7e50e4988p+0 : inexact-ok
+= log2p1 tonearest binary128 0x4p+8 : 0xa.005c4994dd0fd1507ea7e50e499p+0 : inexact-ok
+= log2p1 towardzero binary128 0x4p+8 : 0xa.005c4994dd0fd1507ea7e50e4988p+0 : inexact-ok
+= log2p1 upward binary128 0x4p+8 : 0xa.005c4994dd0fd1507ea7e50e499p+0 : inexact-ok
+= log2p1 downward ibm128 0x4p+8 : 0xa.005c4994dd0fd1507ea7e50e48p+0 : inexact-ok
+= log2p1 tonearest ibm128 0x4p+8 : 0xa.005c4994dd0fd1507ea7e50e48p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x4p+8 : 0xa.005c4994dd0fd1507ea7e50e48p+0 : inexact-ok
+= log2p1 upward ibm128 0x4p+8 : 0xa.005c4994dd0fd1507ea7e50e4cp+0 : inexact-ok
+log2p1 0x1p20
+= log2p1 downward binary32 0x1p+20 : 0x1.4p+4 : inexact-ok
+= log2p1 tonearest binary32 0x1p+20 : 0x1.400002p+4 : inexact-ok
+= log2p1 towardzero binary32 0x1p+20 : 0x1.4p+4 : inexact-ok
+= log2p1 upward binary32 0x1p+20 : 0x1.400002p+4 : inexact-ok
+= log2p1 downward binary64 0x1p+20 : 0x1.40000171546acp+4 : inexact-ok
+= log2p1 tonearest binary64 0x1p+20 : 0x1.40000171546adp+4 : inexact-ok
+= log2p1 towardzero binary64 0x1p+20 : 0x1.40000171546acp+4 : inexact-ok
+= log2p1 upward binary64 0x1p+20 : 0x1.40000171546adp+4 : inexact-ok
+= log2p1 downward intel96 0x1p+20 : 0x1.40000171546ac814p+4 : inexact-ok
+= log2p1 tonearest intel96 0x1p+20 : 0x1.40000171546ac814p+4 : inexact-ok
+= log2p1 towardzero intel96 0x1p+20 : 0x1.40000171546ac814p+4 : inexact-ok
+= log2p1 upward intel96 0x1p+20 : 0x1.40000171546ac816p+4 : inexact-ok
+= log2p1 downward m68k96 0x1p+20 : 0x1.40000171546ac814p+4 : inexact-ok
+= log2p1 tonearest m68k96 0x1p+20 : 0x1.40000171546ac814p+4 : inexact-ok
+= log2p1 towardzero m68k96 0x1p+20 : 0x1.40000171546ac814p+4 : inexact-ok
+= log2p1 upward m68k96 0x1p+20 : 0x1.40000171546ac816p+4 : inexact-ok
+= log2p1 downward binary128 0x1p+20 : 0x1.40000171546ac814f867d7a99ac2p+4 : inexact-ok
+= log2p1 tonearest binary128 0x1p+20 : 0x1.40000171546ac814f867d7a99ac2p+4 : inexact-ok
+= log2p1 towardzero binary128 0x1p+20 : 0x1.40000171546ac814f867d7a99ac2p+4 : inexact-ok
+= log2p1 upward binary128 0x1p+20 : 0x1.40000171546ac814f867d7a99ac3p+4 : inexact-ok
+= log2p1 downward ibm128 0x1p+20 : 0x1.40000171546ac814f867d7a99a8p+4 : inexact-ok
+= log2p1 tonearest ibm128 0x1p+20 : 0x1.40000171546ac814f867d7a99bp+4 : inexact-ok
+= log2p1 towardzero ibm128 0x1p+20 : 0x1.40000171546ac814f867d7a99a8p+4 : inexact-ok
+= log2p1 upward ibm128 0x1p+20 : 0x1.40000171546ac814f867d7a99bp+4 : inexact-ok
+log2p1 0x1p30
+= log2p1 downward binary32 0x4p+28 : 0x1.ep+4 : inexact-ok
+= log2p1 tonearest binary32 0x4p+28 : 0x1.ep+4 : inexact-ok
+= log2p1 towardzero binary32 0x4p+28 : 0x1.ep+4 : inexact-ok
+= log2p1 upward binary32 0x4p+28 : 0x1.e00002p+4 : inexact-ok
+= log2p1 downward binary64 0x4p+28 : 0x1.e00000005c551p+4 : inexact-ok
+= log2p1 tonearest binary64 0x4p+28 : 0x1.e00000005c552p+4 : inexact-ok
+= log2p1 towardzero binary64 0x4p+28 : 0x1.e00000005c551p+4 : inexact-ok
+= log2p1 upward binary64 0x4p+28 : 0x1.e00000005c552p+4 : inexact-ok
+= log2p1 downward intel96 0x4p+28 : 0x1.e00000005c551d92p+4 : inexact-ok
+= log2p1 tonearest intel96 0x4p+28 : 0x1.e00000005c551d94p+4 : inexact-ok
+= log2p1 towardzero intel96 0x4p+28 : 0x1.e00000005c551d92p+4 : inexact-ok
+= log2p1 upward intel96 0x4p+28 : 0x1.e00000005c551d94p+4 : inexact-ok
+= log2p1 downward m68k96 0x4p+28 : 0x1.e00000005c551d92p+4 : inexact-ok
+= log2p1 tonearest m68k96 0x4p+28 : 0x1.e00000005c551d94p+4 : inexact-ok
+= log2p1 towardzero m68k96 0x4p+28 : 0x1.e00000005c551d92p+4 : inexact-ok
+= log2p1 upward m68k96 0x4p+28 : 0x1.e00000005c551d94p+4 : inexact-ok
+= log2p1 downward binary128 0x4p+28 : 0x1.e00000005c551d93f561bd366f9cp+4 : inexact-ok
+= log2p1 tonearest binary128 0x4p+28 : 0x1.e00000005c551d93f561bd366f9dp+4 : inexact-ok
+= log2p1 towardzero binary128 0x4p+28 : 0x1.e00000005c551d93f561bd366f9cp+4 : inexact-ok
+= log2p1 upward binary128 0x4p+28 : 0x1.e00000005c551d93f561bd366f9dp+4 : inexact-ok
+= log2p1 downward ibm128 0x4p+28 : 0x1.e00000005c551d93f561bd366f8p+4 : inexact-ok
+= log2p1 tonearest ibm128 0x4p+28 : 0x1.e00000005c551d93f561bd366f8p+4 : inexact-ok
+= log2p1 towardzero ibm128 0x4p+28 : 0x1.e00000005c551d93f561bd366f8p+4 : inexact-ok
+= log2p1 upward ibm128 0x4p+28 : 0x1.e00000005c551d93f561bd367p+4 : inexact-ok
+log2p1 0x1p50
+= log2p1 downward binary32 0x4p+48 : 0x3.2p+4 : inexact-ok
+= log2p1 tonearest binary32 0x4p+48 : 0x3.2p+4 : inexact-ok
+= log2p1 towardzero binary32 0x4p+48 : 0x3.2p+4 : inexact-ok
+= log2p1 upward binary32 0x4p+48 : 0x3.200004p+4 : inexact-ok
+= log2p1 downward binary64 0x4p+48 : 0x3.2p+4 : inexact-ok
+= log2p1 tonearest binary64 0x4p+48 : 0x3.2p+4 : inexact-ok
+= log2p1 towardzero binary64 0x4p+48 : 0x3.2p+4 : inexact-ok
+= log2p1 upward binary64 0x4p+48 : 0x3.2000000000002p+4 : inexact-ok
+= log2p1 downward intel96 0x4p+48 : 0x3.20000000000005c4p+4 : inexact-ok
+= log2p1 tonearest intel96 0x4p+48 : 0x3.20000000000005c4p+4 : inexact-ok
+= log2p1 towardzero intel96 0x4p+48 : 0x3.20000000000005c4p+4 : inexact-ok
+= log2p1 upward intel96 0x4p+48 : 0x3.20000000000005c8p+4 : inexact-ok
+= log2p1 downward m68k96 0x4p+48 : 0x3.20000000000005c4p+4 : inexact-ok
+= log2p1 tonearest m68k96 0x4p+48 : 0x3.20000000000005c4p+4 : inexact-ok
+= log2p1 towardzero m68k96 0x4p+48 : 0x3.20000000000005c4p+4 : inexact-ok
+= log2p1 upward m68k96 0x4p+48 : 0x3.20000000000005c8p+4 : inexact-ok
+= log2p1 downward binary128 0x4p+48 : 0x3.20000000000005c551d94ae0beccp+4 : inexact-ok
+= log2p1 tonearest binary128 0x4p+48 : 0x3.20000000000005c551d94ae0becep+4 : inexact-ok
+= log2p1 towardzero binary128 0x4p+48 : 0x3.20000000000005c551d94ae0beccp+4 : inexact-ok
+= log2p1 upward binary128 0x4p+48 : 0x3.20000000000005c551d94ae0becep+4 : inexact-ok
+= log2p1 downward ibm128 0x4p+48 : 0x3.20000000000005c551d94ae0bep+4 : inexact-ok
+= log2p1 tonearest ibm128 0x4p+48 : 0x3.20000000000005c551d94ae0bfp+4 : inexact-ok
+= log2p1 towardzero ibm128 0x4p+48 : 0x3.20000000000005c551d94ae0bep+4 : inexact-ok
+= log2p1 upward ibm128 0x4p+48 : 0x3.20000000000005c551d94ae0bfp+4 : inexact-ok
+log2p1 0x1p60
+= log2p1 downward binary32 0x1p+60 : 0x3.cp+4 : inexact-ok
+= log2p1 tonearest binary32 0x1p+60 : 0x3.cp+4 : inexact-ok
+= log2p1 towardzero binary32 0x1p+60 : 0x3.cp+4 : inexact-ok
+= log2p1 upward binary32 0x1p+60 : 0x3.c00004p+4 : inexact-ok
+= log2p1 downward binary64 0x1p+60 : 0x3.cp+4 : inexact-ok
+= log2p1 tonearest binary64 0x1p+60 : 0x3.cp+4 : inexact-ok
+= log2p1 towardzero binary64 0x1p+60 : 0x3.cp+4 : inexact-ok
+= log2p1 upward binary64 0x1p+60 : 0x3.c000000000002p+4 : inexact-ok
+= log2p1 downward intel96 0x1p+60 : 0x3.cp+4 : inexact-ok
+= log2p1 tonearest intel96 0x1p+60 : 0x3.cp+4 : inexact-ok
+= log2p1 towardzero intel96 0x1p+60 : 0x3.cp+4 : inexact-ok
+= log2p1 upward intel96 0x1p+60 : 0x3.c000000000000004p+4 : inexact-ok
+= log2p1 downward m68k96 0x1p+60 : 0x3.cp+4 : inexact-ok
+= log2p1 tonearest m68k96 0x1p+60 : 0x3.cp+4 : inexact-ok
+= log2p1 towardzero m68k96 0x1p+60 : 0x3.cp+4 : inexact-ok
+= log2p1 upward m68k96 0x1p+60 : 0x3.c000000000000004p+4 : inexact-ok
+= log2p1 downward binary128 0x1p+60 : 0x3.c00000000000000171547652b82ep+4 : inexact-ok
+= log2p1 tonearest binary128 0x1p+60 : 0x3.c00000000000000171547652b83p+4 : inexact-ok
+= log2p1 towardzero binary128 0x1p+60 : 0x3.c00000000000000171547652b82ep+4 : inexact-ok
+= log2p1 upward binary128 0x1p+60 : 0x3.c00000000000000171547652b83p+4 : inexact-ok
+= log2p1 downward ibm128 0x1p+60 : 0x3.c00000000000000171547652b8p+4 : inexact-ok
+= log2p1 tonearest ibm128 0x1p+60 : 0x3.c00000000000000171547652b8p+4 : inexact-ok
+= log2p1 towardzero ibm128 0x1p+60 : 0x3.c00000000000000171547652b8p+4 : inexact-ok
+= log2p1 upward ibm128 0x1p+60 : 0x3.c00000000000000171547652b9p+4 : inexact-ok
+log2p1 0x1p100
+= log2p1 downward binary32 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 tonearest binary32 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 towardzero binary32 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 upward binary32 0x1p+100 : 0x6.400008p+4 : inexact-ok
+= log2p1 downward binary64 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 tonearest binary64 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 towardzero binary64 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 upward binary64 0x1p+100 : 0x6.4000000000004p+4 : inexact-ok
+= log2p1 downward intel96 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 tonearest intel96 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 towardzero intel96 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 upward intel96 0x1p+100 : 0x6.4000000000000008p+4 : inexact-ok
+= log2p1 downward m68k96 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 tonearest m68k96 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 towardzero m68k96 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 upward m68k96 0x1p+100 : 0x6.4000000000000008p+4 : inexact-ok
+= log2p1 downward binary128 0x1p+100 : 0x6.400000000000000000000000017p+4 : inexact-ok
+= log2p1 tonearest binary128 0x1p+100 : 0x6.400000000000000000000000017p+4 : inexact-ok
+= log2p1 towardzero binary128 0x1p+100 : 0x6.400000000000000000000000017p+4 : inexact-ok
+= log2p1 upward binary128 0x1p+100 : 0x6.4000000000000000000000000174p+4 : inexact-ok
+= log2p1 downward ibm128 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 tonearest ibm128 0x1p+100 : 0x6.40000000000000000000000002p+4 : inexact-ok
+= log2p1 towardzero ibm128 0x1p+100 : 0x6.4p+4 : inexact-ok
+= log2p1 upward ibm128 0x1p+100 : 0x6.40000000000000000000000002p+4 : inexact-ok
+log2p1 0x1p1000
+= log2p1 downward binary32 0xf.fffffp+124 : 0x7.fffff8p+4 : inexact-ok
+= log2p1 tonearest binary32 0xf.fffffp+124 : 0x8p+4 : inexact-ok
+= log2p1 towardzero binary32 0xf.fffffp+124 : 0x7.fffff8p+4 : inexact-ok
+= log2p1 upward binary32 0xf.fffffp+124 : 0x8p+4 : inexact-ok
+= log2p1 downward binary64 0xf.fffffp+124 : 0x7.ffffffe8eab88p+4 : inexact-ok
+= log2p1 tonearest binary64 0xf.fffffp+124 : 0x7.ffffffe8eab88p+4 : inexact-ok
+= log2p1 towardzero binary64 0xf.fffffp+124 : 0x7.ffffffe8eab88p+4 : inexact-ok
+= log2p1 upward binary64 0xf.fffffp+124 : 0x7.ffffffe8eab8cp+4 : inexact-ok
+= log2p1 downward intel96 0xf.fffffp+124 : 0x7.ffffffe8eab88f48p+4 : inexact-ok
+= log2p1 tonearest intel96 0xf.fffffp+124 : 0x7.ffffffe8eab88f48p+4 : inexact-ok
+= log2p1 towardzero intel96 0xf.fffffp+124 : 0x7.ffffffe8eab88f48p+4 : inexact-ok
+= log2p1 upward intel96 0xf.fffffp+124 : 0x7.ffffffe8eab88f5p+4 : inexact-ok
+= log2p1 downward m68k96 0xf.fffffp+124 : 0x7.ffffffe8eab88f48p+4 : inexact-ok
+= log2p1 tonearest m68k96 0xf.fffffp+124 : 0x7.ffffffe8eab88f48p+4 : inexact-ok
+= log2p1 towardzero m68k96 0xf.fffffp+124 : 0x7.ffffffe8eab88f48p+4 : inexact-ok
+= log2p1 upward m68k96 0xf.fffffp+124 : 0x7.ffffffe8eab88f5p+4 : inexact-ok
+= log2p1 downward binary128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a104332p+4 : inexact-ok
+= log2p1 tonearest binary128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a104332p+4 : inexact-ok
+= log2p1 towardzero binary128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a104332p+4 : inexact-ok
+= log2p1 upward binary128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a1043324p+4 : inexact-ok
+= log2p1 downward ibm128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a10432p+4 : inexact-ok
+= log2p1 tonearest ibm128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a10434p+4 : inexact-ok
+= log2p1 towardzero ibm128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a10432p+4 : inexact-ok
+= log2p1 upward ibm128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a10434p+4 : inexact-ok
+= log2p1 downward binary64 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 tonearest binary64 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 towardzero binary64 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 upward binary64 0x1p+1000 : 0x3.e800000000002p+8 : inexact-ok
+= log2p1 downward intel96 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 tonearest intel96 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 towardzero intel96 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 upward intel96 0x1p+1000 : 0x3.e800000000000004p+8 : inexact-ok
+= log2p1 downward m68k96 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 tonearest m68k96 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 towardzero m68k96 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 upward m68k96 0x1p+1000 : 0x3.e800000000000004p+8 : inexact-ok
+= log2p1 downward binary128 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 tonearest binary128 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 towardzero binary128 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 upward binary128 0x1p+1000 : 0x3.e800000000000000000000000002p+8 : inexact-ok
+= log2p1 downward ibm128 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 tonearest ibm128 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 towardzero ibm128 0x1p+1000 : 0x3.e8p+8 : inexact-ok
+= log2p1 upward ibm128 0x1p+1000 : 0x3.e8000000000000000000000001p+8 : inexact-ok
+log2p1 0x6.a0cf42befce9ed4085ef59254b48p-4
+= log2p1 downward binary32 0x6.a0cf48p-4 : 0x8.0031dp-4 : inexact-ok
+= log2p1 tonearest binary32 0x6.a0cf48p-4 : 0x8.0031ep-4 : inexact-ok
+= log2p1 towardzero binary32 0x6.a0cf48p-4 : 0x8.0031dp-4 : inexact-ok
+= log2p1 upward binary32 0x6.a0cf48p-4 : 0x8.0031ep-4 : inexact-ok
+= log2p1 downward binary64 0x6.a0cf48p-4 : 0x8.0031dd4ec0d88p-4 : inexact-ok
+= log2p1 tonearest binary64 0x6.a0cf48p-4 : 0x8.0031dd4ec0d9p-4 : inexact-ok
+= log2p1 towardzero binary64 0x6.a0cf48p-4 : 0x8.0031dd4ec0d88p-4 : inexact-ok
+= log2p1 upward binary64 0x6.a0cf48p-4 : 0x8.0031dd4ec0d9p-4 : inexact-ok
+= log2p1 downward intel96 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f5p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f51p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f5p-4 : inexact-ok
+= log2p1 upward intel96 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f51p-4 : inexact-ok
+= log2p1 downward m68k96 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f5p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f51p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f5p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f51p-4 : inexact-ok
+= log2p1 downward binary128 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f50c69dcd5a6fa8p-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f50c69dcd5a6fa8p-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f50c69dcd5a6fa8p-4 : inexact-ok
+= log2p1 upward binary128 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f50c69dcd5a6fa88p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f50c69dcd5a6f8p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f50c69dcd5a6fcp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f50c69dcd5a6f8p-4 : inexact-ok
+= log2p1 upward ibm128 0x6.a0cf48p-4 : 0x8.0031dd4ec0d8f50c69dcd5a6fcp-4 : inexact-ok
+= log2p1 downward binary32 0x6.a0cf4p-4 : 0x8.0031dp-4 : inexact-ok
+= log2p1 tonearest binary32 0x6.a0cf4p-4 : 0x8.0031dp-4 : inexact-ok
+= log2p1 towardzero binary32 0x6.a0cf4p-4 : 0x8.0031dp-4 : inexact-ok
+= log2p1 upward binary32 0x6.a0cf4p-4 : 0x8.0031ep-4 : inexact-ok
+= log2p1 downward binary64 0x6.a0cf4p-4 : 0x8.0031d52593998p-4 : inexact-ok
+= log2p1 tonearest binary64 0x6.a0cf4p-4 : 0x8.0031d525939ap-4 : inexact-ok
+= log2p1 towardzero binary64 0x6.a0cf4p-4 : 0x8.0031d52593998p-4 : inexact-ok
+= log2p1 upward binary64 0x6.a0cf4p-4 : 0x8.0031d525939ap-4 : inexact-ok
+= log2p1 downward intel96 0x6.a0cf4p-4 : 0x8.0031d5259399e48p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.a0cf4p-4 : 0x8.0031d5259399e48p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.a0cf4p-4 : 0x8.0031d5259399e48p-4 : inexact-ok
+= log2p1 upward intel96 0x6.a0cf4p-4 : 0x8.0031d5259399e49p-4 : inexact-ok
+= log2p1 downward m68k96 0x6.a0cf4p-4 : 0x8.0031d5259399e48p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.a0cf4p-4 : 0x8.0031d5259399e48p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.a0cf4p-4 : 0x8.0031d5259399e48p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.a0cf4p-4 : 0x8.0031d5259399e49p-4 : inexact-ok
+= log2p1 downward binary128 0x6.a0cf4p-4 : 0x8.0031d5259399e483b6c7d6a7e5fp-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.a0cf4p-4 : 0x8.0031d5259399e483b6c7d6a7e5fp-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.a0cf4p-4 : 0x8.0031d5259399e483b6c7d6a7e5fp-4 : inexact-ok
+= log2p1 upward binary128 0x6.a0cf4p-4 : 0x8.0031d5259399e483b6c7d6a7e5f8p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.a0cf4p-4 : 0x8.0031d5259399e483b6c7d6a7e4p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.a0cf4p-4 : 0x8.0031d5259399e483b6c7d6a7e4p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.a0cf4p-4 : 0x8.0031d5259399e483b6c7d6a7e4p-4 : inexact-ok
+= log2p1 upward ibm128 0x6.a0cf4p-4 : 0x8.0031d5259399e483b6c7d6a7e8p-4 : inexact-ok
+= log2p1 downward binary64 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dcp-4 : inexact-ok
+= log2p1 tonearest binary64 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc8p-4 : inexact-ok
+= log2p1 towardzero binary64 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dcp-4 : inexact-ok
+= log2p1 upward binary64 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc8p-4 : inexact-ok
+= log2p1 downward intel96 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b5p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b6p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b5p-4 : inexact-ok
+= log2p1 upward intel96 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b6p-4 : inexact-ok
+= log2p1 downward m68k96 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b5p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b6p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b5p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b6p-4 : inexact-ok
+= log2p1 downward binary128 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b5d560332b9b7ep-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b5d560332b9b7ep-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b5d560332b9b7ep-4 : inexact-ok
+= log2p1 upward binary128 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b5d560332b9b7e8p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b5d560332b9b4p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b5d560332b9b8p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b5d560332b9b4p-4 : inexact-ok
+= log2p1 upward ibm128 0x6.a0cf42befceap-4 : 0x8.0031d7f2b2dc5b5d560332b9b8p-4 : inexact-ok
+= log2p1 downward binary64 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dcp-4 : inexact-ok
+= log2p1 tonearest binary64 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dcp-4 : inexact-ok
+= log2p1 towardzero binary64 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dcp-4 : inexact-ok
+= log2p1 upward binary64 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc8p-4 : inexact-ok
+= log2p1 downward intel96 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a1p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a1p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a1p-4 : inexact-ok
+= log2p1 upward intel96 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a2p-4 : inexact-ok
+= log2p1 downward m68k96 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a1p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a1p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a1p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a2p-4 : inexact-ok
+= log2p1 downward binary128 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a13ec071045078p-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a13ec0710450788p-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a13ec071045078p-4 : inexact-ok
+= log2p1 upward binary128 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a13ec0710450788p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a13ec07104504p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a13ec07104508p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a13ec07104504p-4 : inexact-ok
+= log2p1 upward ibm128 0x6.a0cf42befce9cp-4 : 0x8.0031d7f2b2dc1a13ec07104508p-4 : inexact-ok
+= log2p1 downward intel96 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc484p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc484p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc484p-4 : inexact-ok
+= log2p1 upward intel96 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc485p-4 : inexact-ok
+= log2p1 downward m68k96 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc484p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc484p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc484p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc485p-4 : inexact-ok
+= log2p1 downward binary128 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc4844fd239425d6ep-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc4844fd239425d6ep-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc4844fd239425d6ep-4 : inexact-ok
+= log2p1 upward binary128 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc4844fd239425d6e8p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc4844fd239425d4p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc4844fd239425d8p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc4844fd239425d4p-4 : inexact-ok
+= log2p1 upward ibm128 0x6.a0cf42befce9ed48p-4 : 0x8.0031d7f2b2dc4844fd239425d8p-4 : inexact-ok
+= log2p1 downward intel96 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc483p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc484p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc483p-4 : inexact-ok
+= log2p1 upward intel96 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc484p-4 : inexact-ok
+= log2p1 downward m68k96 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc483p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc484p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc483p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc484p-4 : inexact-ok
+= log2p1 downward binary128 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc483cd3f654a18848p-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc483cd3f654a18848p-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc483cd3f654a18848p-4 : inexact-ok
+= log2p1 upward binary128 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc483cd3f654a1885p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc483cd3f654a188p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc483cd3f654a188p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc483cd3f654a188p-4 : inexact-ok
+= log2p1 upward ibm128 0x6.a0cf42befce9ed4p-4 : 0x8.0031d7f2b2dc483cd3f654a18cp-4 : inexact-ok
+= log2p1 downward binary128 0x6.a0cf42befce9ed4085ef59254b48p-4 : 0x8.0031d7f2b2dc483d5c970df96c1p-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.a0cf42befce9ed4085ef59254b48p-4 : 0x8.0031d7f2b2dc483d5c970df96c18p-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.a0cf42befce9ed4085ef59254b48p-4 : 0x8.0031d7f2b2dc483d5c970df96c1p-4 : inexact-ok
+= log2p1 upward binary128 0x6.a0cf42befce9ed4085ef59254b48p-4 : 0x8.0031d7f2b2dc483d5c970df96c18p-4 : inexact-ok
+= log2p1 downward binary128 0x6.a0cf42befce9ed4085ef59254cp-4 : 0x8.0031d7f2b2dc483d5c970df96cdp-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.a0cf42befce9ed4085ef59254cp-4 : 0x8.0031d7f2b2dc483d5c970df96cdp-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.a0cf42befce9ed4085ef59254cp-4 : 0x8.0031d7f2b2dc483d5c970df96cdp-4 : inexact-ok
+= log2p1 upward binary128 0x6.a0cf42befce9ed4085ef59254cp-4 : 0x8.0031d7f2b2dc483d5c970df96cd8p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.a0cf42befce9ed4085ef59254cp-4 : 0x8.0031d7f2b2dc483d5c970df96cp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.a0cf42befce9ed4085ef59254cp-4 : 0x8.0031d7f2b2dc483d5c970df96cp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.a0cf42befce9ed4085ef59254cp-4 : 0x8.0031d7f2b2dc483d5c970df96cp-4 : inexact-ok
+= log2p1 upward ibm128 0x6.a0cf42befce9ed4085ef59254cp-4 : 0x8.0031d7f2b2dc483d5c970df97p-4 : inexact-ok
+= log2p1 downward binary128 0x6.a0cf42befce9ed4085ef59254ap-4 : 0x8.0031d7f2b2dc483d5c970df96acp-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.a0cf42befce9ed4085ef59254ap-4 : 0x8.0031d7f2b2dc483d5c970df96ac8p-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.a0cf42befce9ed4085ef59254ap-4 : 0x8.0031d7f2b2dc483d5c970df96acp-4 : inexact-ok
+= log2p1 upward binary128 0x6.a0cf42befce9ed4085ef59254ap-4 : 0x8.0031d7f2b2dc483d5c970df96ac8p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.a0cf42befce9ed4085ef59254ap-4 : 0x8.0031d7f2b2dc483d5c970df968p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.a0cf42befce9ed4085ef59254ap-4 : 0x8.0031d7f2b2dc483d5c970df96cp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.a0cf42befce9ed4085ef59254ap-4 : 0x8.0031d7f2b2dc483d5c970df968p-4 : inexact-ok
+= log2p1 upward ibm128 0x6.a0cf42befce9ed4085ef59254ap-4 : 0x8.0031d7f2b2dc483d5c970df96cp-4 : inexact-ok
+log2p1 max
+= log2p1 downward binary32 0xf.fffffp+124 : 0x7.fffff8p+4 : inexact-ok
+= log2p1 tonearest binary32 0xf.fffffp+124 : 0x8p+4 : inexact-ok
+= log2p1 towardzero binary32 0xf.fffffp+124 : 0x7.fffff8p+4 : inexact-ok
+= log2p1 upward binary32 0xf.fffffp+124 : 0x8p+4 : inexact-ok
+= log2p1 downward binary64 0xf.fffffp+124 : 0x7.ffffffe8eab88p+4 : inexact-ok
+= log2p1 tonearest binary64 0xf.fffffp+124 : 0x7.ffffffe8eab88p+4 : inexact-ok
+= log2p1 towardzero binary64 0xf.fffffp+124 : 0x7.ffffffe8eab88p+4 : inexact-ok
+= log2p1 upward binary64 0xf.fffffp+124 : 0x7.ffffffe8eab8cp+4 : inexact-ok
+= log2p1 downward intel96 0xf.fffffp+124 : 0x7.ffffffe8eab88f48p+4 : inexact-ok
+= log2p1 tonearest intel96 0xf.fffffp+124 : 0x7.ffffffe8eab88f48p+4 : inexact-ok
+= log2p1 towardzero intel96 0xf.fffffp+124 : 0x7.ffffffe8eab88f48p+4 : inexact-ok
+= log2p1 upward intel96 0xf.fffffp+124 : 0x7.ffffffe8eab88f5p+4 : inexact-ok
+= log2p1 downward m68k96 0xf.fffffp+124 : 0x7.ffffffe8eab88f48p+4 : inexact-ok
+= log2p1 tonearest m68k96 0xf.fffffp+124 : 0x7.ffffffe8eab88f48p+4 : inexact-ok
+= log2p1 towardzero m68k96 0xf.fffffp+124 : 0x7.ffffffe8eab88f48p+4 : inexact-ok
+= log2p1 upward m68k96 0xf.fffffp+124 : 0x7.ffffffe8eab88f5p+4 : inexact-ok
+= log2p1 downward binary128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a104332p+4 : inexact-ok
+= log2p1 tonearest binary128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a104332p+4 : inexact-ok
+= log2p1 towardzero binary128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a104332p+4 : inexact-ok
+= log2p1 upward binary128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a1043324p+4 : inexact-ok
+= log2p1 downward ibm128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a10432p+4 : inexact-ok
+= log2p1 tonearest ibm128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a10434p+4 : inexact-ok
+= log2p1 towardzero ibm128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a10432p+4 : inexact-ok
+= log2p1 upward ibm128 0xf.fffffp+124 : 0x7.ffffffe8eab88f49d947a10434p+4 : inexact-ok
+= log2p1 downward binary64 0xf.ffffffffffff8p+1020 : 0x3.ffffffffffffep+8 : inexact-ok
+= log2p1 tonearest binary64 0xf.ffffffffffff8p+1020 : 0x4p+8 : inexact-ok
+= log2p1 towardzero binary64 0xf.ffffffffffff8p+1020 : 0x3.ffffffffffffep+8 : inexact-ok
+= log2p1 upward binary64 0xf.ffffffffffff8p+1020 : 0x4p+8 : inexact-ok
+= log2p1 downward intel96 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4p+8 : inexact-ok
+= log2p1 tonearest intel96 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4p+8 : inexact-ok
+= log2p1 towardzero intel96 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4p+8 : inexact-ok
+= log2p1 upward intel96 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff8p+8 : inexact-ok
+= log2p1 downward m68k96 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4p+8 : inexact-ok
+= log2p1 tonearest m68k96 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4p+8 : inexact-ok
+= log2p1 towardzero m68k96 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4p+8 : inexact-ok
+= log2p1 upward m68k96 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff8p+8 : inexact-ok
+= log2p1 downward binary128 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4755c4d6a3e8p+8 : inexact-ok
+= log2p1 tonearest binary128 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4755c4d6a3e8p+8 : inexact-ok
+= log2p1 towardzero binary128 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4755c4d6a3e8p+8 : inexact-ok
+= log2p1 upward binary128 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4755c4d6a3e82p+8 : inexact-ok
+= log2p1 downward ibm128 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4755c4d6a3ep+8 : inexact-ok
+= log2p1 tonearest ibm128 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4755c4d6a3fp+8 : inexact-ok
+= log2p1 towardzero ibm128 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4755c4d6a3ep+8 : inexact-ok
+= log2p1 upward ibm128 0xf.ffffffffffff8p+1020 : 0x3.fffffffffffffff4755c4d6a3fp+8 : inexact-ok
+= log2p1 downward intel96 0xf.fffffffffffffffp+16380 : 0x3.fffffffffffffffcp+12 : inexact-ok
+= log2p1 tonearest intel96 0xf.fffffffffffffffp+16380 : 0x4p+12 : inexact-ok
+= log2p1 towardzero intel96 0xf.fffffffffffffffp+16380 : 0x3.fffffffffffffffcp+12 : inexact-ok
+= log2p1 upward intel96 0xf.fffffffffffffffp+16380 : 0x4p+12 : inexact-ok
+= log2p1 downward m68k96 0xf.fffffffffffffffp+16380 : 0x3.fffffffffffffffcp+12 : inexact-ok
+= log2p1 tonearest m68k96 0xf.fffffffffffffffp+16380 : 0x4p+12 : inexact-ok
+= log2p1 towardzero m68k96 0xf.fffffffffffffffp+16380 : 0x3.fffffffffffffffcp+12 : inexact-ok
+= log2p1 upward m68k96 0xf.fffffffffffffffp+16380 : 0x4p+12 : inexact-ok
+= log2p1 downward binary128 0xf.fffffffffffffffp+16380 : 0x3.ffffffffffffffffffe8eab89ad4p+12 : inexact-ok
+= log2p1 tonearest binary128 0xf.fffffffffffffffp+16380 : 0x3.ffffffffffffffffffe8eab89ad4p+12 : inexact-ok
+= log2p1 towardzero binary128 0xf.fffffffffffffffp+16380 : 0x3.ffffffffffffffffffe8eab89ad4p+12 : inexact-ok
+= log2p1 upward binary128 0xf.fffffffffffffffp+16380 : 0x3.ffffffffffffffffffe8eab89ad6p+12 : inexact-ok
+= log2p1 downward binary128 0xf.fffffffffffffffffffffffffff8p+16380 : 0x3.fffffffffffffffffffffffffffep+12 : inexact-ok
+= log2p1 tonearest binary128 0xf.fffffffffffffffffffffffffff8p+16380 : 0x4p+12 : inexact-ok
+= log2p1 towardzero binary128 0xf.fffffffffffffffffffffffffff8p+16380 : 0x3.fffffffffffffffffffffffffffep+12 : inexact-ok
+= log2p1 upward binary128 0xf.fffffffffffffffffffffffffff8p+16380 : 0x4p+12 : inexact-ok
+= log2p1 downward binary128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x3.fffffffffffffffa3aae26b51f4p+8 : inexact-ok
+= log2p1 tonearest binary128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x3.fffffffffffffffa3aae26b51f4p+8 : inexact-ok
+= log2p1 towardzero binary128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x3.fffffffffffffffa3aae26b51f4p+8 : inexact-ok
+= log2p1 upward binary128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x3.fffffffffffffffa3aae26b51f42p+8 : inexact-ok
+= log2p1 downward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x3.fffffffffffffffa3aae26b51fp+8 : inexact-ok
+= log2p1 tonearest ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x3.fffffffffffffffa3aae26b51fp+8 : inexact-ok
+= log2p1 towardzero ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x3.fffffffffffffffa3aae26b51fp+8 : inexact-ok
+= log2p1 upward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x3.fffffffffffffffa3aae26b52p+8 : inexact-ok
+log2p1 0x7.2a4368p-4
+= log2p1 downward binary32 0x7.2a4368p-4 : 0x8.8ac63p-4 : inexact-ok
+= log2p1 tonearest binary32 0x7.2a4368p-4 : 0x8.8ac64p-4 : inexact-ok
+= log2p1 towardzero binary32 0x7.2a4368p-4 : 0x8.8ac63p-4 : inexact-ok
+= log2p1 upward binary32 0x7.2a4368p-4 : 0x8.8ac64p-4 : inexact-ok
+= log2p1 downward binary64 0x7.2a4368p-4 : 0x8.8ac6393d19eep-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.2a4368p-4 : 0x8.8ac6393d19ee8p-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.2a4368p-4 : 0x8.8ac6393d19eep-4 : inexact-ok
+= log2p1 upward binary64 0x7.2a4368p-4 : 0x8.8ac6393d19ee8p-4 : inexact-ok
+= log2p1 downward intel96 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b1p-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b2p-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b1p-4 : inexact-ok
+= log2p1 upward intel96 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b2p-4 : inexact-ok
+= log2p1 downward m68k96 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b1p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b2p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b1p-4 : inexact-ok
+= log2p1 upward m68k96 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b2p-4 : inexact-ok
+= log2p1 downward binary128 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b1c76048fa0d97p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b1c76048fa0d978p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b1c76048fa0d97p-4 : inexact-ok
+= log2p1 upward binary128 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b1c76048fa0d978p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b1c76048fa0d8p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b1c76048fa0d8p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b1c76048fa0d8p-4 : inexact-ok
+= log2p1 upward ibm128 0x7.2a4368p-4 : 0x8.8ac6393d19ee6b1c76048fa0dcp-4 : inexact-ok
+log2p1 0x6.d3a118p-4
+= log2p1 downward binary32 0x6.d3a118p-4 : 0x8.33cf5p-4 : inexact-ok
+= log2p1 tonearest binary32 0x6.d3a118p-4 : 0x8.33cf6p-4 : inexact-ok
+= log2p1 towardzero binary32 0x6.d3a118p-4 : 0x8.33cf5p-4 : inexact-ok
+= log2p1 upward binary32 0x6.d3a118p-4 : 0x8.33cf6p-4 : inexact-ok
+= log2p1 downward binary64 0x6.d3a118p-4 : 0x8.33cf5fc557078p-4 : inexact-ok
+= log2p1 tonearest binary64 0x6.d3a118p-4 : 0x8.33cf5fc55708p-4 : inexact-ok
+= log2p1 towardzero binary64 0x6.d3a118p-4 : 0x8.33cf5fc557078p-4 : inexact-ok
+= log2p1 upward binary64 0x6.d3a118p-4 : 0x8.33cf5fc55708p-4 : inexact-ok
+= log2p1 downward intel96 0x6.d3a118p-4 : 0x8.33cf5fc55707e24p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.d3a118p-4 : 0x8.33cf5fc55707e24p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.d3a118p-4 : 0x8.33cf5fc55707e24p-4 : inexact-ok
+= log2p1 upward intel96 0x6.d3a118p-4 : 0x8.33cf5fc55707e25p-4 : inexact-ok
+= log2p1 downward m68k96 0x6.d3a118p-4 : 0x8.33cf5fc55707e24p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.d3a118p-4 : 0x8.33cf5fc55707e24p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.d3a118p-4 : 0x8.33cf5fc55707e24p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.d3a118p-4 : 0x8.33cf5fc55707e25p-4 : inexact-ok
+= log2p1 downward binary128 0x6.d3a118p-4 : 0x8.33cf5fc55707e247166db43908a8p-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.d3a118p-4 : 0x8.33cf5fc55707e247166db43908bp-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.d3a118p-4 : 0x8.33cf5fc55707e247166db43908a8p-4 : inexact-ok
+= log2p1 upward binary128 0x6.d3a118p-4 : 0x8.33cf5fc55707e247166db43908bp-4 : inexact-ok
+= log2p1 downward ibm128 0x6.d3a118p-4 : 0x8.33cf5fc55707e247166db43908p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.d3a118p-4 : 0x8.33cf5fc55707e247166db43908p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.d3a118p-4 : 0x8.33cf5fc55707e247166db43908p-4 : inexact-ok
+= log2p1 upward ibm128 0x6.d3a118p-4 : 0x8.33cf5fc55707e247166db4390cp-4 : inexact-ok
+log2p1 0x5.03f228p+0
+= log2p1 downward binary32 0x5.03f228p+0 : 0x2.96b2acp+0 : inexact-ok
+= log2p1 tonearest binary32 0x5.03f228p+0 : 0x2.96b2bp+0 : inexact-ok
+= log2p1 towardzero binary32 0x5.03f228p+0 : 0x2.96b2acp+0 : inexact-ok
+= log2p1 upward binary32 0x5.03f228p+0 : 0x2.96b2bp+0 : inexact-ok
+= log2p1 downward binary64 0x5.03f228p+0 : 0x2.96b2aea66dc4ap+0 : inexact-ok
+= log2p1 tonearest binary64 0x5.03f228p+0 : 0x2.96b2aea66dc4ap+0 : inexact-ok
+= log2p1 towardzero binary64 0x5.03f228p+0 : 0x2.96b2aea66dc4ap+0 : inexact-ok
+= log2p1 upward binary64 0x5.03f228p+0 : 0x2.96b2aea66dc4cp+0 : inexact-ok
+= log2p1 downward intel96 0x5.03f228p+0 : 0x2.96b2aea66dc4abe4p+0 : inexact-ok
+= log2p1 tonearest intel96 0x5.03f228p+0 : 0x2.96b2aea66dc4abe8p+0 : inexact-ok
+= log2p1 towardzero intel96 0x5.03f228p+0 : 0x2.96b2aea66dc4abe4p+0 : inexact-ok
+= log2p1 upward intel96 0x5.03f228p+0 : 0x2.96b2aea66dc4abe8p+0 : inexact-ok
+= log2p1 downward m68k96 0x5.03f228p+0 : 0x2.96b2aea66dc4abe4p+0 : inexact-ok
+= log2p1 tonearest m68k96 0x5.03f228p+0 : 0x2.96b2aea66dc4abe8p+0 : inexact-ok
+= log2p1 towardzero m68k96 0x5.03f228p+0 : 0x2.96b2aea66dc4abe4p+0 : inexact-ok
+= log2p1 upward m68k96 0x5.03f228p+0 : 0x2.96b2aea66dc4abe8p+0 : inexact-ok
+= log2p1 downward binary128 0x5.03f228p+0 : 0x2.96b2aea66dc4abe7061d213ba8b4p+0 : inexact-ok
+= log2p1 tonearest binary128 0x5.03f228p+0 : 0x2.96b2aea66dc4abe7061d213ba8b6p+0 : inexact-ok
+= log2p1 towardzero binary128 0x5.03f228p+0 : 0x2.96b2aea66dc4abe7061d213ba8b4p+0 : inexact-ok
+= log2p1 upward binary128 0x5.03f228p+0 : 0x2.96b2aea66dc4abe7061d213ba8b6p+0 : inexact-ok
+= log2p1 downward ibm128 0x5.03f228p+0 : 0x2.96b2aea66dc4abe7061d213ba8p+0 : inexact-ok
+= log2p1 tonearest ibm128 0x5.03f228p+0 : 0x2.96b2aea66dc4abe7061d213ba9p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x5.03f228p+0 : 0x2.96b2aea66dc4abe7061d213ba8p+0 : inexact-ok
+= log2p1 upward ibm128 0x5.03f228p+0 : 0x2.96b2aea66dc4abe7061d213ba9p+0 : inexact-ok
+log2p1 0x7.264963888ac9p-4
+= log2p1 downward binary32 0x7.264968p-4 : 0x8.86cf7p-4 : inexact-ok
+= log2p1 tonearest binary32 0x7.264968p-4 : 0x8.86cf8p-4 : inexact-ok
+= log2p1 towardzero binary32 0x7.264968p-4 : 0x8.86cf7p-4 : inexact-ok
+= log2p1 upward binary32 0x7.264968p-4 : 0x8.86cf8p-4 : inexact-ok
+= log2p1 downward binary64 0x7.264968p-4 : 0x8.86cf7c4d6b298p-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.264968p-4 : 0x8.86cf7c4d6b2ap-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.264968p-4 : 0x8.86cf7c4d6b298p-4 : inexact-ok
+= log2p1 upward binary64 0x7.264968p-4 : 0x8.86cf7c4d6b2ap-4 : inexact-ok
+= log2p1 downward intel96 0x7.264968p-4 : 0x8.86cf7c4d6b29ea1p-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.264968p-4 : 0x8.86cf7c4d6b29ea2p-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.264968p-4 : 0x8.86cf7c4d6b29ea1p-4 : inexact-ok
+= log2p1 upward intel96 0x7.264968p-4 : 0x8.86cf7c4d6b29ea2p-4 : inexact-ok
+= log2p1 downward m68k96 0x7.264968p-4 : 0x8.86cf7c4d6b29ea1p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.264968p-4 : 0x8.86cf7c4d6b29ea2p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.264968p-4 : 0x8.86cf7c4d6b29ea1p-4 : inexact-ok
+= log2p1 upward m68k96 0x7.264968p-4 : 0x8.86cf7c4d6b29ea2p-4 : inexact-ok
+= log2p1 downward binary128 0x7.264968p-4 : 0x8.86cf7c4d6b29ea1b7d2626b2b33p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.264968p-4 : 0x8.86cf7c4d6b29ea1b7d2626b2b338p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.264968p-4 : 0x8.86cf7c4d6b29ea1b7d2626b2b33p-4 : inexact-ok
+= log2p1 upward binary128 0x7.264968p-4 : 0x8.86cf7c4d6b29ea1b7d2626b2b338p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.264968p-4 : 0x8.86cf7c4d6b29ea1b7d2626b2bp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.264968p-4 : 0x8.86cf7c4d6b29ea1b7d2626b2b4p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.264968p-4 : 0x8.86cf7c4d6b29ea1b7d2626b2bp-4 : inexact-ok
+= log2p1 upward ibm128 0x7.264968p-4 : 0x8.86cf7c4d6b29ea1b7d2626b2b4p-4 : inexact-ok
+= log2p1 downward binary32 0x7.26496p-4 : 0x8.86cf7p-4 : inexact-ok
+= log2p1 tonearest binary32 0x7.26496p-4 : 0x8.86cf7p-4 : inexact-ok
+= log2p1 towardzero binary32 0x7.26496p-4 : 0x8.86cf7p-4 : inexact-ok
+= log2p1 upward binary32 0x7.26496p-4 : 0x8.86cf8p-4 : inexact-ok
+= log2p1 downward binary64 0x7.26496p-4 : 0x8.86cf74534bdp-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.26496p-4 : 0x8.86cf74534bdp-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.26496p-4 : 0x8.86cf74534bdp-4 : inexact-ok
+= log2p1 upward binary64 0x7.26496p-4 : 0x8.86cf74534bd08p-4 : inexact-ok
+= log2p1 downward intel96 0x7.26496p-4 : 0x8.86cf74534bd01d7p-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.26496p-4 : 0x8.86cf74534bd01d7p-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.26496p-4 : 0x8.86cf74534bd01d7p-4 : inexact-ok
+= log2p1 upward intel96 0x7.26496p-4 : 0x8.86cf74534bd01d8p-4 : inexact-ok
+= log2p1 downward m68k96 0x7.26496p-4 : 0x8.86cf74534bd01d7p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.26496p-4 : 0x8.86cf74534bd01d7p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.26496p-4 : 0x8.86cf74534bd01d7p-4 : inexact-ok
+= log2p1 upward m68k96 0x7.26496p-4 : 0x8.86cf74534bd01d8p-4 : inexact-ok
+= log2p1 downward binary128 0x7.26496p-4 : 0x8.86cf74534bd01d760e529a8582ep-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.26496p-4 : 0x8.86cf74534bd01d760e529a8582ep-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.26496p-4 : 0x8.86cf74534bd01d760e529a8582ep-4 : inexact-ok
+= log2p1 upward binary128 0x7.26496p-4 : 0x8.86cf74534bd01d760e529a8582e8p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.26496p-4 : 0x8.86cf74534bd01d760e529a858p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.26496p-4 : 0x8.86cf74534bd01d760e529a8584p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.26496p-4 : 0x8.86cf74534bd01d760e529a858p-4 : inexact-ok
+= log2p1 upward ibm128 0x7.26496p-4 : 0x8.86cf74534bd01d760e529a8584p-4 : inexact-ok
+= log2p1 downward binary64 0x7.264963888ac9p-4 : 0x8.86cf77d93e0ap-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.264963888ac9p-4 : 0x8.86cf77d93e0ap-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.264963888ac9p-4 : 0x8.86cf77d93e0ap-4 : inexact-ok
+= log2p1 upward binary64 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a8p-4 : inexact-ok
+= log2p1 downward intel96 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20ep-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20fp-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20ep-4 : inexact-ok
+= log2p1 upward intel96 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20fp-4 : inexact-ok
+= log2p1 downward m68k96 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20ep-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20fp-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20ep-4 : inexact-ok
+= log2p1 upward m68k96 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20fp-4 : inexact-ok
+= log2p1 downward binary128 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20ef5722b8e1eb58p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20ef5722b8e1eb6p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20ef5722b8e1eb58p-4 : inexact-ok
+= log2p1 upward binary128 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20ef5722b8e1eb6p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20ef5722b8e1e8p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20ef5722b8e1ecp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20ef5722b8e1e8p-4 : inexact-ok
+= log2p1 upward ibm128 0x7.264963888ac9p-4 : 0x8.86cf77d93e0a20ef5722b8e1ecp-4 : inexact-ok
+log2p1 0x8.786bdp-4
+= log2p1 downward binary32 0x8.786bdp-4 : 0x9.ceb4ep-4 : inexact-ok
+= log2p1 tonearest binary32 0x8.786bdp-4 : 0x9.ceb4ep-4 : inexact-ok
+= log2p1 towardzero binary32 0x8.786bdp-4 : 0x9.ceb4ep-4 : inexact-ok
+= log2p1 upward binary32 0x8.786bdp-4 : 0x9.ceb4fp-4 : inexact-ok
+= log2p1 downward binary64 0x8.786bdp-4 : 0x9.ceb4e6b738158p-4 : inexact-ok
+= log2p1 tonearest binary64 0x8.786bdp-4 : 0x9.ceb4e6b738158p-4 : inexact-ok
+= log2p1 towardzero binary64 0x8.786bdp-4 : 0x9.ceb4e6b738158p-4 : inexact-ok
+= log2p1 upward binary64 0x8.786bdp-4 : 0x9.ceb4e6b73816p-4 : inexact-ok
+= log2p1 downward intel96 0x8.786bdp-4 : 0x9.ceb4e6b73815a5p-4 : inexact-ok
+= log2p1 tonearest intel96 0x8.786bdp-4 : 0x9.ceb4e6b73815a5p-4 : inexact-ok
+= log2p1 towardzero intel96 0x8.786bdp-4 : 0x9.ceb4e6b73815a5p-4 : inexact-ok
+= log2p1 upward intel96 0x8.786bdp-4 : 0x9.ceb4e6b73815a51p-4 : inexact-ok
+= log2p1 downward m68k96 0x8.786bdp-4 : 0x9.ceb4e6b73815a5p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x8.786bdp-4 : 0x9.ceb4e6b73815a5p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x8.786bdp-4 : 0x9.ceb4e6b73815a5p-4 : inexact-ok
+= log2p1 upward m68k96 0x8.786bdp-4 : 0x9.ceb4e6b73815a51p-4 : inexact-ok
+= log2p1 downward binary128 0x8.786bdp-4 : 0x9.ceb4e6b73815a504dfa91fd4b5p-4 : inexact-ok
+= log2p1 tonearest binary128 0x8.786bdp-4 : 0x9.ceb4e6b73815a504dfa91fd4b5p-4 : inexact-ok
+= log2p1 towardzero binary128 0x8.786bdp-4 : 0x9.ceb4e6b73815a504dfa91fd4b5p-4 : inexact-ok
+= log2p1 upward binary128 0x8.786bdp-4 : 0x9.ceb4e6b73815a504dfa91fd4b508p-4 : inexact-ok
+= log2p1 downward ibm128 0x8.786bdp-4 : 0x9.ceb4e6b73815a504dfa91fd4b4p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x8.786bdp-4 : 0x9.ceb4e6b73815a504dfa91fd4b4p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x8.786bdp-4 : 0x9.ceb4e6b73815a504dfa91fd4b4p-4 : inexact-ok
+= log2p1 upward ibm128 0x8.786bdp-4 : 0x9.ceb4e6b73815a504dfa91fd4b8p-4 : inexact-ok
+log2p1 0x7.89dc17790eeb4p-4
+= log2p1 downward binary32 0x7.89dc18p-4 : 0x8.e945dp-4 : inexact-ok
+= log2p1 tonearest binary32 0x7.89dc18p-4 : 0x8.e945ep-4 : inexact-ok
+= log2p1 towardzero binary32 0x7.89dc18p-4 : 0x8.e945dp-4 : inexact-ok
+= log2p1 upward binary32 0x7.89dc18p-4 : 0x8.e945ep-4 : inexact-ok
+= log2p1 downward binary64 0x7.89dc18p-4 : 0x8.e945d9046f2ap-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.89dc18p-4 : 0x8.e945d9046f2a8p-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.89dc18p-4 : 0x8.e945d9046f2ap-4 : inexact-ok
+= log2p1 upward binary64 0x7.89dc18p-4 : 0x8.e945d9046f2a8p-4 : inexact-ok
+= log2p1 downward intel96 0x7.89dc18p-4 : 0x8.e945d9046f2a40cp-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.89dc18p-4 : 0x8.e945d9046f2a40cp-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.89dc18p-4 : 0x8.e945d9046f2a40cp-4 : inexact-ok
+= log2p1 upward intel96 0x7.89dc18p-4 : 0x8.e945d9046f2a40dp-4 : inexact-ok
+= log2p1 downward m68k96 0x7.89dc18p-4 : 0x8.e945d9046f2a40cp-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.89dc18p-4 : 0x8.e945d9046f2a40cp-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.89dc18p-4 : 0x8.e945d9046f2a40cp-4 : inexact-ok
+= log2p1 upward m68k96 0x7.89dc18p-4 : 0x8.e945d9046f2a40dp-4 : inexact-ok
+= log2p1 downward binary128 0x7.89dc18p-4 : 0x8.e945d9046f2a40c7b47774b4fe98p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.89dc18p-4 : 0x8.e945d9046f2a40c7b47774b4feap-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.89dc18p-4 : 0x8.e945d9046f2a40c7b47774b4fe98p-4 : inexact-ok
+= log2p1 upward binary128 0x7.89dc18p-4 : 0x8.e945d9046f2a40c7b47774b4feap-4 : inexact-ok
+= log2p1 downward ibm128 0x7.89dc18p-4 : 0x8.e945d9046f2a40c7b47774b4fcp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.89dc18p-4 : 0x8.e945d9046f2a40c7b47774b5p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.89dc18p-4 : 0x8.e945d9046f2a40c7b47774b4fcp-4 : inexact-ok
+= log2p1 upward ibm128 0x7.89dc18p-4 : 0x8.e945d9046f2a40c7b47774b5p-4 : inexact-ok
+= log2p1 downward binary32 0x7.89dc1p-4 : 0x8.e945dp-4 : inexact-ok
+= log2p1 tonearest binary32 0x7.89dc1p-4 : 0x8.e945dp-4 : inexact-ok
+= log2p1 towardzero binary32 0x7.89dc1p-4 : 0x8.e945dp-4 : inexact-ok
+= log2p1 upward binary32 0x7.89dc1p-4 : 0x8.e945ep-4 : inexact-ok
+= log2p1 downward binary64 0x7.89dc1p-4 : 0x8.e945d12c0e6e8p-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.89dc1p-4 : 0x8.e945d12c0e6fp-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.89dc1p-4 : 0x8.e945d12c0e6e8p-4 : inexact-ok
+= log2p1 upward binary64 0x7.89dc1p-4 : 0x8.e945d12c0e6fp-4 : inexact-ok
+= log2p1 downward intel96 0x7.89dc1p-4 : 0x8.e945d12c0e6ee7p-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.89dc1p-4 : 0x8.e945d12c0e6ee7p-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.89dc1p-4 : 0x8.e945d12c0e6ee7p-4 : inexact-ok
+= log2p1 upward intel96 0x7.89dc1p-4 : 0x8.e945d12c0e6ee71p-4 : inexact-ok
+= log2p1 downward m68k96 0x7.89dc1p-4 : 0x8.e945d12c0e6ee7p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.89dc1p-4 : 0x8.e945d12c0e6ee7p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.89dc1p-4 : 0x8.e945d12c0e6ee7p-4 : inexact-ok
+= log2p1 upward m68k96 0x7.89dc1p-4 : 0x8.e945d12c0e6ee71p-4 : inexact-ok
+= log2p1 downward binary128 0x7.89dc1p-4 : 0x8.e945d12c0e6ee704f7b8b42201bp-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.89dc1p-4 : 0x8.e945d12c0e6ee704f7b8b42201bp-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.89dc1p-4 : 0x8.e945d12c0e6ee704f7b8b42201bp-4 : inexact-ok
+= log2p1 upward binary128 0x7.89dc1p-4 : 0x8.e945d12c0e6ee704f7b8b42201b8p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.89dc1p-4 : 0x8.e945d12c0e6ee704f7b8b422p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.89dc1p-4 : 0x8.e945d12c0e6ee704f7b8b422p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.89dc1p-4 : 0x8.e945d12c0e6ee704f7b8b422p-4 : inexact-ok
+= log2p1 upward ibm128 0x7.89dc1p-4 : 0x8.e945d12c0e6ee704f7b8b42204p-4 : inexact-ok
+= log2p1 downward binary64 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6bp-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b8p-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6bp-4 : inexact-ok
+= log2p1 upward binary64 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b8p-4 : inexact-ok
+= log2p1 downward intel96 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b586p-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b586p-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b586p-4 : inexact-ok
+= log2p1 upward intel96 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b587p-4 : inexact-ok
+= log2p1 downward m68k96 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b586p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b586p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b586p-4 : inexact-ok
+= log2p1 upward m68k96 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b587p-4 : inexact-ok
+= log2p1 downward binary128 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b5862e21590e7459p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b5862e21590e7459p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b5862e21590e7459p-4 : inexact-ok
+= log2p1 upward binary128 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b5862e21590e74598p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b5862e21590e744p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b5862e21590e744p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b5862e21590e744p-4 : inexact-ok
+= log2p1 upward ibm128 0x7.89dc17790eeb4p-4 : 0x8.e945d8801a6b5862e21590e748p-4 : inexact-ok
+log2p1 0x9.81ccf8887c24a7bp-4
+= log2p1 downward binary32 0x9.81cdp-4 : 0xa.c3e25p-4 : inexact-ok
+= log2p1 tonearest binary32 0x9.81cdp-4 : 0xa.c3e25p-4 : inexact-ok
+= log2p1 towardzero binary32 0x9.81cdp-4 : 0xa.c3e25p-4 : inexact-ok
+= log2p1 upward binary32 0x9.81cdp-4 : 0xa.c3e26p-4 : inexact-ok
+= log2p1 downward binary64 0x9.81cdp-4 : 0xa.c3e2530f0a4c8p-4 : inexact-ok
+= log2p1 tonearest binary64 0x9.81cdp-4 : 0xa.c3e2530f0a4dp-4 : inexact-ok
+= log2p1 towardzero binary64 0x9.81cdp-4 : 0xa.c3e2530f0a4c8p-4 : inexact-ok
+= log2p1 upward binary64 0x9.81cdp-4 : 0xa.c3e2530f0a4dp-4 : inexact-ok
+= log2p1 downward intel96 0x9.81cdp-4 : 0xa.c3e2530f0a4cef5p-4 : inexact-ok
+= log2p1 tonearest intel96 0x9.81cdp-4 : 0xa.c3e2530f0a4cef6p-4 : inexact-ok
+= log2p1 towardzero intel96 0x9.81cdp-4 : 0xa.c3e2530f0a4cef5p-4 : inexact-ok
+= log2p1 upward intel96 0x9.81cdp-4 : 0xa.c3e2530f0a4cef6p-4 : inexact-ok
+= log2p1 downward m68k96 0x9.81cdp-4 : 0xa.c3e2530f0a4cef5p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x9.81cdp-4 : 0xa.c3e2530f0a4cef6p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x9.81cdp-4 : 0xa.c3e2530f0a4cef5p-4 : inexact-ok
+= log2p1 upward m68k96 0x9.81cdp-4 : 0xa.c3e2530f0a4cef6p-4 : inexact-ok
+= log2p1 downward binary128 0x9.81cdp-4 : 0xa.c3e2530f0a4cef5e0347d0efa0a8p-4 : inexact-ok
+= log2p1 tonearest binary128 0x9.81cdp-4 : 0xa.c3e2530f0a4cef5e0347d0efa0bp-4 : inexact-ok
+= log2p1 towardzero binary128 0x9.81cdp-4 : 0xa.c3e2530f0a4cef5e0347d0efa0a8p-4 : inexact-ok
+= log2p1 upward binary128 0x9.81cdp-4 : 0xa.c3e2530f0a4cef5e0347d0efa0bp-4 : inexact-ok
+= log2p1 downward ibm128 0x9.81cdp-4 : 0xa.c3e2530f0a4cef5e0347d0efap-4 : inexact-ok
+= log2p1 tonearest ibm128 0x9.81cdp-4 : 0xa.c3e2530f0a4cef5e0347d0efap-4 : inexact-ok
+= log2p1 towardzero ibm128 0x9.81cdp-4 : 0xa.c3e2530f0a4cef5e0347d0efap-4 : inexact-ok
+= log2p1 upward ibm128 0x9.81cdp-4 : 0xa.c3e2530f0a4cef5e0347d0efa4p-4 : inexact-ok
+= log2p1 downward binary32 0x9.81ccfp-4 : 0xa.c3e24p-4 : inexact-ok
+= log2p1 tonearest binary32 0x9.81ccfp-4 : 0xa.c3e24p-4 : inexact-ok
+= log2p1 towardzero binary32 0x9.81ccfp-4 : 0xa.c3e24p-4 : inexact-ok
+= log2p1 upward binary32 0x9.81ccfp-4 : 0xa.c3e25p-4 : inexact-ok
+= log2p1 downward binary64 0x9.81ccfp-4 : 0xa.c3e2449447a5p-4 : inexact-ok
+= log2p1 tonearest binary64 0x9.81ccfp-4 : 0xa.c3e2449447a5p-4 : inexact-ok
+= log2p1 towardzero binary64 0x9.81ccfp-4 : 0xa.c3e2449447a5p-4 : inexact-ok
+= log2p1 upward binary64 0x9.81ccfp-4 : 0xa.c3e2449447a58p-4 : inexact-ok
+= log2p1 downward intel96 0x9.81ccfp-4 : 0xa.c3e2449447a52b5p-4 : inexact-ok
+= log2p1 tonearest intel96 0x9.81ccfp-4 : 0xa.c3e2449447a52b6p-4 : inexact-ok
+= log2p1 towardzero intel96 0x9.81ccfp-4 : 0xa.c3e2449447a52b5p-4 : inexact-ok
+= log2p1 upward intel96 0x9.81ccfp-4 : 0xa.c3e2449447a52b6p-4 : inexact-ok
+= log2p1 downward m68k96 0x9.81ccfp-4 : 0xa.c3e2449447a52b5p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x9.81ccfp-4 : 0xa.c3e2449447a52b6p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x9.81ccfp-4 : 0xa.c3e2449447a52b5p-4 : inexact-ok
+= log2p1 upward m68k96 0x9.81ccfp-4 : 0xa.c3e2449447a52b6p-4 : inexact-ok
+= log2p1 downward binary128 0x9.81ccfp-4 : 0xa.c3e2449447a52b5c659a3721057p-4 : inexact-ok
+= log2p1 tonearest binary128 0x9.81ccfp-4 : 0xa.c3e2449447a52b5c659a37210578p-4 : inexact-ok
+= log2p1 towardzero binary128 0x9.81ccfp-4 : 0xa.c3e2449447a52b5c659a3721057p-4 : inexact-ok
+= log2p1 upward binary128 0x9.81ccfp-4 : 0xa.c3e2449447a52b5c659a37210578p-4 : inexact-ok
+= log2p1 downward ibm128 0x9.81ccfp-4 : 0xa.c3e2449447a52b5c659a372104p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x9.81ccfp-4 : 0xa.c3e2449447a52b5c659a372104p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x9.81ccfp-4 : 0xa.c3e2449447a52b5c659a372104p-4 : inexact-ok
+= log2p1 upward ibm128 0x9.81ccfp-4 : 0xa.c3e2449447a52b5c659a372108p-4 : inexact-ok
+= log2p1 downward binary64 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc98p-4 : inexact-ok
+= log2p1 tonearest binary64 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc98p-4 : inexact-ok
+= log2p1 towardzero binary64 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc98p-4 : inexact-ok
+= log2p1 upward binary64 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2ccap-4 : inexact-ok
+= log2p1 downward intel96 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a13p-4 : inexact-ok
+= log2p1 tonearest intel96 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a13p-4 : inexact-ok
+= log2p1 towardzero intel96 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a13p-4 : inexact-ok
+= log2p1 upward intel96 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a14p-4 : inexact-ok
+= log2p1 downward m68k96 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a13p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a13p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a13p-4 : inexact-ok
+= log2p1 upward m68k96 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a14p-4 : inexact-ok
+= log2p1 downward binary128 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a130895186e1289p-4 : inexact-ok
+= log2p1 tonearest binary128 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a130895186e12898p-4 : inexact-ok
+= log2p1 towardzero binary128 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a130895186e1289p-4 : inexact-ok
+= log2p1 upward binary128 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a130895186e12898p-4 : inexact-ok
+= log2p1 downward ibm128 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a130895186e128p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a130895186e128p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a130895186e128p-4 : inexact-ok
+= log2p1 upward ibm128 0x9.81ccf8887c25p-4 : 0xa.c3e24c4d2cc9a130895186e12cp-4 : inexact-ok
+= log2p1 downward binary64 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc9p-4 : inexact-ok
+= log2p1 tonearest binary64 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc9p-4 : inexact-ok
+= log2p1 towardzero binary64 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc9p-4 : inexact-ok
+= log2p1 upward binary64 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc98p-4 : inexact-ok
+= log2p1 downward intel96 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d5p-4 : inexact-ok
+= log2p1 tonearest intel96 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d6p-4 : inexact-ok
+= log2p1 towardzero intel96 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d5p-4 : inexact-ok
+= log2p1 upward intel96 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d6p-4 : inexact-ok
+= log2p1 downward m68k96 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d5p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d6p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d5p-4 : inexact-ok
+= log2p1 upward m68k96 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d6p-4 : inexact-ok
+= log2p1 downward binary128 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d5a7415d2a78558p-4 : inexact-ok
+= log2p1 tonearest binary128 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d5a7415d2a78558p-4 : inexact-ok
+= log2p1 towardzero binary128 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d5a7415d2a78558p-4 : inexact-ok
+= log2p1 upward binary128 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d5a7415d2a7856p-4 : inexact-ok
+= log2p1 downward ibm128 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d5a7415d2a784p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d5a7415d2a784p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d5a7415d2a784p-4 : inexact-ok
+= log2p1 upward ibm128 0x9.81ccf8887c248p-4 : 0xa.c3e24c4d2cc92d5a7415d2a788p-4 : inexact-ok
+= log2p1 downward intel96 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc9514p-4 : inexact-ok
+= log2p1 tonearest intel96 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc9514p-4 : inexact-ok
+= log2p1 towardzero intel96 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc9514p-4 : inexact-ok
+= log2p1 upward intel96 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc9515p-4 : inexact-ok
+= log2p1 downward m68k96 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc9514p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc9514p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc9514p-4 : inexact-ok
+= log2p1 upward m68k96 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc9515p-4 : inexact-ok
+= log2p1 downward binary128 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc95144f4eb35a8e49p-4 : inexact-ok
+= log2p1 tonearest binary128 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc95144f4eb35a8e498p-4 : inexact-ok
+= log2p1 towardzero binary128 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc95144f4eb35a8e49p-4 : inexact-ok
+= log2p1 upward binary128 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc95144f4eb35a8e498p-4 : inexact-ok
+= log2p1 downward ibm128 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc95144f4eb35a8e4p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc95144f4eb35a8e4p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc95144f4eb35a8e4p-4 : inexact-ok
+= log2p1 upward ibm128 0x9.81ccf8887c24a7bp-4 : 0xa.c3e24c4d2cc95144f4eb35a8e8p-4 : inexact-ok
+log2p1 0xa.5028608bd65f38dp-4
+= log2p1 downward binary32 0xa.50287p-4 : 0xb.7bbdbp-4 : inexact-ok
+= log2p1 tonearest binary32 0xa.50287p-4 : 0xb.7bbdcp-4 : inexact-ok
+= log2p1 towardzero binary32 0xa.50287p-4 : 0xb.7bbdbp-4 : inexact-ok
+= log2p1 upward binary32 0xa.50287p-4 : 0xb.7bbdcp-4 : inexact-ok
+= log2p1 downward binary64 0xa.50287p-4 : 0xb.7bbdbf42ba38p-4 : inexact-ok
+= log2p1 tonearest binary64 0xa.50287p-4 : 0xb.7bbdbf42ba38p-4 : inexact-ok
+= log2p1 towardzero binary64 0xa.50287p-4 : 0xb.7bbdbf42ba38p-4 : inexact-ok
+= log2p1 upward binary64 0xa.50287p-4 : 0xb.7bbdbf42ba388p-4 : inexact-ok
+= log2p1 downward intel96 0xa.50287p-4 : 0xb.7bbdbf42ba381e1p-4 : inexact-ok
+= log2p1 tonearest intel96 0xa.50287p-4 : 0xb.7bbdbf42ba381e1p-4 : inexact-ok
+= log2p1 towardzero intel96 0xa.50287p-4 : 0xb.7bbdbf42ba381e1p-4 : inexact-ok
+= log2p1 upward intel96 0xa.50287p-4 : 0xb.7bbdbf42ba381e2p-4 : inexact-ok
+= log2p1 downward m68k96 0xa.50287p-4 : 0xb.7bbdbf42ba381e1p-4 : inexact-ok
+= log2p1 tonearest m68k96 0xa.50287p-4 : 0xb.7bbdbf42ba381e1p-4 : inexact-ok
+= log2p1 towardzero m68k96 0xa.50287p-4 : 0xb.7bbdbf42ba381e1p-4 : inexact-ok
+= log2p1 upward m68k96 0xa.50287p-4 : 0xb.7bbdbf42ba381e2p-4 : inexact-ok
+= log2p1 downward binary128 0xa.50287p-4 : 0xb.7bbdbf42ba381e10534774e00828p-4 : inexact-ok
+= log2p1 tonearest binary128 0xa.50287p-4 : 0xb.7bbdbf42ba381e10534774e00828p-4 : inexact-ok
+= log2p1 towardzero binary128 0xa.50287p-4 : 0xb.7bbdbf42ba381e10534774e00828p-4 : inexact-ok
+= log2p1 upward binary128 0xa.50287p-4 : 0xb.7bbdbf42ba381e10534774e0083p-4 : inexact-ok
+= log2p1 downward ibm128 0xa.50287p-4 : 0xb.7bbdbf42ba381e10534774e008p-4 : inexact-ok
+= log2p1 tonearest ibm128 0xa.50287p-4 : 0xb.7bbdbf42ba381e10534774e008p-4 : inexact-ok
+= log2p1 towardzero ibm128 0xa.50287p-4 : 0xb.7bbdbf42ba381e10534774e008p-4 : inexact-ok
+= log2p1 upward ibm128 0xa.50287p-4 : 0xb.7bbdbf42ba381e10534774e00cp-4 : inexact-ok
+= log2p1 downward binary32 0xa.50286p-4 : 0xb.7bbdbp-4 : inexact-ok
+= log2p1 tonearest binary32 0xa.50286p-4 : 0xb.7bbdbp-4 : inexact-ok
+= log2p1 towardzero binary32 0xa.50286p-4 : 0xb.7bbdbp-4 : inexact-ok
+= log2p1 upward binary32 0xa.50286p-4 : 0xb.7bbdcp-4 : inexact-ok
+= log2p1 downward binary64 0xa.50286p-4 : 0xb.7bbdb1398559p-4 : inexact-ok
+= log2p1 tonearest binary64 0xa.50286p-4 : 0xb.7bbdb1398559p-4 : inexact-ok
+= log2p1 towardzero binary64 0xa.50286p-4 : 0xb.7bbdb1398559p-4 : inexact-ok
+= log2p1 upward binary64 0xa.50286p-4 : 0xb.7bbdb13985598p-4 : inexact-ok
+= log2p1 downward intel96 0xa.50286p-4 : 0xb.7bbdb1398559009p-4 : inexact-ok
+= log2p1 tonearest intel96 0xa.50286p-4 : 0xb.7bbdb1398559009p-4 : inexact-ok
+= log2p1 towardzero intel96 0xa.50286p-4 : 0xb.7bbdb1398559009p-4 : inexact-ok
+= log2p1 upward intel96 0xa.50286p-4 : 0xb.7bbdb139855900ap-4 : inexact-ok
+= log2p1 downward m68k96 0xa.50286p-4 : 0xb.7bbdb1398559009p-4 : inexact-ok
+= log2p1 tonearest m68k96 0xa.50286p-4 : 0xb.7bbdb1398559009p-4 : inexact-ok
+= log2p1 towardzero m68k96 0xa.50286p-4 : 0xb.7bbdb1398559009p-4 : inexact-ok
+= log2p1 upward m68k96 0xa.50286p-4 : 0xb.7bbdb139855900ap-4 : inexact-ok
+= log2p1 downward binary128 0xa.50286p-4 : 0xb.7bbdb13985590093f2b14c2f5f38p-4 : inexact-ok
+= log2p1 tonearest binary128 0xa.50286p-4 : 0xb.7bbdb13985590093f2b14c2f5f38p-4 : inexact-ok
+= log2p1 towardzero binary128 0xa.50286p-4 : 0xb.7bbdb13985590093f2b14c2f5f38p-4 : inexact-ok
+= log2p1 upward binary128 0xa.50286p-4 : 0xb.7bbdb13985590093f2b14c2f5f4p-4 : inexact-ok
+= log2p1 downward ibm128 0xa.50286p-4 : 0xb.7bbdb13985590093f2b14c2f5cp-4 : inexact-ok
+= log2p1 tonearest ibm128 0xa.50286p-4 : 0xb.7bbdb13985590093f2b14c2f6p-4 : inexact-ok
+= log2p1 towardzero ibm128 0xa.50286p-4 : 0xb.7bbdb13985590093f2b14c2f5cp-4 : inexact-ok
+= log2p1 upward ibm128 0xa.50286p-4 : 0xb.7bbdb13985590093f2b14c2f6p-4 : inexact-ok
+= log2p1 downward binary64 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b43163p-4 : inexact-ok
+= log2p1 tonearest binary64 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b431638p-4 : inexact-ok
+= log2p1 towardzero binary64 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b43163p-4 : inexact-ok
+= log2p1 upward binary64 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b431638p-4 : inexact-ok
+= log2p1 downward intel96 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b4316361p-4 : inexact-ok
+= log2p1 tonearest intel96 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b4316361p-4 : inexact-ok
+= log2p1 towardzero intel96 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b4316361p-4 : inexact-ok
+= log2p1 upward intel96 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b43163611p-4 : inexact-ok
+= log2p1 downward m68k96 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b4316361p-4 : inexact-ok
+= log2p1 tonearest m68k96 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b4316361p-4 : inexact-ok
+= log2p1 towardzero m68k96 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b4316361p-4 : inexact-ok
+= log2p1 upward m68k96 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b43163611p-4 : inexact-ok
+= log2p1 downward binary128 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b431636105af6937915768p-4 : inexact-ok
+= log2p1 tonearest binary128 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b431636105af693791577p-4 : inexact-ok
+= log2p1 towardzero binary128 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b431636105af6937915768p-4 : inexact-ok
+= log2p1 upward binary128 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b431636105af693791577p-4 : inexact-ok
+= log2p1 downward ibm128 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b431636105af69379154p-4 : inexact-ok
+= log2p1 tonearest ibm128 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b431636105af69379158p-4 : inexact-ok
+= log2p1 towardzero ibm128 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b431636105af69379154p-4 : inexact-ok
+= log2p1 upward ibm128 0xa.5028608bd65f8p-4 : 0xb.7bbdb1b431636105af69379158p-4 : inexact-ok
+= log2p1 downward binary64 0xa.5028608bd65fp-4 : 0xb.7bbdb1b431628p-4 : inexact-ok
+= log2p1 tonearest binary64 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43163p-4 : inexact-ok
+= log2p1 towardzero binary64 0xa.5028608bd65fp-4 : 0xb.7bbdb1b431628p-4 : inexact-ok
+= log2p1 upward binary64 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43163p-4 : inexact-ok
+= log2p1 downward intel96 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0bp-4 : inexact-ok
+= log2p1 tonearest intel96 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0cp-4 : inexact-ok
+= log2p1 towardzero intel96 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0bp-4 : inexact-ok
+= log2p1 upward intel96 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0cp-4 : inexact-ok
+= log2p1 downward m68k96 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0bp-4 : inexact-ok
+= log2p1 tonearest m68k96 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0cp-4 : inexact-ok
+= log2p1 towardzero m68k96 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0bp-4 : inexact-ok
+= log2p1 upward m68k96 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0cp-4 : inexact-ok
+= log2p1 downward binary128 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0bc08507cda2d4p-4 : inexact-ok
+= log2p1 tonearest binary128 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0bc08507cda2d4p-4 : inexact-ok
+= log2p1 towardzero binary128 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0bc08507cda2d4p-4 : inexact-ok
+= log2p1 upward binary128 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0bc08507cda2d48p-4 : inexact-ok
+= log2p1 downward ibm128 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0bc08507cda2cp-4 : inexact-ok
+= log2p1 tonearest ibm128 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0bc08507cda2cp-4 : inexact-ok
+= log2p1 towardzero ibm128 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0bc08507cda2cp-4 : inexact-ok
+= log2p1 upward ibm128 0xa.5028608bd65fp-4 : 0xb.7bbdb1b43162f0bc08507cda3p-4 : inexact-ok
+= log2p1 downward intel96 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b43163229p-4 : inexact-ok
+= log2p1 tonearest intel96 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b43163229p-4 : inexact-ok
+= log2p1 towardzero intel96 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b43163229p-4 : inexact-ok
+= log2p1 upward intel96 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b4316322ap-4 : inexact-ok
+= log2p1 downward m68k96 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b43163229p-4 : inexact-ok
+= log2p1 tonearest m68k96 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b43163229p-4 : inexact-ok
+= log2p1 towardzero m68k96 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b43163229p-4 : inexact-ok
+= log2p1 upward m68k96 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b4316322ap-4 : inexact-ok
+= log2p1 downward binary128 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b431632292b91ad6b9b998p-4 : inexact-ok
+= log2p1 tonearest binary128 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b431632292b91ad6b9b998p-4 : inexact-ok
+= log2p1 towardzero binary128 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b431632292b91ad6b9b998p-4 : inexact-ok
+= log2p1 upward binary128 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b431632292b91ad6b9b9ap-4 : inexact-ok
+= log2p1 downward ibm128 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b431632292b91ad6b9b8p-4 : inexact-ok
+= log2p1 tonearest ibm128 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b431632292b91ad6b9b8p-4 : inexact-ok
+= log2p1 towardzero ibm128 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b431632292b91ad6b9b8p-4 : inexact-ok
+= log2p1 upward ibm128 0xa.5028608bd65f38dp-4 : 0xb.7bbdb1b431632292b91ad6b9bcp-4 : inexact-ok
+log2p1 0x5.bf78873e20a2d468p-4
+= log2p1 downward binary32 0x5.bf7888p-4 : 0x7.15bc2p-4 : inexact-ok
+= log2p1 tonearest binary32 0x5.bf7888p-4 : 0x7.15bc2p-4 : inexact-ok
+= log2p1 towardzero binary32 0x5.bf7888p-4 : 0x7.15bc2p-4 : inexact-ok
+= log2p1 upward binary32 0x5.bf7888p-4 : 0x7.15bc28p-4 : inexact-ok
+= log2p1 downward binary64 0x5.bf7888p-4 : 0x7.15bc23e74542cp-4 : inexact-ok
+= log2p1 tonearest binary64 0x5.bf7888p-4 : 0x7.15bc23e74543p-4 : inexact-ok
+= log2p1 towardzero binary64 0x5.bf7888p-4 : 0x7.15bc23e74542cp-4 : inexact-ok
+= log2p1 upward binary64 0x5.bf7888p-4 : 0x7.15bc23e74543p-4 : inexact-ok
+= log2p1 downward intel96 0x5.bf7888p-4 : 0x7.15bc23e74542ea98p-4 : inexact-ok
+= log2p1 tonearest intel96 0x5.bf7888p-4 : 0x7.15bc23e74542ea98p-4 : inexact-ok
+= log2p1 towardzero intel96 0x5.bf7888p-4 : 0x7.15bc23e74542ea98p-4 : inexact-ok
+= log2p1 upward intel96 0x5.bf7888p-4 : 0x7.15bc23e74542eaap-4 : inexact-ok
+= log2p1 downward m68k96 0x5.bf7888p-4 : 0x7.15bc23e74542ea98p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x5.bf7888p-4 : 0x7.15bc23e74542ea98p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x5.bf7888p-4 : 0x7.15bc23e74542ea98p-4 : inexact-ok
+= log2p1 upward m68k96 0x5.bf7888p-4 : 0x7.15bc23e74542eaap-4 : inexact-ok
+= log2p1 downward binary128 0x5.bf7888p-4 : 0x7.15bc23e74542ea9bf00660a9d608p-4 : inexact-ok
+= log2p1 tonearest binary128 0x5.bf7888p-4 : 0x7.15bc23e74542ea9bf00660a9d608p-4 : inexact-ok
+= log2p1 towardzero binary128 0x5.bf7888p-4 : 0x7.15bc23e74542ea9bf00660a9d608p-4 : inexact-ok
+= log2p1 upward binary128 0x5.bf7888p-4 : 0x7.15bc23e74542ea9bf00660a9d60cp-4 : inexact-ok
+= log2p1 downward ibm128 0x5.bf7888p-4 : 0x7.15bc23e74542ea9bf00660a9d6p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x5.bf7888p-4 : 0x7.15bc23e74542ea9bf00660a9d6p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x5.bf7888p-4 : 0x7.15bc23e74542ea9bf00660a9d6p-4 : inexact-ok
+= log2p1 upward ibm128 0x5.bf7888p-4 : 0x7.15bc23e74542ea9bf00660a9d8p-4 : inexact-ok
+= log2p1 downward binary32 0x5.bf788p-4 : 0x7.15bc18p-4 : inexact-ok
+= log2p1 tonearest binary32 0x5.bf788p-4 : 0x7.15bc18p-4 : inexact-ok
+= log2p1 towardzero binary32 0x5.bf788p-4 : 0x7.15bc18p-4 : inexact-ok
+= log2p1 upward binary32 0x5.bf788p-4 : 0x7.15bc2p-4 : inexact-ok
+= log2p1 downward binary64 0x5.bf788p-4 : 0x7.15bc1b69893cp-4 : inexact-ok
+= log2p1 tonearest binary64 0x5.bf788p-4 : 0x7.15bc1b69893cp-4 : inexact-ok
+= log2p1 towardzero binary64 0x5.bf788p-4 : 0x7.15bc1b69893cp-4 : inexact-ok
+= log2p1 upward binary64 0x5.bf788p-4 : 0x7.15bc1b69893c4p-4 : inexact-ok
+= log2p1 downward intel96 0x5.bf788p-4 : 0x7.15bc1b69893c17b8p-4 : inexact-ok
+= log2p1 tonearest intel96 0x5.bf788p-4 : 0x7.15bc1b69893c17b8p-4 : inexact-ok
+= log2p1 towardzero intel96 0x5.bf788p-4 : 0x7.15bc1b69893c17b8p-4 : inexact-ok
+= log2p1 upward intel96 0x5.bf788p-4 : 0x7.15bc1b69893c17cp-4 : inexact-ok
+= log2p1 downward m68k96 0x5.bf788p-4 : 0x7.15bc1b69893c17b8p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x5.bf788p-4 : 0x7.15bc1b69893c17b8p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x5.bf788p-4 : 0x7.15bc1b69893c17b8p-4 : inexact-ok
+= log2p1 upward m68k96 0x5.bf788p-4 : 0x7.15bc1b69893c17cp-4 : inexact-ok
+= log2p1 downward binary128 0x5.bf788p-4 : 0x7.15bc1b69893c17b9285e030f2e28p-4 : inexact-ok
+= log2p1 tonearest binary128 0x5.bf788p-4 : 0x7.15bc1b69893c17b9285e030f2e2cp-4 : inexact-ok
+= log2p1 towardzero binary128 0x5.bf788p-4 : 0x7.15bc1b69893c17b9285e030f2e28p-4 : inexact-ok
+= log2p1 upward binary128 0x5.bf788p-4 : 0x7.15bc1b69893c17b9285e030f2e2cp-4 : inexact-ok
+= log2p1 downward ibm128 0x5.bf788p-4 : 0x7.15bc1b69893c17b9285e030f2ep-4 : inexact-ok
+= log2p1 tonearest ibm128 0x5.bf788p-4 : 0x7.15bc1b69893c17b9285e030f2ep-4 : inexact-ok
+= log2p1 towardzero ibm128 0x5.bf788p-4 : 0x7.15bc1b69893c17b9285e030f2ep-4 : inexact-ok
+= log2p1 upward ibm128 0x5.bf788p-4 : 0x7.15bc1b69893c17b9285e030f3p-4 : inexact-ok
+= log2p1 downward binary64 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed74p-4 : inexact-ok
+= log2p1 tonearest binary64 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed74p-4 : inexact-ok
+= log2p1 towardzero binary64 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed74p-4 : inexact-ok
+= log2p1 upward binary64 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed78p-4 : inexact-ok
+= log2p1 downward intel96 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958p-4 : inexact-ok
+= log2p1 tonearest intel96 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958p-4 : inexact-ok
+= log2p1 towardzero intel96 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958p-4 : inexact-ok
+= log2p1 upward intel96 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed7596p-4 : inexact-ok
+= log2p1 downward m68k96 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958p-4 : inexact-ok
+= log2p1 upward m68k96 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed7596p-4 : inexact-ok
+= log2p1 downward binary128 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958019f8398164cp-4 : inexact-ok
+= log2p1 tonearest binary128 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958019f8398165p-4 : inexact-ok
+= log2p1 towardzero binary128 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958019f8398164cp-4 : inexact-ok
+= log2p1 upward binary128 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958019f8398165p-4 : inexact-ok
+= log2p1 downward ibm128 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958019f839816p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958019f839816p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958019f839816p-4 : inexact-ok
+= log2p1 upward ibm128 0x5.bf78873e20a3p-4 : 0x7.15bc23197ed75958019f839818p-4 : inexact-ok
+= log2p1 downward binary64 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7p-4 : inexact-ok
+= log2p1 tonearest binary64 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7p-4 : inexact-ok
+= log2p1 towardzero binary64 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7p-4 : inexact-ok
+= log2p1 upward binary64 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed74p-4 : inexact-ok
+= log2p1 downward intel96 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed71568p-4 : inexact-ok
+= log2p1 tonearest intel96 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed71568p-4 : inexact-ok
+= log2p1 towardzero intel96 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed71568p-4 : inexact-ok
+= log2p1 upward intel96 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7157p-4 : inexact-ok
+= log2p1 downward m68k96 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed71568p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed71568p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed71568p-4 : inexact-ok
+= log2p1 upward m68k96 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7157p-4 : inexact-ok
+= log2p1 downward binary128 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7156a21730d6484a4p-4 : inexact-ok
+= log2p1 tonearest binary128 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7156a21730d6484a8p-4 : inexact-ok
+= log2p1 towardzero binary128 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7156a21730d6484a4p-4 : inexact-ok
+= log2p1 upward binary128 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7156a21730d6484a8p-4 : inexact-ok
+= log2p1 downward ibm128 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7156a21730d6484p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7156a21730d6484p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7156a21730d6484p-4 : inexact-ok
+= log2p1 upward ibm128 0x5.bf78873e20a2cp-4 : 0x7.15bc23197ed7156a21730d6486p-4 : inexact-ok
+= log2p1 downward intel96 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b1p-4 : inexact-ok
+= log2p1 tonearest intel96 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b1p-4 : inexact-ok
+= log2p1 towardzero intel96 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b1p-4 : inexact-ok
+= log2p1 upward intel96 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b18p-4 : inexact-ok
+= log2p1 downward m68k96 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b1p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b1p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b1p-4 : inexact-ok
+= log2p1 upward m68k96 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b18p-4 : inexact-ok
+= log2p1 downward binary128 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b12da0d3a94b60cp-4 : inexact-ok
+= log2p1 tonearest binary128 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b12da0d3a94b60cp-4 : inexact-ok
+= log2p1 towardzero binary128 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b12da0d3a94b60cp-4 : inexact-ok
+= log2p1 upward binary128 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b12da0d3a94b61p-4 : inexact-ok
+= log2p1 downward ibm128 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b12da0d3a94b6p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b12da0d3a94b6p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b12da0d3a94b6p-4 : inexact-ok
+= log2p1 upward ibm128 0x5.bf78873e20a2d468p-4 : 0x7.15bc23197ed72b12da0d3a94b8p-4 : inexact-ok
+log2p1 0x7.aa5198p-4
+= log2p1 downward binary32 0x7.aa5198p-4 : 0x9.0904bp-4 : inexact-ok
+= log2p1 tonearest binary32 0x7.aa5198p-4 : 0x9.0904bp-4 : inexact-ok
+= log2p1 towardzero binary32 0x7.aa5198p-4 : 0x9.0904bp-4 : inexact-ok
+= log2p1 upward binary32 0x7.aa5198p-4 : 0x9.0904cp-4 : inexact-ok
+= log2p1 downward binary64 0x7.aa5198p-4 : 0x9.0904b79f424ep-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.aa5198p-4 : 0x9.0904b79f424e8p-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.aa5198p-4 : 0x9.0904b79f424ep-4 : inexact-ok
+= log2p1 upward binary64 0x7.aa5198p-4 : 0x9.0904b79f424e8p-4 : inexact-ok
+= log2p1 downward intel96 0x7.aa5198p-4 : 0x9.0904b79f424e4fap-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.aa5198p-4 : 0x9.0904b79f424e4fap-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.aa5198p-4 : 0x9.0904b79f424e4fap-4 : inexact-ok
+= log2p1 upward intel96 0x7.aa5198p-4 : 0x9.0904b79f424e4fbp-4 : inexact-ok
+= log2p1 downward m68k96 0x7.aa5198p-4 : 0x9.0904b79f424e4fap-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.aa5198p-4 : 0x9.0904b79f424e4fap-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.aa5198p-4 : 0x9.0904b79f424e4fap-4 : inexact-ok
+= log2p1 upward m68k96 0x7.aa5198p-4 : 0x9.0904b79f424e4fbp-4 : inexact-ok
+= log2p1 downward binary128 0x7.aa5198p-4 : 0x9.0904b79f424e4fa19cca66692bc8p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.aa5198p-4 : 0x9.0904b79f424e4fa19cca66692bc8p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.aa5198p-4 : 0x9.0904b79f424e4fa19cca66692bc8p-4 : inexact-ok
+= log2p1 upward binary128 0x7.aa5198p-4 : 0x9.0904b79f424e4fa19cca66692bdp-4 : inexact-ok
+= log2p1 downward ibm128 0x7.aa5198p-4 : 0x9.0904b79f424e4fa19cca666928p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.aa5198p-4 : 0x9.0904b79f424e4fa19cca66692cp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.aa5198p-4 : 0x9.0904b79f424e4fa19cca666928p-4 : inexact-ok
+= log2p1 upward ibm128 0x7.aa5198p-4 : 0x9.0904b79f424e4fa19cca66692cp-4 : inexact-ok
+log2p1 0x2.564fap+0
+= log2p1 downward binary32 0x2.564fap+0 : 0x1.bd160ap+0 : inexact-ok
+= log2p1 tonearest binary32 0x2.564fap+0 : 0x1.bd160cp+0 : inexact-ok
+= log2p1 towardzero binary32 0x2.564fap+0 : 0x1.bd160ap+0 : inexact-ok
+= log2p1 upward binary32 0x2.564fap+0 : 0x1.bd160cp+0 : inexact-ok
+= log2p1 downward binary64 0x2.564fap+0 : 0x1.bd160b24ed662p+0 : inexact-ok
+= log2p1 tonearest binary64 0x2.564fap+0 : 0x1.bd160b24ed663p+0 : inexact-ok
+= log2p1 towardzero binary64 0x2.564fap+0 : 0x1.bd160b24ed662p+0 : inexact-ok
+= log2p1 upward binary64 0x2.564fap+0 : 0x1.bd160b24ed663p+0 : inexact-ok
+= log2p1 downward intel96 0x2.564fap+0 : 0x1.bd160b24ed662fd6p+0 : inexact-ok
+= log2p1 tonearest intel96 0x2.564fap+0 : 0x1.bd160b24ed662fd8p+0 : inexact-ok
+= log2p1 towardzero intel96 0x2.564fap+0 : 0x1.bd160b24ed662fd6p+0 : inexact-ok
+= log2p1 upward intel96 0x2.564fap+0 : 0x1.bd160b24ed662fd8p+0 : inexact-ok
+= log2p1 downward m68k96 0x2.564fap+0 : 0x1.bd160b24ed662fd6p+0 : inexact-ok
+= log2p1 tonearest m68k96 0x2.564fap+0 : 0x1.bd160b24ed662fd8p+0 : inexact-ok
+= log2p1 towardzero m68k96 0x2.564fap+0 : 0x1.bd160b24ed662fd6p+0 : inexact-ok
+= log2p1 upward m68k96 0x2.564fap+0 : 0x1.bd160b24ed662fd8p+0 : inexact-ok
+= log2p1 downward binary128 0x2.564fap+0 : 0x1.bd160b24ed662fd779d7c941f88ap+0 : inexact-ok
+= log2p1 tonearest binary128 0x2.564fap+0 : 0x1.bd160b24ed662fd779d7c941f88bp+0 : inexact-ok
+= log2p1 towardzero binary128 0x2.564fap+0 : 0x1.bd160b24ed662fd779d7c941f88ap+0 : inexact-ok
+= log2p1 upward binary128 0x2.564fap+0 : 0x1.bd160b24ed662fd779d7c941f88bp+0 : inexact-ok
+= log2p1 downward ibm128 0x2.564fap+0 : 0x1.bd160b24ed662fd779d7c941f88p+0 : inexact-ok
+= log2p1 tonearest ibm128 0x2.564fap+0 : 0x1.bd160b24ed662fd779d7c941f88p+0 : inexact-ok
+= log2p1 towardzero ibm128 0x2.564fap+0 : 0x1.bd160b24ed662fd779d7c941f88p+0 : inexact-ok
+= log2p1 upward ibm128 0x2.564fap+0 : 0x1.bd160b24ed662fd779d7c941f9p+0 : inexact-ok
+log2p1 0x7.fc242a2235222ef8p-4
+= log2p1 downward binary32 0x7.fc243p-4 : 0x9.584b4p-4 : inexact-ok
+= log2p1 tonearest binary32 0x7.fc243p-4 : 0x9.584b4p-4 : inexact-ok
+= log2p1 towardzero binary32 0x7.fc243p-4 : 0x9.584b4p-4 : inexact-ok
+= log2p1 upward binary32 0x7.fc243p-4 : 0x9.584b5p-4 : inexact-ok
+= log2p1 downward binary64 0x7.fc243p-4 : 0x9.584b4411ad52p-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.fc243p-4 : 0x9.584b4411ad528p-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.fc243p-4 : 0x9.584b4411ad52p-4 : inexact-ok
+= log2p1 upward binary64 0x7.fc243p-4 : 0x9.584b4411ad528p-4 : inexact-ok
+= log2p1 downward intel96 0x7.fc243p-4 : 0x9.584b4411ad52726p-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.fc243p-4 : 0x9.584b4411ad52726p-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.fc243p-4 : 0x9.584b4411ad52726p-4 : inexact-ok
+= log2p1 upward intel96 0x7.fc243p-4 : 0x9.584b4411ad52727p-4 : inexact-ok
+= log2p1 downward m68k96 0x7.fc243p-4 : 0x9.584b4411ad52726p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.fc243p-4 : 0x9.584b4411ad52726p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.fc243p-4 : 0x9.584b4411ad52726p-4 : inexact-ok
+= log2p1 upward m68k96 0x7.fc243p-4 : 0x9.584b4411ad52727p-4 : inexact-ok
+= log2p1 downward binary128 0x7.fc243p-4 : 0x9.584b4411ad527260f3ec4ffd4df8p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.fc243p-4 : 0x9.584b4411ad527260f3ec4ffd4df8p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.fc243p-4 : 0x9.584b4411ad527260f3ec4ffd4df8p-4 : inexact-ok
+= log2p1 upward binary128 0x7.fc243p-4 : 0x9.584b4411ad527260f3ec4ffd4ep-4 : inexact-ok
+= log2p1 downward ibm128 0x7.fc243p-4 : 0x9.584b4411ad527260f3ec4ffd4cp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.fc243p-4 : 0x9.584b4411ad527260f3ec4ffd4cp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.fc243p-4 : 0x9.584b4411ad527260f3ec4ffd4cp-4 : inexact-ok
+= log2p1 upward ibm128 0x7.fc243p-4 : 0x9.584b4411ad527260f3ec4ffd5p-4 : inexact-ok
+= log2p1 downward binary32 0x7.fc2428p-4 : 0x9.584b3p-4 : inexact-ok
+= log2p1 tonearest binary32 0x7.fc2428p-4 : 0x9.584b4p-4 : inexact-ok
+= log2p1 towardzero binary32 0x7.fc2428p-4 : 0x9.584b3p-4 : inexact-ok
+= log2p1 upward binary32 0x7.fc2428p-4 : 0x9.584b4p-4 : inexact-ok
+= log2p1 downward binary64 0x7.fc2428p-4 : 0x9.584b3c5eadf6p-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.fc2428p-4 : 0x9.584b3c5eadf6p-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.fc2428p-4 : 0x9.584b3c5eadf6p-4 : inexact-ok
+= log2p1 upward binary64 0x7.fc2428p-4 : 0x9.584b3c5eadf68p-4 : inexact-ok
+= log2p1 downward intel96 0x7.fc2428p-4 : 0x9.584b3c5eadf61bbp-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.fc2428p-4 : 0x9.584b3c5eadf61bbp-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.fc2428p-4 : 0x9.584b3c5eadf61bbp-4 : inexact-ok
+= log2p1 upward intel96 0x7.fc2428p-4 : 0x9.584b3c5eadf61bcp-4 : inexact-ok
+= log2p1 downward m68k96 0x7.fc2428p-4 : 0x9.584b3c5eadf61bbp-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.fc2428p-4 : 0x9.584b3c5eadf61bbp-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.fc2428p-4 : 0x9.584b3c5eadf61bbp-4 : inexact-ok
+= log2p1 upward m68k96 0x7.fc2428p-4 : 0x9.584b3c5eadf61bcp-4 : inexact-ok
+= log2p1 downward binary128 0x7.fc2428p-4 : 0x9.584b3c5eadf61bb02d03d77ecf5p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.fc2428p-4 : 0x9.584b3c5eadf61bb02d03d77ecf58p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.fc2428p-4 : 0x9.584b3c5eadf61bb02d03d77ecf5p-4 : inexact-ok
+= log2p1 upward binary128 0x7.fc2428p-4 : 0x9.584b3c5eadf61bb02d03d77ecf58p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.fc2428p-4 : 0x9.584b3c5eadf61bb02d03d77eccp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.fc2428p-4 : 0x9.584b3c5eadf61bb02d03d77edp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.fc2428p-4 : 0x9.584b3c5eadf61bb02d03d77eccp-4 : inexact-ok
+= log2p1 upward ibm128 0x7.fc2428p-4 : 0x9.584b3c5eadf61bb02d03d77edp-4 : inexact-ok
+= log2p1 downward binary64 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8p-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8p-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8p-4 : inexact-ok
+= log2p1 upward binary64 0x7.fc242a2235224p-4 : 0x9.584b3e6c59aep-4 : inexact-ok
+= log2p1 downward intel96 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c2p-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c3p-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c2p-4 : inexact-ok
+= log2p1 upward intel96 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c3p-4 : inexact-ok
+= log2p1 downward m68k96 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c2p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c3p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c2p-4 : inexact-ok
+= log2p1 upward m68k96 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c3p-4 : inexact-ok
+= log2p1 downward binary128 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c2efd0dca56be98p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c2efd0dca56beap-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c2efd0dca56be98p-4 : inexact-ok
+= log2p1 upward binary128 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c2efd0dca56beap-4 : inexact-ok
+= log2p1 downward ibm128 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c2efd0dca56bcp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c2efd0dca56cp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c2efd0dca56bcp-4 : inexact-ok
+= log2p1 upward ibm128 0x7.fc242a2235224p-4 : 0x9.584b3e6c59ad8c2efd0dca56cp-4 : inexact-ok
+= log2p1 downward binary64 0x7.fc242a223522p-4 : 0x9.584b3e6c59adp-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad8p-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.fc242a223522p-4 : 0x9.584b3e6c59adp-4 : inexact-ok
+= log2p1 upward binary64 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad8p-4 : inexact-ok
+= log2p1 downward intel96 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e9p-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e9p-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e9p-4 : inexact-ok
+= log2p1 upward intel96 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4eap-4 : inexact-ok
+= log2p1 downward m68k96 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e9p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e9p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e9p-4 : inexact-ok
+= log2p1 upward m68k96 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4eap-4 : inexact-ok
+= log2p1 downward binary128 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e97022649d60418p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e97022649d6042p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e97022649d60418p-4 : inexact-ok
+= log2p1 upward binary128 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e97022649d6042p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e97022649d604p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e97022649d604p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e97022649d604p-4 : inexact-ok
+= log2p1 upward ibm128 0x7.fc242a223522p-4 : 0x9.584b3e6c59ad4e97022649d608p-4 : inexact-ok
+= log2p1 downward intel96 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bcp-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bdp-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bcp-4 : inexact-ok
+= log2p1 upward intel96 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bdp-4 : inexact-ok
+= log2p1 downward m68k96 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bcp-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bdp-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bcp-4 : inexact-ok
+= log2p1 upward m68k96 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bdp-4 : inexact-ok
+= log2p1 downward binary128 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bcaeb68ef447d08p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bcaeb68ef447d08p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bcaeb68ef447d08p-4 : inexact-ok
+= log2p1 upward binary128 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bcaeb68ef447d1p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bcaeb68ef447cp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bcaeb68ef447cp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bcaeb68ef447cp-4 : inexact-ok
+= log2p1 upward ibm128 0x7.fc242a2235222ef8p-4 : 0x9.584b3e6c59ad7bcaeb68ef448p-4 : inexact-ok
+log2p1 -0x4.f37d3c9ce0b14bdd86eb157df5d4p-4
+= log2p1 downward binary32 -0x4.f37d38p-4 : -0x8.8bf9p-4 : inexact-ok
+= log2p1 tonearest binary32 -0x4.f37d38p-4 : -0x8.8bf9p-4 : inexact-ok
+= log2p1 towardzero binary32 -0x4.f37d38p-4 : -0x8.8bf8fp-4 : inexact-ok
+= log2p1 upward binary32 -0x4.f37d38p-4 : -0x8.8bf8fp-4 : inexact-ok
+= log2p1 downward binary64 -0x4.f37d38p-4 : -0x8.8bf8fda35446p-4 : inexact-ok
+= log2p1 tonearest binary64 -0x4.f37d38p-4 : -0x8.8bf8fda354458p-4 : inexact-ok
+= log2p1 towardzero binary64 -0x4.f37d38p-4 : -0x8.8bf8fda354458p-4 : inexact-ok
+= log2p1 upward binary64 -0x4.f37d38p-4 : -0x8.8bf8fda354458p-4 : inexact-ok
+= log2p1 downward intel96 -0x4.f37d38p-4 : -0x8.8bf8fda35445b83p-4 : inexact-ok
+= log2p1 tonearest intel96 -0x4.f37d38p-4 : -0x8.8bf8fda35445b83p-4 : inexact-ok
+= log2p1 towardzero intel96 -0x4.f37d38p-4 : -0x8.8bf8fda35445b82p-4 : inexact-ok
+= log2p1 upward intel96 -0x4.f37d38p-4 : -0x8.8bf8fda35445b82p-4 : inexact-ok
+= log2p1 downward m68k96 -0x4.f37d38p-4 : -0x8.8bf8fda35445b83p-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x4.f37d38p-4 : -0x8.8bf8fda35445b83p-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x4.f37d38p-4 : -0x8.8bf8fda35445b82p-4 : inexact-ok
+= log2p1 upward m68k96 -0x4.f37d38p-4 : -0x8.8bf8fda35445b82p-4 : inexact-ok
+= log2p1 downward binary128 -0x4.f37d38p-4 : -0x8.8bf8fda35445b82d038ee9e4731p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x4.f37d38p-4 : -0x8.8bf8fda35445b82d038ee9e47308p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x4.f37d38p-4 : -0x8.8bf8fda35445b82d038ee9e47308p-4 : inexact-ok
+= log2p1 upward binary128 -0x4.f37d38p-4 : -0x8.8bf8fda35445b82d038ee9e47308p-4 : inexact-ok
+= log2p1 downward ibm128 -0x4.f37d38p-4 : -0x8.8bf8fda35445b82d038ee9e474p-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x4.f37d38p-4 : -0x8.8bf8fda35445b82d038ee9e474p-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x4.f37d38p-4 : -0x8.8bf8fda35445b82d038ee9e47p-4 : inexact-ok
+= log2p1 upward ibm128 -0x4.f37d38p-4 : -0x8.8bf8fda35445b82d038ee9e47p-4 : inexact-ok
+= log2p1 downward binary32 -0x4.f37d4p-4 : -0x8.8bf91p-4 : inexact-ok
+= log2p1 tonearest binary32 -0x4.f37d4p-4 : -0x8.8bf91p-4 : inexact-ok
+= log2p1 towardzero binary32 -0x4.f37d4p-4 : -0x8.8bf9p-4 : inexact-ok
+= log2p1 upward binary32 -0x4.f37d4p-4 : -0x8.8bf9p-4 : inexact-ok
+= log2p1 downward binary64 -0x4.f37d4p-4 : -0x8.8bf90e59fa42p-4 : inexact-ok
+= log2p1 tonearest binary64 -0x4.f37d4p-4 : -0x8.8bf90e59fa42p-4 : inexact-ok
+= log2p1 towardzero binary64 -0x4.f37d4p-4 : -0x8.8bf90e59fa418p-4 : inexact-ok
+= log2p1 upward binary64 -0x4.f37d4p-4 : -0x8.8bf90e59fa418p-4 : inexact-ok
+= log2p1 downward intel96 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d91p-4 : inexact-ok
+= log2p1 tonearest intel96 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d91p-4 : inexact-ok
+= log2p1 towardzero intel96 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d9p-4 : inexact-ok
+= log2p1 upward intel96 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d9p-4 : inexact-ok
+= log2p1 downward m68k96 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d91p-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d91p-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d9p-4 : inexact-ok
+= log2p1 upward m68k96 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d9p-4 : inexact-ok
+= log2p1 downward binary128 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d908a56c9443ab6p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d908a56c9443ab58p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d908a56c9443ab58p-4 : inexact-ok
+= log2p1 upward binary128 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d908a56c9443ab58p-4 : inexact-ok
+= log2p1 downward ibm128 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d908a56c9443acp-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d908a56c9443acp-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d908a56c9443a8p-4 : inexact-ok
+= log2p1 upward ibm128 -0x4.f37d4p-4 : -0x8.8bf90e59fa41d908a56c9443a8p-4 : inexact-ok
+= log2p1 downward binary64 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf9074666538p-4 : inexact-ok
+= log2p1 tonearest binary64 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf9074666538p-4 : inexact-ok
+= log2p1 towardzero binary64 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653p-4 : inexact-ok
+= log2p1 upward binary64 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653p-4 : inexact-ok
+= log2p1 downward intel96 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653796p-4 : inexact-ok
+= log2p1 tonearest intel96 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795p-4 : inexact-ok
+= log2p1 towardzero intel96 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795p-4 : inexact-ok
+= log2p1 upward intel96 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795p-4 : inexact-ok
+= log2p1 downward m68k96 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653796p-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795p-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795p-4 : inexact-ok
+= log2p1 upward m68k96 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795p-4 : inexact-ok
+= log2p1 downward binary128 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795421abe9044ce8p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795421abe9044ce8p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795421abe9044cep-4 : inexact-ok
+= log2p1 upward binary128 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795421abe9044cep-4 : inexact-ok
+= log2p1 downward ibm128 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795421abe9045p-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795421abe9044cp-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795421abe9044cp-4 : inexact-ok
+= log2p1 upward ibm128 -0x4.f37d3c9ce0b14p-4 : -0x8.8bf907466653795421abe9044cp-4 : inexact-ok
+= log2p1 downward binary64 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466654p-4 : inexact-ok
+= log2p1 tonearest binary64 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466654p-4 : inexact-ok
+= log2p1 towardzero binary64 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf9074666538p-4 : inexact-ok
+= log2p1 upward binary64 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf9074666538p-4 : inexact-ok
+= log2p1 downward intel96 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ff1p-4 : inexact-ok
+= log2p1 tonearest intel96 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ff1p-4 : inexact-ok
+= log2p1 towardzero intel96 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ffp-4 : inexact-ok
+= log2p1 upward intel96 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ffp-4 : inexact-ok
+= log2p1 downward m68k96 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ff1p-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ff1p-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ffp-4 : inexact-ok
+= log2p1 upward m68k96 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ffp-4 : inexact-ok
+= log2p1 downward binary128 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ff0951945a5571d8p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ff0951945a5571dp-4 : inexact-ok
+= log2p1 towardzero binary128 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ff0951945a5571dp-4 : inexact-ok
+= log2p1 upward binary128 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ff0951945a5571dp-4 : inexact-ok
+= log2p1 downward ibm128 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ff0951945a5574p-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ff0951945a557p-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ff0951945a557p-4 : inexact-ok
+= log2p1 upward ibm128 -0x4.f37d3c9ce0b18p-4 : -0x8.8bf907466653ff0951945a557p-4 : inexact-ok
+= log2p1 downward intel96 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653922p-4 : inexact-ok
+= log2p1 tonearest intel96 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921p-4 : inexact-ok
+= log2p1 towardzero intel96 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921p-4 : inexact-ok
+= log2p1 upward intel96 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921p-4 : inexact-ok
+= log2p1 downward m68k96 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653922p-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921p-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921p-4 : inexact-ok
+= log2p1 upward m68k96 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921p-4 : inexact-ok
+= log2p1 downward binary128 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921289698cfcb0ep-4 : inexact-ok
+= log2p1 tonearest binary128 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921289698cfcb0ep-4 : inexact-ok
+= log2p1 towardzero binary128 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921289698cfcb0d8p-4 : inexact-ok
+= log2p1 upward binary128 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921289698cfcb0d8p-4 : inexact-ok
+= log2p1 downward ibm128 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921289698cfcb4p-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921289698cfcbp-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921289698cfcbp-4 : inexact-ok
+= log2p1 upward ibm128 -0x4.f37d3c9ce0b14bd8p-4 : -0x8.8bf907466653921289698cfcbp-4 : inexact-ok
+= log2p1 downward intel96 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf907466653923p-4 : inexact-ok
+= log2p1 tonearest intel96 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf907466653922p-4 : inexact-ok
+= log2p1 towardzero intel96 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf907466653922p-4 : inexact-ok
+= log2p1 upward intel96 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf907466653922p-4 : inexact-ok
+= log2p1 downward m68k96 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf907466653923p-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf907466653922p-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf907466653922p-4 : inexact-ok
+= log2p1 upward m68k96 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf907466653922p-4 : inexact-ok
+= log2p1 downward binary128 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf9074666539223400f8a0adb08p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf9074666539223400f8a0adb08p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf9074666539223400f8a0adbp-4 : inexact-ok
+= log2p1 upward binary128 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf9074666539223400f8a0adbp-4 : inexact-ok
+= log2p1 downward ibm128 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf9074666539223400f8a0adcp-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf9074666539223400f8a0adcp-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf9074666539223400f8a0ad8p-4 : inexact-ok
+= log2p1 upward ibm128 -0x4.f37d3c9ce0b14bep-4 : -0x8.8bf9074666539223400f8a0ad8p-4 : inexact-ok
+= log2p1 downward binary128 -0x4.f37d3c9ce0b14bdd86eb157df5d4p-4 : -0x8.8bf907466653921e156fc9a6bd28p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x4.f37d3c9ce0b14bdd86eb157df5d4p-4 : -0x8.8bf907466653921e156fc9a6bd28p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x4.f37d3c9ce0b14bdd86eb157df5d4p-4 : -0x8.8bf907466653921e156fc9a6bd2p-4 : inexact-ok
+= log2p1 upward binary128 -0x4.f37d3c9ce0b14bdd86eb157df5d4p-4 : -0x8.8bf907466653921e156fc9a6bd2p-4 : inexact-ok
+= log2p1 downward binary128 -0x4.f37d3c9ce0b14bdd86eb157df4p-4 : -0x8.8bf907466653921e156fc9a6b958p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x4.f37d3c9ce0b14bdd86eb157df4p-4 : -0x8.8bf907466653921e156fc9a6b958p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x4.f37d3c9ce0b14bdd86eb157df4p-4 : -0x8.8bf907466653921e156fc9a6b95p-4 : inexact-ok
+= log2p1 upward binary128 -0x4.f37d3c9ce0b14bdd86eb157df4p-4 : -0x8.8bf907466653921e156fc9a6b95p-4 : inexact-ok
+= log2p1 downward ibm128 -0x4.f37d3c9ce0b14bdd86eb157df4p-4 : -0x8.8bf907466653921e156fc9a6bcp-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x4.f37d3c9ce0b14bdd86eb157df4p-4 : -0x8.8bf907466653921e156fc9a6b8p-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x4.f37d3c9ce0b14bdd86eb157df4p-4 : -0x8.8bf907466653921e156fc9a6b8p-4 : inexact-ok
+= log2p1 upward ibm128 -0x4.f37d3c9ce0b14bdd86eb157df4p-4 : -0x8.8bf907466653921e156fc9a6b8p-4 : inexact-ok
+= log2p1 downward binary128 -0x4.f37d3c9ce0b14bdd86eb157df6p-4 : -0x8.8bf907466653921e156fc9a6bd88p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x4.f37d3c9ce0b14bdd86eb157df6p-4 : -0x8.8bf907466653921e156fc9a6bd8p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x4.f37d3c9ce0b14bdd86eb157df6p-4 : -0x8.8bf907466653921e156fc9a6bd8p-4 : inexact-ok
+= log2p1 upward binary128 -0x4.f37d3c9ce0b14bdd86eb157df6p-4 : -0x8.8bf907466653921e156fc9a6bd8p-4 : inexact-ok
+= log2p1 downward ibm128 -0x4.f37d3c9ce0b14bdd86eb157df6p-4 : -0x8.8bf907466653921e156fc9a6cp-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x4.f37d3c9ce0b14bdd86eb157df6p-4 : -0x8.8bf907466653921e156fc9a6bcp-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x4.f37d3c9ce0b14bdd86eb157df6p-4 : -0x8.8bf907466653921e156fc9a6bcp-4 : inexact-ok
+= log2p1 upward ibm128 -0x4.f37d3c9ce0b14bdd86eb157df6p-4 : -0x8.8bf907466653921e156fc9a6bcp-4 : inexact-ok
+log2p1 0x7.2eca50c4d93196362b4f37f6e8dcp-4
+= log2p1 downward binary32 0x7.2eca58p-4 : 0x8.8f489p-4 : inexact-ok
+= log2p1 tonearest binary32 0x7.2eca58p-4 : 0x8.8f48ap-4 : inexact-ok
+= log2p1 towardzero binary32 0x7.2eca58p-4 : 0x8.8f489p-4 : inexact-ok
+= log2p1 upward binary32 0x7.2eca58p-4 : 0x8.8f48ap-4 : inexact-ok
+= log2p1 downward binary64 0x7.2eca58p-4 : 0x8.8f489e9ced978p-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.2eca58p-4 : 0x8.8f489e9ced98p-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.2eca58p-4 : 0x8.8f489e9ced978p-4 : inexact-ok
+= log2p1 upward binary64 0x7.2eca58p-4 : 0x8.8f489e9ced98p-4 : inexact-ok
+= log2p1 downward intel96 0x7.2eca58p-4 : 0x8.8f489e9ced97eb4p-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.2eca58p-4 : 0x8.8f489e9ced97eb5p-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.2eca58p-4 : 0x8.8f489e9ced97eb4p-4 : inexact-ok
+= log2p1 upward intel96 0x7.2eca58p-4 : 0x8.8f489e9ced97eb5p-4 : inexact-ok
+= log2p1 downward m68k96 0x7.2eca58p-4 : 0x8.8f489e9ced97eb4p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.2eca58p-4 : 0x8.8f489e9ced97eb5p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.2eca58p-4 : 0x8.8f489e9ced97eb4p-4 : inexact-ok
+= log2p1 upward m68k96 0x7.2eca58p-4 : 0x8.8f489e9ced97eb5p-4 : inexact-ok
+= log2p1 downward binary128 0x7.2eca58p-4 : 0x8.8f489e9ced97eb4fb36bd0d7917p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.2eca58p-4 : 0x8.8f489e9ced97eb4fb36bd0d79178p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.2eca58p-4 : 0x8.8f489e9ced97eb4fb36bd0d7917p-4 : inexact-ok
+= log2p1 upward binary128 0x7.2eca58p-4 : 0x8.8f489e9ced97eb4fb36bd0d79178p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.2eca58p-4 : 0x8.8f489e9ced97eb4fb36bd0d79p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.2eca58p-4 : 0x8.8f489e9ced97eb4fb36bd0d79p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.2eca58p-4 : 0x8.8f489e9ced97eb4fb36bd0d79p-4 : inexact-ok
+= log2p1 upward ibm128 0x7.2eca58p-4 : 0x8.8f489e9ced97eb4fb36bd0d794p-4 : inexact-ok
+= log2p1 downward binary32 0x7.2eca5p-4 : 0x8.8f489p-4 : inexact-ok
+= log2p1 tonearest binary32 0x7.2eca5p-4 : 0x8.8f489p-4 : inexact-ok
+= log2p1 towardzero binary32 0x7.2eca5p-4 : 0x8.8f489p-4 : inexact-ok
+= log2p1 upward binary32 0x7.2eca5p-4 : 0x8.8f48ap-4 : inexact-ok
+= log2p1 downward binary64 0x7.2eca5p-4 : 0x8.8f4896a5bb5p-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.2eca5p-4 : 0x8.8f4896a5bb5p-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.2eca5p-4 : 0x8.8f4896a5bb5p-4 : inexact-ok
+= log2p1 upward binary64 0x7.2eca5p-4 : 0x8.8f4896a5bb508p-4 : inexact-ok
+= log2p1 downward intel96 0x7.2eca5p-4 : 0x8.8f4896a5bb50056p-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.2eca5p-4 : 0x8.8f4896a5bb50057p-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.2eca5p-4 : 0x8.8f4896a5bb50056p-4 : inexact-ok
+= log2p1 upward intel96 0x7.2eca5p-4 : 0x8.8f4896a5bb50057p-4 : inexact-ok
+= log2p1 downward m68k96 0x7.2eca5p-4 : 0x8.8f4896a5bb50056p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.2eca5p-4 : 0x8.8f4896a5bb50057p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.2eca5p-4 : 0x8.8f4896a5bb50056p-4 : inexact-ok
+= log2p1 upward m68k96 0x7.2eca5p-4 : 0x8.8f4896a5bb50057p-4 : inexact-ok
+= log2p1 downward binary128 0x7.2eca5p-4 : 0x8.8f4896a5bb50056aecc5c33c8d4p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.2eca5p-4 : 0x8.8f4896a5bb50056aecc5c33c8d4p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.2eca5p-4 : 0x8.8f4896a5bb50056aecc5c33c8d4p-4 : inexact-ok
+= log2p1 upward binary128 0x7.2eca5p-4 : 0x8.8f4896a5bb50056aecc5c33c8d48p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.2eca5p-4 : 0x8.8f4896a5bb50056aecc5c33c8cp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.2eca5p-4 : 0x8.8f4896a5bb50056aecc5c33c8cp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.2eca5p-4 : 0x8.8f4896a5bb50056aecc5c33c8cp-4 : inexact-ok
+= log2p1 upward ibm128 0x7.2eca5p-4 : 0x8.8f4896a5bb50056aecc5c33c9p-4 : inexact-ok
+= log2p1 downward binary64 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe28p-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe3p-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe28p-4 : inexact-ok
+= log2p1 upward binary64 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe3p-4 : inexact-ok
+= log2p1 downward intel96 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c29p-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c2ap-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c29p-4 : inexact-ok
+= log2p1 upward intel96 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c2ap-4 : inexact-ok
+= log2p1 downward m68k96 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c29p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c2ap-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c29p-4 : inexact-ok
+= log2p1 upward m68k96 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c2ap-4 : inexact-ok
+= log2p1 downward binary128 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c29ba809a31863f8p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c29ba809a31864p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c29ba809a31863f8p-4 : inexact-ok
+= log2p1 upward binary128 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c29ba809a31864p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c29ba809a3186p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c29ba809a31864p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c29ba809a3186p-4 : inexact-ok
+= log2p1 upward ibm128 0x7.2eca50c4d931cp-4 : 0x8.8f489769bbe2c29ba809a31864p-4 : inexact-ok
+= log2p1 downward binary64 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe28p-4 : inexact-ok
+= log2p1 tonearest binary64 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe28p-4 : inexact-ok
+= log2p1 towardzero binary64 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe28p-4 : inexact-ok
+= log2p1 upward binary64 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe3p-4 : inexact-ok
+= log2p1 downward intel96 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282ep-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282ep-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282ep-4 : inexact-ok
+= log2p1 upward intel96 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282fp-4 : inexact-ok
+= log2p1 downward m68k96 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282ep-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282ep-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282ep-4 : inexact-ok
+= log2p1 upward m68k96 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282fp-4 : inexact-ok
+= log2p1 downward binary128 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282e215c19244dda8p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282e215c19244ddbp-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282e215c19244dda8p-4 : inexact-ok
+= log2p1 upward binary128 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282e215c19244ddbp-4 : inexact-ok
+= log2p1 downward ibm128 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282e215c19244dcp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282e215c19244dcp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282e215c19244dcp-4 : inexact-ok
+= log2p1 upward ibm128 0x7.2eca50c4d9318p-4 : 0x8.8f489769bbe282e215c19244ep-4 : inexact-ok
+= log2p1 downward intel96 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe299p-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe299p-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe299p-4 : inexact-ok
+= log2p1 upward intel96 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe2991p-4 : inexact-ok
+= log2p1 downward m68k96 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe299p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe299p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe299p-4 : inexact-ok
+= log2p1 upward m68k96 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe2991p-4 : inexact-ok
+= log2p1 downward binary128 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe29901a26a571c4dp-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe29901a26a571c4dp-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe29901a26a571c4dp-4 : inexact-ok
+= log2p1 upward binary128 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe29901a26a571c4d08p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe29901a26a571c4cp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe29901a26a571c4cp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe29901a26a571c4cp-4 : inexact-ok
+= log2p1 upward ibm128 0x7.2eca50c4d9319638p-4 : 0x8.8f489769bbe29901a26a571c5p-4 : inexact-ok
+= log2p1 downward intel96 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe298fp-4 : inexact-ok
+= log2p1 tonearest intel96 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe299p-4 : inexact-ok
+= log2p1 towardzero intel96 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe298fp-4 : inexact-ok
+= log2p1 upward intel96 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe299p-4 : inexact-ok
+= log2p1 downward m68k96 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe298fp-4 : inexact-ok
+= log2p1 tonearest m68k96 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe299p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe298fp-4 : inexact-ok
+= log2p1 upward m68k96 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe299p-4 : inexact-ok
+= log2p1 downward binary128 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe298f9ab380e1a329p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe298f9ab380e1a329p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe298f9ab380e1a329p-4 : inexact-ok
+= log2p1 upward binary128 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe298f9ab380e1a3298p-4 : inexact-ok
+= log2p1 downward ibm128 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe298f9ab380e1a3p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe298f9ab380e1a34p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe298f9ab380e1a3p-4 : inexact-ok
+= log2p1 upward ibm128 0x7.2eca50c4d931963p-4 : 0x8.8f489769bbe298f9ab380e1a34p-4 : inexact-ok
+= log2p1 downward binary128 0x7.2eca50c4d93196362b4f37f6e8dcp-4 : 0x8.8f489769bbe298ffcfbd53ee158p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.2eca50c4d93196362b4f37f6e8dcp-4 : 0x8.8f489769bbe298ffcfbd53ee1588p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.2eca50c4d93196362b4f37f6e8dcp-4 : 0x8.8f489769bbe298ffcfbd53ee158p-4 : inexact-ok
+= log2p1 upward binary128 0x7.2eca50c4d93196362b4f37f6e8dcp-4 : 0x8.8f489769bbe298ffcfbd53ee1588p-4 : inexact-ok
+= log2p1 downward binary128 0x7.2eca50c4d93196362b4f37f6eap-4 : 0x8.8f489769bbe298ffcfbd53ee16a8p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.2eca50c4d93196362b4f37f6eap-4 : 0x8.8f489769bbe298ffcfbd53ee16a8p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.2eca50c4d93196362b4f37f6eap-4 : 0x8.8f489769bbe298ffcfbd53ee16a8p-4 : inexact-ok
+= log2p1 upward binary128 0x7.2eca50c4d93196362b4f37f6eap-4 : 0x8.8f489769bbe298ffcfbd53ee16bp-4 : inexact-ok
+= log2p1 downward ibm128 0x7.2eca50c4d93196362b4f37f6eap-4 : 0x8.8f489769bbe298ffcfbd53ee14p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.2eca50c4d93196362b4f37f6eap-4 : 0x8.8f489769bbe298ffcfbd53ee18p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.2eca50c4d93196362b4f37f6eap-4 : 0x8.8f489769bbe298ffcfbd53ee14p-4 : inexact-ok
+= log2p1 upward ibm128 0x7.2eca50c4d93196362b4f37f6eap-4 : 0x8.8f489769bbe298ffcfbd53ee18p-4 : inexact-ok
+= log2p1 downward binary128 0x7.2eca50c4d93196362b4f37f6e8p-4 : 0x8.8f489769bbe298ffcfbd53ee14a8p-4 : inexact-ok
+= log2p1 tonearest binary128 0x7.2eca50c4d93196362b4f37f6e8p-4 : 0x8.8f489769bbe298ffcfbd53ee14a8p-4 : inexact-ok
+= log2p1 towardzero binary128 0x7.2eca50c4d93196362b4f37f6e8p-4 : 0x8.8f489769bbe298ffcfbd53ee14a8p-4 : inexact-ok
+= log2p1 upward binary128 0x7.2eca50c4d93196362b4f37f6e8p-4 : 0x8.8f489769bbe298ffcfbd53ee14bp-4 : inexact-ok
+= log2p1 downward ibm128 0x7.2eca50c4d93196362b4f37f6e8p-4 : 0x8.8f489769bbe298ffcfbd53ee14p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x7.2eca50c4d93196362b4f37f6e8p-4 : 0x8.8f489769bbe298ffcfbd53ee14p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x7.2eca50c4d93196362b4f37f6e8p-4 : 0x8.8f489769bbe298ffcfbd53ee14p-4 : inexact-ok
+= log2p1 upward ibm128 0x7.2eca50c4d93196362b4f37f6e8p-4 : 0x8.8f489769bbe298ffcfbd53ee18p-4 : inexact-ok
+log2p1 -0x6.3fef3067427e43dfcde9e48f74bcp-4
+= log2p1 downward binary32 -0x6.3fef3p-4 : -0xb.6ed65p-4 : inexact-ok
+= log2p1 tonearest binary32 -0x6.3fef3p-4 : -0xb.6ed64p-4 : inexact-ok
+= log2p1 towardzero binary32 -0x6.3fef3p-4 : -0xb.6ed64p-4 : inexact-ok
+= log2p1 upward binary32 -0x6.3fef3p-4 : -0xb.6ed64p-4 : inexact-ok
+= log2p1 downward binary64 -0x6.3fef3p-4 : -0xb.6ed647a6fb358p-4 : inexact-ok
+= log2p1 tonearest binary64 -0x6.3fef3p-4 : -0xb.6ed647a6fb358p-4 : inexact-ok
+= log2p1 towardzero binary64 -0x6.3fef3p-4 : -0xb.6ed647a6fb35p-4 : inexact-ok
+= log2p1 upward binary64 -0x6.3fef3p-4 : -0xb.6ed647a6fb35p-4 : inexact-ok
+= log2p1 downward intel96 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e7p-4 : inexact-ok
+= log2p1 tonearest intel96 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e7p-4 : inexact-ok
+= log2p1 towardzero intel96 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e6p-4 : inexact-ok
+= log2p1 upward intel96 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e6p-4 : inexact-ok
+= log2p1 downward m68k96 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e7p-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e7p-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e6p-4 : inexact-ok
+= log2p1 upward m68k96 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e6p-4 : inexact-ok
+= log2p1 downward binary128 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e6aadb9fc6a6c98p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e6aadb9fc6a6c9p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e6aadb9fc6a6c9p-4 : inexact-ok
+= log2p1 upward binary128 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e6aadb9fc6a6c9p-4 : inexact-ok
+= log2p1 downward ibm128 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e6aadb9fc6a7p-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e6aadb9fc6a6cp-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e6aadb9fc6a6cp-4 : inexact-ok
+= log2p1 upward ibm128 -0x6.3fef3p-4 : -0xb.6ed647a6fb356e6aadb9fc6a6cp-4 : inexact-ok
+= log2p1 downward binary32 -0x6.3fef38p-4 : -0xb.6ed66p-4 : inexact-ok
+= log2p1 tonearest binary32 -0x6.3fef38p-4 : -0xb.6ed66p-4 : inexact-ok
+= log2p1 towardzero binary32 -0x6.3fef38p-4 : -0xb.6ed65p-4 : inexact-ok
+= log2p1 upward binary32 -0x6.3fef38p-4 : -0xb.6ed65p-4 : inexact-ok
+= log2p1 downward binary64 -0x6.3fef38p-4 : -0xb.6ed65a977e3p-4 : inexact-ok
+= log2p1 tonearest binary64 -0x6.3fef38p-4 : -0xb.6ed65a977e3p-4 : inexact-ok
+= log2p1 towardzero binary64 -0x6.3fef38p-4 : -0xb.6ed65a977e2f8p-4 : inexact-ok
+= log2p1 upward binary64 -0x6.3fef38p-4 : -0xb.6ed65a977e2f8p-4 : inexact-ok
+= log2p1 downward intel96 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7ep-4 : inexact-ok
+= log2p1 tonearest intel96 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7ep-4 : inexact-ok
+= log2p1 towardzero intel96 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7dp-4 : inexact-ok
+= log2p1 upward intel96 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7dp-4 : inexact-ok
+= log2p1 downward m68k96 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7ep-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7ep-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7dp-4 : inexact-ok
+= log2p1 upward m68k96 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7dp-4 : inexact-ok
+= log2p1 downward binary128 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7dc19362a6ea158p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7dc19362a6ea158p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7dc19362a6ea15p-4 : inexact-ok
+= log2p1 upward binary128 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7dc19362a6ea15p-4 : inexact-ok
+= log2p1 downward ibm128 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7dc19362a6ea4p-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7dc19362a6eap-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7dc19362a6eap-4 : inexact-ok
+= log2p1 upward ibm128 -0x6.3fef38p-4 : -0xb.6ed65a977e2fd7dc19362a6eap-4 : inexact-ok
+= log2p1 downward binary64 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b7137p-4 : inexact-ok
+= log2p1 tonearest binary64 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b71368p-4 : inexact-ok
+= log2p1 towardzero binary64 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b71368p-4 : inexact-ok
+= log2p1 upward binary64 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b71368p-4 : inexact-ok
+= log2p1 downward intel96 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b7136837p-4 : inexact-ok
+= log2p1 tonearest intel96 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b7136836p-4 : inexact-ok
+= log2p1 towardzero intel96 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b7136836p-4 : inexact-ok
+= log2p1 upward intel96 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b7136836p-4 : inexact-ok
+= log2p1 downward m68k96 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b7136837p-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b7136836p-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b7136836p-4 : inexact-ok
+= log2p1 upward m68k96 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b7136836p-4 : inexact-ok
+= log2p1 downward binary128 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b71368361a39160dadc58p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b71368361a39160dadc5p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b71368361a39160dadc5p-4 : inexact-ok
+= log2p1 upward binary128 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b71368361a39160dadc5p-4 : inexact-ok
+= log2p1 downward ibm128 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b71368361a39160daep-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b71368361a39160dadcp-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b71368361a39160dadcp-4 : inexact-ok
+= log2p1 upward ibm128 -0x6.3fef3067427e4p-4 : -0xb.6ed6489b71368361a39160dadcp-4 : inexact-ok
+= log2p1 downward binary64 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71378p-4 : inexact-ok
+= log2p1 tonearest binary64 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b7137p-4 : inexact-ok
+= log2p1 towardzero binary64 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b7137p-4 : inexact-ok
+= log2p1 upward binary64 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b7137p-4 : inexact-ok
+= log2p1 downward intel96 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371afp-4 : inexact-ok
+= log2p1 tonearest intel96 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371aep-4 : inexact-ok
+= log2p1 towardzero intel96 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371aep-4 : inexact-ok
+= log2p1 upward intel96 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371aep-4 : inexact-ok
+= log2p1 downward m68k96 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371afp-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371aep-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371aep-4 : inexact-ok
+= log2p1 upward m68k96 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371aep-4 : inexact-ok
+= log2p1 downward binary128 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371ae5bb2cc860ed08p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371ae5bb2cc860ed08p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371ae5bb2cc860edp-4 : inexact-ok
+= log2p1 upward binary128 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371ae5bb2cc860edp-4 : inexact-ok
+= log2p1 downward ibm128 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371ae5bb2cc860fp-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371ae5bb2cc860ecp-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371ae5bb2cc860ecp-4 : inexact-ok
+= log2p1 upward ibm128 -0x6.3fef3067427e8p-4 : -0xb.6ed6489b71371ae5bb2cc860ecp-4 : inexact-ok
+= log2p1 downward intel96 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c8p-4 : inexact-ok
+= log2p1 tonearest intel96 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c8p-4 : inexact-ok
+= log2p1 towardzero intel96 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c7p-4 : inexact-ok
+= log2p1 upward intel96 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c7p-4 : inexact-ok
+= log2p1 downward m68k96 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c8p-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c8p-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c7p-4 : inexact-ok
+= log2p1 upward m68k96 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c7p-4 : inexact-ok
+= log2p1 downward binary128 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c7b327c56328978p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c7b327c56328978p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c7b327c5632897p-4 : inexact-ok
+= log2p1 upward binary128 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c7b327c5632897p-4 : inexact-ok
+= log2p1 downward ibm128 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c7b327c56328cp-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c7b327c563288p-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c7b327c563288p-4 : inexact-ok
+= log2p1 upward ibm128 -0x6.3fef3067427e43d8p-4 : -0xb.6ed6489b71368c7b327c563288p-4 : inexact-ok
+= log2p1 downward intel96 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c9p-4 : inexact-ok
+= log2p1 tonearest intel96 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c9p-4 : inexact-ok
+= log2p1 towardzero intel96 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c8p-4 : inexact-ok
+= log2p1 upward intel96 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c8p-4 : inexact-ok
+= log2p1 downward m68k96 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c9p-4 : inexact-ok
+= log2p1 tonearest m68k96 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c9p-4 : inexact-ok
+= log2p1 towardzero m68k96 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c8p-4 : inexact-ok
+= log2p1 upward m68k96 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c8p-4 : inexact-ok
+= log2p1 downward binary128 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c8e22ff499f7a38p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c8e22ff499f7a38p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c8e22ff499f7a3p-4 : inexact-ok
+= log2p1 upward binary128 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c8e22ff499f7a3p-4 : inexact-ok
+= log2p1 downward ibm128 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c8e22ff499f7cp-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c8e22ff499f7cp-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c8e22ff499f78p-4 : inexact-ok
+= log2p1 upward ibm128 -0x6.3fef3067427e43ep-4 : -0xb.6ed6489b71368c8e22ff499f78p-4 : inexact-ok
+= log2p1 downward binary128 -0x6.3fef3067427e43dfcde9e48f74bcp-4 : -0xb.6ed6489b71368c8dac6bc0cfc92p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x6.3fef3067427e43dfcde9e48f74bcp-4 : -0xb.6ed6489b71368c8dac6bc0cfc918p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x6.3fef3067427e43dfcde9e48f74bcp-4 : -0xb.6ed6489b71368c8dac6bc0cfc918p-4 : inexact-ok
+= log2p1 upward binary128 -0x6.3fef3067427e43dfcde9e48f74bcp-4 : -0xb.6ed6489b71368c8dac6bc0cfc918p-4 : inexact-ok
+= log2p1 downward binary128 -0x6.3fef3067427e43dfcde9e48f74p-4 : -0xb.6ed6489b71368c8dac6bc0cfc76p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x6.3fef3067427e43dfcde9e48f74p-4 : -0xb.6ed6489b71368c8dac6bc0cfc758p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x6.3fef3067427e43dfcde9e48f74p-4 : -0xb.6ed6489b71368c8dac6bc0cfc758p-4 : inexact-ok
+= log2p1 upward binary128 -0x6.3fef3067427e43dfcde9e48f74p-4 : -0xb.6ed6489b71368c8dac6bc0cfc758p-4 : inexact-ok
+= log2p1 downward ibm128 -0x6.3fef3067427e43dfcde9e48f74p-4 : -0xb.6ed6489b71368c8dac6bc0cfc8p-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x6.3fef3067427e43dfcde9e48f74p-4 : -0xb.6ed6489b71368c8dac6bc0cfc8p-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x6.3fef3067427e43dfcde9e48f74p-4 : -0xb.6ed6489b71368c8dac6bc0cfc4p-4 : inexact-ok
+= log2p1 upward ibm128 -0x6.3fef3067427e43dfcde9e48f74p-4 : -0xb.6ed6489b71368c8dac6bc0cfc4p-4 : inexact-ok
+= log2p1 downward binary128 -0x6.3fef3067427e43dfcde9e48f76p-4 : -0xb.6ed6489b71368c8dac6bc0cfcc18p-4 : inexact-ok
+= log2p1 tonearest binary128 -0x6.3fef3067427e43dfcde9e48f76p-4 : -0xb.6ed6489b71368c8dac6bc0cfcc18p-4 : inexact-ok
+= log2p1 towardzero binary128 -0x6.3fef3067427e43dfcde9e48f76p-4 : -0xb.6ed6489b71368c8dac6bc0cfcc1p-4 : inexact-ok
+= log2p1 upward binary128 -0x6.3fef3067427e43dfcde9e48f76p-4 : -0xb.6ed6489b71368c8dac6bc0cfcc1p-4 : inexact-ok
+= log2p1 downward ibm128 -0x6.3fef3067427e43dfcde9e48f76p-4 : -0xb.6ed6489b71368c8dac6bc0cfdp-4 : inexact-ok
+= log2p1 tonearest ibm128 -0x6.3fef3067427e43dfcde9e48f76p-4 : -0xb.6ed6489b71368c8dac6bc0cfccp-4 : inexact-ok
+= log2p1 towardzero ibm128 -0x6.3fef3067427e43dfcde9e48f76p-4 : -0xb.6ed6489b71368c8dac6bc0cfccp-4 : inexact-ok
+= log2p1 upward ibm128 -0x6.3fef3067427e43dfcde9e48f76p-4 : -0xb.6ed6489b71368c8dac6bc0cfccp-4 : inexact-ok
+log2p1 0x6.af53d00fd2845d4772260ef5adc4p-4
+= log2p1 downward binary32 0x6.af53d8p-4 : 0x8.0efc6p-4 : inexact-ok
+= log2p1 tonearest binary32 0x6.af53d8p-4 : 0x8.0efc7p-4 : inexact-ok
+= log2p1 towardzero binary32 0x6.af53d8p-4 : 0x8.0efc6p-4 : inexact-ok
+= log2p1 upward binary32 0x6.af53d8p-4 : 0x8.0efc7p-4 : inexact-ok
+= log2p1 downward binary64 0x6.af53d8p-4 : 0x8.0efc689b81d3p-4 : inexact-ok
+= log2p1 tonearest binary64 0x6.af53d8p-4 : 0x8.0efc689b81d38p-4 : inexact-ok
+= log2p1 towardzero binary64 0x6.af53d8p-4 : 0x8.0efc689b81d3p-4 : inexact-ok
+= log2p1 upward binary64 0x6.af53d8p-4 : 0x8.0efc689b81d38p-4 : inexact-ok
+= log2p1 downward intel96 0x6.af53d8p-4 : 0x8.0efc689b81d3601p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.af53d8p-4 : 0x8.0efc689b81d3602p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.af53d8p-4 : 0x8.0efc689b81d3601p-4 : inexact-ok
+= log2p1 upward intel96 0x6.af53d8p-4 : 0x8.0efc689b81d3602p-4 : inexact-ok
+= log2p1 downward m68k96 0x6.af53d8p-4 : 0x8.0efc689b81d3601p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.af53d8p-4 : 0x8.0efc689b81d3602p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.af53d8p-4 : 0x8.0efc689b81d3601p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.af53d8p-4 : 0x8.0efc689b81d3602p-4 : inexact-ok
+= log2p1 downward binary128 0x6.af53d8p-4 : 0x8.0efc689b81d36019c0e4142aafbp-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.af53d8p-4 : 0x8.0efc689b81d36019c0e4142aafbp-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.af53d8p-4 : 0x8.0efc689b81d36019c0e4142aafbp-4 : inexact-ok
+= log2p1 upward binary128 0x6.af53d8p-4 : 0x8.0efc689b81d36019c0e4142aafb8p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.af53d8p-4 : 0x8.0efc689b81d36019c0e4142aacp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.af53d8p-4 : 0x8.0efc689b81d36019c0e4142abp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.af53d8p-4 : 0x8.0efc689b81d36019c0e4142aacp-4 : inexact-ok
+= log2p1 upward ibm128 0x6.af53d8p-4 : 0x8.0efc689b81d36019c0e4142abp-4 : inexact-ok
+= log2p1 downward binary32 0x6.af53dp-4 : 0x8.0efc6p-4 : inexact-ok
+= log2p1 tonearest binary32 0x6.af53dp-4 : 0x8.0efc6p-4 : inexact-ok
+= log2p1 towardzero binary32 0x6.af53dp-4 : 0x8.0efc6p-4 : inexact-ok
+= log2p1 upward binary32 0x6.af53dp-4 : 0x8.0efc7p-4 : inexact-ok
+= log2p1 downward binary64 0x6.af53dp-4 : 0x8.0efc60778d9bp-4 : inexact-ok
+= log2p1 tonearest binary64 0x6.af53dp-4 : 0x8.0efc60778d9b8p-4 : inexact-ok
+= log2p1 towardzero binary64 0x6.af53dp-4 : 0x8.0efc60778d9bp-4 : inexact-ok
+= log2p1 upward binary64 0x6.af53dp-4 : 0x8.0efc60778d9b8p-4 : inexact-ok
+= log2p1 downward intel96 0x6.af53dp-4 : 0x8.0efc60778d9b536p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.af53dp-4 : 0x8.0efc60778d9b537p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.af53dp-4 : 0x8.0efc60778d9b536p-4 : inexact-ok
+= log2p1 upward intel96 0x6.af53dp-4 : 0x8.0efc60778d9b537p-4 : inexact-ok
+= log2p1 downward m68k96 0x6.af53dp-4 : 0x8.0efc60778d9b536p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.af53dp-4 : 0x8.0efc60778d9b537p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.af53dp-4 : 0x8.0efc60778d9b536p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.af53dp-4 : 0x8.0efc60778d9b537p-4 : inexact-ok
+= log2p1 downward binary128 0x6.af53dp-4 : 0x8.0efc60778d9b536b1d88afb8bc2p-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.af53dp-4 : 0x8.0efc60778d9b536b1d88afb8bc28p-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.af53dp-4 : 0x8.0efc60778d9b536b1d88afb8bc2p-4 : inexact-ok
+= log2p1 upward binary128 0x6.af53dp-4 : 0x8.0efc60778d9b536b1d88afb8bc28p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.af53dp-4 : 0x8.0efc60778d9b536b1d88afb8bcp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.af53dp-4 : 0x8.0efc60778d9b536b1d88afb8bcp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.af53dp-4 : 0x8.0efc60778d9b536b1d88afb8bcp-4 : inexact-ok
+= log2p1 upward ibm128 0x6.af53dp-4 : 0x8.0efc60778d9b536b1d88afb8cp-4 : inexact-ok
+= log2p1 downward binary64 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73b8p-4 : inexact-ok
+= log2p1 tonearest binary64 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73cp-4 : inexact-ok
+= log2p1 towardzero binary64 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73b8p-4 : inexact-ok
+= log2p1 upward binary64 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73cp-4 : inexact-ok
+= log2p1 downward intel96 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9p-4 : inexact-ok
+= log2p1 upward intel96 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bddap-4 : inexact-ok
+= log2p1 downward m68k96 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bddap-4 : inexact-ok
+= log2p1 downward binary128 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9037f33081abdp-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9037f33081abdp-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9037f33081abdp-4 : inexact-ok
+= log2p1 upward binary128 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9037f33081abd8p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9037f33081a8p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9037f33081acp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9037f33081a8p-4 : inexact-ok
+= log2p1 upward ibm128 0x6.af53d00fd2848p-4 : 0x8.0efc6087a73bdd9037f33081acp-4 : inexact-ok
+= log2p1 downward binary64 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b8p-4 : inexact-ok
+= log2p1 tonearest binary64 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b8p-4 : inexact-ok
+= log2p1 towardzero binary64 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b8p-4 : inexact-ok
+= log2p1 upward binary64 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73cp-4 : inexact-ok
+= log2p1 downward intel96 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7p-4 : inexact-ok
+= log2p1 upward intel96 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c8p-4 : inexact-ok
+= log2p1 downward m68k96 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c8p-4 : inexact-ok
+= log2p1 downward binary128 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7096277cc7bcdp-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7096277cc7bcd8p-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7096277cc7bcdp-4 : inexact-ok
+= log2p1 upward binary128 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7096277cc7bcd8p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7096277cc7bcp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7096277cc7bcp-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7096277cc7bcp-4 : inexact-ok
+= log2p1 upward ibm128 0x6.af53d00fd2844p-4 : 0x8.0efc6087a73b9c7096277cc7cp-4 : inexact-ok
+= log2p1 downward intel96 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba3p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba4p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba3p-4 : inexact-ok
+= log2p1 upward intel96 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba4p-4 : inexact-ok
+= log2p1 downward m68k96 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba3p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba4p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba3p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba4p-4 : inexact-ok
+= log2p1 downward binary128 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba3c2f0dcf622e6p-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba3c2f0dcf622e68p-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba3c2f0dcf622e6p-4 : inexact-ok
+= log2p1 upward binary128 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba3c2f0dcf622e68p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba3c2f0dcf622cp-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba3c2f0dcf623p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba3c2f0dcf622cp-4 : inexact-ok
+= log2p1 upward ibm128 0x6.af53d00fd2845d48p-4 : 0x8.0efc6087a73bba3c2f0dcf623p-4 : inexact-ok
+= log2p1 downward intel96 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba3p-4 : inexact-ok
+= log2p1 tonearest intel96 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba3p-4 : inexact-ok
+= log2p1 towardzero intel96 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba3p-4 : inexact-ok
+= log2p1 upward intel96 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba4p-4 : inexact-ok
+= log2p1 downward m68k96 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba3p-4 : inexact-ok
+= log2p1 tonearest m68k96 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba3p-4 : inexact-ok
+= log2p1 towardzero m68k96 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba3p-4 : inexact-ok
+= log2p1 upward m68k96 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba4p-4 : inexact-ok
+= log2p1 downward binary128 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba340b1995ebb72p-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba340b1995ebb728p-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba340b1995ebb72p-4 : inexact-ok
+= log2p1 upward binary128 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba340b1995ebb728p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba340b1995ebb4p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba340b1995ebb8p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba340b1995ebb4p-4 : inexact-ok
+= log2p1 upward ibm128 0x6.af53d00fd2845d4p-4 : 0x8.0efc6087a73bba340b1995ebb8p-4 : inexact-ok
+= log2p1 downward binary128 0x6.af53d00fd2845d4772260ef5adc4p-4 : 0x8.0efc6087a73bba3b9eb65a6731d8p-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.af53d00fd2845d4772260ef5adc4p-4 : 0x8.0efc6087a73bba3b9eb65a6731ep-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.af53d00fd2845d4772260ef5adc4p-4 : 0x8.0efc6087a73bba3b9eb65a6731d8p-4 : inexact-ok
+= log2p1 upward binary128 0x6.af53d00fd2845d4772260ef5adc4p-4 : 0x8.0efc6087a73bba3b9eb65a6731ep-4 : inexact-ok
+= log2p1 downward binary128 0x6.af53d00fd2845d4772260ef5aep-4 : 0x8.0efc6087a73bba3b9eb65a673218p-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.af53d00fd2845d4772260ef5aep-4 : 0x8.0efc6087a73bba3b9eb65a67322p-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.af53d00fd2845d4772260ef5aep-4 : 0x8.0efc6087a73bba3b9eb65a673218p-4 : inexact-ok
+= log2p1 upward binary128 0x6.af53d00fd2845d4772260ef5aep-4 : 0x8.0efc6087a73bba3b9eb65a67322p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.af53d00fd2845d4772260ef5aep-4 : 0x8.0efc6087a73bba3b9eb65a673p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.af53d00fd2845d4772260ef5aep-4 : 0x8.0efc6087a73bba3b9eb65a6734p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.af53d00fd2845d4772260ef5aep-4 : 0x8.0efc6087a73bba3b9eb65a673p-4 : inexact-ok
+= log2p1 upward ibm128 0x6.af53d00fd2845d4772260ef5aep-4 : 0x8.0efc6087a73bba3b9eb65a6734p-4 : inexact-ok
+= log2p1 downward binary128 0x6.af53d00fd2845d4772260ef5acp-4 : 0x8.0efc6087a73bba3b9eb65a67301p-4 : inexact-ok
+= log2p1 tonearest binary128 0x6.af53d00fd2845d4772260ef5acp-4 : 0x8.0efc6087a73bba3b9eb65a67301p-4 : inexact-ok
+= log2p1 towardzero binary128 0x6.af53d00fd2845d4772260ef5acp-4 : 0x8.0efc6087a73bba3b9eb65a67301p-4 : inexact-ok
+= log2p1 upward binary128 0x6.af53d00fd2845d4772260ef5acp-4 : 0x8.0efc6087a73bba3b9eb65a673018p-4 : inexact-ok
+= log2p1 downward ibm128 0x6.af53d00fd2845d4772260ef5acp-4 : 0x8.0efc6087a73bba3b9eb65a673p-4 : inexact-ok
+= log2p1 tonearest ibm128 0x6.af53d00fd2845d4772260ef5acp-4 : 0x8.0efc6087a73bba3b9eb65a673p-4 : inexact-ok
+= log2p1 towardzero ibm128 0x6.af53d00fd2845d4772260ef5acp-4 : 0x8.0efc6087a73bba3b9eb65a673p-4 : inexact-ok
+= log2p1 upward ibm128 0x6.af53d00fd2845d4772260ef5acp-4 : 0x8.0efc6087a73bba3b9eb65a6734p-4 : inexact-ok
diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
index f46d3000b2..fbfc27a452 100644
--- a/math/bits/mathcalls.h
+++ b/math/bits/mathcalls.h
@@ -112,6 +112,9 @@ __MATHCALL (modf,, (_Mdouble_ __x, _Mdouble_ *__iptr)) __nonnull ((2));
 #if __GLIBC_USE (IEC_60559_FUNCS_EXT_C23)
 /* Compute exponent to base ten.  */
 __MATHCALL_VEC (exp10,, (_Mdouble_ __x));
+
+/* Return log2(1 + X).  */
+__MATHCALL (log2p1,, (_Mdouble_ __x));
 #endif
 
 #if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
diff --git a/math/gen-auto-libm-tests.c b/math/gen-auto-libm-tests.c
index c35242b356..d01ac71dbe 100644
--- a/math/gen-auto-libm-tests.c
+++ b/math/gen-auto-libm-tests.c
@@ -580,6 +580,7 @@ static test_function test_functions[] =
     FUNC_mpfr_f_f ("log10", mpfr_log10, false),
     FUNC_mpfr_f_f ("log1p", mpfr_log1p, false),
     FUNC_mpfr_f_f ("log2", mpfr_log2, false),
+    FUNC_mpfr_f_f ("log2p1", mpfr_log2p1, false),
     FUNC_mpfr_ff_f ("mul", mpfr_mul, true),
     FUNC_mpfr_ff_f ("pow", mpfr_pow, false),
     FUNC_mpfr_f_f ("sin", mpfr_sin, false),
diff --git a/math/gen-tgmath-tests.py b/math/gen-tgmath-tests.py
index d3a7f65899..1131481fad 100755
--- a/math/gen-tgmath-tests.py
+++ b/math/gen-tgmath-tests.py
@@ -743,6 +743,7 @@ class Tests(object):
                 self.add_tests(prefix + fn, ret, ['r'] * args)
         # TS 18661-4 functions.
         self.add_tests('exp10', 'r', ['r'])
+        self.add_tests('log2p1', 'r', ['r'])
         # C23 functions.
         self.add_tests('fmaximum', 'r', ['r', 'r'])
         self.add_tests('fmaximum_mag', 'r', ['r', 'r'])
diff --git a/math/libm-test-driver.c b/math/libm-test-driver.c
index 3356f9b10d..dfb56e8cde 100644
--- a/math/libm-test-driver.c
+++ b/math/libm-test-driver.c
@@ -1083,9 +1083,9 @@ struct test_Ff_b1_data
     = STR_CON3 (FUN, SUFF, TEST_SUFF) TEST_SUFF_STR;		\
   init_max_error (this_func, EXACT, TEST_COND_any_ibm128)
 #define END					\
-  print_max_error (this_func)
+  check_max_error (this_func)
 #define END_COMPLEX				\
-  print_complex_max_error (this_func)
+  check_complex_max_error (this_func)
 
 /* Run tests for a given function in all rounding modes.  */
 #define ALL_RM_TEST(FUNC, EXACT, ARRAY, LOOP_MACRO, END_MACRO, ...)	\
diff --git a/math/libm-test-log2p1.inc b/math/libm-test-log2p1.inc
new file mode 100644
index 0000000000..62df95903d
--- /dev/null
+++ b/math/libm-test-log2p1.inc
@@ -0,0 +1,53 @@
+/* Test log2p1.
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "libm-test-driver.c"
+
+static const struct test_f_f_data log2p1_test_data[] =
+  {
+    TEST_f_f (log2p1, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
+    TEST_f_f (log2p1, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log2p1, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM|XFAIL_ROUNDING_IBM128_LIBGCC),
+    TEST_f_f (log2p1, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+
+    TEST_f_f (log2p1, plus_infty, plus_infty, ERRNO_UNCHANGED),
+    TEST_f_f (log2p1, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_f_f (log2p1, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_f_f (log2p1, snan_value, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (log2p1, -snan_value, qnan_value, INVALID_EXCEPTION),
+
+    AUTO_TESTS_f_f (log2p1),
+  };
+
+static void
+log2p1_test (void)
+{
+  ALL_RM_TEST (log2p1, 0, log2p1_test_data, RUN_TEST_LOOP_f_f, END);
+}
+
+static void
+do_test (void)
+{
+  log2p1_test ();
+}
+
+/*
+ * Local Variables:
+ * mode:c
+ * End:
+ */
diff --git a/math/libm-test-support.c b/math/libm-test-support.c
index 1d60ac783b..0796f9d495 100644
--- a/math/libm-test-support.c
+++ b/math/libm-test-support.c
@@ -112,6 +112,7 @@
 #include <argp.h>
 #include <errno.h>
 #include <string.h>
+#include <assert.h>
 
 /* This header defines func_ulps, func_real_ulps and func_imag_ulps
    arrays.  */
@@ -125,12 +126,15 @@ static FILE *ulps_file;		/* File to document difference.  */
 static int output_ulps;		/* Should ulps printed?  */
 static char *output_dir;	/* Directory where generated files will be written.  */
 
-static int noErrors;	/* number of errors */
-static int noTests;	/* number of tests (without testing exceptions) */
-static int noExcTests;	/* number of tests for exception flags */
-static int noErrnoTests;/* number of tests for errno values */
+#define TEST_INPUT 1
+#define TEST_MAXERROR 2
+static int noErrors;	    /* number of errors */
+static int noTests; 	    /* number of tests (without testing exceptions) */
+static int noMaxErrorTests; /* number of max error tests  */
+static int noExcTests;	    /* number of tests for exception flags */
+static int noErrnoTests;    /* number of tests for errno values */
 
-static int verbose;
+static unsigned int verbose;
 static int output_max_error;	/* Should the maximal errors printed?  */
 static int output_points;	/* Should the single function results printed?  */
 static int ignore_max_ulp;	/* Should we ignore max_ulp?  */
@@ -299,9 +303,19 @@ print_screen_max_error (int ok)
 
 /* Update statistic counters.  */
 static void
-update_stats (int ok)
+update_stats (int ok, int testType)
 {
-  ++noTests;
+  switch (testType)
+    {
+	case TEST_INPUT:
+	  ++noTests;
+	  break;
+	case TEST_MAXERROR:
+	  ++noMaxErrorTests;
+	  break;
+	default:
+	  abort();
+    }
   if (!ok)
     ++noErrors;
 }
@@ -367,11 +381,30 @@ fpstack_test (const char *test_name)
 #endif
 }
 
+static void
+print_test_start (int test_num, const char *test_name, int test_type)
+{
+  if (print_screen (1))
+    printf ("--- Start of%s test # %d, named \"%s\" ---\n",
+            test_type == TEST_MAXERROR ? " max error" : "", test_num, test_name);
+}
 
+static void
+print_test_end (int test_num, const char *test_name, int test_type)
+{
+  if (print_screen (1))
+    printf ("--- End of%s test # %d, named \"%s\" ---\n",
+            test_type == TEST_MAXERROR ? " max error" : "", test_num, test_name);
+}
+
+/* This is a builtin test of overall max error.  */
 void
-print_max_error (const char *func_name)
+check_max_error (const char *func_name)
 {
   int ok = 0;
+  int thisTest = noMaxErrorTests;
+
+  print_test_start (thisTest, func_name, TEST_MAXERROR);
 
   if (max_error == 0.0 || (max_error <= prev_max_error && !ignore_max_ulp))
     {
@@ -392,14 +425,19 @@ print_max_error (const char *func_name)
       printf (" accepted: %s ulp\n", pmestr);
     }
 
-  update_stats (ok);
-}
+  update_stats (ok, TEST_MAXERROR);
 
+  print_test_end (thisTest, func_name, TEST_MAXERROR);
+}
 
+/* This is a builtin test of overall max error.  */
 void
-print_complex_max_error (const char *func_name)
+check_complex_max_error (const char *func_name)
 {
   int real_ok = 0, imag_ok = 0, ok;
+  int thisTest = noMaxErrorTests;
+
+  print_test_start (thisTest, func_name, TEST_MAXERROR);
 
   if (real_max_error == 0
       || (real_max_error <= prev_real_max_error && !ignore_max_ulp))
@@ -436,7 +474,8 @@ print_complex_max_error (const char *func_name)
       printf (" accepted: %s ulp\n", pimestr);
     }
 
-  update_stats (ok);
+  update_stats (ok, TEST_MAXERROR);
+  print_test_end (thisTest, func_name, TEST_MAXERROR);
 }
 
 
@@ -477,12 +516,13 @@ test_single_exception (const char *test_name,
       else
 	{
 	  if (print_screen (1))
-	    printf ("%s: Exception \"%s\" not set\n", test_name,
+	    printf ("Pass: %s: Exception \"%s\" not set\n", test_name,
 		    flag_name);
 	}
     }
   if (!ok)
     ++noErrors;
+  ++noExcTests;
 }
 #endif
 
@@ -494,23 +534,32 @@ test_exceptions (const char *test_name, int exception)
 {
   if (flag_test_exceptions && EXCEPTION_TESTS (FLOAT))
     {
-      ++noExcTests;
+      int ran = 0;
 #ifdef FE_DIVBYZERO
       if ((exception & DIVIDE_BY_ZERO_EXCEPTION_OK) == 0)
-	test_single_exception (test_name, exception,
-			       DIVIDE_BY_ZERO_EXCEPTION, FE_DIVBYZERO,
-			       "Divide by zero");
+	{
+	  test_single_exception (test_name, exception,
+			         DIVIDE_BY_ZERO_EXCEPTION, FE_DIVBYZERO,
+			         "Divide by zero");
+	  ran = 1;
+	}
 #endif
 #ifdef FE_INVALID
       if ((exception & INVALID_EXCEPTION_OK) == 0)
-	test_single_exception (test_name, exception,
-			       INVALID_EXCEPTION, FE_INVALID,
-			       "Invalid operation");
+	{
+	  test_single_exception (test_name, exception,
+			         INVALID_EXCEPTION, FE_INVALID,
+			         "Invalid operation");
+	  ran = 1;
+	}
 #endif
 #ifdef FE_OVERFLOW
       if ((exception & OVERFLOW_EXCEPTION_OK) == 0)
-	test_single_exception (test_name, exception, OVERFLOW_EXCEPTION,
-			       FE_OVERFLOW, "Overflow");
+	{
+	  test_single_exception (test_name, exception, OVERFLOW_EXCEPTION,
+			         FE_OVERFLOW, "Overflow");
+	  ran = 1;
+	}
 #endif
       /* Spurious "underflow" and "inexact" exceptions are always
 	 allowed for IBM long double, in line with the underlying
@@ -519,17 +568,30 @@ test_exceptions (const char *test_name, int exception)
       if ((exception & UNDERFLOW_EXCEPTION_OK) == 0
 	  && !(test_ibm128
 	       && (exception & UNDERFLOW_EXCEPTION) == 0))
-	test_single_exception (test_name, exception, UNDERFLOW_EXCEPTION,
-			       FE_UNDERFLOW, "Underflow");
+	{
+	  test_single_exception (test_name, exception, UNDERFLOW_EXCEPTION,
+			         FE_UNDERFLOW, "Underflow");
+	  ran = 1;
+	}
+
 #endif
 #ifdef FE_INEXACT
       if ((exception & (INEXACT_EXCEPTION | NO_INEXACT_EXCEPTION)) != 0
 	  && !(test_ibm128
 	       && (exception & NO_INEXACT_EXCEPTION) != 0))
-	test_single_exception (test_name, exception, INEXACT_EXCEPTION,
-			       FE_INEXACT, "Inexact");
+	{
+	  test_single_exception (test_name, exception, INEXACT_EXCEPTION,
+			         FE_INEXACT, "Inexact");
+	  ran = 1;
+	}
 #endif
+      assert (ran == 1);
     }
+   else
+     {
+	if (print_screen (1))
+	  printf ("Info: %s: No exceptions tested\n", test_name);
+     }
   feclearexcept (FE_ALL_EXCEPT);
 }
 
@@ -552,6 +614,7 @@ test_single_errno (const char *test_name, int errno_value,
 	printf ("Failure: %s: errno set to %d, expected %d (%s)\n",
 		test_name, errno_value, expected_value, expected_name);
     }
+  ++noErrnoTests;
 }
 
 /* Test whether errno (value ERRNO_VALUE) has been for TEST_NAME set
@@ -561,13 +624,39 @@ test_errno (const char *test_name, int errno_value, int exceptions)
 {
   if (flag_test_errno)
     {
-      ++noErrnoTests;
+      int ran = 0;
+
+      if ((exceptions & (ERRNO_UNCHANGED|ERRNO_EDOM|ERRNO_ERANGE)) == 0)
+	{
+	  if (print_screen (1))
+	    printf ("Info: %s: The value of errno was not tested\n",
+		    test_name);
+	  return;
+	}
+
+
       if (exceptions & ERRNO_UNCHANGED)
-	test_single_errno (test_name, errno_value, 0, "unchanged");
+	{
+	  test_single_errno (test_name, errno_value, 0, "unchanged");
+	  ran = 1;
+	}
       if (exceptions & ERRNO_EDOM)
-	test_single_errno (test_name, errno_value, EDOM, "EDOM");
+	{
+	  test_single_errno (test_name, errno_value, EDOM, "EDOM");
+	  ran = 1;
+	}
       if (exceptions & ERRNO_ERANGE)
-	test_single_errno (test_name, errno_value, ERANGE, "ERANGE");
+	{
+	  test_single_errno (test_name, errno_value, ERANGE, "ERANGE");
+	  ran = 1;
+	}
+
+      assert (ran == 1);
+    }
+  else
+    {
+	if (print_screen (1))
+	  printf ("Info: %s: No errno tests\n", test_name);
     }
 }
 
@@ -619,6 +708,9 @@ check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
   FLOAT diff = 0;
   FLOAT ulps = 0;
   int errno_value = errno;
+  int thisTest = noTests;
+
+  print_test_start (thisTest, test_name, TEST_INPUT);
 
   test_exceptions (test_name, exceptions);
   test_errno (test_name, errno_value, exceptions);
@@ -716,12 +808,13 @@ check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
 	  printf (" max.ulp   : %s\n", mustrn);
 	}
     }
-  update_stats (ok);
+  update_stats (ok, TEST_INPUT);
 
  out:
   fpstack_test (test_name);
   feclearexcept (FE_ALL_EXCEPT);
   errno = 0;
+  print_test_end (thisTest, test_name, TEST_INPUT);
 }
 
 
@@ -776,12 +869,14 @@ check_int (const char *test_name, int computed, int expected,
 {
   int ok = 0;
   int errno_value = errno;
+  int thisTest = noTests;
+
+  print_test_start (thisTest, test_name, TEST_INPUT);
 
   test_exceptions (test_name, exceptions);
   test_errno (test_name, errno_value, exceptions);
   if (exceptions & IGNORE_RESULT)
     goto out;
-  noTests++;
   if (computed == expected)
     ok = 1;
 
@@ -795,11 +890,12 @@ check_int (const char *test_name, int computed, int expected,
       printf (" should be:  %d\n", expected);
     }
 
-  update_stats (ok);
+  update_stats (ok, TEST_INPUT);
  out:
   fpstack_test (test_name);
   feclearexcept (FE_ALL_EXCEPT);
   errno = 0;
+  print_test_end (thisTest, test_name, TEST_INPUT);
 }
 
 
@@ -810,12 +906,14 @@ check_long (const char *test_name, long int computed, long int expected,
 {
   int ok = 0;
   int errno_value = errno;
+  int thisTest = noTests;
+
+  print_test_start (thisTest, test_name, TEST_INPUT);
 
   test_exceptions (test_name, exceptions);
   test_errno (test_name, errno_value, exceptions);
   if (exceptions & IGNORE_RESULT)
     goto out;
-  noTests++;
   if (computed == expected)
     ok = 1;
 
@@ -829,11 +927,12 @@ check_long (const char *test_name, long int computed, long int expected,
       printf (" should be:  %ld\n", expected);
     }
 
-  update_stats (ok);
+  update_stats (ok, TEST_INPUT);
  out:
   fpstack_test (test_name);
   feclearexcept (FE_ALL_EXCEPT);
   errno = 0;
+  print_test_end (thisTest, test_name, TEST_INPUT);
 }
 
 
@@ -844,12 +943,14 @@ check_bool (const char *test_name, int computed, int expected,
 {
   int ok = 0;
   int errno_value = errno;
+  int thisTest = noTests;
+
+  print_test_start (thisTest, test_name, TEST_INPUT);
 
   test_exceptions (test_name, exceptions);
   test_errno (test_name, errno_value, exceptions);
   if (exceptions & IGNORE_RESULT)
     goto out;
-  noTests++;
   if ((computed == 0) == (expected == 0))
     ok = 1;
 
@@ -863,11 +964,12 @@ check_bool (const char *test_name, int computed, int expected,
       printf (" should be:  %d\n", expected);
     }
 
-  update_stats (ok);
+  update_stats (ok, TEST_INPUT);
  out:
   fpstack_test (test_name);
   feclearexcept (FE_ALL_EXCEPT);
   errno = 0;
+  print_test_end (thisTest, test_name, TEST_INPUT);
 }
 
 
@@ -879,12 +981,14 @@ check_longlong (const char *test_name, long long int computed,
 {
   int ok = 0;
   int errno_value = errno;
+  int thisTest = noTests;
+
+  print_test_start (thisTest, test_name, TEST_INPUT);
 
   test_exceptions (test_name, exceptions);
   test_errno (test_name, errno_value, exceptions);
   if (exceptions & IGNORE_RESULT)
     goto out;
-  noTests++;
   if (computed == expected)
     ok = 1;
 
@@ -898,11 +1002,12 @@ check_longlong (const char *test_name, long long int computed,
       printf (" should be:  %lld\n", expected);
     }
 
-  update_stats (ok);
+  update_stats (ok, TEST_INPUT);
  out:
   fpstack_test (test_name);
   feclearexcept (FE_ALL_EXCEPT);
   errno = 0;
+  print_test_end (thisTest, test_name, TEST_INPUT);
 }
 
 
@@ -913,12 +1018,14 @@ check_intmax_t (const char *test_name, intmax_t computed,
 {
   int ok = 0;
   int errno_value = errno;
+  int thisTest = noTests;
+
+  print_test_start (thisTest, test_name, TEST_INPUT);
 
   test_exceptions (test_name, exceptions);
   test_errno (test_name, errno_value, exceptions);
   if (exceptions & IGNORE_RESULT)
     goto out;
-  noTests++;
   if (computed == expected)
     ok = 1;
 
@@ -932,11 +1039,12 @@ check_intmax_t (const char *test_name, intmax_t computed,
       printf (" should be:  %jd\n", expected);
     }
 
-  update_stats (ok);
+  update_stats (ok, TEST_INPUT);
  out:
   fpstack_test (test_name);
   feclearexcept (FE_ALL_EXCEPT);
   errno = 0;
+  print_test_end (thisTest, test_name, TEST_INPUT);
 }
 
 
@@ -947,12 +1055,14 @@ check_uintmax_t (const char *test_name, uintmax_t computed,
 {
   int ok = 0;
   int errno_value = errno;
+  int thisTest = noTests;
+
+  print_test_start (thisTest, test_name, TEST_INPUT);
 
   test_exceptions (test_name, exceptions);
   test_errno (test_name, errno_value, exceptions);
   if (exceptions & IGNORE_RESULT)
     goto out;
-  noTests++;
   if (computed == expected)
     ok = 1;
 
@@ -966,11 +1076,12 @@ check_uintmax_t (const char *test_name, uintmax_t computed,
       printf (" should be:  %ju\n", expected);
     }
 
-  update_stats (ok);
+  update_stats (ok, TEST_INPUT);
  out:
   fpstack_test (test_name);
   feclearexcept (FE_ALL_EXCEPT);
   errno = 0;
+  print_test_end (thisTest, test_name, TEST_INPUT);
 }
 
 /* Return whether a test with flags EXCEPTIONS should be run.  */
@@ -1057,7 +1168,14 @@ parse_opt (int key, char *arg, struct argp_state *state)
       break;
     case 'v':
       if (optarg)
-	verbose = (unsigned int) strtoul (optarg, NULL, 0);
+	{
+	  char *optstr_conv = optarg;
+	  unsigned int opt_verbose;
+
+	  opt_verbose = (unsigned int) strtoul (optarg, &optstr_conv, 0);
+          if (*optstr_conv == '\0' && optstr_conv != optarg)
+            verbose = opt_verbose;
+	}
       else
 	verbose = 3;
       break;
@@ -1139,6 +1257,7 @@ libm_test_init (int argc, char **argv)
   int remaining;
   char *ulps_file_path;
   size_t dir_len = 0;
+  char *envstr_verbose;
 
   verbose = 1;
   output_ulps = 0;
@@ -1148,6 +1267,17 @@ libm_test_init (int argc, char **argv)
   /* XXX set to 0 for releases.  */
   ignore_max_ulp = 0;
 
+  envstr_verbose = getenv("GLIBC_TEST_LIBM_VERBOSE");
+  if (envstr_verbose != NULL)
+    {
+      char *envstr_conv = envstr_verbose;
+      unsigned int env_verbose;
+
+      env_verbose = (unsigned int) strtoul (envstr_verbose, &envstr_conv, 0);
+      if (*envstr_conv == '\0' && envstr_conv != envstr_verbose)
+        verbose = env_verbose;
+    }
+
   /* Parse and process arguments.  */
   argp_parse (&argp, argc, argv, 0, &remaining, NULL);
 
@@ -1192,9 +1322,11 @@ libm_test_finish (void)
     fclose (ulps_file);
 
   printf ("\nTest suite completed:\n");
-  printf ("  %d test cases plus %d tests for exception flags and\n"
-	  "    %d tests for errno executed.\n",
-	  noTests, noExcTests, noErrnoTests);
+  printf ("  %d max error test cases,\n", noMaxErrorTests);
+  printf ("  %d input tests,\n", noTests);
+  printf ("  - with %d tests for exception flags,\n", noExcTests);
+  printf ("  - with %d tests for errno executed.\n", noErrnoTests);
+
   if (noErrors)
     {
       printf ("  %d errors occurred.\n", noErrors);
diff --git a/math/libm-test-support.h b/math/libm-test-support.h
index 8baf7e1817..efb9523e9e 100644
--- a/math/libm-test-support.h
+++ b/math/libm-test-support.h
@@ -170,8 +170,8 @@ extern const char doc[];
 
 int enable_test (int);
 void init_max_error (const char *, int, int);
-void print_max_error (const char *);
-void print_complex_max_error (const char *);
+void check_max_error (const char *);
+void check_complex_max_error (const char *);
 void check_float (const char *, FLOAT, FLOAT, int);
 void check_complex (const char *, CFLOAT, CFLOAT, int);
 void check_int (const char *, int, int, int);
diff --git a/math/s_log2p1_template.c b/math/s_log2p1_template.c
new file mode 100644
index 0000000000..e3e5fa3d79
--- /dev/null
+++ b/math/s_log2p1_template.c
@@ -0,0 +1,43 @@
+/* Return base-2 logarithm of 1 + X.
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <math.h>
+#include <math-underflow.h>
+
+FLOAT
+M_DECL_FUNC (__log2p1) (FLOAT x)
+{
+  if (__glibc_unlikely (islessequal (x, M_LIT (-1.0))))
+    {
+      if (x == -1)
+	__set_errno (ERANGE);
+      else
+	__set_errno (EDOM);
+    }
+  if (isless (M_FABS (x), M_EPSILON / 4))
+    {
+      /* Avoid spurious underflows when log1p underflows but log2p1
+	 should not.  */
+      FLOAT ret = M_MLIT (M_LOG2E) * x;
+      math_check_force_underflow (ret);
+      return ret;
+    }
+  return M_MLIT (M_LOG2E) * M_SUF (__log1p) (x);
+}
+declare_mgen_alias (__log2p1, log2p1);
diff --git a/math/s_significand_template.c b/math/s_significand_template.c
index a351390411..0c8a1c3d75 100644
--- a/math/s_significand_template.c
+++ b/math/s_significand_template.c
@@ -30,4 +30,16 @@ M_DECL_FUNC (__significand) (FLOAT x)
 {
   return M_SUF (__ieee754_scalb) (x,(FLOAT) - M_SUF (__ilogb) (x));
 }
+
+/* Don't provide _FloatN aliases for significand which was originally
+   from BSD and never made in any standard.  */
+#undef libm_alias_float_other_r
+#define libm_alias_float_other_r(from, to, r)
+#undef libm_alias_double_other_r
+#define libm_alias_double_other_r(from, to, r)
+#undef libm_alias_ldouble_other_r
+#define libm_alias_ldouble_other_r(from, to, r)
+#undef libm_alias_float128_other_r
+#define libm_alias_float128_other_r(from, to, r)
+
 declare_mgen_alias (__significand, significand)
diff --git a/math/test-double-static.h b/math/test-double-static.h
new file mode 100644
index 0000000000..d53f46819f
--- /dev/null
+++ b/math/test-double-static.h
@@ -0,0 +1 @@
+#include "test-double.h"
diff --git a/math/test-float-static.h b/math/test-float-static.h
new file mode 100644
index 0000000000..7834c9e1f1
--- /dev/null
+++ b/math/test-float-static.h
@@ -0,0 +1 @@
+#include "test-float.h"
diff --git a/math/test-float128-static.h b/math/test-float128-static.h
new file mode 100644
index 0000000000..5f8206456a
--- /dev/null
+++ b/math/test-float128-static.h
@@ -0,0 +1 @@
+#include "test-float128.h"
diff --git a/math/test-float32-static.h b/math/test-float32-static.h
new file mode 100644
index 0000000000..2df27d1ca0
--- /dev/null
+++ b/math/test-float32-static.h
@@ -0,0 +1 @@
+#include "test-float32.h"
diff --git a/math/test-float32x-static.h b/math/test-float32x-static.h
new file mode 100644
index 0000000000..62f78b49d8
--- /dev/null
+++ b/math/test-float32x-static.h
@@ -0,0 +1 @@
+#include "test-float32x.h"
diff --git a/math/test-float64-static.h b/math/test-float64-static.h
new file mode 100644
index 0000000000..807c174df1
--- /dev/null
+++ b/math/test-float64-static.h
@@ -0,0 +1 @@
+#include "test-float64.h"
diff --git a/math/test-float64x-static.h b/math/test-float64x-static.h
new file mode 100644
index 0000000000..a7801dbc10
--- /dev/null
+++ b/math/test-float64x-static.h
@@ -0,0 +1 @@
+#include "test-float64x.h"
diff --git a/math/test-ibm128-static.h b/math/test-ibm128-static.h
new file mode 100644
index 0000000000..b66a57050b
--- /dev/null
+++ b/math/test-ibm128-static.h
@@ -0,0 +1 @@
+#include "test-ibm128.h"
diff --git a/math/test-ldouble-static.h b/math/test-ldouble-static.h
new file mode 100644
index 0000000000..beabedb817
--- /dev/null
+++ b/math/test-ldouble-static.h
@@ -0,0 +1 @@
+#include "test-ldouble.h"
diff --git a/math/test-tgmath.c b/math/test-tgmath.c
index 93efd8b812..141e96bd6e 100644
--- a/math/test-tgmath.c
+++ b/math/test-tgmath.c
@@ -48,7 +48,7 @@ volatile int count_cdouble;
 volatile int count_cfloat;
 volatile int count_cldouble;
 
-#define NCALLS     158
+#define NCALLS     160
 #define NCALLS_INT 4
 #define NCCALLS    47
 
@@ -255,6 +255,7 @@ F(compile_test) (void)
   a = exp2 (exp2 (x));
   a = exp10 (exp10 (x));
   b = log2 (log2 (a));
+  a = log2p1 (log2p1 (x));
   a = pow (pow (x, a), pow (c, b));
   b = sqrt (sqrt (a));
   a = hypot (hypot (x, b), hypot (c, a));
@@ -368,6 +369,7 @@ F(compile_test) (void)
       a = exp2 (y);
       a = exp10 (y);
       a = log2 (y);
+      a = log2p1 (y);
       a = pow (y, y);
       a = sqrt (y);
       a = hypot (y, y);
@@ -642,6 +644,14 @@ TYPE
 }
 
 TYPE
+(F(log2p1)) (TYPE x)
+{
+  ++count;
+  P ();
+  return x;
+}
+
+TYPE
 (F(pow)) (TYPE x, TYPE y)
 {
   ++count;
diff --git a/math/tgmath.h b/math/tgmath.h
index dbfa92d51d..d9ee3e3a17 100644
--- a/math/tgmath.h
+++ b/math/tgmath.h
@@ -874,6 +874,9 @@
 #if __GLIBC_USE (IEC_60559_FUNCS_EXT_C23)
 /* Compute exponent to base ten.  */
 #define exp10(Val) __TGMATH_UNARY_REAL_ONLY (Val, exp10)
+
+/* Return log2(1 + X).  */
+#define log2p1(Val) __TGMATH_UNARY_REAL_ONLY (Val, log2p1)
 #endif
 
 
diff --git a/math/w_scalb_template.c b/math/w_scalb_template.c
index 2fd5ca1878..f9f98508e9 100644
--- a/math/w_scalb_template.c
+++ b/math/w_scalb_template.c
@@ -52,6 +52,18 @@ FLOAT M_DECL_FUNC (__scalb) (FLOAT x, FLOAT fn)
   return z;
 }
 
+/* Don't provide _FloatN aliases for scalb which is a deprecated interface,
+   was obsolescent in POSIX.1-2001, removed in POSIX.1-2008, never made to
+   C standard.  */
+#undef libm_alias_float_other_r
+#define libm_alias_float_other_r(from, to, r)
+#undef libm_alias_double_other_r
+#define libm_alias_double_other_r(from, to, r)
+#undef libm_alias_ldouble_other_r
+#define libm_alias_ldouble_other_r(from, to, r)
+#undef libm_alias_float128_other_r
+#define libm_alias_float128_other_r(from, to, r)
+
 declare_mgen_alias (__scalb, scalb);
 
 #endif /* __USE_WRAPPER_TEMPLATE.  */
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index 2e8279a2c7..ab9620bd0d 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -874,4 +874,13 @@ _Static_assert (0, "IEEE 128-bits long double requires redirection on this platf
 # define __attribute_returns_twice__ /* Ignore.  */
 #endif
 
+/* Mark struct types as aliasable.  Restricted to compilers that
+   support forward declarations of structs in the presence of the
+   attribute.  */
+#if __GNUC_PREREQ (7, 1) || defined __clang__
+# define __attribute_struct_may_alias__ __attribute__ ((__may_alias__))
+#else
+# define __attribute_struct_may_alias__
+#endif
+
 #endif	 /* sys/cdefs.h */
diff --git a/resolv/res_debug.c b/resolv/res_debug.c
index dab5283bbf..1b1f5233f9 100644
--- a/resolv/res_debug.c
+++ b/resolv/res_debug.c
@@ -141,6 +141,7 @@ static const char res_opcodes[][9] =
   };
 #if SHLIB_COMPAT (libresolv, GLIBC_2_0, GLIBC_2_26)
 strong_alias (res_opcodes, _res_opcodes)
+compat_symbol (libresolv, _res_opcodes, _res_opcodes, GLIBC_2_0);
 #endif
 
 static const char *p_section(int section, int opcode);
diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
index 38eb9f2dd2..b4e7f953ef 100755
--- a/scripts/build-many-glibcs.py
+++ b/scripts/build-many-glibcs.py
@@ -834,7 +834,7 @@ class Context(object):
                             'gcc': 'vcs-13',
                             'glibc': 'vcs-mainline',
                             'gmp': '6.3.0',
-                            'linux': '6.8',
+                            'linux': '6.9',
                             'mpc': '1.3.1',
                             'mpfr': '4.2.1',
                             'mig': 'vcs-mainline',
diff --git a/socket/sys/un.h b/socket/sys/un.h
index bf03b7d6ce..ff9cbd6efa 100644
--- a/socket/sys/un.h
+++ b/socket/sys/un.h
@@ -26,7 +26,7 @@
 __BEGIN_DECLS
 
 /* Structure describing the address of an AF_LOCAL (aka AF_UNIX) socket.  */
-struct sockaddr_un
+struct __attribute_struct_may_alias__ sockaddr_un
   {
     __SOCKADDR_COMMON (sun_);
     char sun_path[108];		/* Path name.  */
diff --git a/sysdeps/aarch64/fpu/Makefile b/sysdeps/aarch64/fpu/Makefile
index e8af35099d..234a6c457c 100644
--- a/sysdeps/aarch64/fpu/Makefile
+++ b/sysdeps/aarch64/fpu/Makefile
@@ -5,6 +5,7 @@ libmvec-supported-funcs = acos \
                           atan \
                           atanh \
                           atan2 \
+                          cbrt \
                           cos \
                           cosh \
                           erf \
@@ -13,10 +14,12 @@ libmvec-supported-funcs = acos \
                           exp10 \
                           exp2 \
                           expm1 \
+                          hypot \
                           log \
                           log10 \
                           log1p \
                           log2 \
+                          pow \
                           sin \
                           sinh \
                           tan \
@@ -42,7 +45,10 @@ libmvec-support = $(addsuffix f_advsimd,$(float-advsimd-funcs)) \
                   sv_erff_data \
                   v_exp_tail_data \
                   erfc_data \
-                  erfcf_data
+                  erfcf_data \
+                  v_pow_exp_data \
+                  v_pow_log_data \
+                  v_powf_data
 endif
 
 sve-cflags = -march=armv8-a+sve
diff --git a/sysdeps/aarch64/fpu/Versions b/sysdeps/aarch64/fpu/Versions
index 3cb1b82bd2..cc15ce2d1e 100644
--- a/sysdeps/aarch64/fpu/Versions
+++ b/sysdeps/aarch64/fpu/Versions
@@ -94,6 +94,11 @@ libmvec {
     _ZGVnN4v_atanhf;
     _ZGVsMxv_atanh;
     _ZGVsMxv_atanhf;
+    _ZGVnN2v_cbrt;
+    _ZGVnN2v_cbrtf;
+    _ZGVnN4v_cbrtf;
+    _ZGVsMxv_cbrt;
+    _ZGVsMxv_cbrtf;
     _ZGVnN2v_cosh;
     _ZGVnN2v_coshf;
     _ZGVnN4v_coshf;
@@ -109,6 +114,16 @@ libmvec {
     _ZGVnN4v_erfcf;
     _ZGVsMxv_erfc;
     _ZGVsMxv_erfcf;
+    _ZGVnN4vv_hypotf;
+    _ZGVnN2vv_hypotf;
+    _ZGVnN2vv_hypot;
+    _ZGVsMxvv_hypotf;
+    _ZGVsMxvv_hypot;
+    _ZGVnN4vv_powf;
+    _ZGVnN2vv_powf;
+    _ZGVnN2vv_pow;
+    _ZGVsMxvv_powf;
+    _ZGVsMxvv_pow;
     _ZGVnN2v_sinh;
     _ZGVnN2v_sinhf;
     _ZGVnN4v_sinhf;
diff --git a/sysdeps/aarch64/fpu/advsimd_f32_protos.h b/sysdeps/aarch64/fpu/advsimd_f32_protos.h
index 383c436972..097d403ffe 100644
--- a/sysdeps/aarch64/fpu/advsimd_f32_protos.h
+++ b/sysdeps/aarch64/fpu/advsimd_f32_protos.h
@@ -23,6 +23,7 @@ libmvec_hidden_proto (V_NAME_F1(asin));
 libmvec_hidden_proto (V_NAME_F1(asinh));
 libmvec_hidden_proto (V_NAME_F1(atan));
 libmvec_hidden_proto (V_NAME_F1(atanh));
+libmvec_hidden_proto (V_NAME_F1(cbrt));
 libmvec_hidden_proto (V_NAME_F1(cos));
 libmvec_hidden_proto (V_NAME_F1(cosh));
 libmvec_hidden_proto (V_NAME_F1(erf));
@@ -31,10 +32,12 @@ libmvec_hidden_proto (V_NAME_F1(exp10));
 libmvec_hidden_proto (V_NAME_F1(exp2));
 libmvec_hidden_proto (V_NAME_F1(exp));
 libmvec_hidden_proto (V_NAME_F1(expm1));
+libmvec_hidden_proto (V_NAME_F2(hypot));
 libmvec_hidden_proto (V_NAME_F1(log10));
 libmvec_hidden_proto (V_NAME_F1(log1p));
 libmvec_hidden_proto (V_NAME_F1(log2));
 libmvec_hidden_proto (V_NAME_F1(log));
+libmvec_hidden_proto (V_NAME_F2(pow));
 libmvec_hidden_proto (V_NAME_F1(sin));
 libmvec_hidden_proto (V_NAME_F1(sinh));
 libmvec_hidden_proto (V_NAME_F1(tan));
diff --git a/sysdeps/aarch64/fpu/atan2_advsimd.c b/sysdeps/aarch64/fpu/atan2_advsimd.c
index 2fd6164134..b1e7a9b8fc 100644
--- a/sysdeps/aarch64/fpu/atan2_advsimd.c
+++ b/sysdeps/aarch64/fpu/atan2_advsimd.c
@@ -17,6 +17,7 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#include "math_config.h"
 #include "v_math.h"
 #include "poly_advsimd_f64.h"
 
diff --git a/sysdeps/aarch64/fpu/atan2_sve.c b/sysdeps/aarch64/fpu/atan2_sve.c
index 04fa71fa37..ed9f683436 100644
--- a/sysdeps/aarch64/fpu/atan2_sve.c
+++ b/sysdeps/aarch64/fpu/atan2_sve.c
@@ -17,6 +17,7 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#include "math_config.h"
 #include "sv_math.h"
 #include "poly_sve_f64.h"
 
diff --git a/sysdeps/aarch64/fpu/bits/math-vector.h b/sysdeps/aarch64/fpu/bits/math-vector.h
index e29b2d1c09..7484150131 100644
--- a/sysdeps/aarch64/fpu/bits/math-vector.h
+++ b/sysdeps/aarch64/fpu/bits/math-vector.h
@@ -57,6 +57,10 @@
 # define __DECL_SIMD_atan2 __DECL_SIMD_aarch64
 # undef __DECL_SIMD_atan2f
 # define __DECL_SIMD_atan2f __DECL_SIMD_aarch64
+# undef __DECL_SIMD_cbrt
+# define __DECL_SIMD_cbrt __DECL_SIMD_aarch64
+# undef __DECL_SIMD_cbrtf
+# define __DECL_SIMD_cbrtf __DECL_SIMD_aarch64
 # undef __DECL_SIMD_cos
 # define __DECL_SIMD_cos __DECL_SIMD_aarch64
 # undef __DECL_SIMD_cosf
@@ -89,6 +93,10 @@
 # define __DECL_SIMD_expm1 __DECL_SIMD_aarch64
 # undef __DECL_SIMD_expm1f
 # define __DECL_SIMD_expm1f __DECL_SIMD_aarch64
+# undef __DECL_SIMD_hypot
+# define __DECL_SIMD_hypot __DECL_SIMD_aarch64
+# undef __DECL_SIMD_hypotf
+# define __DECL_SIMD_hypotf __DECL_SIMD_aarch64
 # undef __DECL_SIMD_log
 # define __DECL_SIMD_log __DECL_SIMD_aarch64
 # undef __DECL_SIMD_logf
@@ -105,6 +113,10 @@
 # define __DECL_SIMD_log2 __DECL_SIMD_aarch64
 # undef __DECL_SIMD_log2f
 # define __DECL_SIMD_log2f __DECL_SIMD_aarch64
+# undef __DECL_SIMD_pow
+# define __DECL_SIMD_pow __DECL_SIMD_aarch64
+# undef __DECL_SIMD_powf
+# define __DECL_SIMD_powf __DECL_SIMD_aarch64
 # undef __DECL_SIMD_sin
 # define __DECL_SIMD_sin __DECL_SIMD_aarch64
 # undef __DECL_SIMD_sinf
@@ -154,6 +166,7 @@ __vpcs __f32x4_t _ZGVnN4v_asinf (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_asinhf (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_atanf (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_atanhf (__f32x4_t);
+__vpcs __f32x4_t _ZGVnN4v_cbrtf (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_cosf (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_coshf (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_erff (__f32x4_t);
@@ -162,10 +175,12 @@ __vpcs __f32x4_t _ZGVnN4v_expf (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_exp10f (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_exp2f (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_expm1f (__f32x4_t);
+__vpcs __f32x4_t _ZGVnN4vv_hypotf (__f32x4_t, __f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_logf (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_log10f (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_log1pf (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_log2f (__f32x4_t);
+__vpcs __f32x4_t _ZGVnN4vv_powf (__f32x4_t, __f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_sinf (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_sinhf (__f32x4_t);
 __vpcs __f32x4_t _ZGVnN4v_tanf (__f32x4_t);
@@ -178,6 +193,7 @@ __vpcs __f64x2_t _ZGVnN2v_asin (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_asinh (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_atan (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_atanh (__f64x2_t);
+__vpcs __f64x2_t _ZGVnN2v_cbrt (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_cos (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_cosh (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_erf (__f64x2_t);
@@ -186,10 +202,12 @@ __vpcs __f64x2_t _ZGVnN2v_exp (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_exp10 (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_exp2 (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_expm1 (__f64x2_t);
+__vpcs __f64x2_t _ZGVnN2vv_hypot (__f64x2_t, __f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_log (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_log10 (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_log1p (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_log2 (__f64x2_t);
+__vpcs __f64x2_t _ZGVnN2vv_pow (__f64x2_t, __f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_sin (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_sinh (__f64x2_t);
 __vpcs __f64x2_t _ZGVnN2v_tan (__f64x2_t);
@@ -207,6 +225,7 @@ __sv_f32_t _ZGVsMxv_asinf (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_asinhf (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_atanf (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_atanhf (__sv_f32_t, __sv_bool_t);
+__sv_f32_t _ZGVsMxv_cbrtf (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_cosf (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_coshf (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_erff (__sv_f32_t, __sv_bool_t);
@@ -215,10 +234,12 @@ __sv_f32_t _ZGVsMxv_expf (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_exp10f (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_exp2f (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_expm1f (__sv_f32_t, __sv_bool_t);
+__sv_f32_t _ZGVsMxvv_hypotf (__sv_f32_t, __sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_logf (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_log10f (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_log1pf (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_log2f (__sv_f32_t, __sv_bool_t);
+__sv_f32_t _ZGVsMxvv_powf (__sv_f32_t, __sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_sinf (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_sinhf (__sv_f32_t, __sv_bool_t);
 __sv_f32_t _ZGVsMxv_tanf (__sv_f32_t, __sv_bool_t);
@@ -231,6 +252,7 @@ __sv_f64_t _ZGVsMxv_asin (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_asinh (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_atan (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_atanh (__sv_f64_t, __sv_bool_t);
+__sv_f64_t _ZGVsMxv_cbrt (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_cos (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_cosh (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_erf (__sv_f64_t, __sv_bool_t);
@@ -239,10 +261,12 @@ __sv_f64_t _ZGVsMxv_exp (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_exp10 (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_exp2 (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_expm1 (__sv_f64_t, __sv_bool_t);
+__sv_f64_t _ZGVsMxvv_hypot (__sv_f64_t, __sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_log (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_log10 (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_log1p (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_log2 (__sv_f64_t, __sv_bool_t);
+__sv_f64_t _ZGVsMxvv_pow (__sv_f64_t, __sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_sin (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_sinh (__sv_f64_t, __sv_bool_t);
 __sv_f64_t _ZGVsMxv_tan (__sv_f64_t, __sv_bool_t);
diff --git a/sysdeps/aarch64/fpu/cbrt_advsimd.c b/sysdeps/aarch64/fpu/cbrt_advsimd.c
new file mode 100644
index 0000000000..adfbb60cd3
--- /dev/null
+++ b/sysdeps/aarch64/fpu/cbrt_advsimd.c
@@ -0,0 +1,121 @@
+/* Double-precision vector (AdvSIMD) cbrt function
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "v_math.h"
+#include "poly_advsimd_f64.h"
+
+const static struct data
+{
+  float64x2_t poly[4], one_third, shift;
+  int64x2_t exp_bias;
+  uint64x2_t abs_mask, tiny_bound;
+  uint32x4_t thresh;
+  double table[5];
+} data = {
+  .shift = V2 (0x1.8p52),
+  .poly = { /* Generated with fpminimax in [0.5, 1].  */
+            V2 (0x1.c14e8ee44767p-2), V2 (0x1.dd2d3f99e4c0ep-1),
+	    V2 (-0x1.08e83026b7e74p-1), V2 (0x1.2c74eaa3ba428p-3) },
+  .exp_bias = V2 (1022),
+  .abs_mask = V2(0x7fffffffffffffff),
+  .tiny_bound = V2(0x0010000000000000), /* Smallest normal.  */
+  .thresh = V4(0x7fe00000),   /* asuint64 (infinity) - tiny_bound.  */
+  .one_third = V2(0x1.5555555555555p-2),
+  .table = { /* table[i] = 2^((i - 2) / 3).  */
+             0x1.428a2f98d728bp-1, 0x1.965fea53d6e3dp-1, 0x1p0,
+	     0x1.428a2f98d728bp0, 0x1.965fea53d6e3dp0 }
+};
+
+#define MantissaMask v_u64 (0x000fffffffffffff)
+
+static float64x2_t NOINLINE VPCS_ATTR
+special_case (float64x2_t x, float64x2_t y, uint32x2_t special)
+{
+  return v_call_f64 (cbrt, x, y, vmovl_u32 (special));
+}
+
+/* Approximation for double-precision vector cbrt(x), using low-order polynomial
+   and two Newton iterations. Greatest observed error is 1.79 ULP. Errors repeat
+   according to the exponent, for instance an error observed for double value
+   m * 2^e will be observed for any input m * 2^(e + 3*i), where i is an
+   integer.
+   __v_cbrt(0x1.fffff403f0bc6p+1) got 0x1.965fe72821e9bp+0
+				 want 0x1.965fe72821e99p+0.  */
+VPCS_ATTR float64x2_t V_NAME_D1 (cbrt) (float64x2_t x)
+{
+  const struct data *d = ptr_barrier (&data);
+  uint64x2_t iax = vreinterpretq_u64_f64 (vabsq_f64 (x));
+
+  /* Subnormal, +/-0 and special values.  */
+  uint32x2_t special
+      = vcge_u32 (vsubhn_u64 (iax, d->tiny_bound), vget_low_u32 (d->thresh));
+
+  /* Decompose |x| into m * 2^e, where m is in [0.5, 1.0]. This is a vector
+     version of frexp, which gets subnormal values wrong - these have to be
+     special-cased as a result.  */
+  float64x2_t m = vbslq_f64 (MantissaMask, x, v_f64 (0.5));
+  int64x2_t exp_bias = d->exp_bias;
+  uint64x2_t ia12 = vshrq_n_u64 (iax, 52);
+  int64x2_t e = vsubq_s64 (vreinterpretq_s64_u64 (ia12), exp_bias);
+
+  /* Calculate rough approximation for cbrt(m) in [0.5, 1.0], starting point for
+     Newton iterations.  */
+  float64x2_t p = v_pairwise_poly_3_f64 (m, vmulq_f64 (m, m), d->poly);
+  float64x2_t one_third = d->one_third;
+  /* Two iterations of Newton's method for iteratively approximating cbrt.  */
+  float64x2_t m_by_3 = vmulq_f64 (m, one_third);
+  float64x2_t two_thirds = vaddq_f64 (one_third, one_third);
+  float64x2_t a
+      = vfmaq_f64 (vdivq_f64 (m_by_3, vmulq_f64 (p, p)), two_thirds, p);
+  a = vfmaq_f64 (vdivq_f64 (m_by_3, vmulq_f64 (a, a)), two_thirds, a);
+
+  /* Assemble the result by the following:
+
+     cbrt(x) = cbrt(m) * 2 ^ (e / 3).
+
+     We can get 2 ^ round(e / 3) using ldexp and integer divide, but since e is
+     not necessarily a multiple of 3 we lose some information.
+
+     Let q = 2 ^ round(e / 3), then t = 2 ^ (e / 3) / q.
+
+     Then we know t = 2 ^ (i / 3), where i is the remainder from e / 3, which is
+     an integer in [-2, 2], and can be looked up in the table T. Hence the
+     result is assembled as:
+
+     cbrt(x) = cbrt(m) * t * 2 ^ round(e / 3) * sign.  */
+
+  float64x2_t ef = vcvtq_f64_s64 (e);
+  float64x2_t eb3f = vrndnq_f64 (vmulq_f64 (ef, one_third));
+  int64x2_t em3 = vcvtq_s64_f64 (vfmsq_f64 (ef, eb3f, v_f64 (3)));
+  int64x2_t ey = vcvtq_s64_f64 (eb3f);
+
+  float64x2_t my = (float64x2_t){ d->table[em3[0] + 2], d->table[em3[1] + 2] };
+  my = vmulq_f64 (my, a);
+
+  /* Vector version of ldexp.  */
+  float64x2_t y = vreinterpretq_f64_s64 (
+      vshlq_n_s64 (vaddq_s64 (ey, vaddq_s64 (exp_bias, v_s64 (1))), 52));
+  y = vmulq_f64 (y, my);
+
+  if (__glibc_unlikely (v_any_u32h (special)))
+    return special_case (x, vbslq_f64 (d->abs_mask, y, x), special);
+
+  /* Copy sign.  */
+  return vbslq_f64 (d->abs_mask, y, x);
+}
diff --git a/sysdeps/aarch64/fpu/cbrt_sve.c b/sysdeps/aarch64/fpu/cbrt_sve.c
new file mode 100644
index 0000000000..fc976eda2a
--- /dev/null
+++ b/sysdeps/aarch64/fpu/cbrt_sve.c
@@ -0,0 +1,128 @@
+/* Double-precision vector (SVE) cbrt function
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "sv_math.h"
+#include "poly_sve_f64.h"
+
+const static struct data
+{
+  float64_t poly[4];
+  float64_t table[5];
+  float64_t one_third, two_thirds, shift;
+  int64_t exp_bias;
+  uint64_t tiny_bound, thresh;
+} data = {
+  /* Generated with FPMinimax in [0.5, 1].  */
+  .poly = { 0x1.c14e8ee44767p-2, 0x1.dd2d3f99e4c0ep-1, -0x1.08e83026b7e74p-1,
+	    0x1.2c74eaa3ba428p-3, },
+  /* table[i] = 2^((i - 2) / 3).  */
+  .table = { 0x1.428a2f98d728bp-1, 0x1.965fea53d6e3dp-1, 0x1p0,
+	     0x1.428a2f98d728bp0, 0x1.965fea53d6e3dp0, },
+  .one_third = 0x1.5555555555555p-2,
+  .two_thirds = 0x1.5555555555555p-1,
+  .shift = 0x1.8p52,
+  .exp_bias = 1022,
+  .tiny_bound = 0x0010000000000000, /* Smallest normal.  */
+  .thresh = 0x7fe0000000000000, /* asuint64 (infinity) - tiny_bound.  */
+};
+
+#define MantissaMask 0x000fffffffffffff
+#define HalfExp 0x3fe0000000000000
+
+static svfloat64_t NOINLINE
+special_case (svfloat64_t x, svfloat64_t y, svbool_t special)
+{
+  return sv_call_f64 (cbrt, x, y, special);
+}
+
+static inline svfloat64_t
+shifted_lookup (const svbool_t pg, const float64_t *table, svint64_t i)
+{
+  return svld1_gather_index (pg, table, svadd_x (pg, i, 2));
+}
+
+/* Approximation for double-precision vector cbrt(x), using low-order
+   polynomial and two Newton iterations. Greatest observed error is 1.79 ULP.
+   Errors repeat according to the exponent, for instance an error observed for
+   double value m * 2^e will be observed for any input m * 2^(e + 3*i), where i
+   is an integer.
+   _ZGVsMxv_cbrt (0x0.3fffb8d4413f3p-1022) got 0x1.965f53b0e5d97p-342
+					  want 0x1.965f53b0e5d95p-342.  */
+svfloat64_t SV_NAME_D1 (cbrt) (svfloat64_t x, const svbool_t pg)
+{
+  const struct data *d = ptr_barrier (&data);
+
+  svfloat64_t ax = svabs_x (pg, x);
+  svuint64_t iax = svreinterpret_u64 (ax);
+  svuint64_t sign = sveor_x (pg, svreinterpret_u64 (x), iax);
+
+  /* Subnormal, +/-0 and special values.  */
+  svbool_t special = svcmpge (pg, svsub_x (pg, iax, d->tiny_bound), d->thresh);
+
+  /* Decompose |x| into m * 2^e, where m is in [0.5, 1.0]. This is a vector
+     version of frexp, which gets subnormal values wrong - these have to be
+     special-cased as a result.  */
+  svfloat64_t m = svreinterpret_f64 (svorr_x (
+      pg, svand_x (pg, svreinterpret_u64 (x), MantissaMask), HalfExp));
+  svint64_t e
+      = svsub_x (pg, svreinterpret_s64 (svlsr_x (pg, iax, 52)), d->exp_bias);
+
+  /* Calculate rough approximation for cbrt(m) in [0.5, 1.0], starting point
+     for Newton iterations.  */
+  svfloat64_t p
+      = sv_pairwise_poly_3_f64_x (pg, m, svmul_x (pg, m, m), d->poly);
+
+  /* Two iterations of Newton's method for iteratively approximating cbrt.  */
+  svfloat64_t m_by_3 = svmul_x (pg, m, d->one_third);
+  svfloat64_t a = svmla_x (pg, svdiv_x (pg, m_by_3, svmul_x (pg, p, p)), p,
+			   d->two_thirds);
+  a = svmla_x (pg, svdiv_x (pg, m_by_3, svmul_x (pg, a, a)), a, d->two_thirds);
+
+  /* Assemble the result by the following:
+
+     cbrt(x) = cbrt(m) * 2 ^ (e / 3).
+
+     We can get 2 ^ round(e / 3) using ldexp and integer divide, but since e is
+     not necessarily a multiple of 3 we lose some information.
+
+     Let q = 2 ^ round(e / 3), then t = 2 ^ (e / 3) / q.
+
+     Then we know t = 2 ^ (i / 3), where i is the remainder from e / 3, which
+     is an integer in [-2, 2], and can be looked up in the table T. Hence the
+     result is assembled as:
+
+     cbrt(x) = cbrt(m) * t * 2 ^ round(e / 3) * sign.  */
+  svfloat64_t eb3f = svmul_x (pg, svcvt_f64_x (pg, e), d->one_third);
+  svint64_t ey = svcvt_s64_x (pg, eb3f);
+  svint64_t em3 = svmls_x (pg, e, ey, 3);
+
+  svfloat64_t my = shifted_lookup (pg, d->table, em3);
+  my = svmul_x (pg, my, a);
+
+  /* Vector version of ldexp.  */
+  svfloat64_t y = svscale_x (pg, my, ey);
+
+  if (__glibc_unlikely (svptest_any (pg, special)))
+    return special_case (
+	x, svreinterpret_f64 (svorr_x (pg, svreinterpret_u64 (y), sign)),
+	special);
+
+  /* Copy sign.  */
+  return svreinterpret_f64 (svorr_x (pg, svreinterpret_u64 (y), sign));
+}
diff --git a/sysdeps/aarch64/fpu/cbrtf_advsimd.c b/sysdeps/aarch64/fpu/cbrtf_advsimd.c
new file mode 100644
index 0000000000..27debb8b57
--- /dev/null
+++ b/sysdeps/aarch64/fpu/cbrtf_advsimd.c
@@ -0,0 +1,123 @@
+/* Single-precision vector (AdvSIMD) cbrt function
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "v_math.h"
+#include "poly_advsimd_f32.h"
+
+const static struct data
+{
+  float32x4_t poly[4], one_third;
+  float table[5];
+} data = {
+  .poly = { /* Very rough approximation of cbrt(x) in [0.5, 1], generated with
+               FPMinimax.  */
+	    V4 (0x1.c14e96p-2), V4 (0x1.dd2d3p-1), V4 (-0x1.08e81ap-1),
+	    V4 (0x1.2c74c2p-3) },
+  .table = { /* table[i] = 2^((i - 2) / 3).  */
+	    0x1.428a3p-1, 0x1.965feap-1, 0x1p0, 0x1.428a3p0, 0x1.965feap0 },
+  .one_third = V4 (0x1.555556p-2f),
+};
+
+#define SignMask v_u32 (0x80000000)
+#define SmallestNormal v_u32 (0x00800000)
+#define Thresh vdup_n_u16 (0x7f00) /* asuint(INFINITY) - SmallestNormal.  */
+#define MantissaMask v_u32 (0x007fffff)
+#define HalfExp v_u32 (0x3f000000)
+
+static float32x4_t VPCS_ATTR NOINLINE
+special_case (float32x4_t x, float32x4_t y, uint16x4_t special)
+{
+  return v_call_f32 (cbrtf, x, y, vmovl_u16 (special));
+}
+
+static inline float32x4_t
+shifted_lookup (const float *table, int32x4_t i)
+{
+  return (float32x4_t){ table[i[0] + 2], table[i[1] + 2], table[i[2] + 2],
+			table[i[3] + 2] };
+}
+
+/* Approximation for vector single-precision cbrt(x) using Newton iteration
+   with initial guess obtained by a low-order polynomial. Greatest error
+   is 1.64 ULP. This is observed for every value where the mantissa is
+   0x1.85a2aa and the exponent is a multiple of 3, for example:
+   _ZGVnN4v_cbrtf(0x1.85a2aap+3) got 0x1.267936p+1
+				want 0x1.267932p+1.  */
+VPCS_ATTR float32x4_t V_NAME_F1 (cbrt) (float32x4_t x)
+{
+  const struct data *d = ptr_barrier (&data);
+  uint32x4_t iax = vreinterpretq_u32_f32 (vabsq_f32 (x));
+
+  /* Subnormal, +/-0 and special values.  */
+  uint16x4_t special = vcge_u16 (vsubhn_u32 (iax, SmallestNormal), Thresh);
+
+  /* Decompose |x| into m * 2^e, where m is in [0.5, 1.0]. This is a vector
+     version of frexpf, which gets subnormal values wrong - these have to be
+     special-cased as a result.  */
+  float32x4_t m = vbslq_f32 (MantissaMask, x, v_f32 (0.5));
+  int32x4_t e
+      = vsubq_s32 (vreinterpretq_s32_u32 (vshrq_n_u32 (iax, 23)), v_s32 (126));
+
+  /* p is a rough approximation for cbrt(m) in [0.5, 1.0]. The better this is,
+     the less accurate the next stage of the algorithm needs to be. An order-4
+     polynomial is enough for one Newton iteration.  */
+  float32x4_t p = v_pairwise_poly_3_f32 (m, vmulq_f32 (m, m), d->poly);
+
+  float32x4_t one_third = d->one_third;
+  float32x4_t two_thirds = vaddq_f32 (one_third, one_third);
+
+  /* One iteration of Newton's method for iteratively approximating cbrt.  */
+  float32x4_t m_by_3 = vmulq_f32 (m, one_third);
+  float32x4_t a
+      = vfmaq_f32 (vdivq_f32 (m_by_3, vmulq_f32 (p, p)), two_thirds, p);
+
+  /* Assemble the result by the following:
+
+     cbrt(x) = cbrt(m) * 2 ^ (e / 3).
+
+     We can get 2 ^ round(e / 3) using ldexp and integer divide, but since e is
+     not necessarily a multiple of 3 we lose some information.
+
+     Let q = 2 ^ round(e / 3), then t = 2 ^ (e / 3) / q.
+
+     Then we know t = 2 ^ (i / 3), where i is the remainder from e / 3, which
+     is an integer in [-2, 2], and can be looked up in the table T. Hence the
+     result is assembled as:
+
+     cbrt(x) = cbrt(m) * t * 2 ^ round(e / 3) * sign.  */
+  float32x4_t ef = vmulq_f32 (vcvtq_f32_s32 (e), one_third);
+  int32x4_t ey = vcvtq_s32_f32 (ef);
+  int32x4_t em3 = vsubq_s32 (e, vmulq_s32 (ey, v_s32 (3)));
+
+  float32x4_t my = shifted_lookup (d->table, em3);
+  my = vmulq_f32 (my, a);
+
+  /* Vector version of ldexpf.  */
+  float32x4_t y
+      = vreinterpretq_f32_s32 (vshlq_n_s32 (vaddq_s32 (ey, v_s32 (127)), 23));
+  y = vmulq_f32 (y, my);
+
+  if (__glibc_unlikely (v_any_u16h (special)))
+    return special_case (x, vbslq_f32 (SignMask, x, y), special);
+
+  /* Copy sign.  */
+  return vbslq_f32 (SignMask, x, y);
+}
+libmvec_hidden_def (V_NAME_F1 (cbrt))
+HALF_WIDTH_ALIAS_F1 (cbrt)
diff --git a/sysdeps/aarch64/fpu/cbrtf_sve.c b/sysdeps/aarch64/fpu/cbrtf_sve.c
new file mode 100644
index 0000000000..23c220c202
--- /dev/null
+++ b/sysdeps/aarch64/fpu/cbrtf_sve.c
@@ -0,0 +1,122 @@
+/* Single-precision vector (SVE) cbrt function
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "sv_math.h"
+#include "poly_sve_f32.h"
+
+const static struct data
+{
+  float32_t poly[4];
+  float32_t table[5];
+  float32_t one_third, two_thirds;
+} data = {
+  /* Very rough approximation of cbrt(x) in [0.5, 1], generated with FPMinimax.
+   */
+  .poly = { 0x1.c14e96p-2, 0x1.dd2d3p-1, -0x1.08e81ap-1,
+	    0x1.2c74c2p-3, },
+  /* table[i] = 2^((i - 2) / 3).  */
+  .table = { 0x1.428a3p-1, 0x1.965feap-1, 0x1p0, 0x1.428a3p0, 0x1.965feap0 },
+  .one_third = 0x1.555556p-2f,
+  .two_thirds = 0x1.555556p-1f,
+};
+
+#define SmallestNormal 0x00800000
+#define Thresh 0x7f000000 /* asuint(INFINITY) - SmallestNormal.  */
+#define MantissaMask 0x007fffff
+#define HalfExp 0x3f000000
+
+static svfloat32_t NOINLINE
+special_case (svfloat32_t x, svfloat32_t y, svbool_t special)
+{
+  return sv_call_f32 (cbrtf, x, y, special);
+}
+
+static inline svfloat32_t
+shifted_lookup (const svbool_t pg, const float32_t *table, svint32_t i)
+{
+  return svld1_gather_index (pg, table, svadd_x (pg, i, 2));
+}
+
+/* Approximation for vector single-precision cbrt(x) using Newton iteration
+   with initial guess obtained by a low-order polynomial. Greatest error
+   is 1.64 ULP. This is observed for every value where the mantissa is
+   0x1.85a2aa and the exponent is a multiple of 3, for example:
+   _ZGVsMxv_cbrtf (0x1.85a2aap+3) got 0x1.267936p+1
+				 want 0x1.267932p+1.  */
+svfloat32_t SV_NAME_F1 (cbrt) (svfloat32_t x, const svbool_t pg)
+{
+  const struct data *d = ptr_barrier (&data);
+
+  svfloat32_t ax = svabs_x (pg, x);
+  svuint32_t iax = svreinterpret_u32 (ax);
+  svuint32_t sign = sveor_x (pg, svreinterpret_u32 (x), iax);
+
+  /* Subnormal, +/-0 and special values.  */
+  svbool_t special = svcmpge (pg, svsub_x (pg, iax, SmallestNormal), Thresh);
+
+  /* Decompose |x| into m * 2^e, where m is in [0.5, 1.0]. This is a vector
+     version of frexpf, which gets subnormal values wrong - these have to be
+     special-cased as a result.  */
+  svfloat32_t m = svreinterpret_f32 (svorr_x (
+      pg, svand_x (pg, svreinterpret_u32 (x), MantissaMask), HalfExp));
+  svint32_t e = svsub_x (pg, svreinterpret_s32 (svlsr_x (pg, iax, 23)), 126);
+
+  /* p is a rough approximation for cbrt(m) in [0.5, 1.0]. The better this is,
+     the less accurate the next stage of the algorithm needs to be. An order-4
+     polynomial is enough for one Newton iteration.  */
+  svfloat32_t p
+      = sv_pairwise_poly_3_f32_x (pg, m, svmul_x (pg, m, m), d->poly);
+
+  /* One iteration of Newton's method for iteratively approximating cbrt.  */
+  svfloat32_t m_by_3 = svmul_x (pg, m, d->one_third);
+  svfloat32_t a = svmla_x (pg, svdiv_x (pg, m_by_3, svmul_x (pg, p, p)), p,
+			   d->two_thirds);
+
+  /* Assemble the result by the following:
+
+     cbrt(x) = cbrt(m) * 2 ^ (e / 3).
+
+     We can get 2 ^ round(e / 3) using ldexp and integer divide, but since e is
+     not necessarily a multiple of 3 we lose some information.
+
+     Let q = 2 ^ round(e / 3), then t = 2 ^ (e / 3) / q.
+
+     Then we know t = 2 ^ (i / 3), where i is the remainder from e / 3, which
+     is an integer in [-2, 2], and can be looked up in the table T. Hence the
+     result is assembled as:
+
+     cbrt(x) = cbrt(m) * t * 2 ^ round(e / 3) * sign.  */
+  svfloat32_t ef = svmul_x (pg, svcvt_f32_x (pg, e), d->one_third);
+  svint32_t ey = svcvt_s32_x (pg, ef);
+  svint32_t em3 = svmls_x (pg, e, ey, 3);
+
+  svfloat32_t my = shifted_lookup (pg, d->table, em3);
+  my = svmul_x (pg, my, a);
+
+  /* Vector version of ldexpf.  */
+  svfloat32_t y = svscale_x (pg, my, ey);
+
+  if (__glibc_unlikely (svptest_any (pg, special)))
+    return special_case (
+	x, svreinterpret_f32 (svorr_x (pg, svreinterpret_u32 (y), sign)),
+	special);
+
+  /* Copy sign.  */
+  return svreinterpret_f32 (svorr_x (pg, svreinterpret_u32 (y), sign));
+}
diff --git a/sysdeps/aarch64/fpu/finite_pow.h b/sysdeps/aarch64/fpu/finite_pow.h
new file mode 100644
index 0000000000..84c93d4048
--- /dev/null
+++ b/sysdeps/aarch64/fpu/finite_pow.h
@@ -0,0 +1,373 @@
+/* Double-precision x^y function.
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "math_config.h"
+
+/* Scalar version of pow used for fallbacks in vector implementations.  */
+
+/* Data is defined in v_pow_log_data.c.  */
+#define N_LOG (1 << V_POW_LOG_TABLE_BITS)
+#define Off 0x3fe6955500000000
+#define As __v_pow_log_data.poly
+
+/* Data is defined in v_pow_exp_data.c.  */
+#define N_EXP (1 << V_POW_EXP_TABLE_BITS)
+#define SignBias (0x800 << V_POW_EXP_TABLE_BITS)
+#define SmallExp 0x3c9 /* top12(0x1p-54).  */
+#define BigExp 0x408   /* top12(512.0).  */
+#define ThresExp 0x03f /* BigExp - SmallExp.  */
+#define InvLn2N __v_pow_exp_data.n_over_ln2
+#define Ln2HiN __v_pow_exp_data.ln2_over_n_hi
+#define Ln2LoN __v_pow_exp_data.ln2_over_n_lo
+#define SBits __v_pow_exp_data.sbits
+#define Cs __v_pow_exp_data.poly
+
+/* Constants associated with pow.  */
+#define SmallPowX 0x001 /* top12(0x1p-126).  */
+#define BigPowX 0x7ff	/* top12(INFINITY).  */
+#define ThresPowX 0x7fe /* BigPowX - SmallPowX.  */
+#define SmallPowY 0x3be /* top12(0x1.e7b6p-65).  */
+#define BigPowY 0x43e	/* top12(0x1.749p62).  */
+#define ThresPowY 0x080 /* BigPowY - SmallPowY.  */
+
+/* Top 12 bits of a double (sign and exponent bits).  */
+static inline uint32_t
+top12 (double x)
+{
+  return asuint64 (x) >> 52;
+}
+
+/* Compute y+TAIL = log(x) where the rounded result is y and TAIL has about
+   additional 15 bits precision.  IX is the bit representation of x, but
+   normalized in the subnormal range using the sign bit for the exponent.  */
+static inline double
+log_inline (uint64_t ix, double *tail)
+{
+  /* x = 2^k z; where z is in range [Off,2*Off) and exact.
+     The range is split into N subintervals.
+     The ith subinterval contains z and c is near its center.  */
+  uint64_t tmp = ix - Off;
+  int i = (tmp >> (52 - V_POW_LOG_TABLE_BITS)) & (N_LOG - 1);
+  int k = (int64_t) tmp >> 52; /* arithmetic shift.  */
+  uint64_t iz = ix - (tmp & 0xfffULL << 52);
+  double z = asdouble (iz);
+  double kd = (double) k;
+
+  /* log(x) = k*Ln2 + log(c) + log1p(z/c-1).  */
+  double invc = __v_pow_log_data.invc[i];
+  double logc = __v_pow_log_data.logc[i];
+  double logctail = __v_pow_log_data.logctail[i];
+
+  /* Note: 1/c is j/N or j/N/2 where j is an integer in [N,2N) and
+     |z/c - 1| < 1/N, so r = z/c - 1 is exactly representible.  */
+  double r = fma (z, invc, -1.0);
+
+  /* k*Ln2 + log(c) + r.  */
+  double t1 = kd * __v_pow_log_data.ln2_hi + logc;
+  double t2 = t1 + r;
+  double lo1 = kd * __v_pow_log_data.ln2_lo + logctail;
+  double lo2 = t1 - t2 + r;
+
+  /* Evaluation is optimized assuming superscalar pipelined execution.  */
+  double ar = As[0] * r;
+  double ar2 = r * ar;
+  double ar3 = r * ar2;
+  /* k*Ln2 + log(c) + r + A[0]*r*r.  */
+  double hi = t2 + ar2;
+  double lo3 = fma (ar, r, -ar2);
+  double lo4 = t2 - hi + ar2;
+  /* p = log1p(r) - r - A[0]*r*r.  */
+  double p = (ar3
+	      * (As[1] + r * As[2]
+		 + ar2 * (As[3] + r * As[4] + ar2 * (As[5] + r * As[6]))));
+  double lo = lo1 + lo2 + lo3 + lo4 + p;
+  double y = hi + lo;
+  *tail = hi - y + lo;
+  return y;
+}
+
+/* Handle cases that may overflow or underflow when computing the result that
+   is scale*(1+TMP) without intermediate rounding.  The bit representation of
+   scale is in SBITS, however it has a computed exponent that may have
+   overflown into the sign bit so that needs to be adjusted before using it as
+   a double.  (int32_t)KI is the k used in the argument reduction and exponent
+   adjustment of scale, positive k here means the result may overflow and
+   negative k means the result may underflow.  */
+static inline double
+special_case (double tmp, uint64_t sbits, uint64_t ki)
+{
+  double scale, y;
+
+  if ((ki & 0x80000000) == 0)
+    {
+      /* k > 0, the exponent of scale might have overflowed by <= 460.  */
+      sbits -= 1009ull << 52;
+      scale = asdouble (sbits);
+      y = 0x1p1009 * (scale + scale * tmp);
+      return y;
+    }
+  /* k < 0, need special care in the subnormal range.  */
+  sbits += 1022ull << 52;
+  /* Note: sbits is signed scale.  */
+  scale = asdouble (sbits);
+  y = scale + scale * tmp;
+#if WANT_SIMD_EXCEPT
+  if (fabs (y) < 1.0)
+    {
+      /* Round y to the right precision before scaling it into the subnormal
+	 range to avoid double rounding that can cause 0.5+E/2 ulp error where
+	 E is the worst-case ulp error outside the subnormal range.  So this
+	 is only useful if the goal is better than 1 ulp worst-case error.  */
+      double hi, lo, one = 1.0;
+      if (y < 0.0)
+	one = -1.0;
+      lo = scale - y + scale * tmp;
+      hi = one + y;
+      lo = one - hi + y + lo;
+      y = (hi + lo) - one;
+      /* Fix the sign of 0.  */
+      if (y == 0.0)
+	y = asdouble (sbits & 0x8000000000000000);
+      /* The underflow exception needs to be signaled explicitly.  */
+      force_eval_double (opt_barrier_double (0x1p-1022) * 0x1p-1022);
+    }
+#endif
+  y = 0x1p-1022 * y;
+  return y;
+}
+
+/* Computes sign*exp(x+xtail) where |xtail| < 2^-8/N and |xtail| <= |x|.
+   The sign_bias argument is SignBias or 0 and sets the sign to -1 or 1.  */
+static inline double
+exp_inline (double x, double xtail, uint32_t sign_bias)
+{
+  uint32_t abstop = top12 (x) & 0x7ff;
+  if (__glibc_unlikely (abstop - SmallExp >= ThresExp))
+    {
+      if (abstop - SmallExp >= 0x80000000)
+	{
+	  /* Avoid spurious underflow for tiny x.  */
+	  /* Note: 0 is common input.  */
+	  return sign_bias ? -1.0 : 1.0;
+	}
+      if (abstop >= top12 (1024.0))
+	{
+	  /* Note: inf and nan are already handled.  */
+	  /* Skip errno handling.  */
+#if WANT_SIMD_EXCEPT
+	  return asuint64 (x) >> 63 ? __math_uflow (sign_bias)
+				    : __math_oflow (sign_bias);
+#else
+	  double res_uoflow = asuint64 (x) >> 63 ? 0.0 : INFINITY;
+	  return sign_bias ? -res_uoflow : res_uoflow;
+#endif
+	}
+      /* Large x is special cased below.  */
+      abstop = 0;
+    }
+
+  /* exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)].  */
+  /* x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N].  */
+  double z = InvLn2N * x;
+  double kd = round (z);
+  uint64_t ki = lround (z);
+  double r = x - kd * Ln2HiN - kd * Ln2LoN;
+  /* The code assumes 2^-200 < |xtail| < 2^-8/N.  */
+  r += xtail;
+  /* 2^(k/N) ~= scale.  */
+  uint64_t idx = ki & (N_EXP - 1);
+  uint64_t top = (ki + sign_bias) << (52 - V_POW_EXP_TABLE_BITS);
+  /* This is only a valid scale when -1023*N < k < 1024*N.  */
+  uint64_t sbits = SBits[idx] + top;
+  /* exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (exp(r) - 1).  */
+  /* Evaluation is optimized assuming superscalar pipelined execution.  */
+  double r2 = r * r;
+  double tmp = r + r2 * Cs[0] + r * r2 * (Cs[1] + r * Cs[2]);
+  if (__glibc_unlikely (abstop == 0))
+    return special_case (tmp, sbits, ki);
+  double scale = asdouble (sbits);
+  /* Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there
+     is no spurious underflow here even without fma.  */
+  return scale + scale * tmp;
+}
+
+/* Computes exp(x+xtail) where |xtail| < 2^-8/N and |xtail| <= |x|.
+   A version of exp_inline that is not inlined and for which sign_bias is
+   equal to 0.  */
+static double NOINLINE
+exp_nosignbias (double x, double xtail)
+{
+  uint32_t abstop = top12 (x) & 0x7ff;
+  if (__glibc_unlikely (abstop - SmallExp >= ThresExp))
+    {
+      /* Avoid spurious underflow for tiny x.  */
+      if (abstop - SmallExp >= 0x80000000)
+	return 1.0;
+      /* Note: inf and nan are already handled.  */
+      if (abstop >= top12 (1024.0))
+#if WANT_SIMD_EXCEPT
+	return asuint64 (x) >> 63 ? __math_uflow (0) : __math_oflow (0);
+#else
+	return asuint64 (x) >> 63 ? 0.0 : INFINITY;
+#endif
+      /* Large x is special cased below.  */
+      abstop = 0;
+    }
+
+  /* exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)].  */
+  /* x = ln2/N*k + r, with k integer and r in [-ln2/2N, ln2/2N].  */
+  double z = InvLn2N * x;
+  double kd = round (z);
+  uint64_t ki = lround (z);
+  double r = x - kd * Ln2HiN - kd * Ln2LoN;
+  /* The code assumes 2^-200 < |xtail| < 2^-8/N.  */
+  r += xtail;
+  /* 2^(k/N) ~= scale.  */
+  uint64_t idx = ki & (N_EXP - 1);
+  uint64_t top = ki << (52 - V_POW_EXP_TABLE_BITS);
+  /* This is only a valid scale when -1023*N < k < 1024*N.  */
+  uint64_t sbits = SBits[idx] + top;
+  /* exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (tail + exp(r) - 1).  */
+  double r2 = r * r;
+  double tmp = r + r2 * Cs[0] + r * r2 * (Cs[1] + r * Cs[2]);
+  if (__glibc_unlikely (abstop == 0))
+    return special_case (tmp, sbits, ki);
+  double scale = asdouble (sbits);
+  /* Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there
+     is no spurious underflow here even without fma.  */
+  return scale + scale * tmp;
+}
+
+/* Returns 0 if not int, 1 if odd int, 2 if even int.  The argument is
+   the bit representation of a non-zero finite floating-point value.  */
+static inline int
+checkint (uint64_t iy)
+{
+  int e = iy >> 52 & 0x7ff;
+  if (e < 0x3ff)
+    return 0;
+  if (e > 0x3ff + 52)
+    return 2;
+  if (iy & ((1ULL << (0x3ff + 52 - e)) - 1))
+    return 0;
+  if (iy & (1ULL << (0x3ff + 52 - e)))
+    return 1;
+  return 2;
+}
+
+/* Returns 1 if input is the bit representation of 0, infinity or nan.  */
+static inline int
+zeroinfnan (uint64_t i)
+{
+  return 2 * i - 1 >= 2 * asuint64 (INFINITY) - 1;
+}
+
+static double NOINLINE
+pow_scalar_special_case (double x, double y)
+{
+  uint32_t sign_bias = 0;
+  uint64_t ix, iy;
+  uint32_t topx, topy;
+
+  ix = asuint64 (x);
+  iy = asuint64 (y);
+  topx = top12 (x);
+  topy = top12 (y);
+  if (__glibc_unlikely (topx - SmallPowX >= ThresPowX
+		|| (topy & 0x7ff) - SmallPowY >= ThresPowY))
+    {
+      /* Note: if |y| > 1075 * ln2 * 2^53 ~= 0x1.749p62 then pow(x,y) = inf/0
+	 and if |y| < 2^-54 / 1075 ~= 0x1.e7b6p-65 then pow(x,y) = +-1.  */
+      /* Special cases: (x < 0x1p-126 or inf or nan) or
+	 (|y| < 0x1p-65 or |y| >= 0x1p63 or nan).  */
+      if (__glibc_unlikely (zeroinfnan (iy)))
+	{
+	  if (2 * iy == 0)
+	    return issignaling_inline (x) ? x + y : 1.0;
+	  if (ix == asuint64 (1.0))
+	    return issignaling_inline (y) ? x + y : 1.0;
+	  if (2 * ix > 2 * asuint64 (INFINITY)
+	      || 2 * iy > 2 * asuint64 (INFINITY))
+	    return x + y;
+	  if (2 * ix == 2 * asuint64 (1.0))
+	    return 1.0;
+	  if ((2 * ix < 2 * asuint64 (1.0)) == !(iy >> 63))
+	    return 0.0; /* |x|<1 && y==inf or |x|>1 && y==-inf.  */
+	  return y * y;
+	}
+      if (__glibc_unlikely (zeroinfnan (ix)))
+	{
+	  double x2 = x * x;
+	  if (ix >> 63 && checkint (iy) == 1)
+	    {
+	      x2 = -x2;
+	      sign_bias = 1;
+	    }
+#if WANT_SIMD_EXCEPT
+	  if (2 * ix == 0 && iy >> 63)
+	    return __math_divzero (sign_bias);
+#endif
+	  return iy >> 63 ? 1 / x2 : x2;
+	}
+      /* Here x and y are non-zero finite.  */
+      if (ix >> 63)
+	{
+	  /* Finite x < 0.  */
+	  int yint = checkint (iy);
+	  if (yint == 0)
+#if WANT_SIMD_EXCEPT
+	    return __math_invalid (x);
+#else
+	    return __builtin_nan ("");
+#endif
+	  if (yint == 1)
+	    sign_bias = SignBias;
+	  ix &= 0x7fffffffffffffff;
+	  topx &= 0x7ff;
+	}
+      if ((topy & 0x7ff) - SmallPowY >= ThresPowY)
+	{
+	  /* Note: sign_bias == 0 here because y is not odd.  */
+	  if (ix == asuint64 (1.0))
+	    return 1.0;
+	  /* |y| < 2^-65, x^y ~= 1 + y*log(x).  */
+	  if ((topy & 0x7ff) < SmallPowY)
+	    return 1.0;
+#if WANT_SIMD_EXCEPT
+	  return (ix > asuint64 (1.0)) == (topy < 0x800) ? __math_oflow (0)
+							 : __math_uflow (0);
+#else
+	  return (ix > asuint64 (1.0)) == (topy < 0x800) ? INFINITY : 0;
+#endif
+	}
+      if (topx == 0)
+	{
+	  /* Normalize subnormal x so exponent becomes negative.  */
+	  ix = asuint64 (x * 0x1p52);
+	  ix &= 0x7fffffffffffffff;
+	  ix -= 52ULL << 52;
+	}
+    }
+
+  double lo;
+  double hi = log_inline (ix, &lo);
+  double ehi = y * hi;
+  double elo = y * lo + fma (y, hi, -ehi);
+  return exp_inline (ehi, elo, sign_bias);
+}
diff --git a/sysdeps/aarch64/fpu/hypot_advsimd.c b/sysdeps/aarch64/fpu/hypot_advsimd.c
new file mode 100644
index 0000000000..e4e279fa0c
--- /dev/null
+++ b/sysdeps/aarch64/fpu/hypot_advsimd.c
@@ -0,0 +1,97 @@
+/* Double-precision vector (Advanced SIMD) hypot function
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "v_math.h"
+
+#if WANT_SIMD_EXCEPT
+static const struct data
+{
+  uint64x2_t tiny_bound, thres;
+} data = {
+  .tiny_bound = V2 (0x2000000000000000), /* asuint (0x1p-511).  */
+  .thres = V2 (0x3fe0000000000000), /* asuint (0x1p511) - tiny_bound.  */
+};
+#else
+static const struct data
+{
+  uint64x2_t tiny_bound;
+  uint32x4_t thres;
+} data = {
+  .tiny_bound = V2 (0x0360000000000000), /* asuint (0x1p-969).  */
+  .thres = V4 (0x7c900000),	 /* asuint (inf) - tiny_bound.  */
+};
+#endif
+
+static float64x2_t VPCS_ATTR NOINLINE
+special_case (float64x2_t x, float64x2_t y, float64x2_t sqsum,
+	      uint32x2_t special)
+{
+  return v_call2_f64 (hypot, x, y, vsqrtq_f64 (sqsum), vmovl_u32 (special));
+}
+
+/* Vector implementation of double-precision hypot.
+   Maximum error observed is 1.21 ULP:
+   _ZGVnN2vv_hypot (0x1.6a1b193ff85b5p-204, 0x1.bc50676c2a447p-222)
+    got 0x1.6a1b19400964ep-204
+   want 0x1.6a1b19400964dp-204.  */
+#if WANT_SIMD_EXCEPT
+
+float64x2_t VPCS_ATTR V_NAME_D2 (hypot) (float64x2_t x, float64x2_t y)
+{
+  const struct data *d = ptr_barrier (&data);
+
+  float64x2_t ax = vabsq_f64 (x);
+  float64x2_t ay = vabsq_f64 (y);
+
+  uint64x2_t ix = vreinterpretq_u64_f64 (ax);
+  uint64x2_t iy = vreinterpretq_u64_f64 (ay);
+
+  /* Extreme values, NaNs, and infinities should be handled by the scalar
+     fallback for correct flag handling.  */
+  uint64x2_t specialx = vcgeq_u64 (vsubq_u64 (ix, d->tiny_bound), d->thres);
+  uint64x2_t specialy = vcgeq_u64 (vsubq_u64 (iy, d->tiny_bound), d->thres);
+  ax = v_zerofy_f64 (ax, specialx);
+  ay = v_zerofy_f64 (ay, specialy);
+  uint32x2_t special = vaddhn_u64 (specialx, specialy);
+
+  float64x2_t sqsum = vfmaq_f64 (vmulq_f64 (ax, ax), ay, ay);
+
+  if (__glibc_unlikely (v_any_u32h (special)))
+    return special_case (x, y, sqsum, special);
+
+  return vsqrtq_f64 (sqsum);
+}
+#else
+
+float64x2_t VPCS_ATTR V_NAME_D2 (hypot) (float64x2_t x, float64x2_t y)
+{
+  const struct data *d = ptr_barrier (&data);
+
+  float64x2_t sqsum = vfmaq_f64 (vmulq_f64 (x, x), y, y);
+
+  uint32x2_t special = vcge_u32 (
+      vsubhn_u64 (vreinterpretq_u64_f64 (sqsum), d->tiny_bound),
+      vget_low_u32 (d->thres));
+
+  if (__glibc_unlikely (v_any_u32h (special)))
+    return special_case (x, y, sqsum, special);
+
+  return vsqrtq_f64 (sqsum);
+}
+#endif
diff --git a/sysdeps/aarch64/fpu/hypot_sve.c b/sysdeps/aarch64/fpu/hypot_sve.c
new file mode 100644
index 0000000000..74417040ac
--- /dev/null
+++ b/sysdeps/aarch64/fpu/hypot_sve.c
@@ -0,0 +1,54 @@
+/* Double-precision vector (SVE) hypot function
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "sv_math.h"
+
+static const struct data
+{
+  uint64_t tiny_bound, thres;
+} data = {
+  .tiny_bound = 0x0c80000000000000, /* asuint (0x1p-102).  */
+  .thres = 0x7300000000000000,	    /* asuint (inf) - tiny_bound.  */
+};
+
+static svfloat64_t NOINLINE
+special_case (svfloat64_t sqsum, svfloat64_t x, svfloat64_t y, svbool_t pg,
+	      svbool_t special)
+{
+  return sv_call2_f64 (hypot, x, y, svsqrt_x (pg, sqsum), special);
+}
+
+/* SVE implementation of double-precision hypot.
+   Maximum error observed is 1.21 ULP:
+   _ZGVsMxvv_hypot (-0x1.6a22d0412cdd3p+352, 0x1.d3d89bd66fb1ap+330)
+    got 0x1.6a22d0412cfp+352
+   want 0x1.6a22d0412cf01p+352.  */
+svfloat64_t SV_NAME_D2 (hypot) (svfloat64_t x, svfloat64_t y, svbool_t pg)
+{
+  const struct data *d = ptr_barrier (&data);
+
+  svfloat64_t sqsum = svmla_x (pg, svmul_x (pg, x, x), y, y);
+
+  svbool_t special = svcmpge (
+      pg, svsub_x (pg, svreinterpret_u64 (sqsum), d->tiny_bound), d->thres);
+
+  if (__glibc_unlikely (svptest_any (pg, special)))
+    return special_case (sqsum, x, y, pg, special);
+  return svsqrt_x (pg, sqsum);
+}
diff --git a/sysdeps/aarch64/fpu/hypotf_advsimd.c b/sysdeps/aarch64/fpu/hypotf_advsimd.c
new file mode 100644
index 0000000000..34818b021a
--- /dev/null
+++ b/sysdeps/aarch64/fpu/hypotf_advsimd.c
@@ -0,0 +1,98 @@
+/* Single-precision vector (Advanced SIMD) hypot function
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "v_math.h"
+
+#if WANT_SIMD_EXCEPT
+static const struct data
+{
+  uint32x4_t tiny_bound, thres;
+} data = {
+  .tiny_bound = V4 (0x20000000), /* asuint (0x1p-63).  */
+  .thres = V4 (0x3f000000), /* asuint (0x1p63) - tiny_bound.  */
+};
+#else
+static const struct data
+{
+  uint32x4_t tiny_bound;
+  uint16x8_t thres;
+} data = {
+  .tiny_bound = V4 (0x0C800000), /* asuint (0x1p-102).  */
+  .thres = V8 (0x7300), /* asuint (inf) - tiny_bound.  */
+};
+#endif
+
+static float32x4_t VPCS_ATTR NOINLINE
+special_case (float32x4_t x, float32x4_t y, float32x4_t sqsum,
+	      uint16x4_t special)
+{
+  return v_call2_f32 (hypotf, x, y, vsqrtq_f32 (sqsum), vmovl_u16 (special));
+}
+
+/* Vector implementation of single-precision hypot.
+   Maximum error observed is 1.21 ULP:
+   _ZGVnN4vv_hypotf (0x1.6a419cp-13, 0x1.82a852p-22) got 0x1.6a41d2p-13
+						    want 0x1.6a41dp-13.  */
+#if WANT_SIMD_EXCEPT
+
+float32x4_t VPCS_ATTR V_NAME_F2 (hypot) (float32x4_t x, float32x4_t y)
+{
+  const struct data *d = ptr_barrier (&data);
+
+  float32x4_t ax = vabsq_f32 (x);
+  float32x4_t ay = vabsq_f32 (y);
+
+  uint32x4_t ix = vreinterpretq_u32_f32 (ax);
+  uint32x4_t iy = vreinterpretq_u32_f32 (ay);
+
+  /* Extreme values, NaNs, and infinities should be handled by the scalar
+     fallback for correct flag handling.  */
+  uint32x4_t specialx = vcgeq_u32 (vsubq_u32 (ix, d->tiny_bound), d->thres);
+  uint32x4_t specialy = vcgeq_u32 (vsubq_u32 (iy, d->tiny_bound), d->thres);
+  ax = v_zerofy_f32 (ax, specialx);
+  ay = v_zerofy_f32 (ay, specialy);
+  uint16x4_t special = vaddhn_u32 (specialx, specialy);
+
+  float32x4_t sqsum = vfmaq_f32 (vmulq_f32 (ax, ax), ay, ay);
+
+  if (__glibc_unlikely (v_any_u16h (special)))
+    return special_case (x, y, sqsum, special);
+
+  return vsqrtq_f32 (sqsum);
+}
+#else
+
+float32x4_t VPCS_ATTR V_NAME_F2 (hypot) (float32x4_t x, float32x4_t y)
+{
+  const struct data *d = ptr_barrier (&data);
+
+  float32x4_t sqsum = vfmaq_f32 (vmulq_f32 (x, x), y, y);
+
+  uint16x4_t special = vcge_u16 (
+      vsubhn_u32 (vreinterpretq_u32_f32 (sqsum), d->tiny_bound),
+      vget_low_u16 (d->thres));
+
+  if (__glibc_unlikely (v_any_u16h (special)))
+    return special_case (x, y, sqsum, special);
+
+  return vsqrtq_f32 (sqsum);
+}
+#endif
+libmvec_hidden_def (V_NAME_F2 (hypot))
+HALF_WIDTH_ALIAS_F2(hypot)
diff --git a/sysdeps/aarch64/fpu/hypotf_sve.c b/sysdeps/aarch64/fpu/hypotf_sve.c
new file mode 100644
index 0000000000..3a403de66e
--- /dev/null
+++ b/sysdeps/aarch64/fpu/hypotf_sve.c
@@ -0,0 +1,48 @@
+/* Single-precision vector (SVE) hypot function
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "sv_math.h"
+
+#define TinyBound 0x0c800000 /* asuint (0x1p-102).  */
+#define Thres 0x73000000     /* 0x70000000 - TinyBound.  */
+
+static svfloat32_t NOINLINE
+special_case (svfloat32_t sqsum, svfloat32_t x, svfloat32_t y, svbool_t pg,
+	      svbool_t special)
+{
+  return sv_call2_f32 (hypotf, x, y, svsqrt_x (pg, sqsum), special);
+}
+
+/* SVE implementation of single-precision hypot.
+   Maximum error observed is 1.21 ULP:
+   _ZGVsMxvv_hypotf (0x1.6a213cp-19, -0x1.32b982p-26) got 0x1.6a2346p-19
+						     want 0x1.6a2344p-19.  */
+svfloat32_t SV_NAME_F2 (hypot) (svfloat32_t x, svfloat32_t y,
+				const svbool_t pg)
+{
+  svfloat32_t sqsum = svmla_x (pg, svmul_x (pg, x, x), y, y);
+
+  svbool_t special = svcmpge (
+      pg, svsub_x (pg, svreinterpret_u32 (sqsum), TinyBound), Thres);
+
+  if (__glibc_unlikely (svptest_any (pg, special)))
+    return special_case (sqsum, x, y, pg, special);
+
+  return svsqrt_x (pg, sqsum);
+}
diff --git a/sysdeps/aarch64/fpu/pow_advsimd.c b/sysdeps/aarch64/fpu/pow_advsimd.c
new file mode 100644
index 0000000000..3c91e3e183
--- /dev/null
+++ b/sysdeps/aarch64/fpu/pow_advsimd.c
@@ -0,0 +1,249 @@
+/* Double-precision vector (AdvSIMD) pow function
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "v_math.h"
+
+/* Defines parameters of the approximation and scalar fallback.  */
+#include "finite_pow.h"
+
+#define VecSmallExp v_u64 (SmallExp)
+#define VecThresExp v_u64 (ThresExp)
+
+#define VecSmallPowX v_u64 (SmallPowX)
+#define VecThresPowX v_u64 (ThresPowX)
+#define VecSmallPowY v_u64 (SmallPowY)
+#define VecThresPowY v_u64 (ThresPowY)
+
+static const struct data
+{
+  float64x2_t log_poly[6];
+  float64x2_t exp_poly[3];
+  float64x2_t ln2_hi, ln2_lo;
+  float64x2_t shift, inv_ln2_n, ln2_hi_n, ln2_lo_n, small_powx;
+  uint64x2_t inf;
+} data = {
+  /* Coefficients copied from v_pow_log_data.c
+     relative error: 0x1.11922ap-70 in [-0x1.6bp-8, 0x1.6bp-8]
+     Coefficients are scaled to match the scaling during evaluation.  */
+  .log_poly
+  = { V2 (0x1.555555555556p-2 * -2), V2 (-0x1.0000000000006p-2 * -2),
+      V2 (0x1.999999959554ep-3 * 4), V2 (-0x1.555555529a47ap-3 * 4),
+      V2 (0x1.2495b9b4845e9p-3 * -8), V2 (-0x1.0002b8b263fc3p-3 * -8) },
+  .ln2_hi = V2 (0x1.62e42fefa3800p-1),
+  .ln2_lo = V2 (0x1.ef35793c76730p-45),
+  /* Polynomial coefficients: abs error: 1.43*2^-58, ulp error: 0.549
+     (0.550 without fma) if |x| < ln2/512.  */
+  .exp_poly = { V2 (0x1.fffffffffffd4p-2), V2 (0x1.5555571d6ef9p-3),
+		V2 (0x1.5555576a5adcep-5) },
+  .shift = V2 (0x1.8p52), /* round to nearest int. without intrinsics.  */
+  .inv_ln2_n = V2 (0x1.71547652b82fep8), /* N/ln2.  */
+  .ln2_hi_n = V2 (0x1.62e42fefc0000p-9), /* ln2/N.  */
+  .ln2_lo_n = V2 (-0x1.c610ca86c3899p-45),
+  .small_powx = V2 (0x1p-126),
+  .inf = V2 (0x7ff0000000000000)
+};
+
+#define A(i) data.log_poly[i]
+#define C(i) data.exp_poly[i]
+
+/* This version implements an algorithm close to scalar pow but
+   - does not implement the trick in the exp's specialcase subroutine to avoid
+     double-rounding,
+   - does not use a tail in the exponential core computation,
+   - and pow's exp polynomial order and table bits might differ.
+
+   Maximum measured error is 1.04 ULPs:
+   _ZGVnN2vv_pow(0x1.024a3e56b3c3p-136, 0x1.87910248b58acp-13)
+     got 0x1.f71162f473251p-1
+    want 0x1.f71162f473252p-1.  */
+
+static inline float64x2_t
+v_masked_lookup_f64 (const double *table, uint64x2_t i)
+{
+  return (float64x2_t){
+    table[(i[0] >> (52 - V_POW_LOG_TABLE_BITS)) & (N_LOG - 1)],
+    table[(i[1] >> (52 - V_POW_LOG_TABLE_BITS)) & (N_LOG - 1)]
+  };
+}
+
+/* Compute y+TAIL = log(x) where the rounded result is y and TAIL has about
+   additional 15 bits precision.  IX is the bit representation of x, but
+   normalized in the subnormal range using the sign bit for the exponent.  */
+static inline float64x2_t
+v_log_inline (uint64x2_t ix, float64x2_t *tail, const struct data *d)
+{
+  /* x = 2^k z; where z is in range [OFF,2*OFF) and exact.
+     The range is split into N subintervals.
+     The ith subinterval contains z and c is near its center.  */
+  uint64x2_t tmp = vsubq_u64 (ix, v_u64 (Off));
+  int64x2_t k
+      = vshrq_n_s64 (vreinterpretq_s64_u64 (tmp), 52); /* arithmetic shift.  */
+  uint64x2_t iz = vsubq_u64 (ix, vandq_u64 (tmp, v_u64 (0xfffULL << 52)));
+  float64x2_t z = vreinterpretq_f64_u64 (iz);
+  float64x2_t kd = vcvtq_f64_s64 (k);
+  /* log(x) = k*Ln2 + log(c) + log1p(z/c-1).  */
+  float64x2_t invc = v_masked_lookup_f64 (__v_pow_log_data.invc, tmp);
+  float64x2_t logc = v_masked_lookup_f64 (__v_pow_log_data.logc, tmp);
+  float64x2_t logctail = v_masked_lookup_f64 (__v_pow_log_data.logctail, tmp);
+  /* Note: 1/c is j/N or j/N/2 where j is an integer in [N,2N) and
+     |z/c - 1| < 1/N, so r = z/c - 1 is exactly representible.  */
+  float64x2_t r = vfmaq_f64 (v_f64 (-1.0), z, invc);
+  /* k*Ln2 + log(c) + r.  */
+  float64x2_t t1 = vfmaq_f64 (logc, kd, d->ln2_hi);
+  float64x2_t t2 = vaddq_f64 (t1, r);
+  float64x2_t lo1 = vfmaq_f64 (logctail, kd, d->ln2_lo);
+  float64x2_t lo2 = vaddq_f64 (vsubq_f64 (t1, t2), r);
+  /* Evaluation is optimized assuming superscalar pipelined execution.  */
+  float64x2_t ar = vmulq_f64 (v_f64 (-0.5), r);
+  float64x2_t ar2 = vmulq_f64 (r, ar);
+  float64x2_t ar3 = vmulq_f64 (r, ar2);
+  /* k*Ln2 + log(c) + r + A[0]*r*r.  */
+  float64x2_t hi = vaddq_f64 (t2, ar2);
+  float64x2_t lo3 = vfmaq_f64 (vnegq_f64 (ar2), ar, r);
+  float64x2_t lo4 = vaddq_f64 (vsubq_f64 (t2, hi), ar2);
+  /* p = log1p(r) - r - A[0]*r*r.  */
+  float64x2_t a56 = vfmaq_f64 (A (4), r, A (5));
+  float64x2_t a34 = vfmaq_f64 (A (2), r, A (3));
+  float64x2_t a12 = vfmaq_f64 (A (0), r, A (1));
+  float64x2_t p = vfmaq_f64 (a34, ar2, a56);
+  p = vfmaq_f64 (a12, ar2, p);
+  p = vmulq_f64 (ar3, p);
+  float64x2_t lo
+      = vaddq_f64 (vaddq_f64 (vaddq_f64 (vaddq_f64 (lo1, lo2), lo3), lo4), p);
+  float64x2_t y = vaddq_f64 (hi, lo);
+  *tail = vaddq_f64 (vsubq_f64 (hi, y), lo);
+  return y;
+}
+
+static float64x2_t VPCS_ATTR NOINLINE
+exp_special_case (float64x2_t x, float64x2_t xtail)
+{
+  return (float64x2_t){ exp_nosignbias (x[0], xtail[0]),
+			exp_nosignbias (x[1], xtail[1]) };
+}
+
+/* Computes sign*exp(x+xtail) where |xtail| < 2^-8/N and |xtail| <= |x|.  */
+static inline float64x2_t
+v_exp_inline (float64x2_t x, float64x2_t xtail, const struct data *d)
+{
+  /* Fallback to scalar exp_inline for all lanes if any lane
+     contains value of x s.t. |x| <= 2^-54 or >= 512.  */
+  uint64x2_t abstop
+      = vshrq_n_u64 (vandq_u64 (vreinterpretq_u64_f64 (x), d->inf), 52);
+  uint64x2_t uoflowx
+      = vcgeq_u64 (vsubq_u64 (abstop, VecSmallExp), VecThresExp);
+  if (__glibc_unlikely (v_any_u64 (uoflowx)))
+    return exp_special_case (x, xtail);
+
+  /* exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)].  */
+  /* x = ln2/N*k + r, with k integer and r in [-ln2/2N, ln2/2N].  */
+  float64x2_t z = vmulq_f64 (d->inv_ln2_n, x);
+  /* z - kd is in [-1, 1] in non-nearest rounding modes.  */
+  float64x2_t kd = vaddq_f64 (z, d->shift);
+  uint64x2_t ki = vreinterpretq_u64_f64 (kd);
+  kd = vsubq_f64 (kd, d->shift);
+  float64x2_t r = vfmsq_f64 (x, kd, d->ln2_hi_n);
+  r = vfmsq_f64 (r, kd, d->ln2_lo_n);
+  /* The code assumes 2^-200 < |xtail| < 2^-8/N.  */
+  r = vaddq_f64 (r, xtail);
+  /* 2^(k/N) ~= scale.  */
+  uint64x2_t idx = vandq_u64 (ki, v_u64 (N_EXP - 1));
+  uint64x2_t top = vshlq_n_u64 (ki, 52 - V_POW_EXP_TABLE_BITS);
+  /* This is only a valid scale when -1023*N < k < 1024*N.  */
+  uint64x2_t sbits = v_lookup_u64 (SBits, idx);
+  sbits = vaddq_u64 (sbits, top);
+  /* exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (exp(r) - 1).  */
+  float64x2_t r2 = vmulq_f64 (r, r);
+  float64x2_t tmp = vfmaq_f64 (C (1), r, C (2));
+  tmp = vfmaq_f64 (C (0), r, tmp);
+  tmp = vfmaq_f64 (r, r2, tmp);
+  float64x2_t scale = vreinterpretq_f64_u64 (sbits);
+  /* Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there
+     is no spurious underflow here even without fma.  */
+  return vfmaq_f64 (scale, scale, tmp);
+}
+
+static float64x2_t NOINLINE VPCS_ATTR
+scalar_fallback (float64x2_t x, float64x2_t y)
+{
+  return (float64x2_t){ pow_scalar_special_case (x[0], y[0]),
+			pow_scalar_special_case (x[1], y[1]) };
+}
+
+float64x2_t VPCS_ATTR V_NAME_D2 (pow) (float64x2_t x, float64x2_t y)
+{
+  const struct data *d = ptr_barrier (&data);
+  /* Case of x <= 0 is too complicated to be vectorised efficiently here,
+     fallback to scalar pow for all lanes if any x < 0 detected.  */
+  if (v_any_u64 (vclezq_s64 (vreinterpretq_s64_f64 (x))))
+    return scalar_fallback (x, y);
+
+  uint64x2_t vix = vreinterpretq_u64_f64 (x);
+  uint64x2_t viy = vreinterpretq_u64_f64 (y);
+  uint64x2_t iay = vandq_u64 (viy, d->inf);
+
+  /* Special cases of x or y.  */
+#if WANT_SIMD_EXCEPT
+  /* Small or large.  */
+  uint64x2_t vtopx = vshrq_n_u64 (vix, 52);
+  uint64x2_t vabstopy = vshrq_n_u64 (iay, 52);
+  uint64x2_t specialx
+      = vcgeq_u64 (vsubq_u64 (vtopx, VecSmallPowX), VecThresPowX);
+  uint64x2_t specialy
+      = vcgeq_u64 (vsubq_u64 (vabstopy, VecSmallPowY), VecThresPowY);
+#else
+  /* The case y==0 does not trigger a special case, since in this case it is
+     necessary to fix the result only if x is a signalling nan, which already
+     triggers a special case. We test y==0 directly in the scalar fallback.  */
+  uint64x2_t iax = vandq_u64 (vix, d->inf);
+  uint64x2_t specialx = vcgeq_u64 (iax, d->inf);
+  uint64x2_t specialy = vcgeq_u64 (iay, d->inf);
+#endif
+  uint64x2_t special = vorrq_u64 (specialx, specialy);
+  /* Fallback to scalar on all lanes if any lane is inf or nan.  */
+  if (__glibc_unlikely (v_any_u64 (special)))
+    return scalar_fallback (x, y);
+
+  /* Small cases of x: |x| < 0x1p-126.  */
+  uint64x2_t smallx = vcaltq_f64 (x, d->small_powx);
+  if (__glibc_unlikely (v_any_u64 (smallx)))
+    {
+      /* Update ix if top 12 bits of x are 0.  */
+      uint64x2_t sub_x = vceqzq_u64 (vshrq_n_u64 (vix, 52));
+      if (__glibc_unlikely (v_any_u64 (sub_x)))
+	{
+	  /* Normalize subnormal x so exponent becomes negative.  */
+	  uint64x2_t vix_norm = vreinterpretq_u64_f64 (
+	      vabsq_f64 (vmulq_f64 (x, vcvtq_f64_u64 (v_u64 (1ULL << 52)))));
+	  vix_norm = vsubq_u64 (vix_norm, v_u64 (52ULL << 52));
+	  vix = vbslq_u64 (sub_x, vix_norm, vix);
+	}
+    }
+
+  /* Vector Log(ix, &lo).  */
+  float64x2_t vlo;
+  float64x2_t vhi = v_log_inline (vix, &vlo, d);
+
+  /* Vector Exp(y_loghi, y_loglo).  */
+  float64x2_t vehi = vmulq_f64 (y, vhi);
+  float64x2_t velo = vmulq_f64 (y, vlo);
+  float64x2_t vemi = vfmsq_f64 (vehi, y, vhi);
+  velo = vsubq_f64 (velo, vemi);
+  return v_exp_inline (vehi, velo, d);
+}
diff --git a/sysdeps/aarch64/fpu/pow_sve.c b/sysdeps/aarch64/fpu/pow_sve.c
new file mode 100644
index 0000000000..4c0bf8956c
--- /dev/null
+++ b/sysdeps/aarch64/fpu/pow_sve.c
@@ -0,0 +1,411 @@
+/* Double-precision vector (SVE) pow function
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+/* This version share a similar algorithm as AOR scalar pow.
+
+   The core computation consists in computing pow(x, y) as
+
+     exp (y * log (x)).
+
+   The algorithms for exp and log are very similar to scalar exp and log.
+   The log relies on table lookup for 3 variables and an order 8 polynomial.
+   It returns a high and a low contribution that are then passed to the exp,
+   to minimise the loss of accuracy in both routines.
+   The exp is based on 8-bit table lookup for scale and order-4 polynomial.
+   The SVE algorithm drops the tail in the exp computation at the price of
+   a lower accuracy, slightly above 1ULP.
+   The SVE algorithm also drops the special treatement of small (< 2^-65) and
+   large (> 2^63) finite values of |y|, as they only affect non-round to nearest
+   modes.
+
+   Maximum measured error is 1.04 ULPs:
+   SV_NAME_D2 (pow) (0x1.3d2d45bc848acp+63, -0x1.a48a38b40cd43p-12)
+     got 0x1.f7116284221fcp-1
+    want 0x1.f7116284221fdp-1.  */
+
+#include "math_config.h"
+#include "sv_math.h"
+
+/* Data is defined in v_pow_log_data.c.  */
+#define N_LOG (1 << V_POW_LOG_TABLE_BITS)
+#define A __v_pow_log_data.poly
+#define Off 0x3fe6955500000000
+
+/* Data is defined in v_pow_exp_data.c.  */
+#define N_EXP (1 << V_POW_EXP_TABLE_BITS)
+#define SignBias (0x800 << V_POW_EXP_TABLE_BITS)
+#define C __v_pow_exp_data.poly
+#define SmallExp 0x3c9 /* top12(0x1p-54).  */
+#define BigExp 0x408   /* top12(512.).  */
+#define ThresExp 0x03f /* BigExp - SmallExp.  */
+#define HugeExp 0x409  /* top12(1024.).  */
+
+/* Constants associated with pow.  */
+#define SmallPowX 0x001 /* top12(0x1p-126).  */
+#define BigPowX 0x7ff	/* top12(INFINITY).  */
+#define ThresPowX 0x7fe /* BigPowX - SmallPowX.  */
+#define SmallPowY 0x3be /* top12(0x1.e7b6p-65).  */
+#define BigPowY 0x43e	/* top12(0x1.749p62).  */
+#define ThresPowY 0x080 /* BigPowY - SmallPowY.  */
+
+/* Check if x is an integer.  */
+static inline svbool_t
+sv_isint (svbool_t pg, svfloat64_t x)
+{
+  return svcmpeq (pg, svrintz_z (pg, x), x);
+}
+
+/* Check if x is real not integer valued.  */
+static inline svbool_t
+sv_isnotint (svbool_t pg, svfloat64_t x)
+{
+  return svcmpne (pg, svrintz_z (pg, x), x);
+}
+
+/* Check if x is an odd integer.  */
+static inline svbool_t
+sv_isodd (svbool_t pg, svfloat64_t x)
+{
+  svfloat64_t y = svmul_x (pg, x, 0.5);
+  return sv_isnotint (pg, y);
+}
+
+/* Returns 0 if not int, 1 if odd int, 2 if even int.  The argument is
+   the bit representation of a non-zero finite floating-point value.  */
+static inline int
+checkint (uint64_t iy)
+{
+  int e = iy >> 52 & 0x7ff;
+  if (e < 0x3ff)
+    return 0;
+  if (e > 0x3ff + 52)
+    return 2;
+  if (iy & ((1ULL << (0x3ff + 52 - e)) - 1))
+    return 0;
+  if (iy & (1ULL << (0x3ff + 52 - e)))
+    return 1;
+  return 2;
+}
+
+/* Top 12 bits (sign and exponent of each double float lane).  */
+static inline svuint64_t
+sv_top12 (svfloat64_t x)
+{
+  return svlsr_x (svptrue_b64 (), svreinterpret_u64 (x), 52);
+}
+
+/* Returns 1 if input is the bit representation of 0, infinity or nan.  */
+static inline int
+zeroinfnan (uint64_t i)
+{
+  return 2 * i - 1 >= 2 * asuint64 (INFINITY) - 1;
+}
+
+/* Returns 1 if input is the bit representation of 0, infinity or nan.  */
+static inline svbool_t
+sv_zeroinfnan (svbool_t pg, svuint64_t i)
+{
+  return svcmpge (pg, svsub_x (pg, svmul_x (pg, i, 2), 1),
+		  2 * asuint64 (INFINITY) - 1);
+}
+
+/* Handle cases that may overflow or underflow when computing the result that
+   is scale*(1+TMP) without intermediate rounding.  The bit representation of
+   scale is in SBITS, however it has a computed exponent that may have
+   overflown into the sign bit so that needs to be adjusted before using it as
+   a double.  (int32_t)KI is the k used in the argument reduction and exponent
+   adjustment of scale, positive k here means the result may overflow and
+   negative k means the result may underflow.  */
+static inline double
+specialcase (double tmp, uint64_t sbits, uint64_t ki)
+{
+  double scale;
+  if ((ki & 0x80000000) == 0)
+    {
+      /* k > 0, the exponent of scale might have overflowed by <= 460.  */
+      sbits -= 1009ull << 52;
+      scale = asdouble (sbits);
+      return 0x1p1009 * (scale + scale * tmp);
+    }
+  /* k < 0, need special care in the subnormal range.  */
+  sbits += 1022ull << 52;
+  /* Note: sbits is signed scale.  */
+  scale = asdouble (sbits);
+  double y = scale + scale * tmp;
+  return 0x1p-1022 * y;
+}
+
+/* Scalar fallback for special cases of SVE pow's exp.  */
+static inline svfloat64_t
+sv_call_specialcase (svfloat64_t x1, svuint64_t u1, svuint64_t u2,
+		     svfloat64_t y, svbool_t cmp)
+{
+  svbool_t p = svpfirst (cmp, svpfalse ());
+  while (svptest_any (cmp, p))
+    {
+      double sx1 = svclastb (p, 0, x1);
+      uint64_t su1 = svclastb (p, 0, u1);
+      uint64_t su2 = svclastb (p, 0, u2);
+      double elem = specialcase (sx1, su1, su2);
+      svfloat64_t y2 = sv_f64 (elem);
+      y = svsel (p, y2, y);
+      p = svpnext_b64 (cmp, p);
+    }
+  return y;
+}
+
+/* Compute y+TAIL = log(x) where the rounded result is y and TAIL has about
+   additional 15 bits precision.  IX is the bit representation of x, but
+   normalized in the subnormal range using the sign bit for the exponent.  */
+static inline svfloat64_t
+sv_log_inline (svbool_t pg, svuint64_t ix, svfloat64_t *tail)
+{
+  /* x = 2^k z; where z is in range [Off,2*Off) and exact.
+     The range is split into N subintervals.
+     The ith subinterval contains z and c is near its center.  */
+  svuint64_t tmp = svsub_x (pg, ix, Off);
+  svuint64_t i = svand_x (pg, svlsr_x (pg, tmp, 52 - V_POW_LOG_TABLE_BITS),
+			  sv_u64 (N_LOG - 1));
+  svint64_t k = svasr_x (pg, svreinterpret_s64 (tmp), 52);
+  svuint64_t iz = svsub_x (pg, ix, svand_x (pg, tmp, sv_u64 (0xfffULL << 52)));
+  svfloat64_t z = svreinterpret_f64 (iz);
+  svfloat64_t kd = svcvt_f64_x (pg, k);
+
+  /* log(x) = k*Ln2 + log(c) + log1p(z/c-1).  */
+  /* SVE lookup requires 3 separate lookup tables, as opposed to scalar version
+     that uses array of structures. We also do the lookup earlier in the code to
+     make sure it finishes as early as possible.  */
+  svfloat64_t invc = svld1_gather_index (pg, __v_pow_log_data.invc, i);
+  svfloat64_t logc = svld1_gather_index (pg, __v_pow_log_data.logc, i);
+  svfloat64_t logctail = svld1_gather_index (pg, __v_pow_log_data.logctail, i);
+
+  /* Note: 1/c is j/N or j/N/2 where j is an integer in [N,2N) and
+     |z/c - 1| < 1/N, so r = z/c - 1 is exactly representible.  */
+  svfloat64_t r = svmad_x (pg, z, invc, -1.0);
+  /* k*Ln2 + log(c) + r.  */
+  svfloat64_t t1 = svmla_x (pg, logc, kd, __v_pow_log_data.ln2_hi);
+  svfloat64_t t2 = svadd_x (pg, t1, r);
+  svfloat64_t lo1 = svmla_x (pg, logctail, kd, __v_pow_log_data.ln2_lo);
+  svfloat64_t lo2 = svadd_x (pg, svsub_x (pg, t1, t2), r);
+
+  /* Evaluation is optimized assuming superscalar pipelined execution.  */
+  svfloat64_t ar = svmul_x (pg, r, -0.5); /* A[0] = -0.5.  */
+  svfloat64_t ar2 = svmul_x (pg, r, ar);
+  svfloat64_t ar3 = svmul_x (pg, r, ar2);
+  /* k*Ln2 + log(c) + r + A[0]*r*r.  */
+  svfloat64_t hi = svadd_x (pg, t2, ar2);
+  svfloat64_t lo3 = svmla_x (pg, svneg_x (pg, ar2), ar, r);
+  svfloat64_t lo4 = svadd_x (pg, svsub_x (pg, t2, hi), ar2);
+  /* p = log1p(r) - r - A[0]*r*r.  */
+  /* p = (ar3 * (A[1] + r * A[2] + ar2 * (A[3] + r * A[4] + ar2 * (A[5] + r *
+     A[6])))).  */
+  svfloat64_t a56 = svmla_x (pg, sv_f64 (A[5]), r, A[6]);
+  svfloat64_t a34 = svmla_x (pg, sv_f64 (A[3]), r, A[4]);
+  svfloat64_t a12 = svmla_x (pg, sv_f64 (A[1]), r, A[2]);
+  svfloat64_t p = svmla_x (pg, a34, ar2, a56);
+  p = svmla_x (pg, a12, ar2, p);
+  p = svmul_x (pg, ar3, p);
+  svfloat64_t lo = svadd_x (
+      pg, svadd_x (pg, svadd_x (pg, svadd_x (pg, lo1, lo2), lo3), lo4), p);
+  svfloat64_t y = svadd_x (pg, hi, lo);
+  *tail = svadd_x (pg, svsub_x (pg, hi, y), lo);
+  return y;
+}
+
+/* Computes sign*exp(x+xtail) where |xtail| < 2^-8/N and |xtail| <= |x|.
+   The sign_bias argument is SignBias or 0 and sets the sign to -1 or 1.  */
+static inline svfloat64_t
+sv_exp_inline (svbool_t pg, svfloat64_t x, svfloat64_t xtail,
+	       svuint64_t sign_bias)
+{
+  /* 3 types of special cases: tiny (uflow and spurious uflow), huge (oflow)
+     and other cases of large values of x (scale * (1 + TMP) oflow).  */
+  svuint64_t abstop = svand_x (pg, sv_top12 (x), 0x7ff);
+  /* |x| is large (|x| >= 512) or tiny (|x| <= 0x1p-54).  */
+  svbool_t uoflow = svcmpge (pg, svsub_x (pg, abstop, SmallExp), ThresExp);
+
+  /* Conditions special, uflow and oflow are all expressed as uoflow &&
+     something, hence do not bother computing anything if no lane in uoflow is
+     true.  */
+  svbool_t special = svpfalse_b ();
+  svbool_t uflow = svpfalse_b ();
+  svbool_t oflow = svpfalse_b ();
+  if (__glibc_unlikely (svptest_any (pg, uoflow)))
+    {
+      /* |x| is tiny (|x| <= 0x1p-54).  */
+      uflow = svcmpge (pg, svsub_x (pg, abstop, SmallExp), 0x80000000);
+      uflow = svand_z (pg, uoflow, uflow);
+      /* |x| is huge (|x| >= 1024).  */
+      oflow = svcmpge (pg, abstop, HugeExp);
+      oflow = svand_z (pg, uoflow, svbic_z (pg, oflow, uflow));
+      /* For large |x| values (512 < |x| < 1024) scale * (1 + TMP) can overflow
+	 or underflow.  */
+      special = svbic_z (pg, uoflow, svorr_z (pg, uflow, oflow));
+    }
+
+  /* exp(x) = 2^(k/N) * exp(r), with exp(r) in [2^(-1/2N),2^(1/2N)].  */
+  /* x = ln2/N*k + r, with int k and r in [-ln2/2N, ln2/2N].  */
+  svfloat64_t z = svmul_x (pg, x, __v_pow_exp_data.n_over_ln2);
+  /* z - kd is in [-1, 1] in non-nearest rounding modes.  */
+  svfloat64_t shift = sv_f64 (__v_pow_exp_data.shift);
+  svfloat64_t kd = svadd_x (pg, z, shift);
+  svuint64_t ki = svreinterpret_u64 (kd);
+  kd = svsub_x (pg, kd, shift);
+  svfloat64_t r = x;
+  r = svmls_x (pg, r, kd, __v_pow_exp_data.ln2_over_n_hi);
+  r = svmls_x (pg, r, kd, __v_pow_exp_data.ln2_over_n_lo);
+  /* The code assumes 2^-200 < |xtail| < 2^-8/N.  */
+  r = svadd_x (pg, r, xtail);
+  /* 2^(k/N) ~= scale.  */
+  svuint64_t idx = svand_x (pg, ki, N_EXP - 1);
+  svuint64_t top
+      = svlsl_x (pg, svadd_x (pg, ki, sign_bias), 52 - V_POW_EXP_TABLE_BITS);
+  /* This is only a valid scale when -1023*N < k < 1024*N.  */
+  svuint64_t sbits = svld1_gather_index (pg, __v_pow_exp_data.sbits, idx);
+  sbits = svadd_x (pg, sbits, top);
+  /* exp(x) = 2^(k/N) * exp(r) ~= scale + scale * (exp(r) - 1).  */
+  svfloat64_t r2 = svmul_x (pg, r, r);
+  svfloat64_t tmp = svmla_x (pg, sv_f64 (C[1]), r, C[2]);
+  tmp = svmla_x (pg, sv_f64 (C[0]), r, tmp);
+  tmp = svmla_x (pg, r, r2, tmp);
+  svfloat64_t scale = svreinterpret_f64 (sbits);
+  /* Note: tmp == 0 or |tmp| > 2^-200 and scale > 2^-739, so there
+     is no spurious underflow here even without fma.  */
+  z = svmla_x (pg, scale, scale, tmp);
+
+  /* Update result with special and large cases.  */
+  if (__glibc_unlikely (svptest_any (pg, special)))
+    z = sv_call_specialcase (tmp, sbits, ki, z, special);
+
+  /* Handle underflow and overflow.  */
+  svuint64_t sign_bit = svlsr_x (pg, svreinterpret_u64 (x), 63);
+  svbool_t x_is_neg = svcmpne (pg, sign_bit, 0);
+  svuint64_t sign_mask = svlsl_x (pg, sign_bias, 52 - V_POW_EXP_TABLE_BITS);
+  svfloat64_t res_uoflow = svsel (x_is_neg, sv_f64 (0.0), sv_f64 (INFINITY));
+  res_uoflow = svreinterpret_f64 (
+      svorr_x (pg, svreinterpret_u64 (res_uoflow), sign_mask));
+  z = svsel (oflow, res_uoflow, z);
+  /* Avoid spurious underflow for tiny x.  */
+  svfloat64_t res_spurious_uflow
+      = svreinterpret_f64 (svorr_x (pg, sign_mask, 0x3ff0000000000000));
+  z = svsel (uflow, res_spurious_uflow, z);
+
+  return z;
+}
+
+static inline double
+pow_sc (double x, double y)
+{
+  uint64_t ix = asuint64 (x);
+  uint64_t iy = asuint64 (y);
+  /* Special cases: |x| or |y| is 0, inf or nan.  */
+  if (__glibc_unlikely (zeroinfnan (iy)))
+    {
+      if (2 * iy == 0)
+	return issignaling_inline (x) ? x + y : 1.0;
+      if (ix == asuint64 (1.0))
+	return issignaling_inline (y) ? x + y : 1.0;
+      if (2 * ix > 2 * asuint64 (INFINITY) || 2 * iy > 2 * asuint64 (INFINITY))
+	return x + y;
+      if (2 * ix == 2 * asuint64 (1.0))
+	return 1.0;
+      if ((2 * ix < 2 * asuint64 (1.0)) == !(iy >> 63))
+	return 0.0; /* |x|<1 && y==inf or |x|>1 && y==-inf.  */
+      return y * y;
+    }
+  if (__glibc_unlikely (zeroinfnan (ix)))
+    {
+      double_t x2 = x * x;
+      if (ix >> 63 && checkint (iy) == 1)
+	x2 = -x2;
+      return (iy >> 63) ? 1 / x2 : x2;
+    }
+  return x;
+}
+
+svfloat64_t SV_NAME_D2 (pow) (svfloat64_t x, svfloat64_t y, const svbool_t pg)
+{
+  /* This preamble handles special case conditions used in the final scalar
+     fallbacks. It also updates ix and sign_bias, that are used in the core
+     computation too, i.e., exp( y * log (x) ).  */
+  svuint64_t vix0 = svreinterpret_u64 (x);
+  svuint64_t viy0 = svreinterpret_u64 (y);
+  svuint64_t vtopx0 = svlsr_x (svptrue_b64 (), vix0, 52);
+
+  /* Negative x cases.  */
+  svuint64_t sign_bit = svlsr_m (pg, vix0, 63);
+  svbool_t xisneg = svcmpeq (pg, sign_bit, 1);
+
+  /* Set sign_bias and ix depending on sign of x and nature of y.  */
+  svbool_t yisnotint_xisneg = svpfalse_b ();
+  svuint64_t sign_bias = sv_u64 (0);
+  svuint64_t vix = vix0;
+  svuint64_t vtopx1 = vtopx0;
+  if (__glibc_unlikely (svptest_any (pg, xisneg)))
+    {
+      /* Determine nature of y.  */
+      yisnotint_xisneg = sv_isnotint (xisneg, y);
+      svbool_t yisint_xisneg = sv_isint (xisneg, y);
+      svbool_t yisodd_xisneg = sv_isodd (xisneg, y);
+      /* ix set to abs(ix) if y is integer.  */
+      vix = svand_m (yisint_xisneg, vix0, 0x7fffffffffffffff);
+      vtopx1 = svand_m (yisint_xisneg, vtopx0, 0x7ff);
+      /* Set to SignBias if x is negative and y is odd.  */
+      sign_bias = svsel (yisodd_xisneg, sv_u64 (SignBias), sv_u64 (0));
+    }
+
+  /* Special cases of x or y: zero, inf and nan.  */
+  svbool_t xspecial = sv_zeroinfnan (pg, vix0);
+  svbool_t yspecial = sv_zeroinfnan (pg, viy0);
+  svbool_t special = svorr_z (pg, xspecial, yspecial);
+
+  /* Small cases of x: |x| < 0x1p-126.  */
+  svuint64_t vabstopx0 = svand_x (pg, vtopx0, 0x7ff);
+  svbool_t xsmall = svcmplt (pg, vabstopx0, SmallPowX);
+  if (__glibc_unlikely (svptest_any (pg, xsmall)))
+    {
+      /* Normalize subnormal x so exponent becomes negative.  */
+      svbool_t topx_is_null = svcmpeq (xsmall, vtopx1, 0);
+
+      svuint64_t vix_norm = svreinterpret_u64 (svmul_m (xsmall, x, 0x1p52));
+      vix_norm = svand_m (xsmall, vix_norm, 0x7fffffffffffffff);
+      vix_norm = svsub_m (xsmall, vix_norm, 52ULL << 52);
+      vix = svsel (topx_is_null, vix_norm, vix);
+    }
+
+  /* y_hi = log(ix, &y_lo).  */
+  svfloat64_t vlo;
+  svfloat64_t vhi = sv_log_inline (pg, vix, &vlo);
+
+  /* z = exp(y_hi, y_lo, sign_bias).  */
+  svfloat64_t vehi = svmul_x (pg, y, vhi);
+  svfloat64_t velo = svmul_x (pg, y, vlo);
+  svfloat64_t vemi = svmls_x (pg, vehi, y, vhi);
+  velo = svsub_x (pg, velo, vemi);
+  svfloat64_t vz = sv_exp_inline (pg, vehi, velo, sign_bias);
+
+  /* Cases of finite y and finite negative x.  */
+  vz = svsel (yisnotint_xisneg, sv_f64 (__builtin_nan ("")), vz);
+
+  /* Cases of zero/inf/nan x or y.  */
+  if (__glibc_unlikely (svptest_any (pg, special)))
+    vz = sv_call2_f64 (pow_sc, x, y, vz, special);
+
+  return vz;
+}
diff --git a/sysdeps/aarch64/fpu/powf_advsimd.c b/sysdeps/aarch64/fpu/powf_advsimd.c
new file mode 100644
index 0000000000..8232e70436
--- /dev/null
+++ b/sysdeps/aarch64/fpu/powf_advsimd.c
@@ -0,0 +1,210 @@
+/* Single-precision vector (AdvSIMD) pow function
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "math_config.h"
+#include "v_math.h"
+
+#define Min v_u32 (0x00800000)
+#define Max v_u32 (0x7f800000)
+#define Thresh v_u32 (0x7f000000) /* Max - Min.  */
+#define MantissaMask v_u32 (0x007fffff)
+
+#define A d->log2_poly
+#define C d->exp2f_poly
+
+/* 2.6 ulp ~ 0.5 + 2^24 (128*Ln2*relerr_log2 + relerr_exp2).  */
+#define Off v_u32 (0x3f35d000)
+
+#define V_POWF_LOG2_TABLE_BITS 5
+#define V_EXP2F_TABLE_BITS 5
+#define Log2IdxMask ((1 << V_POWF_LOG2_TABLE_BITS) - 1)
+#define Scale ((double) (1 << V_EXP2F_TABLE_BITS))
+
+static const struct data
+{
+  struct
+  {
+    double invc, logc;
+  } log2_tab[1 << V_POWF_LOG2_TABLE_BITS];
+  float64x2_t log2_poly[4];
+  uint64_t exp2f_tab[1 << V_EXP2F_TABLE_BITS];
+  float64x2_t exp2f_poly[3];
+} data = {
+  .log2_tab = {{0x1.6489890582816p+0, -0x1.e960f97b22702p-2 * Scale},
+	       {0x1.5cf19b35e3472p+0, -0x1.c993406cd4db6p-2 * Scale},
+	       {0x1.55aac0e956d65p+0, -0x1.aa711d9a7d0f3p-2 * Scale},
+	       {0x1.4eb0022977e01p+0, -0x1.8bf37bacdce9bp-2 * Scale},
+	       {0x1.47fcccda1dd1fp+0, -0x1.6e13b3519946ep-2 * Scale},
+	       {0x1.418ceabab68c1p+0, -0x1.50cb8281e4089p-2 * Scale},
+	       {0x1.3b5c788f1edb3p+0, -0x1.341504a237e2bp-2 * Scale},
+	       {0x1.3567de48e9c9ap+0, -0x1.17eaab624ffbbp-2 * Scale},
+	       {0x1.2fabc80fd19bap+0, -0x1.f88e708f8c853p-3 * Scale},
+	       {0x1.2a25200ce536bp+0, -0x1.c24b6da113914p-3 * Scale},
+	       {0x1.24d108e0152e3p+0, -0x1.8d02ee397cb1dp-3 * Scale},
+	       {0x1.1facd8ab2fbe1p+0, -0x1.58ac1223408b3p-3 * Scale},
+	       {0x1.1ab614a03efdfp+0, -0x1.253e6fd190e89p-3 * Scale},
+	       {0x1.15ea6d03af9ffp+0, -0x1.e5641882c12ffp-4 * Scale},
+	       {0x1.1147b994bb776p+0, -0x1.81fea712926f7p-4 * Scale},
+	       {0x1.0ccbf650593aap+0, -0x1.203e240de64a3p-4 * Scale},
+	       {0x1.0875408477302p+0, -0x1.8029b86a78281p-5 * Scale},
+	       {0x1.0441d42a93328p+0, -0x1.85d713190fb9p-6 * Scale},
+	       {0x1p+0, 0x0p+0 * Scale},
+	       {0x1.f1d006c855e86p-1, 0x1.4c1cc07312997p-5 * Scale},
+	       {0x1.e28c3341aa301p-1, 0x1.5e1848ccec948p-4 * Scale},
+	       {0x1.d4bdf9aa64747p-1, 0x1.04cfcb7f1196fp-3 * Scale},
+	       {0x1.c7b45a24e5803p-1, 0x1.582813d463c21p-3 * Scale},
+	       {0x1.bb5f5eb2ed60ap-1, 0x1.a936fa68760ccp-3 * Scale},
+	       {0x1.afb0bff8fe6b4p-1, 0x1.f81bc31d6cc4ep-3 * Scale},
+	       {0x1.a49badf7ab1f5p-1, 0x1.2279a09fae6b1p-2 * Scale},
+	       {0x1.9a14a111fc4c9p-1, 0x1.47ec0b6df5526p-2 * Scale},
+	       {0x1.901131f5b2fdcp-1, 0x1.6c71762280f1p-2 * Scale},
+	       {0x1.8687f73f6d865p-1, 0x1.90155070798dap-2 * Scale},
+	       {0x1.7d7067eb77986p-1, 0x1.b2e23b1d3068cp-2 * Scale},
+	       {0x1.74c2c1cf97b65p-1, 0x1.d4e21b0daa86ap-2 * Scale},
+	       {0x1.6c77f37cff2a1p-1, 0x1.f61e2a2f67f3fp-2 * Scale},},
+  .log2_poly = { /* rel err: 1.5 * 2^-30.  */
+		 V2 (-0x1.6ff5daa3b3d7cp-2 * Scale),
+		 V2 (0x1.ec81d03c01aebp-2 * Scale),
+		 V2 (-0x1.71547bb43f101p-1 * Scale),
+		 V2 (0x1.7154764a815cbp0 * Scale)},
+  .exp2f_tab = {0x3ff0000000000000, 0x3fefd9b0d3158574, 0x3fefb5586cf9890f,
+		0x3fef9301d0125b51, 0x3fef72b83c7d517b, 0x3fef54873168b9aa,
+		0x3fef387a6e756238, 0x3fef1e9df51fdee1, 0x3fef06fe0a31b715,
+		0x3feef1a7373aa9cb, 0x3feedea64c123422, 0x3feece086061892d,
+		0x3feebfdad5362a27, 0x3feeb42b569d4f82, 0x3feeab07dd485429,
+		0x3feea47eb03a5585, 0x3feea09e667f3bcd, 0x3fee9f75e8ec5f74,
+		0x3feea11473eb0187, 0x3feea589994cce13, 0x3feeace5422aa0db,
+		0x3feeb737b0cdc5e5, 0x3feec49182a3f090, 0x3feed503b23e255d,
+		0x3feee89f995ad3ad, 0x3feeff76f2fb5e47, 0x3fef199bdd85529c,
+		0x3fef3720dcef9069, 0x3fef5818dcfba487, 0x3fef7c97337b9b5f,
+		0x3fefa4afa2a490da, 0x3fefd0765b6e4540,},
+  .exp2f_poly = { /* rel err: 1.69 * 2^-34.  */
+		  V2 (0x1.c6af84b912394p-5 / Scale / Scale / Scale),
+		  V2 (0x1.ebfce50fac4f3p-3 / Scale / Scale),
+		  V2 (0x1.62e42ff0c52d6p-1 / Scale)}};
+
+static float32x4_t VPCS_ATTR NOINLINE
+special_case (float32x4_t x, float32x4_t y, float32x4_t ret, uint32x4_t cmp)
+{
+  return v_call2_f32 (powf, x, y, ret, cmp);
+}
+
+static inline float64x2_t
+ylogx_core (const struct data *d, float64x2_t iz, float64x2_t k,
+	    float64x2_t invc, float64x2_t logc, float64x2_t y)
+{
+
+  /* log2(x) = log1p(z/c-1)/ln2 + log2(c) + k.  */
+  float64x2_t r = vfmaq_f64 (v_f64 (-1.0), iz, invc);
+  float64x2_t y0 = vaddq_f64 (logc, k);
+
+  /* Polynomial to approximate log1p(r)/ln2.  */
+  float64x2_t logx = vfmaq_f64 (A[1], r, A[0]);
+  logx = vfmaq_f64 (A[2], logx, r);
+  logx = vfmaq_f64 (A[3], logx, r);
+  logx = vfmaq_f64 (y0, logx, r);
+
+  return vmulq_f64 (logx, y);
+}
+
+static inline float64x2_t
+log2_lookup (const struct data *d, uint32_t i)
+{
+  return vld1q_f64 (
+      &d->log2_tab[(i >> (23 - V_POWF_LOG2_TABLE_BITS)) & Log2IdxMask].invc);
+}
+
+static inline uint64x1_t
+exp2f_lookup (const struct data *d, uint64_t i)
+{
+  return vld1_u64 (&d->exp2f_tab[i % (1 << V_EXP2F_TABLE_BITS)]);
+}
+
+static inline float32x2_t
+powf_core (const struct data *d, float64x2_t ylogx)
+{
+  /* N*x = k + r with r in [-1/2, 1/2].  */
+  float64x2_t kd = vrndnq_f64 (ylogx);
+  int64x2_t ki = vcvtaq_s64_f64 (ylogx);
+  float64x2_t r = vsubq_f64 (ylogx, kd);
+
+  /* exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1).  */
+  uint64x2_t t = vcombine_u64 (exp2f_lookup (d, vgetq_lane_s64 (ki, 0)),
+			       exp2f_lookup (d, vgetq_lane_s64 (ki, 1)));
+  t = vaddq_u64 (
+      t, vreinterpretq_u64_s64 (vshlq_n_s64 (ki, 52 - V_EXP2F_TABLE_BITS)));
+  float64x2_t s = vreinterpretq_f64_u64 (t);
+  float64x2_t p = vfmaq_f64 (C[1], r, C[0]);
+  p = vfmaq_f64 (C[2], r, p);
+  p = vfmaq_f64 (s, p, vmulq_f64 (s, r));
+  return vcvt_f32_f64 (p);
+}
+
+float32x4_t VPCS_ATTR V_NAME_F2 (pow) (float32x4_t x, float32x4_t y)
+{
+  const struct data *d = ptr_barrier (&data);
+  uint32x4_t u = vreinterpretq_u32_f32 (x);
+  uint32x4_t cmp = vcgeq_u32 (vsubq_u32 (u, Min), Thresh);
+  uint32x4_t tmp = vsubq_u32 (u, Off);
+  uint32x4_t top = vbicq_u32 (tmp, MantissaMask);
+  float32x4_t iz = vreinterpretq_f32_u32 (vsubq_u32 (u, top));
+  int32x4_t k = vshrq_n_s32 (vreinterpretq_s32_u32 (top),
+			     23 - V_EXP2F_TABLE_BITS); /* arithmetic shift.  */
+
+  /* Use double precision for each lane: split input vectors into lo and hi
+     halves and promote.  */
+  float64x2_t tab0 = log2_lookup (d, vgetq_lane_u32 (tmp, 0)),
+	      tab1 = log2_lookup (d, vgetq_lane_u32 (tmp, 1)),
+	      tab2 = log2_lookup (d, vgetq_lane_u32 (tmp, 2)),
+	      tab3 = log2_lookup (d, vgetq_lane_u32 (tmp, 3));
+
+  float64x2_t iz_lo = vcvt_f64_f32 (vget_low_f32 (iz)),
+	      iz_hi = vcvt_high_f64_f32 (iz);
+
+  float64x2_t k_lo = vcvtq_f64_s64 (vmovl_s32 (vget_low_s32 (k))),
+	      k_hi = vcvtq_f64_s64 (vmovl_high_s32 (k));
+
+  float64x2_t invc_lo = vzip1q_f64 (tab0, tab1),
+	      invc_hi = vzip1q_f64 (tab2, tab3),
+	      logc_lo = vzip2q_f64 (tab0, tab1),
+	      logc_hi = vzip2q_f64 (tab2, tab3);
+
+  float64x2_t y_lo = vcvt_f64_f32 (vget_low_f32 (y)),
+	      y_hi = vcvt_high_f64_f32 (y);
+
+  float64x2_t ylogx_lo = ylogx_core (d, iz_lo, k_lo, invc_lo, logc_lo, y_lo);
+  float64x2_t ylogx_hi = ylogx_core (d, iz_hi, k_hi, invc_hi, logc_hi, y_hi);
+
+  uint32x4_t ylogx_top = vuzp2q_u32 (vreinterpretq_u32_f64 (ylogx_lo),
+				     vreinterpretq_u32_f64 (ylogx_hi));
+
+  cmp = vorrq_u32 (
+      cmp, vcgeq_u32 (vandq_u32 (vshrq_n_u32 (ylogx_top, 15), v_u32 (0xffff)),
+		      vdupq_n_u32 (asuint64 (126.0 * (1 << V_EXP2F_TABLE_BITS))
+				   >> 47)));
+
+  float32x2_t p_lo = powf_core (d, ylogx_lo);
+  float32x2_t p_hi = powf_core (d, ylogx_hi);
+
+  if (__glibc_unlikely (v_any_u32 (cmp)))
+    return special_case (x, y, vcombine_f32 (p_lo, p_hi), cmp);
+  return vcombine_f32 (p_lo, p_hi);
+}
+libmvec_hidden_def (V_NAME_F2 (pow))
+HALF_WIDTH_ALIAS_F2(pow)
diff --git a/sysdeps/aarch64/fpu/powf_sve.c b/sysdeps/aarch64/fpu/powf_sve.c
new file mode 100644
index 0000000000..4f6a142325
--- /dev/null
+++ b/sysdeps/aarch64/fpu/powf_sve.c
@@ -0,0 +1,335 @@
+/* Single-precision vector (SVE) pow function
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "../ieee754/flt-32/math_config.h"
+#include "sv_math.h"
+
+/* The following data is used in the SVE pow core computation
+   and special case detection.  */
+#define Tinvc __v_powf_data.invc
+#define Tlogc __v_powf_data.logc
+#define Texp __v_powf_data.scale
+#define SignBias (1 << (V_POWF_EXP2_TABLE_BITS + 11))
+#define Shift 0x1.8p52
+#define Norm 0x1p23f /* 0x4b000000.  */
+
+/* Overall ULP error bound for pow is 2.6 ulp
+   ~ 0.5 + 2^24 (128*Ln2*relerr_log2 + relerr_exp2).  */
+static const struct data
+{
+  double log_poly[4];
+  double exp_poly[3];
+  float uflow_bound, oflow_bound, small_bound;
+  uint32_t sign_bias, sign_mask, subnormal_bias, off;
+} data = {
+  /* rel err: 1.5 * 2^-30. Each coefficients is multiplied the value of
+     V_POWF_EXP2_N.  */
+  .log_poly = { -0x1.6ff5daa3b3d7cp+3, 0x1.ec81d03c01aebp+3,
+		-0x1.71547bb43f101p+4, 0x1.7154764a815cbp+5 },
+  /* rel err: 1.69 * 2^-34.  */
+  .exp_poly = {
+    0x1.c6af84b912394p-20, /* A0 / V_POWF_EXP2_N^3.  */
+    0x1.ebfce50fac4f3p-13, /* A1 / V_POWF_EXP2_N^2.  */
+    0x1.62e42ff0c52d6p-6,   /* A3 / V_POWF_EXP2_N.  */
+  },
+  .uflow_bound = -0x1.2cp+12f, /* -150.0 * V_POWF_EXP2_N.  */
+  .oflow_bound = 0x1p+12f, /* 128.0 * V_POWF_EXP2_N.  */
+  .small_bound = 0x1p-126f,
+  .off = 0x3f35d000,
+  .sign_bias = SignBias,
+  .sign_mask = 0x80000000,
+  .subnormal_bias = 0x0b800000, /* 23 << 23.  */
+};
+
+#define A(i) sv_f64 (d->log_poly[i])
+#define C(i) sv_f64 (d->exp_poly[i])
+
+/* Check if x is an integer.  */
+static inline svbool_t
+svisint (svbool_t pg, svfloat32_t x)
+{
+  return svcmpeq (pg, svrintz_z (pg, x), x);
+}
+
+/* Check if x is real not integer valued.  */
+static inline svbool_t
+svisnotint (svbool_t pg, svfloat32_t x)
+{
+  return svcmpne (pg, svrintz_z (pg, x), x);
+}
+
+/* Check if x is an odd integer.  */
+static inline svbool_t
+svisodd (svbool_t pg, svfloat32_t x)
+{
+  svfloat32_t y = svmul_x (pg, x, 0.5f);
+  return svisnotint (pg, y);
+}
+
+/* Check if zero, inf or nan.  */
+static inline svbool_t
+sv_zeroinfnan (svbool_t pg, svuint32_t i)
+{
+  return svcmpge (pg, svsub_x (pg, svmul_x (pg, i, 2u), 1),
+		  2u * 0x7f800000 - 1);
+}
+
+/* Returns 0 if not int, 1 if odd int, 2 if even int.  The argument is
+   the bit representation of a non-zero finite floating-point value.  */
+static inline int
+checkint (uint32_t iy)
+{
+  int e = iy >> 23 & 0xff;
+  if (e < 0x7f)
+    return 0;
+  if (e > 0x7f + 23)
+    return 2;
+  if (iy & ((1 << (0x7f + 23 - e)) - 1))
+    return 0;
+  if (iy & (1 << (0x7f + 23 - e)))
+    return 1;
+  return 2;
+}
+
+/* Check if zero, inf or nan.  */
+static inline int
+zeroinfnan (uint32_t ix)
+{
+  return 2 * ix - 1 >= 2u * 0x7f800000 - 1;
+}
+
+/* A scalar subroutine used to fix main power special cases. Similar to the
+   preamble of scalar powf except that we do not update ix and sign_bias. This
+   is done in the preamble of the SVE powf.  */
+static inline float
+powf_specialcase (float x, float y, float z)
+{
+  uint32_t ix = asuint (x);
+  uint32_t iy = asuint (y);
+  /* Either (x < 0x1p-126 or inf or nan) or (y is 0 or inf or nan).  */
+  if (__glibc_unlikely (zeroinfnan (iy)))
+    {
+      if (2 * iy == 0)
+	return issignalingf_inline (x) ? x + y : 1.0f;
+      if (ix == 0x3f800000)
+	return issignalingf_inline (y) ? x + y : 1.0f;
+      if (2 * ix > 2u * 0x7f800000 || 2 * iy > 2u * 0x7f800000)
+	return x + y;
+      if (2 * ix == 2 * 0x3f800000)
+	return 1.0f;
+      if ((2 * ix < 2 * 0x3f800000) == !(iy & 0x80000000))
+	return 0.0f; /* |x|<1 && y==inf or |x|>1 && y==-inf.  */
+      return y * y;
+    }
+  if (__glibc_unlikely (zeroinfnan (ix)))
+    {
+      float_t x2 = x * x;
+      if (ix & 0x80000000 && checkint (iy) == 1)
+	x2 = -x2;
+      return iy & 0x80000000 ? 1 / x2 : x2;
+    }
+  /* We need a return here in case x<0 and y is integer, but all other tests
+   need to be run.  */
+  return z;
+}
+
+/* Scalar fallback for special case routines with custom signature.  */
+static inline svfloat32_t
+sv_call_powf_sc (svfloat32_t x1, svfloat32_t x2, svfloat32_t y, svbool_t cmp)
+{
+  svbool_t p = svpfirst (cmp, svpfalse ());
+  while (svptest_any (cmp, p))
+    {
+      float sx1 = svclastb (p, 0, x1);
+      float sx2 = svclastb (p, 0, x2);
+      float elem = svclastb (p, 0, y);
+      elem = powf_specialcase (sx1, sx2, elem);
+      svfloat32_t y2 = sv_f32 (elem);
+      y = svsel (p, y2, y);
+      p = svpnext_b32 (cmp, p);
+    }
+  return y;
+}
+
+/* Compute core for half of the lanes in double precision.  */
+static inline svfloat64_t
+sv_powf_core_ext (const svbool_t pg, svuint64_t i, svfloat64_t z, svint64_t k,
+		  svfloat64_t y, svuint64_t sign_bias, svfloat64_t *pylogx,
+		  const struct data *d)
+{
+  svfloat64_t invc = svld1_gather_index (pg, Tinvc, i);
+  svfloat64_t logc = svld1_gather_index (pg, Tlogc, i);
+
+  /* log2(x) = log1p(z/c-1)/ln2 + log2(c) + k.  */
+  svfloat64_t r = svmla_x (pg, sv_f64 (-1.0), z, invc);
+  svfloat64_t y0 = svadd_x (pg, logc, svcvt_f64_x (pg, k));
+
+  /* Polynomial to approximate log1p(r)/ln2.  */
+  svfloat64_t logx = A (0);
+  logx = svmla_x (pg, A (1), r, logx);
+  logx = svmla_x (pg, A (2), r, logx);
+  logx = svmla_x (pg, A (3), r, logx);
+  logx = svmla_x (pg, y0, r, logx);
+  *pylogx = svmul_x (pg, y, logx);
+
+  /* z - kd is in [-1, 1] in non-nearest rounding modes.  */
+  svfloat64_t kd = svadd_x (pg, *pylogx, Shift);
+  svuint64_t ki = svreinterpret_u64 (kd);
+  kd = svsub_x (pg, kd, Shift);
+
+  r = svsub_x (pg, *pylogx, kd);
+
+  /* exp2(x) = 2^(k/N) * 2^r ~= s * (C0*r^3 + C1*r^2 + C2*r + 1).  */
+  svuint64_t t
+      = svld1_gather_index (pg, Texp, svand_x (pg, ki, V_POWF_EXP2_N - 1));
+  svuint64_t ski = svadd_x (pg, ki, sign_bias);
+  t = svadd_x (pg, t, svlsl_x (pg, ski, 52 - V_POWF_EXP2_TABLE_BITS));
+  svfloat64_t s = svreinterpret_f64 (t);
+
+  svfloat64_t p = C (0);
+  p = svmla_x (pg, C (1), p, r);
+  p = svmla_x (pg, C (2), p, r);
+  p = svmla_x (pg, s, p, svmul_x (pg, s, r));
+
+  return p;
+}
+
+/* Widen vector to double precision and compute core on both halves of the
+   vector. Lower cost of promotion by considering all lanes active.  */
+static inline svfloat32_t
+sv_powf_core (const svbool_t pg, svuint32_t i, svuint32_t iz, svint32_t k,
+	      svfloat32_t y, svuint32_t sign_bias, svfloat32_t *pylogx,
+	      const struct data *d)
+{
+  const svbool_t ptrue = svptrue_b64 ();
+
+  /* Unpack and promote input vectors (pg, y, z, i, k and sign_bias) into two in
+     order to perform core computation in double precision.  */
+  const svbool_t pg_lo = svunpklo (pg);
+  const svbool_t pg_hi = svunpkhi (pg);
+  svfloat64_t y_lo = svcvt_f64_x (
+      ptrue, svreinterpret_f32 (svunpklo (svreinterpret_u32 (y))));
+  svfloat64_t y_hi = svcvt_f64_x (
+      ptrue, svreinterpret_f32 (svunpkhi (svreinterpret_u32 (y))));
+  svfloat32_t z = svreinterpret_f32 (iz);
+  svfloat64_t z_lo = svcvt_f64_x (
+      ptrue, svreinterpret_f32 (svunpklo (svreinterpret_u32 (z))));
+  svfloat64_t z_hi = svcvt_f64_x (
+      ptrue, svreinterpret_f32 (svunpkhi (svreinterpret_u32 (z))));
+  svuint64_t i_lo = svunpklo (i);
+  svuint64_t i_hi = svunpkhi (i);
+  svint64_t k_lo = svunpklo (k);
+  svint64_t k_hi = svunpkhi (k);
+  svuint64_t sign_bias_lo = svunpklo (sign_bias);
+  svuint64_t sign_bias_hi = svunpkhi (sign_bias);
+
+  /* Compute each part in double precision.  */
+  svfloat64_t ylogx_lo, ylogx_hi;
+  svfloat64_t lo = sv_powf_core_ext (pg_lo, i_lo, z_lo, k_lo, y_lo,
+				     sign_bias_lo, &ylogx_lo, d);
+  svfloat64_t hi = sv_powf_core_ext (pg_hi, i_hi, z_hi, k_hi, y_hi,
+				     sign_bias_hi, &ylogx_hi, d);
+
+  /* Convert back to single-precision and interleave.  */
+  svfloat32_t ylogx_lo_32 = svcvt_f32_x (ptrue, ylogx_lo);
+  svfloat32_t ylogx_hi_32 = svcvt_f32_x (ptrue, ylogx_hi);
+  *pylogx = svuzp1 (ylogx_lo_32, ylogx_hi_32);
+  svfloat32_t lo_32 = svcvt_f32_x (ptrue, lo);
+  svfloat32_t hi_32 = svcvt_f32_x (ptrue, hi);
+  return svuzp1 (lo_32, hi_32);
+}
+
+/* Implementation of SVE powf.
+   Provides the same accuracy as AdvSIMD powf, since it relies on the same
+   algorithm. The theoretical maximum error is under 2.60 ULPs.
+   Maximum measured error is 2.56 ULPs:
+   SV_NAME_F2 (pow) (0x1.004118p+0, 0x1.5d14a4p+16) got 0x1.fd4bp+127
+						   want 0x1.fd4b06p+127.  */
+svfloat32_t SV_NAME_F2 (pow) (svfloat32_t x, svfloat32_t y, const svbool_t pg)
+{
+  const struct data *d = ptr_barrier (&data);
+
+  svuint32_t vix0 = svreinterpret_u32 (x);
+  svuint32_t viy0 = svreinterpret_u32 (y);
+
+  /* Negative x cases.  */
+  svuint32_t sign_bit = svand_m (pg, vix0, d->sign_mask);
+  svbool_t xisneg = svcmpeq (pg, sign_bit, d->sign_mask);
+
+  /* Set sign_bias and ix depending on sign of x and nature of y.  */
+  svbool_t yisnotint_xisneg = svpfalse_b ();
+  svuint32_t sign_bias = sv_u32 (0);
+  svuint32_t vix = vix0;
+  if (__glibc_unlikely (svptest_any (pg, xisneg)))
+    {
+      /* Determine nature of y.  */
+      yisnotint_xisneg = svisnotint (xisneg, y);
+      svbool_t yisint_xisneg = svisint (xisneg, y);
+      svbool_t yisodd_xisneg = svisodd (xisneg, y);
+      /* ix set to abs(ix) if y is integer.  */
+      vix = svand_m (yisint_xisneg, vix0, 0x7fffffff);
+      /* Set to SignBias if x is negative and y is odd.  */
+      sign_bias = svsel (yisodd_xisneg, sv_u32 (d->sign_bias), sv_u32 (0));
+    }
+
+  /* Special cases of x or y: zero, inf and nan.  */
+  svbool_t xspecial = sv_zeroinfnan (pg, vix0);
+  svbool_t yspecial = sv_zeroinfnan (pg, viy0);
+  svbool_t cmp = svorr_z (pg, xspecial, yspecial);
+
+  /* Small cases of x: |x| < 0x1p-126.  */
+  svbool_t xsmall = svaclt (pg, x, d->small_bound);
+  if (__glibc_unlikely (svptest_any (pg, xsmall)))
+    {
+      /* Normalize subnormal x so exponent becomes negative.  */
+      svuint32_t vix_norm = svreinterpret_u32 (svmul_x (xsmall, x, Norm));
+      vix_norm = svand_x (xsmall, vix_norm, 0x7fffffff);
+      vix_norm = svsub_x (xsmall, vix_norm, d->subnormal_bias);
+      vix = svsel (xsmall, vix_norm, vix);
+    }
+  /* Part of core computation carried in working precision.  */
+  svuint32_t tmp = svsub_x (pg, vix, d->off);
+  svuint32_t i = svand_x (pg, svlsr_x (pg, tmp, (23 - V_POWF_LOG2_TABLE_BITS)),
+			  V_POWF_LOG2_N - 1);
+  svuint32_t top = svand_x (pg, tmp, 0xff800000);
+  svuint32_t iz = svsub_x (pg, vix, top);
+  svint32_t k
+      = svasr_x (pg, svreinterpret_s32 (top), (23 - V_POWF_EXP2_TABLE_BITS));
+
+  /* Compute core in extended precision and return intermediate ylogx results to
+      handle cases of underflow and underflow in exp.  */
+  svfloat32_t ylogx;
+  svfloat32_t ret = sv_powf_core (pg, i, iz, k, y, sign_bias, &ylogx, d);
+
+  /* Handle exp special cases of underflow and overflow.  */
+  svuint32_t sign = svlsl_x (pg, sign_bias, 20 - V_POWF_EXP2_TABLE_BITS);
+  svfloat32_t ret_oflow
+      = svreinterpret_f32 (svorr_x (pg, sign, asuint (INFINITY)));
+  svfloat32_t ret_uflow = svreinterpret_f32 (sign);
+  ret = svsel (svcmple (pg, ylogx, d->uflow_bound), ret_uflow, ret);
+  ret = svsel (svcmpgt (pg, ylogx, d->oflow_bound), ret_oflow, ret);
+
+  /* Cases of finite y and finite negative x.  */
+  ret = svsel (yisnotint_xisneg, sv_f32 (__builtin_nanf ("")), ret);
+
+  if (__glibc_unlikely (svptest_any (pg, cmp)))
+    return sv_call_powf_sc (x, y, ret, cmp);
+
+  return ret;
+}
diff --git a/sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c b/sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c
index f2d8714075..8c98161662 100644
--- a/sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c
+++ b/sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c
@@ -30,6 +30,7 @@ VPCS_VECTOR_WRAPPER (asinh_advsimd, _ZGVnN2v_asinh)
 VPCS_VECTOR_WRAPPER (atan_advsimd, _ZGVnN2v_atan)
 VPCS_VECTOR_WRAPPER (atanh_advsimd, _ZGVnN2v_atanh)
 VPCS_VECTOR_WRAPPER_ff (atan2_advsimd, _ZGVnN2vv_atan2)
+VPCS_VECTOR_WRAPPER (cbrt_advsimd, _ZGVnN2v_cbrt)
 VPCS_VECTOR_WRAPPER (cos_advsimd, _ZGVnN2v_cos)
 VPCS_VECTOR_WRAPPER (cosh_advsimd, _ZGVnN2v_cosh)
 VPCS_VECTOR_WRAPPER (erf_advsimd, _ZGVnN2v_erf)
@@ -38,10 +39,12 @@ VPCS_VECTOR_WRAPPER (exp_advsimd, _ZGVnN2v_exp)
 VPCS_VECTOR_WRAPPER (exp10_advsimd, _ZGVnN2v_exp10)
 VPCS_VECTOR_WRAPPER (exp2_advsimd, _ZGVnN2v_exp2)
 VPCS_VECTOR_WRAPPER (expm1_advsimd, _ZGVnN2v_expm1)
+VPCS_VECTOR_WRAPPER_ff (hypot_advsimd, _ZGVnN2vv_hypot)
 VPCS_VECTOR_WRAPPER (log_advsimd, _ZGVnN2v_log)
 VPCS_VECTOR_WRAPPER (log10_advsimd, _ZGVnN2v_log10)
 VPCS_VECTOR_WRAPPER (log1p_advsimd, _ZGVnN2v_log1p)
 VPCS_VECTOR_WRAPPER (log2_advsimd, _ZGVnN2v_log2)
+VPCS_VECTOR_WRAPPER_ff (pow_advsimd, _ZGVnN2vv_pow)
 VPCS_VECTOR_WRAPPER (sin_advsimd, _ZGVnN2v_sin)
 VPCS_VECTOR_WRAPPER (sinh_advsimd, _ZGVnN2v_sinh)
 VPCS_VECTOR_WRAPPER (tan_advsimd, _ZGVnN2v_tan)
diff --git a/sysdeps/aarch64/fpu/test-double-sve-wrappers.c b/sysdeps/aarch64/fpu/test-double-sve-wrappers.c
index 37873d5e43..2583428af5 100644
--- a/sysdeps/aarch64/fpu/test-double-sve-wrappers.c
+++ b/sysdeps/aarch64/fpu/test-double-sve-wrappers.c
@@ -49,6 +49,7 @@ SVE_VECTOR_WRAPPER (asinh_sve, _ZGVsMxv_asinh)
 SVE_VECTOR_WRAPPER (atan_sve, _ZGVsMxv_atan)
 SVE_VECTOR_WRAPPER (atanh_sve, _ZGVsMxv_atanh)
 SVE_VECTOR_WRAPPER_ff (atan2_sve, _ZGVsMxvv_atan2)
+SVE_VECTOR_WRAPPER (cbrt_sve, _ZGVsMxv_cbrt)
 SVE_VECTOR_WRAPPER (cos_sve, _ZGVsMxv_cos)
 SVE_VECTOR_WRAPPER (cosh_sve, _ZGVsMxv_cosh)
 SVE_VECTOR_WRAPPER (erf_sve, _ZGVsMxv_erf)
@@ -57,10 +58,12 @@ SVE_VECTOR_WRAPPER (exp_sve, _ZGVsMxv_exp)
 SVE_VECTOR_WRAPPER (exp10_sve, _ZGVsMxv_exp10)
 SVE_VECTOR_WRAPPER (exp2_sve, _ZGVsMxv_exp2)
 SVE_VECTOR_WRAPPER (expm1_sve, _ZGVsMxv_expm1)
+SVE_VECTOR_WRAPPER_ff (hypot_sve, _ZGVsMxvv_hypot)
 SVE_VECTOR_WRAPPER (log_sve, _ZGVsMxv_log)
 SVE_VECTOR_WRAPPER (log10_sve, _ZGVsMxv_log10)
 SVE_VECTOR_WRAPPER (log1p_sve, _ZGVsMxv_log1p)
 SVE_VECTOR_WRAPPER (log2_sve, _ZGVsMxv_log2)
+SVE_VECTOR_WRAPPER_ff (pow_sve, _ZGVsMxvv_pow)
 SVE_VECTOR_WRAPPER (sin_sve, _ZGVsMxv_sin)
 SVE_VECTOR_WRAPPER (sinh_sve, _ZGVsMxv_sinh)
 SVE_VECTOR_WRAPPER (tan_sve, _ZGVsMxv_tan)
diff --git a/sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c b/sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c
index 08e33115b9..26679018d6 100644
--- a/sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c
+++ b/sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c
@@ -30,6 +30,7 @@ VPCS_VECTOR_WRAPPER (asinhf_advsimd, _ZGVnN4v_asinhf)
 VPCS_VECTOR_WRAPPER (atanf_advsimd, _ZGVnN4v_atanf)
 VPCS_VECTOR_WRAPPER (atanhf_advsimd, _ZGVnN4v_atanhf)
 VPCS_VECTOR_WRAPPER_ff (atan2f_advsimd, _ZGVnN4vv_atan2f)
+VPCS_VECTOR_WRAPPER (cbrtf_advsimd, _ZGVnN4v_cbrtf)
 VPCS_VECTOR_WRAPPER (cosf_advsimd, _ZGVnN4v_cosf)
 VPCS_VECTOR_WRAPPER (coshf_advsimd, _ZGVnN4v_coshf)
 VPCS_VECTOR_WRAPPER (erff_advsimd, _ZGVnN4v_erff)
@@ -38,10 +39,12 @@ VPCS_VECTOR_WRAPPER (expf_advsimd, _ZGVnN4v_expf)
 VPCS_VECTOR_WRAPPER (exp10f_advsimd, _ZGVnN4v_exp10f)
 VPCS_VECTOR_WRAPPER (exp2f_advsimd, _ZGVnN4v_exp2f)
 VPCS_VECTOR_WRAPPER (expm1f_advsimd, _ZGVnN4v_expm1f)
+VPCS_VECTOR_WRAPPER_ff (hypotf_advsimd, _ZGVnN4vv_hypotf)
 VPCS_VECTOR_WRAPPER (logf_advsimd, _ZGVnN4v_logf)
 VPCS_VECTOR_WRAPPER (log10f_advsimd, _ZGVnN4v_log10f)
 VPCS_VECTOR_WRAPPER (log1pf_advsimd, _ZGVnN4v_log1pf)
 VPCS_VECTOR_WRAPPER (log2f_advsimd, _ZGVnN4v_log2f)
+VPCS_VECTOR_WRAPPER_ff (powf_advsimd, _ZGVnN4vv_powf)
 VPCS_VECTOR_WRAPPER (sinf_advsimd, _ZGVnN4v_sinf)
 VPCS_VECTOR_WRAPPER (sinhf_advsimd, _ZGVnN4v_sinhf)
 VPCS_VECTOR_WRAPPER (tanf_advsimd, _ZGVnN4v_tanf)
diff --git a/sysdeps/aarch64/fpu/test-float-sve-wrappers.c b/sysdeps/aarch64/fpu/test-float-sve-wrappers.c
index 025daa662e..0f972b7886 100644
--- a/sysdeps/aarch64/fpu/test-float-sve-wrappers.c
+++ b/sysdeps/aarch64/fpu/test-float-sve-wrappers.c
@@ -49,6 +49,7 @@ SVE_VECTOR_WRAPPER (asinhf_sve, _ZGVsMxv_asinhf)
 SVE_VECTOR_WRAPPER (atanf_sve, _ZGVsMxv_atanf)
 SVE_VECTOR_WRAPPER (atanhf_sve, _ZGVsMxv_atanhf)
 SVE_VECTOR_WRAPPER_ff (atan2f_sve, _ZGVsMxvv_atan2f)
+SVE_VECTOR_WRAPPER (cbrtf_sve, _ZGVsMxv_cbrtf)
 SVE_VECTOR_WRAPPER (cosf_sve, _ZGVsMxv_cosf)
 SVE_VECTOR_WRAPPER (coshf_sve, _ZGVsMxv_coshf)
 SVE_VECTOR_WRAPPER (erff_sve, _ZGVsMxv_erff)
@@ -57,10 +58,12 @@ SVE_VECTOR_WRAPPER (expf_sve, _ZGVsMxv_expf)
 SVE_VECTOR_WRAPPER (exp10f_sve, _ZGVsMxv_exp10f)
 SVE_VECTOR_WRAPPER (exp2f_sve, _ZGVsMxv_exp2f)
 SVE_VECTOR_WRAPPER (expm1f_sve, _ZGVsMxv_expm1f)
+SVE_VECTOR_WRAPPER_ff (hypotf_sve, _ZGVsMxvv_hypotf)
 SVE_VECTOR_WRAPPER (logf_sve, _ZGVsMxv_logf)
 SVE_VECTOR_WRAPPER (log10f_sve, _ZGVsMxv_log10f)
 SVE_VECTOR_WRAPPER (log1pf_sve, _ZGVsMxv_log1pf)
 SVE_VECTOR_WRAPPER (log2f_sve, _ZGVsMxv_log2f)
+SVE_VECTOR_WRAPPER_ff (powf_sve, _ZGVsMxvv_powf)
 SVE_VECTOR_WRAPPER (sinf_sve, _ZGVsMxv_sinf)
 SVE_VECTOR_WRAPPER (sinhf_sve, _ZGVsMxv_sinhf)
 SVE_VECTOR_WRAPPER (tanf_sve, _ZGVsMxv_tanf)
diff --git a/sysdeps/aarch64/fpu/v_pow_exp_data.c b/sysdeps/aarch64/fpu/v_pow_exp_data.c
new file mode 100644
index 0000000000..8b7fb83668
--- /dev/null
+++ b/sysdeps/aarch64/fpu/v_pow_exp_data.c
@@ -0,0 +1,301 @@
+/* Shared data between exp, exp2 and pow.
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "vecmath_config.h"
+
+#define N (1 << V_POW_EXP_TABLE_BITS)
+
+const struct v_pow_exp_data __v_pow_exp_data = {
+// exp polynomial coefficients.
+.poly = {
+// abs error: 1.43*2^-58
+// ulp error: 0.549 (0.550 without fma)
+// if |x| < ln2/512
+0x1.fffffffffffd4p-2,
+0x1.5555571d6ef9p-3,
+0x1.5555576a5adcep-5,
+},
+// N/ln2
+.n_over_ln2 = 0x1.71547652b82fep0 * N,
+// ln2/N
+.ln2_over_n_hi = 0x1.62e42fefc0000p-9,
+.ln2_over_n_lo = -0x1.c610ca86c3899p-45,
+// Used for rounding to nearest integer without using intrinsics.
+.shift = 0x1.8p52,
+// 2^(k/N) ~= H[k]*(1 + T[k]) for int k in [0,N)
+// sbits[k] = asuint64(H[k]) - (k << 52)/N
+.sbits = {
+0x3ff0000000000000,
+0x3feffb1afa5abcbf,
+0x3feff63da9fb3335,
+0x3feff168143b0281,
+0x3fefec9a3e778061,
+0x3fefe7d42e11bbcc,
+0x3fefe315e86e7f85,
+0x3fefde5f72f654b1,
+0x3fefd9b0d3158574,
+0x3fefd50a0e3c1f89,
+0x3fefd06b29ddf6de,
+0x3fefcbd42b72a836,
+0x3fefc74518759bc8,
+0x3fefc2bdf66607e0,
+0x3fefbe3ecac6f383,
+0x3fefb9c79b1f3919,
+0x3fefb5586cf9890f,
+0x3fefb0f145e46c85,
+0x3fefac922b7247f7,
+0x3fefa83b23395dec,
+0x3fefa3ec32d3d1a2,
+0x3fef9fa55fdfa9c5,
+0x3fef9b66affed31b,
+0x3fef973028d7233e,
+0x3fef9301d0125b51,
+0x3fef8edbab5e2ab6,
+0x3fef8abdc06c31cc,
+0x3fef86a814f204ab,
+0x3fef829aaea92de0,
+0x3fef7e95934f312e,
+0x3fef7a98c8a58e51,
+0x3fef76a45471c3c2,
+0x3fef72b83c7d517b,
+0x3fef6ed48695bbc0,
+0x3fef6af9388c8dea,
+0x3fef672658375d2f,
+0x3fef635beb6fcb75,
+0x3fef5f99f8138a1c,
+0x3fef5be084045cd4,
+0x3fef582f95281c6b,
+0x3fef54873168b9aa,
+0x3fef50e75eb44027,
+0x3fef4d5022fcd91d,
+0x3fef49c18438ce4d,
+0x3fef463b88628cd6,
+0x3fef42be3578a819,
+0x3fef3f49917ddc96,
+0x3fef3bdda27912d1,
+0x3fef387a6e756238,
+0x3fef351ffb82140a,
+0x3fef31ce4fb2a63f,
+0x3fef2e85711ece75,
+0x3fef2b4565e27cdd,
+0x3fef280e341ddf29,
+0x3fef24dfe1f56381,
+0x3fef21ba7591bb70,
+0x3fef1e9df51fdee1,
+0x3fef1b8a66d10f13,
+0x3fef187fd0dad990,
+0x3fef157e39771b2f,
+0x3fef1285a6e4030b,
+0x3fef0f961f641589,
+0x3fef0cafa93e2f56,
+0x3fef09d24abd886b,
+0x3fef06fe0a31b715,
+0x3fef0432edeeb2fd,
+0x3fef0170fc4cd831,
+0x3feefeb83ba8ea32,
+0x3feefc08b26416ff,
+0x3feef96266e3fa2d,
+0x3feef6c55f929ff1,
+0x3feef431a2de883b,
+0x3feef1a7373aa9cb,
+0x3feeef26231e754a,
+0x3feeecae6d05d866,
+0x3feeea401b7140ef,
+0x3feee7db34e59ff7,
+0x3feee57fbfec6cf4,
+0x3feee32dc313a8e5,
+0x3feee0e544ede173,
+0x3feedea64c123422,
+0x3feedc70df1c5175,
+0x3feeda4504ac801c,
+0x3feed822c367a024,
+0x3feed60a21f72e2a,
+0x3feed3fb2709468a,
+0x3feed1f5d950a897,
+0x3feecffa3f84b9d4,
+0x3feece086061892d,
+0x3feecc2042a7d232,
+0x3feeca41ed1d0057,
+0x3feec86d668b3237,
+0x3feec6a2b5c13cd0,
+0x3feec4e1e192aed2,
+0x3feec32af0d7d3de,
+0x3feec17dea6db7d7,
+0x3feebfdad5362a27,
+0x3feebe41b817c114,
+0x3feebcb299fddd0d,
+0x3feebb2d81d8abff,
+0x3feeb9b2769d2ca7,
+0x3feeb8417f4531ee,
+0x3feeb6daa2cf6642,
+0x3feeb57de83f4eef,
+0x3feeb42b569d4f82,
+0x3feeb2e2f4f6ad27,
+0x3feeb1a4ca5d920f,
+0x3feeb070dde910d2,
+0x3feeaf4736b527da,
+0x3feeae27dbe2c4cf,
+0x3feead12d497c7fd,
+0x3feeac0827ff07cc,
+0x3feeab07dd485429,
+0x3feeaa11fba87a03,
+0x3feea9268a5946b7,
+0x3feea84590998b93,
+0x3feea76f15ad2148,
+0x3feea6a320dceb71,
+0x3feea5e1b976dc09,
+0x3feea52ae6cdf6f4,
+0x3feea47eb03a5585,
+0x3feea3dd1d1929fd,
+0x3feea34634ccc320,
+0x3feea2b9febc8fb7,
+0x3feea23882552225,
+0x3feea1c1c70833f6,
+0x3feea155d44ca973,
+0x3feea0f4b19e9538,
+0x3feea09e667f3bcd,
+0x3feea052fa75173e,
+0x3feea012750bdabf,
+0x3fee9fdcddd47645,
+0x3fee9fb23c651a2f,
+0x3fee9f9298593ae5,
+0x3fee9f7df9519484,
+0x3fee9f7466f42e87,
+0x3fee9f75e8ec5f74,
+0x3fee9f8286ead08a,
+0x3fee9f9a48a58174,
+0x3fee9fbd35d7cbfd,
+0x3fee9feb564267c9,
+0x3feea024b1ab6e09,
+0x3feea0694fde5d3f,
+0x3feea0b938ac1cf6,
+0x3feea11473eb0187,
+0x3feea17b0976cfdb,
+0x3feea1ed0130c132,
+0x3feea26a62ff86f0,
+0x3feea2f336cf4e62,
+0x3feea3878491c491,
+0x3feea427543e1a12,
+0x3feea4d2add106d9,
+0x3feea589994cce13,
+0x3feea64c1eb941f7,
+0x3feea71a4623c7ad,
+0x3feea7f4179f5b21,
+0x3feea8d99b4492ed,
+0x3feea9cad931a436,
+0x3feeaac7d98a6699,
+0x3feeabd0a478580f,
+0x3feeace5422aa0db,
+0x3feeae05bad61778,
+0x3feeaf3216b5448c,
+0x3feeb06a5e0866d9,
+0x3feeb1ae99157736,
+0x3feeb2fed0282c8a,
+0x3feeb45b0b91ffc6,
+0x3feeb5c353aa2fe2,
+0x3feeb737b0cdc5e5,
+0x3feeb8b82b5f98e5,
+0x3feeba44cbc8520f,
+0x3feebbdd9a7670b3,
+0x3feebd829fde4e50,
+0x3feebf33e47a22a2,
+0x3feec0f170ca07ba,
+0x3feec2bb4d53fe0d,
+0x3feec49182a3f090,
+0x3feec674194bb8d5,
+0x3feec86319e32323,
+0x3feeca5e8d07f29e,
+0x3feecc667b5de565,
+0x3feece7aed8eb8bb,
+0x3feed09bec4a2d33,
+0x3feed2c980460ad8,
+0x3feed503b23e255d,
+0x3feed74a8af46052,
+0x3feed99e1330b358,
+0x3feedbfe53c12e59,
+0x3feede6b5579fdbf,
+0x3feee0e521356eba,
+0x3feee36bbfd3f37a,
+0x3feee5ff3a3c2774,
+0x3feee89f995ad3ad,
+0x3feeeb4ce622f2ff,
+0x3feeee07298db666,
+0x3feef0ce6c9a8952,
+0x3feef3a2b84f15fb,
+0x3feef68415b749b1,
+0x3feef9728de5593a,
+0x3feefc6e29f1c52a,
+0x3feeff76f2fb5e47,
+0x3fef028cf22749e4,
+0x3fef05b030a1064a,
+0x3fef08e0b79a6f1f,
+0x3fef0c1e904bc1d2,
+0x3fef0f69c3f3a207,
+0x3fef12c25bd71e09,
+0x3fef16286141b33d,
+0x3fef199bdd85529c,
+0x3fef1d1cd9fa652c,
+0x3fef20ab5fffd07a,
+0x3fef244778fafb22,
+0x3fef27f12e57d14b,
+0x3fef2ba88988c933,
+0x3fef2f6d9406e7b5,
+0x3fef33405751c4db,
+0x3fef3720dcef9069,
+0x3fef3b0f2e6d1675,
+0x3fef3f0b555dc3fa,
+0x3fef43155b5bab74,
+0x3fef472d4a07897c,
+0x3fef4b532b08c968,
+0x3fef4f87080d89f2,
+0x3fef53c8eacaa1d6,
+0x3fef5818dcfba487,
+0x3fef5c76e862e6d3,
+0x3fef60e316c98398,
+0x3fef655d71ff6075,
+0x3fef69e603db3285,
+0x3fef6e7cd63a8315,
+0x3fef7321f301b460,
+0x3fef77d5641c0658,
+0x3fef7c97337b9b5f,
+0x3fef81676b197d17,
+0x3fef864614f5a129,
+0x3fef8b333b16ee12,
+0x3fef902ee78b3ff6,
+0x3fef953924676d76,
+0x3fef9a51fbc74c83,
+0x3fef9f7977cdb740,
+0x3fefa4afa2a490da,
+0x3fefa9f4867cca6e,
+0x3fefaf482d8e67f1,
+0x3fefb4aaa2188510,
+0x3fefba1bee615a27,
+0x3fefbf9c1cb6412a,
+0x3fefc52b376bba97,
+0x3fefcac948dd7274,
+0x3fefd0765b6e4540,
+0x3fefd632798844f8,
+0x3fefdbfdad9cbe14,
+0x3fefe1d802243c89,
+0x3fefe7c1819e90d8,
+0x3fefedba3692d514,
+0x3feff3c22b8f71f1,
+0x3feff9d96b2a23d9,
+},
+};
diff --git a/sysdeps/aarch64/fpu/v_pow_log_data.c b/sysdeps/aarch64/fpu/v_pow_log_data.c
new file mode 100644
index 0000000000..0242fff477
--- /dev/null
+++ b/sysdeps/aarch64/fpu/v_pow_log_data.c
@@ -0,0 +1,186 @@
+/* Data for the log part of pow.
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "vecmath_config.h"
+
+#define N (1 << V_POW_LOG_TABLE_BITS)
+
+/* Algorithm:
+
+	x = 2^k z
+	log(x) = k ln2 + log(c) + log(z/c)
+	log(z/c) = poly(z/c - 1)
+
+   where z is in [0x1.69555p-1; 0x1.69555p0] which is split into N subintervals
+   and z falls into the ith one, then table entries are computed as
+
+	tab[i].invc = 1/c
+	tab[i].logc = round(0x1p43*log(c))/0x1p43
+	tab[i].logctail = (double)(log(c) - logc)
+
+   where c is chosen near the center of the subinterval such that 1/c has only
+   a few precision bits so z/c - 1 is exactly representible as double:
+
+	1/c = center < 1 ? round(N/center)/N : round(2*N/center)/N/2
+
+   Note: |z/c - 1| < 1/N for the chosen c, |log(c) - logc - logctail| <
+   0x1p-97, the last few bits of logc are rounded away so k*ln2hi + logc has no
+   rounding error and the interval for z is selected such that near x == 1,
+   where log(x)
+   is tiny, large cancellation error is avoided in logc + poly(z/c - 1).  */
+const struct v_pow_log_data __v_pow_log_data = {
+  /* relative error: 0x1.11922ap-70 in [-0x1.6bp-8, 0x1.6bp-8]
+     Coefficients are scaled to match the scaling during evaluation.  */
+  .poly = { -0x1p-1, -0x1.555555555556p-1, 0x1.0000000000006p-1,
+	    0x1.999999959554ep-1, -0x1.555555529a47ap-1, -0x1.2495b9b4845e9p0,
+	    0x1.0002b8b263fc3p0, },
+  .ln2_hi = 0x1.62e42fefa3800p-1,
+  .ln2_lo = 0x1.ef35793c76730p-45,
+  .invc = { 0x1.6a00000000000p+0, 0x1.6800000000000p+0, 0x1.6600000000000p+0,
+	    0x1.6400000000000p+0, 0x1.6200000000000p+0, 0x1.6000000000000p+0,
+	    0x1.5e00000000000p+0, 0x1.5c00000000000p+0, 0x1.5a00000000000p+0,
+	    0x1.5800000000000p+0, 0x1.5600000000000p+0, 0x1.5600000000000p+0,
+	    0x1.5400000000000p+0, 0x1.5200000000000p+0, 0x1.5000000000000p+0,
+	    0x1.4e00000000000p+0, 0x1.4c00000000000p+0, 0x1.4a00000000000p+0,
+	    0x1.4a00000000000p+0, 0x1.4800000000000p+0, 0x1.4600000000000p+0,
+	    0x1.4400000000000p+0, 0x1.4200000000000p+0, 0x1.4000000000000p+0,
+	    0x1.4000000000000p+0, 0x1.3e00000000000p+0, 0x1.3c00000000000p+0,
+	    0x1.3a00000000000p+0, 0x1.3a00000000000p+0, 0x1.3800000000000p+0,
+	    0x1.3600000000000p+0, 0x1.3400000000000p+0, 0x1.3400000000000p+0,
+	    0x1.3200000000000p+0, 0x1.3000000000000p+0, 0x1.3000000000000p+0,
+	    0x1.2e00000000000p+0, 0x1.2c00000000000p+0, 0x1.2c00000000000p+0,
+	    0x1.2a00000000000p+0, 0x1.2800000000000p+0, 0x1.2600000000000p+0,
+	    0x1.2600000000000p+0, 0x1.2400000000000p+0, 0x1.2400000000000p+0,
+	    0x1.2200000000000p+0, 0x1.2000000000000p+0, 0x1.2000000000000p+0,
+	    0x1.1e00000000000p+0, 0x1.1c00000000000p+0, 0x1.1c00000000000p+0,
+	    0x1.1a00000000000p+0, 0x1.1a00000000000p+0, 0x1.1800000000000p+0,
+	    0x1.1600000000000p+0, 0x1.1600000000000p+0, 0x1.1400000000000p+0,
+	    0x1.1400000000000p+0, 0x1.1200000000000p+0, 0x1.1000000000000p+0,
+	    0x1.1000000000000p+0, 0x1.0e00000000000p+0, 0x1.0e00000000000p+0,
+	    0x1.0c00000000000p+0, 0x1.0c00000000000p+0, 0x1.0a00000000000p+0,
+	    0x1.0a00000000000p+0, 0x1.0800000000000p+0, 0x1.0800000000000p+0,
+	    0x1.0600000000000p+0, 0x1.0400000000000p+0, 0x1.0400000000000p+0,
+	    0x1.0200000000000p+0, 0x1.0200000000000p+0, 0x1.0000000000000p+0,
+	    0x1.0000000000000p+0, 0x1.fc00000000000p-1, 0x1.f800000000000p-1,
+	    0x1.f400000000000p-1, 0x1.f000000000000p-1, 0x1.ec00000000000p-1,
+	    0x1.e800000000000p-1, 0x1.e400000000000p-1, 0x1.e200000000000p-1,
+	    0x1.de00000000000p-1, 0x1.da00000000000p-1, 0x1.d600000000000p-1,
+	    0x1.d400000000000p-1, 0x1.d000000000000p-1, 0x1.cc00000000000p-1,
+	    0x1.ca00000000000p-1, 0x1.c600000000000p-1, 0x1.c400000000000p-1,
+	    0x1.c000000000000p-1, 0x1.be00000000000p-1, 0x1.ba00000000000p-1,
+	    0x1.b800000000000p-1, 0x1.b400000000000p-1, 0x1.b200000000000p-1,
+	    0x1.ae00000000000p-1, 0x1.ac00000000000p-1, 0x1.aa00000000000p-1,
+	    0x1.a600000000000p-1, 0x1.a400000000000p-1, 0x1.a000000000000p-1,
+	    0x1.9e00000000000p-1, 0x1.9c00000000000p-1, 0x1.9a00000000000p-1,
+	    0x1.9600000000000p-1, 0x1.9400000000000p-1, 0x1.9200000000000p-1,
+	    0x1.9000000000000p-1, 0x1.8c00000000000p-1, 0x1.8a00000000000p-1,
+	    0x1.8800000000000p-1, 0x1.8600000000000p-1, 0x1.8400000000000p-1,
+	    0x1.8200000000000p-1, 0x1.7e00000000000p-1, 0x1.7c00000000000p-1,
+	    0x1.7a00000000000p-1, 0x1.7800000000000p-1, 0x1.7600000000000p-1,
+	    0x1.7400000000000p-1, 0x1.7200000000000p-1, 0x1.7000000000000p-1,
+	    0x1.6e00000000000p-1, 0x1.6c00000000000p-1, },
+  .logc
+  = { -0x1.62c82f2b9c800p-2, -0x1.5d1bdbf580800p-2, -0x1.5767717455800p-2,
+      -0x1.51aad872df800p-2, -0x1.4be5f95777800p-2, -0x1.4618bc21c6000p-2,
+      -0x1.404308686a800p-2, -0x1.3a64c55694800p-2, -0x1.347dd9a988000p-2,
+      -0x1.2e8e2bae12000p-2, -0x1.2895a13de8800p-2, -0x1.2895a13de8800p-2,
+      -0x1.22941fbcf7800p-2, -0x1.1c898c1699800p-2, -0x1.1675cababa800p-2,
+      -0x1.1058bf9ae4800p-2, -0x1.0a324e2739000p-2, -0x1.0402594b4d000p-2,
+      -0x1.0402594b4d000p-2, -0x1.fb9186d5e4000p-3, -0x1.ef0adcbdc6000p-3,
+      -0x1.e27076e2af000p-3, -0x1.d5c216b4fc000p-3, -0x1.c8ff7c79aa000p-3,
+      -0x1.c8ff7c79aa000p-3, -0x1.bc286742d9000p-3, -0x1.af3c94e80c000p-3,
+      -0x1.a23bc1fe2b000p-3, -0x1.a23bc1fe2b000p-3, -0x1.9525a9cf45000p-3,
+      -0x1.87fa06520d000p-3, -0x1.7ab890210e000p-3, -0x1.7ab890210e000p-3,
+      -0x1.6d60fe719d000p-3, -0x1.5ff3070a79000p-3, -0x1.5ff3070a79000p-3,
+      -0x1.526e5e3a1b000p-3, -0x1.44d2b6ccb8000p-3, -0x1.44d2b6ccb8000p-3,
+      -0x1.371fc201e9000p-3, -0x1.29552f81ff000p-3, -0x1.1b72ad52f6000p-3,
+      -0x1.1b72ad52f6000p-3, -0x1.0d77e7cd09000p-3, -0x1.0d77e7cd09000p-3,
+      -0x1.fec9131dbe000p-4, -0x1.e27076e2b0000p-4, -0x1.e27076e2b0000p-4,
+      -0x1.c5e548f5bc000p-4, -0x1.a926d3a4ae000p-4, -0x1.a926d3a4ae000p-4,
+      -0x1.8c345d631a000p-4, -0x1.8c345d631a000p-4, -0x1.6f0d28ae56000p-4,
+      -0x1.51b073f062000p-4, -0x1.51b073f062000p-4, -0x1.341d7961be000p-4,
+      -0x1.341d7961be000p-4, -0x1.16536eea38000p-4, -0x1.f0a30c0118000p-5,
+      -0x1.f0a30c0118000p-5, -0x1.b42dd71198000p-5, -0x1.b42dd71198000p-5,
+      -0x1.77458f632c000p-5, -0x1.77458f632c000p-5, -0x1.39e87b9fec000p-5,
+      -0x1.39e87b9fec000p-5, -0x1.f829b0e780000p-6, -0x1.f829b0e780000p-6,
+      -0x1.7b91b07d58000p-6, -0x1.fc0a8b0fc0000p-7, -0x1.fc0a8b0fc0000p-7,
+      -0x1.fe02a6b100000p-8, -0x1.fe02a6b100000p-8, 0x0.0000000000000p+0,
+      0x0.0000000000000p+0,  0x1.0101575890000p-7,  0x1.0205658938000p-6,
+      0x1.8492528c90000p-6,  0x1.0415d89e74000p-5,  0x1.466aed42e0000p-5,
+      0x1.894aa149fc000p-5,  0x1.ccb73cdddc000p-5,  0x1.eea31c006c000p-5,
+      0x1.1973bd1466000p-4,  0x1.3bdf5a7d1e000p-4,  0x1.5e95a4d97a000p-4,
+      0x1.700d30aeac000p-4,  0x1.9335e5d594000p-4,  0x1.b6ac88dad6000p-4,
+      0x1.c885801bc4000p-4,  0x1.ec739830a2000p-4,  0x1.fe89139dbe000p-4,
+      0x1.1178e8227e000p-3,  0x1.1aa2b7e23f000p-3,  0x1.2d1610c868000p-3,
+      0x1.365fcb0159000p-3,  0x1.4913d8333b000p-3,  0x1.527e5e4a1b000p-3,
+      0x1.6574ebe8c1000p-3,  0x1.6f0128b757000p-3,  0x1.7898d85445000p-3,
+      0x1.8beafeb390000p-3,  0x1.95a5adcf70000p-3,  0x1.a93ed3c8ae000p-3,
+      0x1.b31d8575bd000p-3,  0x1.bd087383be000p-3,  0x1.c6ffbc6f01000p-3,
+      0x1.db13db0d49000p-3,  0x1.e530effe71000p-3,  0x1.ef5ade4dd0000p-3,
+      0x1.f991c6cb3b000p-3,  0x1.07138604d5800p-2,  0x1.0c42d67616000p-2,
+      0x1.1178e8227e800p-2,  0x1.16b5ccbacf800p-2,  0x1.1bf99635a6800p-2,
+      0x1.214456d0eb800p-2,  0x1.2bef07cdc9000p-2,  0x1.314f1e1d36000p-2,
+      0x1.36b6776be1000p-2,  0x1.3c25277333000p-2,  0x1.419b423d5e800p-2,
+      0x1.4718dc271c800p-2,  0x1.4c9e09e173000p-2,  0x1.522ae0738a000p-2,
+      0x1.57bf753c8d000p-2,  0x1.5d5bddf596000p-2, },
+  .logctail
+  = { 0x1.ab42428375680p-48,  -0x1.ca508d8e0f720p-46, -0x1.362a4d5b6506dp-45,
+      -0x1.684e49eb067d5p-49, -0x1.41b6993293ee0p-47, 0x1.3d82f484c84ccp-46,
+      0x1.c42f3ed820b3ap-50,  0x1.0b1c686519460p-45,  0x1.5594dd4c58092p-45,
+      0x1.67b1e99b72bd8p-45,  0x1.5ca14b6cfb03fp-46,  0x1.5ca14b6cfb03fp-46,
+      -0x1.65a242853da76p-46, -0x1.fafbc68e75404p-46, 0x1.f1fc63382a8f0p-46,
+      -0x1.6a8c4fd055a66p-45, -0x1.c6bee7ef4030ep-47, -0x1.036b89ef42d7fp-48,
+      -0x1.036b89ef42d7fp-48, 0x1.d572aab993c87p-47,  0x1.b26b79c86af24p-45,
+      -0x1.72f4f543fff10p-46, 0x1.1ba91bbca681bp-45,  0x1.7794f689f8434p-45,
+      0x1.7794f689f8434p-45,  0x1.94eb0318bb78fp-46,  0x1.a4e633fcd9066p-52,
+      -0x1.58c64dc46c1eap-45, -0x1.58c64dc46c1eap-45, -0x1.ad1d904c1d4e3p-45,
+      0x1.bbdbf7fdbfa09p-45,  0x1.bdb9072534a58p-45,  0x1.bdb9072534a58p-45,
+      -0x1.0e46aa3b2e266p-46, -0x1.e9e439f105039p-46, -0x1.e9e439f105039p-46,
+      -0x1.0de8b90075b8fp-45, 0x1.70cc16135783cp-46,  0x1.70cc16135783cp-46,
+      0x1.178864d27543ap-48,  -0x1.48d301771c408p-45, -0x1.e80a41811a396p-45,
+      -0x1.e80a41811a396p-45, 0x1.a699688e85bf4p-47,  0x1.a699688e85bf4p-47,
+      -0x1.575545ca333f2p-45, 0x1.a342c2af0003cp-45,  0x1.a342c2af0003cp-45,
+      -0x1.d0c57585fbe06p-46, 0x1.53935e85baac8p-45,  0x1.53935e85baac8p-45,
+      0x1.37c294d2f5668p-46,  0x1.37c294d2f5668p-46,  -0x1.69737c93373dap-45,
+      0x1.f025b61c65e57p-46,  0x1.f025b61c65e57p-46,  0x1.c5edaccf913dfp-45,
+      0x1.c5edaccf913dfp-45,  0x1.47c5e768fa309p-46,  0x1.d599e83368e91p-45,
+      0x1.d599e83368e91p-45,  0x1.c827ae5d6704cp-46,  0x1.c827ae5d6704cp-46,
+      -0x1.cfc4634f2a1eep-45, -0x1.cfc4634f2a1eep-45, 0x1.502b7f526feaap-48,
+      0x1.502b7f526feaap-48,  -0x1.980267c7e09e4p-45, -0x1.980267c7e09e4p-45,
+      -0x1.88d5493faa639p-45, -0x1.f1e7cf6d3a69cp-50, -0x1.f1e7cf6d3a69cp-50,
+      -0x1.9e23f0dda40e4p-46, -0x1.9e23f0dda40e4p-46, 0x0.0000000000000p+0,
+      0x0.0000000000000p+0,   -0x1.0c76b999d2be8p-46, -0x1.3dc5b06e2f7d2p-45,
+      -0x1.aa0ba325a0c34p-45, 0x1.111c05cf1d753p-47,  -0x1.c167375bdfd28p-45,
+      -0x1.97995d05a267dp-46, -0x1.a68f247d82807p-46, -0x1.e113e4fc93b7bp-47,
+      -0x1.5325d560d9e9bp-45, 0x1.cc85ea5db4ed7p-45,  -0x1.c69063c5d1d1ep-45,
+      0x1.c1e8da99ded32p-49,  0x1.3115c3abd47dap-45,  -0x1.390802bf768e5p-46,
+      0x1.646d1c65aacd3p-45,  -0x1.dc068afe645e0p-45, -0x1.534d64fa10afdp-45,
+      0x1.1ef78ce2d07f2p-45,  0x1.ca78e44389934p-45,  0x1.39d6ccb81b4a1p-47,
+      0x1.62fa8234b7289p-51,  0x1.5837954fdb678p-45,  0x1.633e8e5697dc7p-45,
+      0x1.9cf8b2c3c2e78p-46,  -0x1.5118de59c21e1p-45, -0x1.c661070914305p-46,
+      -0x1.73d54aae92cd1p-47, 0x1.7f22858a0ff6fp-47,  -0x1.8724350562169p-45,
+      -0x1.c358d4eace1aap-47, -0x1.d4bc4595412b6p-45, -0x1.1ec72c5962bd2p-48,
+      -0x1.aff2af715b035p-45, 0x1.212276041f430p-51,  -0x1.a211565bb8e11p-51,
+      0x1.bcbecca0cdf30p-46,  0x1.89cdb16ed4e91p-48,  0x1.7188b163ceae9p-45,
+      -0x1.c210e63a5f01cp-45, 0x1.b9acdf7a51681p-45,  0x1.ca6ed5147bdb7p-45,
+      0x1.a87deba46baeap-47,  0x1.a9cfa4a5004f4p-45,  -0x1.8e27ad3213cb8p-45,
+      0x1.16ecdb0f177c8p-46,  0x1.83b54b606bd5cp-46,  0x1.8e436ec90e09dp-47,
+      -0x1.f27ce0967d675p-45, -0x1.e20891b0ad8a4p-45, 0x1.ebe708164c759p-45,
+      0x1.fadedee5d40efp-46,  -0x1.a0b2a08a465dcp-47, },
+};
diff --git a/sysdeps/aarch64/fpu/v_powf_data.c b/sysdeps/aarch64/fpu/v_powf_data.c
new file mode 100644
index 0000000000..f789b84850
--- /dev/null
+++ b/sysdeps/aarch64/fpu/v_powf_data.c
@@ -0,0 +1,102 @@
+/* Coefficients for single-precision SVE pow(x) function.
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+
+#include "vecmath_config.h"
+
+const struct v_powf_data __v_powf_data = {
+  .invc = { 0x1.6489890582816p+0,
+	    0x1.5cf19b35e3472p+0,
+	    0x1.55aac0e956d65p+0,
+	    0x1.4eb0022977e01p+0,
+	    0x1.47fcccda1dd1fp+0,
+	    0x1.418ceabab68c1p+0,
+	    0x1.3b5c788f1edb3p+0,
+	    0x1.3567de48e9c9ap+0,
+	    0x1.2fabc80fd19bap+0,
+	    0x1.2a25200ce536bp+0,
+	    0x1.24d108e0152e3p+0,
+	    0x1.1facd8ab2fbe1p+0,
+	    0x1.1ab614a03efdfp+0,
+	    0x1.15ea6d03af9ffp+0,
+	    0x1.1147b994bb776p+0,
+	    0x1.0ccbf650593aap+0,
+	    0x1.0875408477302p+0,
+	    0x1.0441d42a93328p+0,
+	    0x1p+0,
+	    0x1.f1d006c855e86p-1,
+	    0x1.e28c3341aa301p-1,
+	    0x1.d4bdf9aa64747p-1,
+	    0x1.c7b45a24e5803p-1,
+	    0x1.bb5f5eb2ed60ap-1,
+	    0x1.afb0bff8fe6b4p-1,
+	    0x1.a49badf7ab1f5p-1,
+	    0x1.9a14a111fc4c9p-1,
+	    0x1.901131f5b2fdcp-1,
+	    0x1.8687f73f6d865p-1,
+	    0x1.7d7067eb77986p-1,
+	    0x1.74c2c1cf97b65p-1,
+	    0x1.6c77f37cff2a1p-1
+  },
+  .logc = { -0x1.e960f97b22702p+3,
+	    -0x1.c993406cd4db6p+3,
+	    -0x1.aa711d9a7d0f3p+3,
+	    -0x1.8bf37bacdce9bp+3,
+	    -0x1.6e13b3519946ep+3,
+	    -0x1.50cb8281e4089p+3,
+	    -0x1.341504a237e2bp+3,
+	    -0x1.17eaab624ffbbp+3,
+	    -0x1.f88e708f8c853p+2,
+	    -0x1.c24b6da113914p+2,
+	    -0x1.8d02ee397cb1dp+2,
+	    -0x1.58ac1223408b3p+2,
+	    -0x1.253e6fd190e89p+2,
+	    -0x1.e5641882c12ffp+1,
+	    -0x1.81fea712926f7p+1,
+	    -0x1.203e240de64a3p+1,
+	    -0x1.8029b86a78281p0,
+	    -0x1.85d713190fb9p-1,
+	    0x0p+0,
+	    0x1.4c1cc07312997p0,
+	    0x1.5e1848ccec948p+1,
+	    0x1.04cfcb7f1196fp+2,
+	    0x1.582813d463c21p+2,
+	    0x1.a936fa68760ccp+2,
+	    0x1.f81bc31d6cc4ep+2,
+	    0x1.2279a09fae6b1p+3,
+	    0x1.47ec0b6df5526p+3,
+	    0x1.6c71762280f1p+3,
+	    0x1.90155070798dap+3,
+	    0x1.b2e23b1d3068cp+3,
+	    0x1.d4e21b0daa86ap+3,
+	    0x1.f61e2a2f67f3fp+3
+  },
+  .scale = { 0x3ff0000000000000, 0x3fefd9b0d3158574, 0x3fefb5586cf9890f,
+	     0x3fef9301d0125b51, 0x3fef72b83c7d517b, 0x3fef54873168b9aa,
+	     0x3fef387a6e756238, 0x3fef1e9df51fdee1, 0x3fef06fe0a31b715,
+	     0x3feef1a7373aa9cb, 0x3feedea64c123422, 0x3feece086061892d,
+	     0x3feebfdad5362a27, 0x3feeb42b569d4f82, 0x3feeab07dd485429,
+	     0x3feea47eb03a5585, 0x3feea09e667f3bcd, 0x3fee9f75e8ec5f74,
+	     0x3feea11473eb0187, 0x3feea589994cce13, 0x3feeace5422aa0db,
+	     0x3feeb737b0cdc5e5, 0x3feec49182a3f090, 0x3feed503b23e255d,
+	     0x3feee89f995ad3ad, 0x3feeff76f2fb5e47, 0x3fef199bdd85529c,
+	     0x3fef3720dcef9069, 0x3fef5818dcfba487, 0x3fef7c97337b9b5f,
+	     0x3fefa4afa2a490da, 0x3fefd0765b6e4540,
+  },
+};
diff --git a/sysdeps/aarch64/fpu/vecmath_config.h b/sysdeps/aarch64/fpu/vecmath_config.h
index c8cfc03bc0..7f0a8aa5f2 100644
--- a/sysdeps/aarch64/fpu/vecmath_config.h
+++ b/sysdeps/aarch64/fpu/vecmath_config.h
@@ -35,17 +35,6 @@
     __ptr;                                                                    \
   })
 
-static inline uint64_t
-asuint64 (double f)
-{
-  union
-  {
-    double f;
-    uint64_t i;
-  } u = { f };
-  return u.i;
-}
-
 #define V_LOG_POLY_ORDER 6
 #define V_LOG_TABLE_BITS 7
 extern const struct v_log_data
@@ -130,4 +119,35 @@ extern const struct erfcf_data
   } tab[645];
 } __erfcf_data attribute_hidden;
 
+/* Some data for AdvSIMD and SVE pow's internal exp and log.  */
+#define V_POW_EXP_TABLE_BITS 8
+extern const struct v_pow_exp_data
+{
+  double poly[3];
+  double n_over_ln2, ln2_over_n_hi, ln2_over_n_lo, shift;
+  uint64_t sbits[1 << V_POW_EXP_TABLE_BITS];
+} __v_pow_exp_data attribute_hidden;
+
+#define V_POW_LOG_TABLE_BITS 7
+extern const struct v_pow_log_data
+{
+  double poly[7]; /* First coefficient is 1.  */
+  double ln2_hi, ln2_lo;
+  double invc[1 << V_POW_LOG_TABLE_BITS];
+  double logc[1 << V_POW_LOG_TABLE_BITS];
+  double logctail[1 << V_POW_LOG_TABLE_BITS];
+} __v_pow_log_data attribute_hidden;
+
+/* Some data for SVE powf's internal exp and log.  */
+#define V_POWF_EXP2_TABLE_BITS 5
+#define V_POWF_EXP2_N (1 << V_POWF_EXP2_TABLE_BITS)
+#define V_POWF_LOG2_TABLE_BITS 5
+#define V_POWF_LOG2_N (1 << V_POWF_LOG2_TABLE_BITS)
+extern const struct v_powf_data
+{
+  double invc[V_POWF_LOG2_N];
+  double logc[V_POWF_LOG2_N];
+  uint64_t scale[V_POWF_EXP2_N];
+} __v_powf_data attribute_hidden;
+
 #endif
diff --git a/sysdeps/aarch64/libm-test-ulps b/sysdeps/aarch64/libm-test-ulps
index 116a5404f5..656d4b0169 100644
--- a/sysdeps/aarch64/libm-test-ulps
+++ b/sysdeps/aarch64/libm-test-ulps
@@ -477,11 +477,19 @@ double: 4
 float: 1
 ldouble: 1
 
+Function: "cbrt_advsimd":
+double: 1
+float: 1
+
 Function: "cbrt_downward":
 double: 4
 float: 1
 ldouble: 1
 
+Function: "cbrt_sve":
+double: 1
+float: 1
+
 Function: "cbrt_towardzero":
 double: 3
 float: 1
@@ -1174,10 +1182,18 @@ double: 1
 float: 1
 ldouble: 1
 
+Function: "hypot_advsimd":
+double: 1
+float: 1
+
 Function: "hypot_downward":
 double: 1
 ldouble: 1
 
+Function: "hypot_sve":
+double: 1
+float: 1
+
 Function: "hypot_towardzero":
 double: 1
 ldouble: 1
@@ -1355,6 +1371,26 @@ double: 3
 float: 3
 ldouble: 1
 
+Function: "log2p1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log2p1_upward":
+double: 1
+float: 2
+ldouble: 2
+
 Function: "log_advsimd":
 double: 1
 float: 3
@@ -1381,11 +1417,19 @@ double: 1
 float: 1
 ldouble: 2
 
+Function: "pow_advsimd":
+double: 1
+float: 2
+
 Function: "pow_downward":
 double: 1
 float: 1
 ldouble: 2
 
+Function: "pow_sve":
+double: 1
+float: 2
+
 Function: "pow_towardzero":
 double: 1
 float: 1
diff --git a/sysdeps/aarch64/multiarch/memchr_generic.S b/sysdeps/aarch64/multiarch/memchr_generic.S
index 0ed5811745..8d554275ba 100644
--- a/sysdeps/aarch64/multiarch/memchr_generic.S
+++ b/sysdeps/aarch64/multiarch/memchr_generic.S
@@ -24,6 +24,9 @@
 # undef libc_hidden_builtin_def
 # define libc_hidden_builtin_def(name)
 
+# undef weak_alias
+# define weak_alias(a, b)
+
 /* Add a hidden definition for use within libc.so.  */
 # ifdef SHARED
 	.globl __GI_memchr; __GI_memchr = __memchr_generic
diff --git a/sysdeps/aarch64/multiarch/strlen_generic.S b/sysdeps/aarch64/multiarch/strlen_generic.S
index f980a9a68f..ceeafe920c 100644
--- a/sysdeps/aarch64/multiarch/strlen_generic.S
+++ b/sysdeps/aarch64/multiarch/strlen_generic.S
@@ -30,6 +30,9 @@
 # undef libc_hidden_builtin_def
 # define libc_hidden_builtin_def(name)
 
+# undef weak_alias
+# define weak_alias(a, b)
+
 # ifdef SHARED
 /* It doesn't make sense to send libc-internal strlen calls through a PLT. */
 	.globl __GI_strlen; __GI_strlen = __strlen_generic
diff --git a/sysdeps/arm/libm-test-ulps b/sysdeps/arm/libm-test-ulps
index 5720e73288..fc7ba1439a 100644
--- a/sysdeps/arm/libm-test-ulps
+++ b/sysdeps/arm/libm-test-ulps
@@ -965,6 +965,22 @@ Function: "log2_upward":
 double: 3
 float: 3
 
+Function: "log2p1":
+double: 1
+float: 1
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+
+Function: "log2p1_upward":
+double: 1
+float: 2
+
 Function: "log_downward":
 float: 2
 
diff --git a/sysdeps/i386/fpu/w_exp10_compat.c b/sysdeps/i386/fpu/w_exp10_compat.c
index b53455386e..49a0e03385 100644
--- a/sysdeps/i386/fpu/w_exp10_compat.c
+++ b/sysdeps/i386/fpu/w_exp10_compat.c
@@ -1,3 +1,8 @@
 /* i386 provides an optimized __ieee754_exp10.  */
-#define NO_COMPAT_NEEDED 1
-#include <math/w_exp10_compat.c>
+#ifdef SHARED
+# define NO_COMPAT_NEEDED 1
+# include <math/w_exp10_compat.c>
+#else
+# include <math-type-macros-double.h>
+# include <w_exp10_template.c>
+#endif
diff --git a/sysdeps/i386/fpu/w_fmod_compat.c b/sysdeps/i386/fpu/w_fmod_compat.c
index 5ac9995ffd..528bfc2a13 100644
--- a/sysdeps/i386/fpu/w_fmod_compat.c
+++ b/sysdeps/i386/fpu/w_fmod_compat.c
@@ -7,8 +7,9 @@
 # define LIBM_SVID_COMPAT 1
 # undef compat_symbol
 # define compat_symbol(a, b, c, d)
-#endif
-#include <math/w_fmod_compat.c>
-#ifdef SHARED
+# include <math/w_fmod_compat.c>
 libm_alias_double (__fmod_compat, fmod)
+#else
+#include <math-type-macros-double.h>
+#include <w_fmod_template.c>
 #endif
diff --git a/sysdeps/i386/fpu/w_fmodf_compat.c b/sysdeps/i386/fpu/w_fmodf_compat.c
index cc417e07d3..5a61693e51 100644
--- a/sysdeps/i386/fpu/w_fmodf_compat.c
+++ b/sysdeps/i386/fpu/w_fmodf_compat.c
@@ -7,8 +7,9 @@
 # define LIBM_SVID_COMPAT 1
 # undef compat_symbol
 # define compat_symbol(a, b, c, d)
-#endif
-#include <math/w_fmodf_compat.c>
-#ifdef SHARED
+# include <math/w_fmodf_compat.c>
 libm_alias_float (__fmod_compat, fmod)
+#else
+#include <math-type-macros-float.h>
+#include <w_fmod_template.c>
 #endif
diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
index da6602f909..9eb3088d7a 100644
--- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
+++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
@@ -1424,6 +1424,30 @@ float: 1
 float128: 1
 ldouble: 1
 
+Function: "log2p1":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "log2p1_downward":
+double: 1
+float: 1
+float128: 3
+ldouble: 4
+
+Function: "log2p1_towardzero":
+double: 1
+float: 1
+float128: 2
+ldouble: 4
+
+Function: "log2p1_upward":
+double: 1
+float: 1
+float128: 2
+ldouble: 5
+
 Function: "log_downward":
 double: 1
 float128: 1
diff --git a/sysdeps/i386/stpncpy.S b/sysdeps/i386/stpncpy.S
index 895fee8a1e..74130bc71d 100644
--- a/sysdeps/i386/stpncpy.S
+++ b/sysdeps/i386/stpncpy.S
@@ -139,4 +139,6 @@ L(9):	popl %esi		/* restore saved register content */
 END (__stpncpy)
 
 libc_hidden_def (__stpncpy)
+#ifndef __stpncpy
 weak_alias (__stpncpy, stpncpy)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/s_nearbyint.c b/sysdeps/ieee754/dbl-64/s_nearbyint.c
index 08fe517b83..606002d680 100644
--- a/sysdeps/ieee754/dbl-64/s_nearbyint.c
+++ b/sysdeps/ieee754/dbl-64/s_nearbyint.c
@@ -72,4 +72,6 @@ __nearbyint (double x)
   return t;
 #endif /* ! USE_NEARBYINT_BUILTIN  */
 }
+#ifndef __nearbyint
 libm_alias_double (__nearbyint, nearbyint)
+#endif
diff --git a/sysdeps/ieee754/float128/s_isnanf128.c b/sysdeps/ieee754/float128/s_isnanf128.c
index 59f71533ce..291d4427f5 100644
--- a/sysdeps/ieee754/float128/s_isnanf128.c
+++ b/sysdeps/ieee754/float128/s_isnanf128.c
@@ -11,8 +11,14 @@
 #include "../ldbl-128/s_isnanl.c"
 #if !IS_IN (libm)
 #include <float128-abi.h>
+#ifdef SHARED
 hidden_ver (__isnanf128_impl, __isnanf128)
+#else
+strong_alias (__isnanf128_impl, __isnanf128)
+#endif
+#ifndef isnanl
 _weak_alias (__isnanf128_impl, isnanl)
+#endif
 versioned_symbol (libc, __isnanf128_impl, __isnanf128, GLIBC_2_34);
 #if (SHLIB_COMPAT (libc, FLOAT128_VERSION_M, GLIBC_2_34))
 strong_alias (__isnanf128_impl, __isnanf128_alias)
diff --git a/sysdeps/ieee754/flt-32/s_nearbyintf.c b/sysdeps/ieee754/flt-32/s_nearbyintf.c
index b270749f4c..5dd0e8f8af 100644
--- a/sysdeps/ieee754/flt-32/s_nearbyintf.c
+++ b/sysdeps/ieee754/flt-32/s_nearbyintf.c
@@ -68,4 +68,6 @@ __nearbyintf (float x)
   return t;
 #endif /* ! USE_NEARBYINT_BUILTIN  */
 }
+#ifndef __nearbyintf
 libm_alias_float (__nearbyint, nearbyint)
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/s_finitel.c b/sysdeps/ieee754/ldbl-128/s_finitel.c
index bfdd88fbbb..f1fff0ced2 100644
--- a/sysdeps/ieee754/ldbl-128/s_finitel.c
+++ b/sysdeps/ieee754/ldbl-128/s_finitel.c
@@ -32,4 +32,6 @@ int __finitel(_Float128 x)
 				-0x7fff000000000000LL)>>63);
 }
 mathx_hidden_def (__finitel)
+#ifndef finitel
 weak_alias (__finitel, finitel)
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/s_isinfl.c b/sysdeps/ieee754/ldbl-128/s_isinfl.c
index baa9a98e80..a0fa0ba659 100644
--- a/sysdeps/ieee754/ldbl-128/s_isinfl.c
+++ b/sysdeps/ieee754/ldbl-128/s_isinfl.c
@@ -24,4 +24,6 @@ __isinfl (_Float128 x)
 	return ~(lx >> 63) & (hx >> 62);
 }
 mathx_hidden_def (__isinfl)
+#ifndef isinfl
 weak_alias (__isinfl, isinfl)
+#endif
diff --git a/sysdeps/ieee754/ldbl-128/s_nextafterl.c b/sysdeps/ieee754/ldbl-128/s_nextafterl.c
index 90e71e3907..f3f3b138dd 100644
--- a/sysdeps/ieee754/ldbl-128/s_nextafterl.c
+++ b/sysdeps/ieee754/ldbl-128/s_nextafterl.c
@@ -83,5 +83,9 @@ _Float128 __nextafterl(_Float128 x, _Float128 y)
 	return x;
 }
 libm_alias_ldouble (__nextafter, nextafter)
+#ifndef __nexttowardl
 strong_alias (__nextafterl, __nexttowardl)
+#endif
+#ifndef nexttowardl
 weak_alias (__nextafterl, nexttowardl)
+#endif
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
index c0679a1153..c9a74366fd 100644
--- a/sysdeps/ieee754/ldbl-128ibm-compat/Versions
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
@@ -137,6 +137,9 @@ libm {
     __fminimum_magieee128;
     __fminimum_mag_numieee128;
   }
+  GLIBC_2.40 {
+    __log2p1ieee128;
+  }
 }
 libc {
   LDBL_IBM128_VERSION {
diff --git a/sysdeps/ieee754/ldbl-64-128/s_copysignl.c b/sysdeps/ieee754/ldbl-64-128/s_copysignl.c
index 11b42d04ba..80137847d3 100644
--- a/sysdeps/ieee754/ldbl-64-128/s_copysignl.c
+++ b/sysdeps/ieee754/ldbl-64-128/s_copysignl.c
@@ -1,10 +1,10 @@
 #include <math_ldbl_opt.h>
 #include <libm-alias-ldouble.h>
-#if IS_IN (libc)
+#if IS_IN (libc) && defined SHARED
 # undef libm_alias_ldouble
 # define libm_alias_ldouble(from, to)
 #endif
 #include <sysdeps/ieee754/ldbl-128/s_copysignl.c>
-#if IS_IN (libc)
+#if IS_IN (libc) && defined SHARED
 long_double_symbol (libc, __copysignl, copysignl);
 #endif
diff --git a/sysdeps/ieee754/ldbl-64-128/s_frexpl.c b/sysdeps/ieee754/ldbl-64-128/s_frexpl.c
index 73ac41e40c..f5f7d349f7 100644
--- a/sysdeps/ieee754/ldbl-64-128/s_frexpl.c
+++ b/sysdeps/ieee754/ldbl-64-128/s_frexpl.c
@@ -1,10 +1,10 @@
 #include <math_ldbl_opt.h>
 #include <libm-alias-ldouble.h>
-#if IS_IN (libc)
+#if IS_IN (libc) && defined SHARED
 # undef libm_alias_ldouble
 # define libm_alias_ldouble(from, to)
 #endif
 #include <sysdeps/ieee754/ldbl-128/s_frexpl.c>
-#if IS_IN (libc)
+#if IS_IN (libc) && defined SHARED
 long_double_symbol (libc, __frexpl, frexpl);
 #endif
diff --git a/sysdeps/ieee754/ldbl-64-128/s_modfl.c b/sysdeps/ieee754/ldbl-64-128/s_modfl.c
index 7d7aeae111..ba3d31334a 100644
--- a/sysdeps/ieee754/ldbl-64-128/s_modfl.c
+++ b/sysdeps/ieee754/ldbl-64-128/s_modfl.c
@@ -1,10 +1,10 @@
 #include <math_ldbl_opt.h>
 #include <libm-alias-ldouble.h>
-#if IS_IN (libc)
+#if IS_IN (libc) && defined SHARED
 # undef libm_alias_ldouble
 # define libm_alias_ldouble(from, to)
 #endif
 #include <sysdeps/ieee754/ldbl-128/s_modfl.c>
-#if IS_IN (libc)
+#if IS_IN (libc) && defined SHARED
 long_double_symbol (libc, __modfl, modfl);
 #endif
diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile
index 74788ac999..d1eda5d022 100644
--- a/sysdeps/ieee754/ldbl-opt/Makefile
+++ b/sysdeps/ieee754/ldbl-opt/Makefile
@@ -11,47 +11,239 @@ libm-routines += s_nexttowardfd
 routines += nldbl-compat
 
 extra-libs += libnldbl
-libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \
-		 obstack_printf obstack_vprintf printf scanf snprintf \
-		 sprintf sscanf swprintf swscanf vasprintf vdprintf vfprintf \
-		 vfscanf vfwprintf vfwscanf vprintf vscanf vsnprintf \
-		 vsprintf vsscanf vswprintf vswscanf vwprintf vwscanf \
-		 wprintf wscanf printf_fp printf_size \
-		 fprintf_chk fwprintf_chk printf_chk snprintf_chk sprintf_chk \
-		 swprintf_chk vfprintf_chk vfwprintf_chk vprintf_chk \
-		 vsnprintf_chk vsprintf_chk vswprintf_chk vwprintf_chk \
-		 wprintf_chk asprintf_chk vasprintf_chk dprintf_chk \
-		 vdprintf_chk obstack_printf_chk obstack_vprintf_chk \
-		 syslog syslog_chk vsyslog vsyslog_chk \
-		 strfmon strfmon_l \
-		 strfroml \
-		 strtold strtold_l strtoldint wcstold wcstold_l wcstoldint \
-		 qecvt qfcvt qgcvt qecvt_r qfcvt_r \
-		 isinf isnan finite signbit scalb log2 lgamma_r ceil \
-		 significand acos asin atan atan2 cos sin tan cosh sinh \
-		 tanh acosh asinh atanh exp log log10 exp10 expm1 \
-		 log1p logb exp2 sqrt cbrt fabs floor j0 j1 y0 y1 erf erfc \
-		 lgamma tgamma gamma rint nearbyint round trunc \
-		 copysign fdim fmax fmin nextafter pow hypot fmod \
-		 remainder ldexp scalbn frexp modf scalbln fma nan sincos \
-		 jn yn ilogb remquo lrint lround llrint llround nexttowardf \
-		 nexttoward conj cacos cacosh casin catan catanh ccos ccosh \
-		 casinh cexp clog cproj csin csinh csqrt ctan ctanh cpow \
-		 cabs carg cimag creal clog10 \
-		 isoc99_scanf isoc99_fscanf isoc99_sscanf \
-		 isoc99_vscanf isoc99_vfscanf isoc99_vsscanf \
-		 isoc99_wscanf isoc99_fwscanf isoc99_swscanf \
-		 isoc99_vwscanf isoc99_vfwscanf isoc99_vswscanf \
-		 isoc23_scanf isoc23_fscanf isoc23_sscanf \
-		 isoc23_vscanf isoc23_vfscanf isoc23_vsscanf \
-		 isoc23_wscanf isoc23_fwscanf isoc23_swscanf \
-		 isoc23_vwscanf isoc23_vfwscanf isoc23_vswscanf \
-		 nextup nextdown totalorder totalordermag getpayload \
-		 canonicalize setpayload setpayloadsig llogb fmaxmag fminmag \
-		 roundeven fromfp ufromfp fromfpx ufromfpx fadd dadd \
-		 fdiv ddiv ffma dfma fmul dmul fsqrt dsqrt fsub dsub \
-		 fmaximum fmaximum_mag fmaximum_num fmaximum_mag_num \
-		 fminimum fminimum_mag fminimum_num fminimum_mag_num
+libnldbl-calls = \
+  acos \
+  acosh \
+  asin \
+  asinh \
+  asprintf \
+  asprintf_chk \
+  atan \
+  atan2 \
+  atanh \
+  cabs \
+  cacos \
+  cacosh \
+  canonicalize \
+  carg \
+  casin \
+  casinh \
+  catan \
+  catanh \
+  cbrt \
+  ccos \
+  ccosh \
+  ceil \
+  cexp \
+  cimag \
+  clog \
+  clog10 \
+  conj \
+  copysign \
+  cos \
+  cosh \
+  cpow \
+  cproj \
+  creal \
+  csin \
+  csinh \
+  csqrt \
+  ctan \
+  ctanh \
+  dadd \
+  ddiv \
+  dfma \
+  dmul \
+  dprintf \
+  dprintf_chk \
+  dsqrt \
+  dsub \
+  erf \
+  erfc \
+  exp \
+  exp2 \
+  exp10 \
+  expm1 \
+  fabs \
+  fadd \
+  fdim \
+  fdiv \
+  ffma \
+  finite \
+  floor \
+  fma \
+  fmax \
+  fmaximum \
+  fmaximum_mag \
+  fmaximum_mag_num \
+  fmaximum_num \
+  fmaxmag \
+  fmin \
+  fminimum \
+  fminimum_mag \
+  fminimum_mag_num \
+  fminimum_num \
+  fminmag \
+  fmod \
+  fmul \
+  fprintf \
+  fprintf_chk \
+  frexp \
+  fromfp \
+  fromfpx \
+  fscanf \
+  fsqrt \
+  fsub \
+  fwprintf \
+  fwprintf_chk \
+  fwscanf \
+  gamma \
+  getpayload \
+  hypot \
+  ilogb \
+  iovfscanf \
+  isinf \
+  isnan \
+  isoc23_fscanf \
+  isoc23_fwscanf \
+  isoc23_scanf \
+  isoc23_sscanf \
+  isoc23_swscanf \
+  isoc23_vfscanf \
+  isoc23_vfwscanf \
+  isoc23_vscanf \
+  isoc23_vsscanf \
+  isoc23_vswscanf \
+  isoc23_vwscanf \
+  isoc23_wscanf \
+  isoc99_fscanf \
+  isoc99_fwscanf \
+  isoc99_scanf \
+  isoc99_sscanf \
+  isoc99_swscanf \
+  isoc99_vfscanf \
+  isoc99_vfwscanf \
+  isoc99_vscanf \
+  isoc99_vsscanf \
+  isoc99_vswscanf \
+  isoc99_vwscanf \
+  isoc99_wscanf \
+  j0 \
+  j1 \
+  jn \
+  ldexp \
+  lgamma \
+  lgamma_r \
+  llogb \
+  llrint \
+  llround \
+  log \
+  log2 \
+  log10 \
+  log1p \
+  log2p1 \
+  logb \
+  lrint \
+  lround \
+  modf \
+  nan \
+  nearbyint \
+  nextafter \
+  nextdown \
+  nexttoward \
+  nexttowardf \
+  nextup \
+  obstack_printf \
+  obstack_printf_chk \
+  obstack_vprintf \
+  obstack_vprintf_chk \
+  pow \
+  printf \
+  printf_chk \
+  printf_fp \
+  printf_size \
+  qecvt \
+  qecvt_r \
+  qfcvt \
+  qfcvt_r \
+  qgcvt \
+  remainder \
+  remquo \
+  rint \
+  round \
+  roundeven \
+  scalb \
+  scalbln \
+  scalbn \
+  scanf \
+  setpayload \
+  setpayloadsig \
+  signbit \
+  significand \
+  sin \
+  sincos \
+  sinh \
+  snprintf \
+  snprintf_chk \
+  sprintf \
+  sprintf_chk \
+  sqrt \
+  sscanf \
+  strfmon \
+  strfmon_l \
+  strfroml \
+  strtold \
+  strtold_l \
+  strtoldint \
+  swprintf \
+  swprintf_chk \
+  swscanf \
+  syslog \
+  syslog_chk \
+  tan \
+  tanh \
+  tgamma \
+  totalorder \
+  totalordermag \
+  trunc \
+  ufromfp \
+  ufromfpx \
+  vasprintf \
+  vasprintf_chk \
+  vdprintf \
+  vdprintf_chk \
+  vfprintf \
+  vfprintf_chk \
+  vfscanf \
+  vfwprintf \
+  vfwprintf_chk \
+  vfwscanf \
+  vprintf \
+  vprintf_chk \
+  vscanf \
+  vsnprintf \
+  vsnprintf_chk \
+  vsprintf \
+  vsprintf_chk \
+  vsscanf \
+  vswprintf \
+  vswprintf_chk \
+  vswscanf \
+  vsyslog \
+  vsyslog_chk \
+  vwprintf \
+  vwprintf_chk \
+  vwscanf \
+  wcstold \
+  wcstold_l \
+  wcstoldint \
+  wprintf \
+  wprintf_chk \
+  wscanf \
+  y0 \
+  y1 \
+  yn \
+# libnldbl-calls
 libnldbl-routines = $(libnldbl-calls:%=nldbl-%)
 libnldbl-inhibit-o = $(object-suffixes)
 libnldbl-static-only-routines = $(libnldbl-routines)
@@ -151,6 +343,7 @@ CFLAGS-nldbl-log.c = -fno-builtin-logl
 CFLAGS-nldbl-log10.c = -fno-builtin-log10l
 CFLAGS-nldbl-log1p.c = -fno-builtin-log1pl
 CFLAGS-nldbl-log2.c = -fno-builtin-log2l
+CFLAGS-nldbl-log2p1.c = -fno-builtin-log2p1l
 CFLAGS-nldbl-logb.c = -fno-builtin-logbl
 CFLAGS-nldbl-lrint.c = -fno-builtin-lrintl
 CFLAGS-nldbl-lround.c = -fno-builtin-lroundl
@@ -190,8 +383,11 @@ CFLAGS-nldbl-y0.c = -fno-builtin-y0l
 CFLAGS-nldbl-y1.c = -fno-builtin-y1l
 CFLAGS-nldbl-yn.c = -fno-builtin-ynl
 
-tests += test-narrow-macros-ldbl-64 test-nldbl-redirect \
-	 test-redirection-ldbl-64
+tests += \
+  test-narrow-macros-ldbl-64 \
+  test-nldbl-redirect \
+  test-redirection-ldbl-64 \
+# tests
 CFLAGS-test-narrow-macros-ldbl-64.c += -mlong-double-64
 CFLAGS-test-nldbl-redirect.c += -mlong-double-64
 CFLAGS-test-redirection-ldbl-64.c += -mlong-double-64
@@ -231,10 +427,12 @@ CFLAGS-tst-nldbl-errorfptr.c += -mlong-double-64
 endif
 
 ifeq ($(subdir), stdio-common)
-tests += tst-nldbl-scanf-binary-c11 \
-	 tst-nldbl-scanf-binary-c23 \
-	 tst-nldbl-scanf-binary-gnu11 \
-	 tst-nldbl-scanf-binary-gnu89
+tests += \
+  tst-nldbl-scanf-binary-c11 \
+  tst-nldbl-scanf-binary-c23 \
+  tst-nldbl-scanf-binary-gnu11 \
+  tst-nldbl-scanf-binary-gnu89 \
+# tests
 
 # Some versions of GCC supported for building glibc do not support -std=c23
 # (added in GCC 14), or the older name -std=c2x (added in GCC 9), so
@@ -252,10 +450,12 @@ CFLAGS-tst-nldbl-scanf-binary-gnu89.c += -mlong-double-64 -std=gnu89 \
 endif
 
 ifeq ($(subdir), wcsmbs)
-tests += tst-nldbl-wscanf-binary-c11 \
-	 tst-nldbl-wscanf-binary-c23 \
-	 tst-nldbl-wscanf-binary-gnu11 \
-	 tst-nldbl-wscanf-binary-gnu89
+tests += \
+  tst-nldbl-wscanf-binary-c11 \
+  tst-nldbl-wscanf-binary-c23 \
+  tst-nldbl-wscanf-binary-gnu11 \
+  tst-nldbl-wscanf-binary-gnu89 \
+# tests
 
 # Some versions of GCC supported for building glibc do not support -std=c23
 # (added in GCC 14), or the older name -std=c2x (added in GCC 9), so
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-log2p1.c b/sysdeps/ieee754/ldbl-opt/nldbl-log2p1.c
new file mode 100644
index 0000000000..989c69e3d7
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-log2p1.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+log2p1l (double x)
+{
+  return log2p1 (x);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/s_ldexpl.c b/sysdeps/ieee754/ldbl-opt/s_ldexpl.c
index 1afbe7d8ad..932cc4341c 100644
--- a/sysdeps/ieee754/ldbl-opt/s_ldexpl.c
+++ b/sysdeps/ieee754/ldbl-opt/s_ldexpl.c
@@ -17,13 +17,13 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#if IS_IN (libc)
+#if IS_IN (libc) && defined SHARED
 # define declare_mgen_alias(f,t)
 #endif
 #include <math-type-macros-ldouble.h>
 #include <s_ldexp_template.c>
 
-#if IS_IN (libc)
+#if IS_IN (libc) && defined SHARED
 long_double_symbol (libc, __ldexpl, ldexpl);
 long_double_symbol (libc, __wrap_scalbnl, scalbnl);
 #endif
diff --git a/sysdeps/loongarch/Makefile b/sysdeps/loongarch/Makefile
index 446bda6563..b00c090faa 100644
--- a/sysdeps/loongarch/Makefile
+++ b/sysdeps/loongarch/Makefile
@@ -1,5 +1,7 @@
 ifeq ($(subdir),misc)
-sysdep_headers += sys/asm.h
+sysdep_headers += \
+  sys/asm.h \
+  # sysdep_headers
 
 tests += \
   tst-hwcap-tunables \
@@ -9,21 +11,47 @@ tst-hwcap-tunables-ARGS = -- $(host-test-program-cmd)
 endif
 
 ifeq ($(subdir),elf)
-gen-as-const-headers += dl-link.sym
+sysdep-dl-routines += \
+  dl-tlsdesc \
+  tlsdesc \
+  # sysdep-dl-routines
+
+gen-as-const-headers += \
+  dl-link.sym \
+  # gen-as-const-headers
+endif
+
+ifeq ($(subdir),csu)
+gen-as-const-headers += \
+  tlsdesc.sym \
+  # gen-as-const-headers
 endif
 
 ifeq ($(subdir),elf)
 sysdep-dl-routines += \
   dl-get-cpu-features \
   # sysdep-dl-routines
+
+# Disable the compiler from using LSX for TLS descriptor tests, or storing into
+# 16B TLS variable may clobber FP/vector registers and prevent us from checking
+# their contents.
+ifeq (yes,$(loongarch-vec-com))
+CFLAGS-tst-gnu2-tls2mod0.c += -mno-lsx
+CFLAGS-tst-gnu2-tls2mod1.c += -mno-lsx
+CFLAGS-tst-gnu2-tls2mod2.c += -mno-lsx
+endif
 endif
 
 # LoongArch's assembler also needs to know about PIC as it changes the
 # definition of some assembler macros.
-ASFLAGS-.os += $(pic-ccflag)
+ASFLAGS-.os += \
+  $(pic-ccflag) \
+  # ASFLAGS-.os
 
 # All the objects in lib*_nonshared.a need to be compiled with medium code
 # model or large applications may fail to link.
 ifeq (yes,$(have-cmodel-medium))
-CFLAGS-.oS += -mcmodel=medium
+CFLAGS-.oS += \
+  -mcmodel=medium \
+  # CFLAGS-.oS
 endif
diff --git a/sysdeps/loongarch/configure b/sysdeps/loongarch/configure
index 30b60d1983..afcef6cd22 100644
--- a/sysdeps/loongarch/configure
+++ b/sysdeps/loongarch/configure
@@ -110,3 +110,39 @@ if test $libc_cv_loongarch_vec_asm = no; then
   as_fn_error $? "binutils version is too old, use 2.41 or newer version" "$LINENO" 5
 fi
 
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for vector support in compiler" >&5
+printf %s "checking for vector support in compiler... " >&6; }
+if test ${libc_cv_loongarch_vec_com+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+void foo (void)
+{
+  asm volatile ("vldi \$vr0, 1" ::: "\$vr0");
+  asm volatile ("xvldi \$xr0, 1" ::: "\$xr0");
+}
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  libc_cv_loongarch_vec_com=yes
+else $as_nop
+  libc_cv_loongarch_vec_com=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_loongarch_vec_com" >&5
+printf "%s\n" "$libc_cv_loongarch_vec_com" >&6; }
+if test "$libc_cv_loongarch_vec_com" = yes ;
+then
+  printf "%s\n" "#define HAVE_LOONGARCH_VEC_COM 1" >>confdefs.h
+
+fi
+config_vars="$config_vars
+loongarch-vec-com = $libc_cv_loongarch_vec_com"
+
diff --git a/sysdeps/loongarch/configure.ac b/sysdeps/loongarch/configure.ac
index 28a8ae5486..c56a203574 100644
--- a/sysdeps/loongarch/configure.ac
+++ b/sysdeps/loongarch/configure.ac
@@ -65,3 +65,20 @@ rm -f conftest*])
 if test $libc_cv_loongarch_vec_asm = no; then
   AC_MSG_ERROR([binutils version is too old, use 2.41 or newer version])
 fi
+
+AC_CACHE_CHECK([for vector support in compiler],
+		libc_cv_loongarch_vec_com, [
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+void foo (void)
+{
+  asm volatile ("vldi \$vr0, 1" ::: "\$vr0");
+  asm volatile ("xvldi \$xr0, 1" ::: "\$xr0");
+}
+]])],
+                [libc_cv_loongarch_vec_com=yes],
+                [libc_cv_loongarch_vec_com=no])])
+if test "$libc_cv_loongarch_vec_com" = yes ;
+then
+  AC_DEFINE(HAVE_LOONGARCH_VEC_COM)
+fi
+LIBC_CONFIG_VAR([loongarch-vec-com], [$libc_cv_loongarch_vec_com])
diff --git a/sysdeps/loongarch/dl-machine.h b/sysdeps/loongarch/dl-machine.h
index 6baf0e600a..ab6f1da7c0 100644
--- a/sysdeps/loongarch/dl-machine.h
+++ b/sysdeps/loongarch/dl-machine.h
@@ -25,7 +25,7 @@
 #include <entry.h>
 #include <elf/elf.h>
 #include <sys/asm.h>
-#include <dl-tls.h>
+#include <dl-tlsdesc.h>
 #include <dl-static-tls.h>
 #include <dl-machine-rel.h>
 
@@ -206,6 +206,36 @@ elf_machine_rela (struct link_map *map, struct r_scope_elem *scope[],
       *addr_field = TLS_TPREL_VALUE (sym_map, sym) + reloc->r_addend;
       break;
 
+    case __WORDSIZE == 64 ? R_LARCH_TLS_DESC64 : R_LARCH_TLS_DESC32:
+      {
+	struct tlsdesc volatile *td = (struct tlsdesc volatile *)addr_field;
+	if (sym == NULL)
+	  {
+	    td->arg = (void*)reloc->r_addend;
+	    td->entry = _dl_tlsdesc_undefweak;
+	  }
+	else
+	  {
+# ifndef SHARED
+	    CHECK_STATIC_TLS (map, sym_map);
+# else
+	    if (!TRY_STATIC_TLS (map, sym_map))
+	      {
+		td->arg = _dl_make_tlsdesc_dynamic (sym_map,
+			      sym->st_value + reloc->r_addend);
+		td->entry = _dl_tlsdesc_dynamic;
+	      }
+	    else
+# endif
+	      {
+		td->arg = (void *)(TLS_TPREL_VALUE (sym_map, sym)
+			    + reloc->r_addend);
+		td->entry = _dl_tlsdesc_return;
+	      }
+	  }
+	break;
+      }
+
     case R_LARCH_COPY:
       {
 	  if (sym == NULL)
@@ -274,6 +304,26 @@ elf_machine_lazy_rel (struct link_map *map, struct r_scope_elem *scope[],
       else
 	*reloc_addr = map->l_mach.plt;
     }
+  else if (__glibc_likely (r_type == R_LARCH_TLS_DESC64)
+	    || __glibc_likely (r_type == R_LARCH_TLS_DESC32))
+    {
+      const Elf_Symndx symndx = ELFW (R_SYM) (reloc->r_info);
+      const ElfW (Sym) *symtab = (const void *)D_PTR (map, l_info[DT_SYMTAB]);
+      const ElfW (Sym) *sym = &symtab[symndx];
+      const struct r_found_version *version = NULL;
+
+      if (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL)
+	{
+	  const ElfW (Half) *vernum = (const void *)D_PTR (map,
+					  l_info[VERSYMIDX (DT_VERSYM)]);
+	  version = &map->l_versions[vernum[symndx] & 0x7fff];
+	}
+
+      /* Always initialize TLS descriptors completely, because lazy
+	 initialization requires synchronization at every TLS access.  */
+      elf_machine_rela (map, scope, reloc, sym, version, reloc_addr,
+			skip_ifunc);
+    }
   else
     _dl_reloc_bad_type (map, r_type, 1);
 }
diff --git a/sysdeps/loongarch/dl-tls.h b/sysdeps/loongarch/dl-tls.h
index 29924b866d..de593c002d 100644
--- a/sysdeps/loongarch/dl-tls.h
+++ b/sysdeps/loongarch/dl-tls.h
@@ -16,6 +16,9 @@
    License along with the GNU C Library.  If not, see
    <https://www.gnu.org/licenses/>.  */
 
+#ifndef _DL_TLS_H
+#define _DL_TLS_H
+
 /* Type used for the representation of TLS information in the GOT.  */
 typedef struct
 {
@@ -23,6 +26,8 @@ typedef struct
   unsigned long int ti_offset;
 } tls_index;
 
+extern void *__tls_get_addr (tls_index *ti);
+
 /* The thread pointer points to the first static TLS block.  */
 #define TLS_TP_OFFSET 0
 
@@ -37,10 +42,10 @@ typedef struct
 /* Compute the value for a DTPREL reloc.  */
 #define TLS_DTPREL_VALUE(sym) ((sym)->st_value - TLS_DTV_OFFSET)
 
-extern void *__tls_get_addr (tls_index *ti);
-
 #define GET_ADDR_OFFSET (ti->ti_offset + TLS_DTV_OFFSET)
 #define __TLS_GET_ADDR(__ti) (__tls_get_addr (__ti) - TLS_DTV_OFFSET)
 
 /* Value used for dtv entries for which the allocation is delayed.  */
 #define TLS_DTV_UNALLOCATED ((void *) -1l)
+
+#endif
diff --git a/sysdeps/loongarch/dl-tlsdesc.S b/sysdeps/loongarch/dl-tlsdesc.S
new file mode 100644
index 0000000000..15d5fa1c42
--- /dev/null
+++ b/sysdeps/loongarch/dl-tlsdesc.S
@@ -0,0 +1,436 @@
+/* Thread-local storage handling in the ELF dynamic linker.
+   LoongArch version.
+   Copyright (C) 2024 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include <tls.h>
+#include "tlsdesc.h"
+
+	.text
+
+	/* Compute the thread pointer offset for symbols in the static
+	   TLS block. The offset is the same for all threads.
+	   Prototype:
+	   _dl_tlsdesc_return (tlsdesc *);  */
+	.hidden _dl_tlsdesc_return
+	.global	_dl_tlsdesc_return
+	.type	_dl_tlsdesc_return,%function
+	cfi_startproc
+	.align 2
+_dl_tlsdesc_return:
+	REG_L  a0, a0, 8
+	RET
+	cfi_endproc
+	.size	_dl_tlsdesc_return, .-_dl_tlsdesc_return
+
+	/* Handler for undefined weak TLS symbols.
+	   Prototype:
+	   _dl_tlsdesc_undefweak (tlsdesc *);
+
+	   The second word of the descriptor contains the addend.
+	   Return the addend minus the thread pointer. This ensures
+	   that when the caller adds on the thread pointer it gets back
+	   the addend.  */
+	.hidden _dl_tlsdesc_undefweak
+	.global	_dl_tlsdesc_undefweak
+	.type	_dl_tlsdesc_undefweak,%function
+	cfi_startproc
+	.align  2
+_dl_tlsdesc_undefweak:
+	REG_L	a0, a0, 8
+	sub.d	a0, a0, tp
+	RET
+	cfi_endproc
+	.size	_dl_tlsdesc_undefweak, .-_dl_tlsdesc_undefweak
+
+
+#ifdef SHARED
+
+#define FRAME_SIZE	  (-((-14 * SZREG) & ALMASK))
+#define FRAME_SIZE_LSX	  (-((-32 * SZVREG) & ALMASK))
+#define FRAME_SIZE_LASX	  (-((-32 * SZXREG) & ALMASK))
+#define FRAME_SIZE_FLOAT  (-((-24 * SZFREG) & ALMASK))
+
+	/* Handler for dynamic TLS symbols.
+	   Prototype:
+	   _dl_tlsdesc_dynamic (tlsdesc *) ;
+
+	   The second word of the descriptor points to a
+	   tlsdesc_dynamic_arg structure.
+
+	   Returns the offset between the thread pointer and the
+	   object referenced by the argument.
+
+	   ptrdiff_t
+	   _dl_tlsdesc_dynamic (struct tlsdesc *tdp)
+	   {
+	     struct tlsdesc_dynamic_arg *td = tdp->arg;
+	     dtv_t *dtv = *(dtv_t **)((char *)__thread_pointer - TCBHEAD_DTV);
+	     if (__glibc_likely (td->gen_count <= dtv[0].counter
+		&& (dtv[td->tlsinfo.ti_module].pointer.val
+		    != TLS_DTV_UNALLOCATED),
+		1))
+	       return dtv[td->tlsinfo.ti_module].pointer.val
+		+ td->tlsinfo.ti_offset
+		- __thread_pointer;
+
+	     return ___tls_get_addr (&td->tlsinfo) - __thread_pointer;
+	   }  */
+	.hidden _dl_tlsdesc_dynamic
+	.global	_dl_tlsdesc_dynamic
+	.type	_dl_tlsdesc_dynamic,%function
+	cfi_startproc
+	.align 2
+_dl_tlsdesc_dynamic:
+	/* Save just enough registers to support fast path, if we fall
+	   into slow path we will save additional registers.  */
+	ADDI	sp, sp, -24
+	REG_S	t0, sp, 0
+	REG_S	t1, sp, 8
+	REG_S	t2, sp, 16
+
+/* Runtime Storage Layout of Thread-Local Storage
+   TP point to the start of TLS block.
+
+				      dtv
+Low address	TCB ----------------> dtv0(counter)
+	 TP -->	static_block0  <----- dtv1
+		static_block1  <----- dtv2
+		static_block2  <----- dtv3
+		dynamic_block0 <----- dtv4
+Hign address	dynamic_block1 <----- dtv5  */
+
+	REG_L	t0, tp, -SIZE_OF_TCB	  /* t0 = dtv */
+	REG_L	a0, a0, TLSDESC_ARG	  /* a0(td) = tdp->arg */
+	REG_L	t1, a0, TLSDESC_GEN_COUNT /* t1 = td->gen_count */
+	REG_L	t2, t0, DTV_COUNTER	  /* t2 = dtv[0].counter */
+	/* If dtv[0].counter < td->gen_count, goto slow path.  */
+	bltu	t2, t1, .Lslow
+
+	REG_L	t1, a0, TLSDESC_MODID /* t1 = td->tlsinfo.ti_module */
+	/* t1 = t1 * sizeof(dtv_t) = t1 * (2 * sizeof(void*)) */
+	slli.d	t1, t1, 4
+	add.d	t1, t1, t0  /* t1 = dtv[td->tlsinfo.ti_module] */
+	REG_L	t1, t1, 0   /* t1 = dtv[td->tlsinfo.ti_module].pointer.val */
+	li.d	t2, TLS_DTV_UNALLOCATED
+	/* If dtv[td->tlsinfo.ti_module].pointer.val is TLS_DTV_UNALLOCATED,
+	   goto slow path.  */
+	beq	t1, t2, .Lslow
+
+	REG_L	t2, a0, TLSDESC_MODOFF	/* t2 = td->tlsinfo.ti_offset */
+	/* dtv[td->tlsinfo.ti_module].pointer.val + td->tlsinfo.ti_offset */
+	add.d	a0, t1, t2
+.Lret:
+	sub.d	a0, a0, tp
+	REG_L	t0, sp, 0
+	REG_L	t1, sp, 8
+	REG_L	t2, sp, 16
+	ADDI	sp, sp, 24
+	RET
+
+.Lslow:
+	/* This is the slow path. We need to call __tls_get_addr() which
+	   means we need to save and restore all the register that the
+	   callee will trash.  */
+
+	/* Save the remaining registers that we must treat as caller save.  */
+	ADDI	sp, sp, -FRAME_SIZE
+	REG_S	ra, sp, 0 * SZREG
+	REG_S	a1, sp, 1 * SZREG
+	REG_S	a2, sp, 2 * SZREG
+	REG_S	a3, sp, 3 * SZREG
+	REG_S	a4, sp, 4 * SZREG
+	REG_S	a5, sp, 5 * SZREG
+	REG_S	a6, sp, 6 * SZREG
+	REG_S	a7, sp, 7 * SZREG
+	REG_S	t3, sp, 8 * SZREG
+	REG_S	t4, sp, 9 * SZREG
+	REG_S	t5, sp, 10 * SZREG
+	REG_S	t6, sp, 11 * SZREG
+	REG_S	t7, sp, 12 * SZREG
+	REG_S	t8, sp, 13 * SZREG
+
+#ifndef __loongarch_soft_float
+
+	/* Save fcsr0 register.
+	   Only one physical fcsr0 register, fcsr1-fcsr3 are aliases
+	   of some fields in fcsr0.  */
+	ADDI	sp, sp, -SZFCSREG
+	movfcsr2gr  t0, fcsr0
+	st.w	t0, sp, 0
+
+	/* Whether support LASX.  */
+	la.global   t0, _rtld_global_ro
+	REG_L	t0, t0, GLRO_DL_HWCAP_OFFSET
+	andi	t0, t0, HWCAP_LOONGARCH_LASX
+	beqz	t0, .Llsx
+
+	/* Save 256-bit vector registers.
+	   FIXME: Without vector ABI, save all vector registers.  */
+	ADDI	sp, sp, -FRAME_SIZE_LASX
+	xvst	xr0, sp, 0*SZXREG
+	xvst	xr1, sp, 1*SZXREG
+	xvst	xr2, sp, 2*SZXREG
+	xvst	xr3, sp, 3*SZXREG
+	xvst	xr4, sp, 4*SZXREG
+	xvst	xr5, sp, 5*SZXREG
+	xvst	xr6, sp, 6*SZXREG
+	xvst	xr7, sp, 7*SZXREG
+	xvst	xr8, sp, 8*SZXREG
+	xvst	xr9, sp, 9*SZXREG
+	xvst	xr10, sp, 10*SZXREG
+	xvst	xr11, sp, 11*SZXREG
+	xvst	xr12, sp, 12*SZXREG
+	xvst	xr13, sp, 13*SZXREG
+	xvst	xr14, sp, 14*SZXREG
+	xvst	xr15, sp, 15*SZXREG
+	xvst	xr16, sp, 16*SZXREG
+	xvst	xr17, sp, 17*SZXREG
+	xvst	xr18, sp, 18*SZXREG
+	xvst	xr19, sp, 19*SZXREG
+	xvst	xr20, sp, 20*SZXREG
+	xvst	xr21, sp, 21*SZXREG
+	xvst	xr22, sp, 22*SZXREG
+	xvst	xr23, sp, 23*SZXREG
+	xvst	xr24, sp, 24*SZXREG
+	xvst	xr25, sp, 25*SZXREG
+	xvst	xr26, sp, 26*SZXREG
+	xvst	xr27, sp, 27*SZXREG
+	xvst	xr28, sp, 28*SZXREG
+	xvst	xr29, sp, 29*SZXREG
+	xvst	xr30, sp, 30*SZXREG
+	xvst	xr31, sp, 31*SZXREG
+	b	    .Ltga
+
+.Llsx:
+	/* Whether support LSX.  */
+	andi	t0, t0, HWCAP_LOONGARCH_LSX
+	beqz	t0, .Lfloat
+
+	/* Save 128-bit vector registers.  */
+	ADDI	sp, sp, -FRAME_SIZE_LSX
+	vst	vr0, sp, 0*SZVREG
+	vst	vr1, sp, 1*SZVREG
+	vst	vr2, sp, 2*SZVREG
+	vst	vr3, sp, 3*SZVREG
+	vst	vr4, sp, 4*SZVREG
+	vst	vr5, sp, 5*SZVREG
+	vst	vr6, sp, 6*SZVREG
+	vst	vr7, sp, 7*SZVREG
+	vst	vr8, sp, 8*SZVREG
+	vst	vr9, sp, 9*SZVREG
+	vst	vr10, sp, 10*SZVREG
+	vst	vr11, sp, 11*SZVREG
+	vst	vr12, sp, 12*SZVREG
+	vst	vr13, sp, 13*SZVREG
+	vst	vr14, sp, 14*SZVREG
+	vst	vr15, sp, 15*SZVREG
+	vst	vr16, sp, 16*SZVREG
+	vst	vr17, sp, 17*SZVREG
+	vst	vr18, sp, 18*SZVREG
+	vst	vr19, sp, 19*SZVREG
+	vst	vr20, sp, 20*SZVREG
+	vst	vr21, sp, 21*SZVREG
+	vst	vr22, sp, 22*SZVREG
+	vst	vr23, sp, 23*SZVREG
+	vst	vr24, sp, 24*SZVREG
+	vst	vr25, sp, 25*SZVREG
+	vst	vr26, sp, 26*SZVREG
+	vst	vr27, sp, 27*SZVREG
+	vst	vr28, sp, 28*SZVREG
+	vst	vr29, sp, 29*SZVREG
+	vst	vr30, sp, 30*SZVREG
+	vst	vr31, sp, 31*SZVREG
+	b	    .Ltga
+
+.Lfloat:
+	/* Save float registers.  */
+	ADDI	sp, sp, -FRAME_SIZE_FLOAT
+	FREG_S	fa0, sp, 0*SZFREG
+	FREG_S	fa1, sp, 1*SZFREG
+	FREG_S	fa2, sp, 2*SZFREG
+	FREG_S	fa3, sp, 3*SZFREG
+	FREG_S	fa4, sp, 4*SZFREG
+	FREG_S	fa5, sp, 5*SZFREG
+	FREG_S	fa6, sp, 6*SZFREG
+	FREG_S	fa7, sp, 7*SZFREG
+	FREG_S	ft0, sp, 8*SZFREG
+	FREG_S	ft1, sp, 9*SZFREG
+	FREG_S	ft2, sp, 10*SZFREG
+	FREG_S	ft3, sp, 11*SZFREG
+	FREG_S	ft4, sp, 12*SZFREG
+	FREG_S	ft5, sp, 13*SZFREG
+	FREG_S	ft6, sp, 14*SZFREG
+	FREG_S	ft7, sp, 15*SZFREG
+	FREG_S	ft8, sp, 16*SZFREG
+	FREG_S	ft9, sp, 17*SZFREG
+	FREG_S	ft10, sp, 18*SZFREG
+	FREG_S	ft11, sp, 19*SZFREG
+	FREG_S	ft12, sp, 20*SZFREG
+	FREG_S	ft13, sp, 21*SZFREG
+	FREG_S	ft14, sp, 22*SZFREG
+	FREG_S	ft15, sp, 23*SZFREG
+
+#endif /* #ifndef __loongarch_soft_float */
+
+.Ltga:
+	bl	HIDDEN_JUMPTARGET(__tls_get_addr)
+	ADDI	a0, a0, -TLS_DTV_OFFSET
+
+#ifndef __loongarch_soft_float
+
+	la.global   t0, _rtld_global_ro
+	REG_L	t0, t0, GLRO_DL_HWCAP_OFFSET
+	andi	t0, t0, HWCAP_LOONGARCH_LASX
+	beqz	t0, .Llsx1
+
+	/* Restore 256-bit vector registers.  */
+	xvld	xr0, sp, 0*SZXREG
+	xvld	xr1, sp, 1*SZXREG
+	xvld	xr2, sp, 2*SZXREG
+	xvld	xr3, sp, 3*SZXREG
+	xvld	xr4, sp, 4*SZXREG
+	xvld	xr5, sp, 5*SZXREG
+	xvld	xr6, sp, 6*SZXREG
+	xvld	xr7, sp, 7*SZXREG
+	xvld	xr8, sp, 8*SZXREG
+	xvld	xr9, sp, 9*SZXREG
+	xvld	xr10, sp, 10*SZXREG
+	xvld	xr11, sp, 11*SZXREG
+	xvld	xr12, sp, 12*SZXREG
+	xvld	xr13, sp, 13*SZXREG
+	xvld	xr14, sp, 14*SZXREG
+	xvld	xr15, sp, 15*SZXREG
+	xvld	xr16, sp, 16*SZXREG
+	xvld	xr17, sp, 17*SZXREG
+	xvld	xr18, sp, 18*SZXREG
+	xvld	xr19, sp, 19*SZXREG
+	xvld	xr20, sp, 20*SZXREG
+	xvld	xr21, sp, 21*SZXREG
+	xvld	xr22, sp, 22*SZXREG
+	xvld	xr23, sp, 23*SZXREG
+	xvld	xr24, sp, 24*SZXREG
+	xvld	xr25, sp, 25*SZXREG
+	xvld	xr26, sp, 26*SZXREG
+	xvld	xr27, sp, 27*SZXREG
+	xvld	xr28, sp, 28*SZXREG
+	xvld	xr29, sp, 29*SZXREG
+	xvld	xr30, sp, 30*SZXREG
+	xvld	xr31, sp, 31*SZXREG
+	ADDI	sp, sp, FRAME_SIZE_LASX
+	b .Lfcsr
+
+.Llsx1:
+	andi	t0, s0, HWCAP_LOONGARCH_LSX
+	beqz	t0, .Lfloat1
+
+	/* Restore 128-bit vector registers.  */
+	vld	vr0, sp, 0*SZVREG
+	vld	vr1, sp, 1*SZVREG
+	vld	vr2, sp, 2*SZVREG
+	vld	vr3, sp, 3*SZVREG
+	vld	vr4, sp, 4*SZVREG
+	vld	vr5, sp, 5*SZVREG
+	vld	vr6, sp, 6*SZVREG
+	vld	vr7, sp, 7*SZVREG
+	vld	vr8, sp, 8*SZVREG
+	vld	vr9, sp, 9*SZVREG
+	vld	vr10, sp, 10*SZVREG
+	vld	vr11, sp, 11*SZVREG
+	vld	vr12, sp, 12*SZVREG
+	vld	vr13, sp, 13*SZVREG
+	vld	vr14, sp, 14*SZVREG
+	vld	vr15, sp, 15*SZVREG
+	vld	vr16, sp, 16*SZVREG
+	vld	vr17, sp, 17*SZVREG
+	vld	vr18, sp, 18*SZVREG
+	vld	vr19, sp, 19*SZVREG
+	vld	vr20, sp, 20*SZVREG
+	vld	vr21, sp, 21*SZVREG
+	vld	vr22, sp, 22*SZVREG
+	vld	vr23, sp, 23*SZVREG
+	vld	vr24, sp, 24*SZVREG
+	vld	vr25, sp, 25*SZVREG
+	vld	vr26, sp, 26*SZVREG
+	vld	vr27, sp, 27*SZVREG
+	vld	vr28, sp, 28*SZVREG
+	vld	vr29, sp, 29*SZVREG
+	vld	vr30, sp, 30*SZVREG
+	vld	vr31, sp, 31*SZVREG
+	ADDI	sp, sp, FRAME_SIZE_LSX
+	b	    .Lfcsr
+
+.Lfloat1:
+	/* Restore float registers.  */
+	FREG_L	fa0, sp, 0*SZFREG
+	FREG_L	fa1, sp, 1*SZFREG
+	FREG_L	fa2, sp, 2*SZFREG
+	FREG_L	fa3, sp, 3*SZFREG
+	FREG_L	fa4, sp, 4*SZFREG
+	FREG_L	fa5, sp, 5*SZFREG
+	FREG_L	fa6, sp, 6*SZFREG
+	FREG_L	fa7, sp, 7*SZFREG
+	FREG_L	ft0, sp, 8*SZFREG
+	FREG_L	ft1, sp, 9*SZFREG
+	FREG_L	ft2, sp, 10*SZFREG
+	FREG_L	ft3, sp, 11*SZFREG
+	FREG_L	ft4, sp, 12*SZFREG
+	FREG_L	ft5, sp, 13*SZFREG
+	FREG_L	ft6, sp, 14*SZFREG
+	FREG_L	ft7, sp, 15*SZFREG
+	FREG_L	ft8, sp, 16*SZFREG
+	FREG_L	ft9, sp, 17*SZFREG
+	FREG_L	ft10, sp, 18*SZFREG
+	FREG_L	ft11, sp, 19*SZFREG
+	FREG_L	ft12, sp, 20*SZFREG
+	FREG_L	ft13, sp, 21*SZFREG
+	FREG_L	ft14, sp, 22*SZFREG
+	FREG_L	ft15, sp, 23*SZFREG
+	ADDI	sp, sp, FRAME_SIZE_FLOAT
+
+.Lfcsr:
+	/* Restore fcsr0 register.  */
+	ld.w	t0, sp, 0
+	movgr2fcsr  fcsr0, t0
+	ADDI	sp, sp, SZFCSREG
+
+#endif /* #ifndef __loongarch_soft_float */
+
+	REG_L	ra, sp, 0 * SZREG
+	REG_L	a1, sp, 1 * SZREG
+	REG_L	a2, sp, 2 * SZREG
+	REG_L	a3, sp, 3 * SZREG
+	REG_L	a4, sp, 4 * SZREG
+	REG_L	a5, sp, 5 * SZREG
+	REG_L	a6, sp, 6 * SZREG
+	REG_L	a7, sp, 7 * SZREG
+	REG_L	t3, sp, 8 * SZREG
+	REG_L	t4, sp, 9 * SZREG
+	REG_L	t5, sp, 10 * SZREG
+	REG_L	t6, sp, 11 * SZREG
+	REG_L	t7, sp, 12 * SZREG
+	REG_L	t8, sp, 13 * SZREG
+	ADDI	sp, sp, FRAME_SIZE
+
+	b	.Lret
+	cfi_endproc
+	.size	_dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic
+	.hidden HIDDEN_JUMPTARGET(__tls_get_addr)
+
+#endif /* #ifdef SHARED */
diff --git a/sysdeps/loongarch/dl-tlsdesc.h b/sysdeps/loongarch/dl-tlsdesc.h
new file mode 100644
index 0000000000..ff8c69cb93
--- /dev/null
+++ b/sysdeps/loongarch/dl-tlsdesc.h
@@ -0,0 +1,49 @@
+/* Thread-local storage descriptor handling in the ELF dynamic linker.
+   LoongArch version.
+   Copyright (C) 2024 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _DL_TLSDESC_H
+#define _DL_TLSDESC_H
+
+#include <dl-tls.h>
+
+/* Type used to represent a TLS descriptor in the GOT.  */
+struct tlsdesc
+{
+  ptrdiff_t (*entry) (struct tlsdesc *);
+  void *arg;
+};
+
+/* Type used as the argument in a TLS descriptor for a symbol that
+   needs dynamic TLS offsets.  */
+struct tlsdesc_dynamic_arg
+{
+  tls_index tlsinfo;
+  size_t gen_count;
+};
+
+extern ptrdiff_t attribute_hidden _dl_tlsdesc_return (struct tlsdesc *);
+extern ptrdiff_t attribute_hidden _dl_tlsdesc_undefweak (struct tlsdesc *);
+
+#ifdef SHARED
+extern void *_dl_make_tlsdesc_dynamic (struct link_map *, size_t);
+extern ptrdiff_t attribute_hidden _dl_tlsdesc_dynamic (struct tlsdesc *);
+#endif
+
+#endif
diff --git a/sysdeps/loongarch/fpu_control.h b/sysdeps/loongarch/fpu_control.h
index 54add4e01c..3cdf2417d9 100644
--- a/sysdeps/loongarch/fpu_control.h
+++ b/sysdeps/loongarch/fpu_control.h
@@ -91,8 +91,8 @@ typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
 /* Macros for accessing the hardware control word.  */
 extern fpu_control_t __loongarch_fpu_getcw (void) __THROW;
 extern void __loongarch_fpu_setcw (fpu_control_t) __THROW;
-#define _FPU_GETCW(cw) __asm__ volatile ("movfcsr2gr %0,$r0" : "=r"(cw))
-#define _FPU_SETCW(cw) __asm__ volatile ("movgr2fcsr $r0,%0" : : "r"(cw))
+#define _FPU_GETCW(cw) __asm__ volatile ("movfcsr2gr %0,$fcsr0" : "=r"(cw))
+#define _FPU_SETCW(cw) __asm__ volatile ("movgr2fcsr $fcsr0,%0" : : "r"(cw))
 
 /* Default control word set at startup.  */
 extern fpu_control_t __fpu_control;
diff --git a/sysdeps/loongarch/linkmap.h b/sysdeps/loongarch/linkmap.h
index 4d8737ee7f..833dc9eb82 100644
--- a/sysdeps/loongarch/linkmap.h
+++ b/sysdeps/loongarch/linkmap.h
@@ -18,5 +18,6 @@
 
 struct link_map_machine
 {
-  ElfW (Addr) plt; /* Address of .plt.  */
+  ElfW (Addr) plt;	/* Address of .plt.  */
+  void *tlsdesc_table;	/* Address of TLS descriptor hash table.  */
 };
diff --git a/sysdeps/loongarch/lp64/libm-test-ulps b/sysdeps/loongarch/lp64/libm-test-ulps
index 770bf36b11..185c5b4e92 100644
--- a/sysdeps/loongarch/lp64/libm-test-ulps
+++ b/sysdeps/loongarch/lp64/libm-test-ulps
@@ -1202,6 +1202,26 @@ Function: "log2_upward":
 double: 3
 ldouble: 1
 
+Function: "log2p1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log2p1_upward":
+double: 1
+float: 2
+ldouble: 2
+
 Function: "log_downward":
 ldouble: 1
 
diff --git a/sysdeps/loongarch/lp64/multiarch/strnlen-aligned.S b/sysdeps/loongarch/lp64/multiarch/strnlen-aligned.S
index 9826d21c2e..3606225ca2 100644
--- a/sysdeps/loongarch/lp64/multiarch/strnlen-aligned.S
+++ b/sysdeps/loongarch/lp64/multiarch/strnlen-aligned.S
@@ -98,5 +98,7 @@ L(out):
     jr          ra
 END(STRNLEN)
 
+#if !IS_IN (libc)
 weak_alias (STRNLEN, strnlen)
 libc_hidden_builtin_def (STRNLEN)
+#endif
diff --git a/sysdeps/loongarch/preconfigure b/sysdeps/loongarch/preconfigure
index dfc7ecfd9e..0d1e9ed8df 100644
--- a/sysdeps/loongarch/preconfigure
+++ b/sysdeps/loongarch/preconfigure
@@ -43,6 +43,7 @@ loongarch*)
 
 
     base_machine=loongarch
+    mtls_descriptor=desc
     ;;
 esac
 
diff --git a/sysdeps/loongarch/sys/asm.h b/sysdeps/loongarch/sys/asm.h
index 51521a7eb4..23c1d12914 100644
--- a/sysdeps/loongarch/sys/asm.h
+++ b/sysdeps/loongarch/sys/asm.h
@@ -25,6 +25,7 @@
 /* Macros to handle different pointer/register sizes for 32/64-bit code.  */
 #define SZREG 8
 #define SZFREG 8
+#define SZFCSREG 4
 #define SZVREG 16
 #define SZXREG 32
 #define REG_L ld.d
diff --git a/sysdeps/loongarch/sys/regdef.h b/sysdeps/loongarch/sys/regdef.h
index f61ee25b25..80ce3e9c00 100644
--- a/sysdeps/loongarch/sys/regdef.h
+++ b/sysdeps/loongarch/sys/regdef.h
@@ -97,6 +97,7 @@
 #define fcc5 $fcc5
 #define fcc6 $fcc6
 #define fcc7 $fcc7
+#define fcsr0 $fcsr0
 
 #define vr0 $vr0
 #define vr1 $vr1
diff --git a/sysdeps/loongarch/tlsdesc.c b/sysdeps/loongarch/tlsdesc.c
new file mode 100644
index 0000000000..76708f7e1e
--- /dev/null
+++ b/sysdeps/loongarch/tlsdesc.c
@@ -0,0 +1,39 @@
+/* Manage TLS descriptors.  LoongArch64 version.
+
+   Copyright (C) 2024 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <ldsodefs.h>
+#include <tls.h>
+#include <dl-tlsdesc.h>
+#include <dl-unmap-segments.h>
+#include <tlsdeschtab.h>
+
+/* Unmap the dynamic object, but also release its TLS descriptor table
+   if there is one.  */
+
+void
+_dl_unmap (struct link_map *map)
+{
+  _dl_unmap_segments (map);
+
+#ifdef SHARED
+  if (map->l_mach.tlsdesc_table)
+    htab_delete (map->l_mach.tlsdesc_table);
+#endif
+}
diff --git a/sysdeps/loongarch/tlsdesc.sym b/sysdeps/loongarch/tlsdesc.sym
new file mode 100644
index 0000000000..213d0b3074
--- /dev/null
+++ b/sysdeps/loongarch/tlsdesc.sym
@@ -0,0 +1,28 @@
+#include <stddef.h>
+#include <sysdep.h>
+#include <tls.h>
+#include <link.h>
+#include <dl-tlsdesc.h>
+
+#define SHARED 1
+
+#include <ldsodefs.h>
+
+#define GLRO_offsetof(name) offsetof (struct rtld_global_ro, _##name)
+
+--
+
+-- Abuse tls.h macros to derive offsets relative to the thread register.
+
+TLSDESC_ARG		offsetof(struct tlsdesc, arg)
+TLSDESC_GEN_COUNT	offsetof(struct tlsdesc_dynamic_arg, gen_count)
+TLSDESC_MODID		offsetof(struct tlsdesc_dynamic_arg, tlsinfo.ti_module)
+TLSDESC_MODOFF		offsetof(struct tlsdesc_dynamic_arg, tlsinfo.ti_offset)
+TCBHEAD_DTV		offsetof(tcbhead_t, dtv)
+DTV_COUNTER		offsetof(dtv_t, counter)
+TLS_DTV_UNALLOCATED	TLS_DTV_UNALLOCATED
+TLS_DTV_OFFSET		TLS_DTV_OFFSET
+SIZE_OF_TCB		sizeof(tcbhead_t)
+GLRO_DL_HWCAP_OFFSET    GLRO_offsetof (dl_hwcap)
+HWCAP_LOONGARCH_LSX	HWCAP_LOONGARCH_LSX
+HWCAP_LOONGARCH_LASX	HWCAP_LOONGARCH_LASX
diff --git a/sysdeps/loongarch/tst-gnu2-tls2.h b/sysdeps/loongarch/tst-gnu2-tls2.h
new file mode 100644
index 0000000000..8e4216785d
--- /dev/null
+++ b/sysdeps/loongarch/tst-gnu2-tls2.h
@@ -0,0 +1,377 @@
+/* Test TLSDESC relocation.  LoongArch64 version.
+   Copyright (C) 2024 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sys/auxv.h>
+
+/* The instruction between BEFORE_TLSDESC_CALL and _dl_tlsdesc_dynamic,
+   and the instruction between _dl_tlsdesc_dynamic and AFTER_TLSDESC_CALL,
+   may modified most of the general-purpose register.  */
+#define	SAVE_REGISTER(src)						\
+  asm volatile ("st.d $r3, %0" :"=m"(src) :);
+
+#ifdef __loongarch_soft_float
+
+#define BEFORE_TLSDESC_CALL()						\
+  uint64_t src;								\
+  SAVE_REGISTER (src);
+
+#define AFTER_TLSDESC_CALL()						\
+  uint64_t restore;							\
+  SAVE_REGISTER (restore);						\
+  if (src != restore)							\
+    abort ();
+
+#else /* hard float */
+
+#define SAVE_REGISTER_FCC(src)				\
+  asm volatile ("movcf2gr $t0, $fcc0" ::: "$t0");	\
+  asm volatile ("st.d $t0, %0" :"=m"(src[0]) :);	\
+  asm volatile ("movcf2gr $t0, $fcc1" ::: "$t0");	\
+  asm volatile ("st.d $t0, %0" :"=m"(src[1]) :);	\
+  asm volatile ("movcf2gr $t0, $fcc2" ::: "$t0");	\
+  asm volatile ("st.d $t0, %0" :"=m"(src[2]) :);	\
+  asm volatile ("movcf2gr $t0, $fcc3" ::: "$t0");	\
+  asm volatile ("st.d $t0, %0" :"=m"(src[3]) :);	\
+  asm volatile ("movcf2gr $t0, $fcc4" ::: "$t0");	\
+  asm volatile ("st.d $t0, %0" :"=m"(src[4]) :);	\
+  asm volatile ("movcf2gr $t0, $fcc5" ::: "$t0");	\
+  asm volatile ("st.d $t0, %0" :"=m"(src[5]) :);	\
+  asm volatile ("movcf2gr $t0, $fcc6" ::: "$t0");	\
+  asm volatile ("st.d $t0, %0" :"=m"(src[6]) :);	\
+  asm volatile ("movcf2gr $t0, $fcc7" ::: "$t0");	\
+  asm volatile ("st.d $t0, %0" :"=m"(src[7]) :);
+
+#define LOAD_REGISTER_FCSR()				\
+  asm volatile ("li.d $t0, 0x01010101" ::: "$t0");	\
+  asm volatile ("movgr2fcsr $fcsr0, $t0" :::);
+
+#define SAVE_REGISTER_FCSR()				\
+  asm volatile ("movfcsr2gr $t0, $fcsr0" ::: "$t0");    \
+  asm volatile ("st.d $t0, %0" :"=m"(restore_fcsr) :);
+
+# define INIT_TLSDESC_CALL()						\
+  unsigned long hwcap = getauxval (AT_HWCAP);
+
+#define	LOAD_REGISTER_FLOAT()						\
+  asm volatile ("fld.d $f0, %0" ::"m"(src_float[0]) :"$f0");		\
+  asm volatile ("fld.d $f1, %0" ::"m"(src_float[1]) :"$f1"); 		\
+  asm volatile ("fld.d $f2, %0" ::"m"(src_float[2]) :"$f2"); 		\
+  asm volatile ("fld.d $f3, %0" ::"m"(src_float[3]) :"$f3"); 		\
+  asm volatile ("fld.d $f4, %0" ::"m"(src_float[4]) :"$f4"); 		\
+  asm volatile ("fld.d $f5, %0" ::"m"(src_float[5]) :"$f5"); 		\
+  asm volatile ("fld.d $f6, %0" ::"m"(src_float[6]) :"$f6"); 		\
+  asm volatile ("fld.d $f7, %0" ::"m"(src_float[7]) :"$f7"); 		\
+  asm volatile ("fld.d $f8, %0" ::"m"(src_float[8]) :"$f8"); 		\
+  asm volatile ("fld.d $f9, %0" ::"m"(src_float[9]) :"$f9"); 		\
+  asm volatile ("fld.d $f10, %0" ::"m"(src_float[10]) :"$f10");		\
+  asm volatile ("fld.d $f11, %0" ::"m"(src_float[11]) :"$f11");		\
+  asm volatile ("fld.d $f12, %0" ::"m"(src_float[12]) :"$f12");		\
+  asm volatile ("fld.d $f13, %0" ::"m"(src_float[13]) :"$f13");		\
+  asm volatile ("fld.d $f14, %0" ::"m"(src_float[14]) :"$f14");		\
+  asm volatile ("fld.d $f15, %0" ::"m"(src_float[15]) :"$f15");		\
+  asm volatile ("fld.d $f16, %0" ::"m"(src_float[16]) :"$f16");		\
+  asm volatile ("fld.d $f17, %0" ::"m"(src_float[17]) :"$f17");		\
+  asm volatile ("fld.d $f18, %0" ::"m"(src_float[18]) :"$f18");		\
+  asm volatile ("fld.d $f19, %0" ::"m"(src_float[19]) :"$f19");		\
+  asm volatile ("fld.d $f20, %0" ::"m"(src_float[20]) :"$f20");		\
+  asm volatile ("fld.d $f21, %0" ::"m"(src_float[21]) :"$f21");		\
+  asm volatile ("fld.d $f22, %0" ::"m"(src_float[22]) :"$f22");		\
+  asm volatile ("fld.d $f23, %0" ::"m"(src_float[23]) :"$f23");		\
+  asm volatile ("fld.d $f24, %0" ::"m"(src_float[24]) :"$f24");		\
+  asm volatile ("fld.d $f25, %0" ::"m"(src_float[25]) :"$f25");		\
+  asm volatile ("fld.d $f26, %0" ::"m"(src_float[26]) :"$f26");		\
+  asm volatile ("fld.d $f27, %0" ::"m"(src_float[27]) :"$f27");		\
+  asm volatile ("fld.d $f28, %0" ::"m"(src_float[28]) :"$f28");		\
+  asm volatile ("fld.d $f29, %0" ::"m"(src_float[29]) :"$f29");		\
+  asm volatile ("fld.d $f30, %0" ::"m"(src_float[30]) :"$f30");		\
+  asm volatile ("fld.d $f31, %0" ::"m"(src_float[31]) :"$f31");
+
+#define	SAVE_REGISTER_FLOAT()						\
+  asm volatile ("fst.d $f0, %0" :"=m"(restore_float[0]) :);		\
+  asm volatile ("fst.d $f1, %0" :"=m"(restore_float[1]) :); 		\
+  asm volatile ("fst.d $f2, %0" :"=m"(restore_float[2]) :); 		\
+  asm volatile ("fst.d $f3, %0" :"=m"(restore_float[3]) :); 		\
+  asm volatile ("fst.d $f4, %0" :"=m"(restore_float[4]) :); 		\
+  asm volatile ("fst.d $f5, %0" :"=m"(restore_float[5]) :); 		\
+  asm volatile ("fst.d $f6, %0" :"=m"(restore_float[6]) :); 		\
+  asm volatile ("fst.d $f7, %0" :"=m"(restore_float[7]) :); 		\
+  asm volatile ("fst.d $f8, %0" :"=m"(restore_float[8]) :); 		\
+  asm volatile ("fst.d $f9, %0" :"=m"(restore_float[9]) :); 		\
+  asm volatile ("fst.d $f10, %0" :"=m"(restore_float[10]) :);		\
+  asm volatile ("fst.d $f11, %0" :"=m"(restore_float[11]) :);		\
+  asm volatile ("fst.d $f12, %0" :"=m"(restore_float[12]) :);		\
+  asm volatile ("fst.d $f13, %0" :"=m"(restore_float[13]) :);		\
+  asm volatile ("fst.d $f14, %0" :"=m"(restore_float[14]) :);		\
+  asm volatile ("fst.d $f15, %0" :"=m"(restore_float[15]) :);		\
+  asm volatile ("fst.d $f16, %0" :"=m"(restore_float[16]) :);		\
+  asm volatile ("fst.d $f17, %0" :"=m"(restore_float[17]) :);		\
+  asm volatile ("fst.d $f18, %0" :"=m"(restore_float[18]) :);		\
+  asm volatile ("fst.d $f19, %0" :"=m"(restore_float[19]) :);		\
+  asm volatile ("fst.d $f20, %0" :"=m"(restore_float[20]) :);		\
+  asm volatile ("fst.d $f21, %0" :"=m"(restore_float[21]) :);		\
+  asm volatile ("fst.d $f22, %0" :"=m"(restore_float[22]) :);		\
+  asm volatile ("fst.d $f23, %0" :"=m"(restore_float[23]) :);		\
+  asm volatile ("fst.d $f24, %0" :"=m"(restore_float[24]) :);		\
+  asm volatile ("fst.d $f25, %0" :"=m"(restore_float[25]) :);		\
+  asm volatile ("fst.d $f26, %0" :"=m"(restore_float[26]) :);		\
+  asm volatile ("fst.d $f27, %0" :"=m"(restore_float[27]) :);		\
+  asm volatile ("fst.d $f28, %0" :"=m"(restore_float[28]) :);		\
+  asm volatile ("fst.d $f29, %0" :"=m"(restore_float[29]) :);		\
+  asm volatile ("fst.d $f30, %0" :"=m"(restore_float[30]) :);		\
+  asm volatile ("fst.d $f31, %0" :"=m"(restore_float[31]) :);
+
+#ifdef HAVE_LOONGARCH_VEC_COM
+  #define	LOAD_REGISTER_LSX()					\
+    /* Every byte in $vr0 is 1.  */					\
+    asm volatile ("vldi $vr0, 1" ::: "$vr0");				\
+    asm volatile ("vldi $vr1, 2" ::: "$vr1"); 				\
+    asm volatile ("vldi $vr2, 3" ::: "$vr2"); 				\
+    asm volatile ("vldi $vr3, 4" ::: "$vr3"); 				\
+    asm volatile ("vldi $vr4, 5" ::: "$vr4"); 				\
+    asm volatile ("vldi $vr5, 6" ::: "$vr5"); 				\
+    asm volatile ("vldi $vr6, 7" ::: "$vr6"); 				\
+    asm volatile ("vldi $vr7, 8" ::: "$vr7"); 				\
+    asm volatile ("vldi $vr8, 9" ::: "$vr8"); 				\
+    asm volatile ("vldi $vr9, 10" ::: "$vr9"); 				\
+    asm volatile ("vldi $vr10, 11" ::: "$vr10");			\
+    asm volatile ("vldi $vr11, 12" ::: "$vr11");			\
+    asm volatile ("vldi $vr12, 13" ::: "$vr12");			\
+    asm volatile ("vldi $vr13, 14" ::: "$vr13");			\
+    asm volatile ("vldi $vr14, 15" ::: "$vr14");			\
+    asm volatile ("vldi $vr15, 16" ::: "$vr15");			\
+    asm volatile ("vldi $vr16, 17" ::: "$vr16");			\
+    asm volatile ("vldi $vr17, 18" ::: "$vr17");			\
+    asm volatile ("vldi $vr18, 19" ::: "$vr18");			\
+    asm volatile ("vldi $vr19, 20" ::: "$vr19");			\
+    asm volatile ("vldi $vr20, 21" ::: "$vr20");			\
+    asm volatile ("vldi $vr21, 22" ::: "$vr21");			\
+    asm volatile ("vldi $vr22, 23" ::: "$vr22");			\
+    asm volatile ("vldi $vr23, 24" ::: "$vr23");			\
+    asm volatile ("vldi $vr24, 25" ::: "$vr24");			\
+    asm volatile ("vldi $vr25, 26" ::: "$vr25");			\
+    asm volatile ("vldi $vr26, 27" ::: "$vr26");			\
+    asm volatile ("vldi $vr27, 28" ::: "$vr27");			\
+    asm volatile ("vldi $vr28, 29" ::: "$vr28");			\
+    asm volatile ("vldi $vr29, 30" ::: "$vr29");			\
+    asm volatile ("vldi $vr30, 31" ::: "$vr30");			\
+    asm volatile ("vldi $vr31, 32" ::: "$vr31");
+#else
+  #define	LOAD_REGISTER_LSX()
+#endif
+
+#ifdef HAVE_LOONGARCH_VEC_COM
+  #define	SAVE_REGISTER_LSX()					\
+    int src_lsx[32][4];							\
+    int restore_lsx[32][4];						\
+    asm volatile ("vst $vr0, %0" :"=m"(restore_lsx[0]) :);		\
+    asm volatile ("vst $vr1, %0" :"=m"(restore_lsx[1]) :); 		\
+    asm volatile ("vst $vr2, %0" :"=m"(restore_lsx[2]) :); 		\
+    asm volatile ("vst $vr3, %0" :"=m"(restore_lsx[3]) :); 		\
+    asm volatile ("vst $vr4, %0" :"=m"(restore_lsx[4]) :); 		\
+    asm volatile ("vst $vr5, %0" :"=m"(restore_lsx[5]) :); 		\
+    asm volatile ("vst $vr6, %0" :"=m"(restore_lsx[6]) :); 		\
+    asm volatile ("vst $vr7, %0" :"=m"(restore_lsx[7]) :); 		\
+    asm volatile ("vst $vr8, %0" :"=m"(restore_lsx[8]) :); 		\
+    asm volatile ("vst $vr9, %0" :"=m"(restore_lsx[9]) :); 		\
+    asm volatile ("vst $vr10, %0" :"=m"(restore_lsx[10]) :);		\
+    asm volatile ("vst $vr11, %0" :"=m"(restore_lsx[11]) :);		\
+    asm volatile ("vst $vr12, %0" :"=m"(restore_lsx[12]) :);		\
+    asm volatile ("vst $vr13, %0" :"=m"(restore_lsx[13]) :);		\
+    asm volatile ("vst $vr14, %0" :"=m"(restore_lsx[14]) :);		\
+    asm volatile ("vst $vr15, %0" :"=m"(restore_lsx[15]) :);		\
+    asm volatile ("vst $vr16, %0" :"=m"(restore_lsx[16]) :);		\
+    asm volatile ("vst $vr17, %0" :"=m"(restore_lsx[17]) :);		\
+    asm volatile ("vst $vr18, %0" :"=m"(restore_lsx[18]) :);		\
+    asm volatile ("vst $vr19, %0" :"=m"(restore_lsx[19]) :);		\
+    asm volatile ("vst $vr20, %0" :"=m"(restore_lsx[20]) :);		\
+    asm volatile ("vst $vr21, %0" :"=m"(restore_lsx[21]) :);		\
+    asm volatile ("vst $vr22, %0" :"=m"(restore_lsx[22]) :);		\
+    asm volatile ("vst $vr23, %0" :"=m"(restore_lsx[23]) :);		\
+    asm volatile ("vst $vr24, %0" :"=m"(restore_lsx[24]) :);		\
+    asm volatile ("vst $vr25, %0" :"=m"(restore_lsx[25]) :);		\
+    asm volatile ("vst $vr26, %0" :"=m"(restore_lsx[26]) :);		\
+    asm volatile ("vst $vr27, %0" :"=m"(restore_lsx[27]) :);		\
+    asm volatile ("vst $vr28, %0" :"=m"(restore_lsx[28]) :);		\
+    asm volatile ("vst $vr29, %0" :"=m"(restore_lsx[29]) :);		\
+    asm volatile ("vst $vr30, %0" :"=m"(restore_lsx[30]) :);		\
+    asm volatile ("vst $vr31, %0" :"=m"(restore_lsx[31]) :);		\
+    for (int i = 0; i < 32; i++)					\
+      for (int j = 0; j < 4; j++)					\
+	{								\
+	  src_lsx[i][j] = 0x01010101 * (i + 1);				\
+	  if (src_lsx[i][j] != restore_lsx[i][j])			\
+	    abort ();							\
+	}
+#else
+  #define	SAVE_REGISTER_LSX()
+#endif
+
+#ifdef HAVE_LOONGARCH_VEC_COM
+  #define	LOAD_REGISTER_LASX()					\
+    /* Every byte in $xr0 is 1.  */					\
+    asm volatile ("xvldi $xr0, 1" ::: "$xr0");				\
+    asm volatile ("xvldi $xr1, 2" ::: "$xr1"); 				\
+    asm volatile ("xvldi $xr2, 3" ::: "$xr2"); 				\
+    asm volatile ("xvldi $xr3, 4" ::: "$xr3"); 				\
+    asm volatile ("xvldi $xr4, 5" ::: "$xr4"); 				\
+    asm volatile ("xvldi $xr5, 6" ::: "$xr5"); 				\
+    asm volatile ("xvldi $xr6, 7" ::: "$xr6"); 				\
+    asm volatile ("xvldi $xr7, 8" ::: "$xr7"); 				\
+    asm volatile ("xvldi $xr8, 9" ::: "$xr8"); 				\
+    asm volatile ("xvldi $xr9, 10" ::: "$xr9"); 			\
+    asm volatile ("xvldi $xr10, 11" ::: "$xr10");			\
+    asm volatile ("xvldi $xr11, 12" ::: "$xr11");			\
+    asm volatile ("xvldi $xr12, 13" ::: "$xr12");			\
+    asm volatile ("xvldi $xr13, 14" ::: "$xr13");			\
+    asm volatile ("xvldi $xr14, 15" ::: "$xr14");			\
+    asm volatile ("xvldi $xr15, 16" ::: "$xr15");			\
+    asm volatile ("xvldi $xr16, 17" ::: "$xr16");			\
+    asm volatile ("xvldi $xr17, 18" ::: "$xr17");			\
+    asm volatile ("xvldi $xr18, 19" ::: "$xr18");			\
+    asm volatile ("xvldi $xr19, 20" ::: "$xr19");			\
+    asm volatile ("xvldi $xr20, 21" ::: "$xr20");			\
+    asm volatile ("xvldi $xr21, 22" ::: "$xr21");			\
+    asm volatile ("xvldi $xr22, 23" ::: "$xr22");			\
+    asm volatile ("xvldi $xr23, 24" ::: "$xr23");			\
+    asm volatile ("xvldi $xr24, 25" ::: "$xr24");			\
+    asm volatile ("xvldi $xr25, 26" ::: "$xr25");			\
+    asm volatile ("xvldi $xr26, 27" ::: "$xr26");			\
+    asm volatile ("xvldi $xr27, 28" ::: "$xr27");			\
+    asm volatile ("xvldi $xr28, 29" ::: "$xr28");			\
+    asm volatile ("xvldi $xr29, 30" ::: "$xr29");			\
+    asm volatile ("xvldi $xr30, 31" ::: "$xr30");			\
+    asm volatile ("xvldi $xr31, 32" ::: "$xr31");
+#else
+  #define	LOAD_REGISTER_LASX()
+#endif
+
+#ifdef HAVE_LOONGARCH_VEC_COM
+  #define	SAVE_REGISTER_LASX()					\
+    int src_lasx[32][8];						\
+    int restore_lasx[32][8];						\
+    asm volatile ("xvst $xr0, %0" :"=m"(restore_lasx[0]) :);		\
+    asm volatile ("xvst $xr1, %0" :"=m"(restore_lasx[1]) :); 		\
+    asm volatile ("xvst $xr2, %0" :"=m"(restore_lasx[2]) :); 		\
+    asm volatile ("xvst $xr3, %0" :"=m"(restore_lasx[3]) :); 		\
+    asm volatile ("xvst $xr4, %0" :"=m"(restore_lasx[4]) :); 		\
+    asm volatile ("xvst $xr5, %0" :"=m"(restore_lasx[5]) :); 		\
+    asm volatile ("xvst $xr6, %0" :"=m"(restore_lasx[6]) :); 		\
+    asm volatile ("xvst $xr7, %0" :"=m"(restore_lasx[7]) :); 		\
+    asm volatile ("xvst $xr8, %0" :"=m"(restore_lasx[8]) :); 		\
+    asm volatile ("xvst $xr9, %0" :"=m"(restore_lasx[9]) :); 		\
+    asm volatile ("xvst $xr10, %0" :"=m"(restore_lasx[10]) :);		\
+    asm volatile ("xvst $xr11, %0" :"=m"(restore_lasx[11]) :);		\
+    asm volatile ("xvst $xr12, %0" :"=m"(restore_lasx[12]) :);		\
+    asm volatile ("xvst $xr13, %0" :"=m"(restore_lasx[13]) :);		\
+    asm volatile ("xvst $xr14, %0" :"=m"(restore_lasx[14]) :);		\
+    asm volatile ("xvst $xr15, %0" :"=m"(restore_lasx[15]) :);		\
+    asm volatile ("xvst $xr16, %0" :"=m"(restore_lasx[16]) :);		\
+    asm volatile ("xvst $xr17, %0" :"=m"(restore_lasx[17]) :);		\
+    asm volatile ("xvst $xr18, %0" :"=m"(restore_lasx[18]) :);		\
+    asm volatile ("xvst $xr19, %0" :"=m"(restore_lasx[19]) :);		\
+    asm volatile ("xvst $xr20, %0" :"=m"(restore_lasx[20]) :);		\
+    asm volatile ("xvst $xr21, %0" :"=m"(restore_lasx[21]) :);		\
+    asm volatile ("xvst $xr22, %0" :"=m"(restore_lasx[22]) :);		\
+    asm volatile ("xvst $xr23, %0" :"=m"(restore_lasx[23]) :);		\
+    asm volatile ("xvst $xr24, %0" :"=m"(restore_lasx[24]) :);		\
+    asm volatile ("xvst $xr25, %0" :"=m"(restore_lasx[25]) :);		\
+    asm volatile ("xvst $xr26, %0" :"=m"(restore_lasx[26]) :);		\
+    asm volatile ("xvst $xr27, %0" :"=m"(restore_lasx[27]) :);		\
+    asm volatile ("xvst $xr28, %0" :"=m"(restore_lasx[28]) :);		\
+    asm volatile ("xvst $xr29, %0" :"=m"(restore_lasx[29]) :);		\
+    asm volatile ("xvst $xr30, %0" :"=m"(restore_lasx[30]) :);		\
+    asm volatile ("xvst $xr31, %0" :"=m"(restore_lasx[31]) :);		\
+    for (int i = 0; i < 32; i++)					\
+      for (int j = 0; j < 8; j++)					\
+	{								\
+	  src_lasx[i][j] = 0x01010101 * (i + 1);			\
+	  if (src_lasx[i][j] != restore_lasx[i][j])			\
+	    abort ();							\
+	}
+#else
+  #define	SAVE_REGISTER_LASX()
+#endif
+
+#define BEFORE_TLSDESC_CALL()						\
+  uint64_t src;								\
+  double src_float[32];							\
+  uint64_t src_fcc[8];							\
+  for (int i = 0; i < 32; i++)						\
+    src_float[i] = i + 1;						\
+									\
+  SAVE_REGISTER (src);							\
+  LOAD_REGISTER_FCSR ();						\
+  SAVE_REGISTER_FCC(src_fcc)						\
+									\
+  if (hwcap & HWCAP_LOONGARCH_LASX)					\
+    {									\
+      LOAD_REGISTER_LASX ();						\
+    }									\
+  else if (hwcap & HWCAP_LOONGARCH_LSX)					\
+    {									\
+      LOAD_REGISTER_LSX ();						\
+    }									\
+  else									\
+    {									\
+      LOAD_REGISTER_FLOAT ();						\
+    }
+
+#define AFTER_TLSDESC_CALL()						\
+  uint64_t restore;							\
+  uint64_t src_fcsr = 0x01010101;					\
+  uint64_t restore_fcsr;						\
+  uint64_t restore_fcc[8];						\
+  SAVE_REGISTER (restore);						\
+  SAVE_REGISTER_FCSR ();						\
+  SAVE_REGISTER_FCC(restore_fcc)					\
+									\
+  /* memcmp_lasx/strlen_lasx corrupts LSX/LASX registers, */		\
+  /* compare LSX/LASX registers first.  */				\
+  if (hwcap & HWCAP_LOONGARCH_LASX)					\
+    {									\
+      SAVE_REGISTER_LASX ();						\
+    }									\
+  else if (hwcap & HWCAP_LOONGARCH_LSX)					\
+    {									\
+      SAVE_REGISTER_LSX	();						\
+    }									\
+  else									\
+    {									\
+      double restore_float[32];						\
+      SAVE_REGISTER_FLOAT ();						\
+									\
+      for (int i = 0; i < 32; i++)					\
+       if (src_float[i] != restore_float[i])				\
+	abort ();							\
+    }									\
+									\
+  if (src_fcsr != restore_fcsr)						\
+    abort ();								\
+									\
+  if (memcmp (src_fcc, restore_fcc, sizeof (src_fcc)) != 0)		\
+    abort ();								\
+									\
+  if (src != restore)							\
+    abort ();
+
+#endif /* #ifdef __loongarch_soft_float */
+
+#include_next <tst-gnu2-tls2.h>
diff --git a/sysdeps/m68k/m680x0/fpu/w_exp10_compat.c b/sysdeps/m68k/m680x0/fpu/w_exp10_compat.c
index 0d3e718626..350f2e4b4d 100644
--- a/sysdeps/m68k/m680x0/fpu/w_exp10_compat.c
+++ b/sysdeps/m68k/m680x0/fpu/w_exp10_compat.c
@@ -1,3 +1,8 @@
 /* m68k provides an optimized __ieee754_exp10.  */
-#define NO_COMPAT_NEEDED 1
-#include <math/w_exp10_compat.c>
+#ifdef SHARED
+# define NO_COMPAT_NEEDED 1
+# include <math/w_exp10_compat.c>
+#else
+# include <math-type-macros-double.h>
+# include <w_exp10_template.c>
+#endif
diff --git a/sysdeps/m68k/m680x0/fpu/w_fmod_compat.c b/sysdeps/m68k/m680x0/fpu/w_fmod_compat.c
index 527d4fbed2..57f38091e6 100644
--- a/sysdeps/m68k/m680x0/fpu/w_fmod_compat.c
+++ b/sysdeps/m68k/m680x0/fpu/w_fmod_compat.c
@@ -7,8 +7,9 @@
 # define LIBM_SVID_COMPAT 1
 # undef compat_symbol
 # define compat_symbol(a, b, c, d)
-#endif
 #include <math/w_fmod_compat.c>
-#ifdef SHARED
 libm_alias_double (__fmod_compat, fmod)
+#else
+#include <math-type-macros-double.h>
+#include <w_fmod_template.c>
 #endif
diff --git a/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c b/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c
index 5043586b91..88db07f443 100644
--- a/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c
+++ b/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c
@@ -7,8 +7,9 @@
 # define LIBM_SVID_COMPAT 1
 # undef compat_symbol
 # define compat_symbol(a, b, c, d)
-#endif
-#include <math/w_fmodf_compat.c>
-#ifdef SHARED
+# include <math/w_fmodf_compat.c>
 libm_alias_float (__fmod_compat, fmod)
+#else
+#include <math-type-macros-float.h>
+#include <w_fmod_template.c>
 #endif
diff --git a/sysdeps/mach/hurd/bits/socket.h b/sysdeps/mach/hurd/bits/socket.h
index 3e72f9fa93..b5eeac3731 100644
--- a/sysdeps/mach/hurd/bits/socket.h
+++ b/sysdeps/mach/hurd/bits/socket.h
@@ -153,7 +153,7 @@ enum __socket_type
 #include <bits/sockaddr.h>
 
 /* Structure describing a generic socket address.  */
-struct sockaddr
+struct __attribute_struct_may_alias__ sockaddr
   {
     __SOCKADDR_COMMON (sa_);	/* Common data: address family and length.  */
     char sa_data[14];		/* Address data.  */
@@ -170,7 +170,7 @@ struct sockaddr
 #define _SS_PADSIZE \
   (_SS_SIZE - __SOCKADDR_COMMON_SIZE - sizeof (__ss_aligntype))
 
-struct sockaddr_storage
+struct __attribute_struct_may_alias__ sockaddr_storage
   {
     __SOCKADDR_COMMON (ss_);	/* Address family, etc.  */
     char __ss_padding[_SS_PADSIZE];
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index 8f40ddb150..113daa4b44 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1181,3 +1181,11 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/mach/hurd/x86_64/libm.abilist b/sysdeps/mach/hurd/x86_64/libm.abilist
index 5c762b937b..0c7ffd4e3f 100644
--- a/sysdeps/mach/hurd/x86_64/libm.abilist
+++ b/sysdeps/mach/hurd/x86_64/libm.abilist
@@ -1038,3 +1038,11 @@ GLIBC_2.38 ynf32x F
 GLIBC_2.38 ynf64 F
 GLIBC_2.38 ynf64x F
 GLIBC_2.38 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps
index dbf71d8194..78e9a9ad6e 100644
--- a/sysdeps/powerpc/fpu/libm-test-ulps
+++ b/sysdeps/powerpc/fpu/libm-test-ulps
@@ -1506,6 +1506,30 @@ float: 3
 float128: 1
 ldouble: 4
 
+Function: "log2p1":
+double: 1
+float: 1
+float128: 2
+ldouble: 2
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+float128: 3
+ldouble: 4
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+float128: 2
+ldouble: 4
+
+Function: "log2p1_upward":
+double: 1
+float: 2
+float128: 2
+ldouble: 4
+
 Function: "log_downward":
 float: 2
 float128: 1
diff --git a/sysdeps/powerpc/nofpu/Makefile b/sysdeps/powerpc/nofpu/Makefile
index fa462339ba..96657c9676 100644
--- a/sysdeps/powerpc/nofpu/Makefile
+++ b/sysdeps/powerpc/nofpu/Makefile
@@ -54,4 +54,5 @@ CFLAGS-s_fmaximum_magl.c += -fno-builtin-fabsl
 CFLAGS-s_fmaximum_mag_numl.c += -fno-builtin-fabsl
 CFLAGS-s_fminimum_magl.c += -fno-builtin-fabsl
 CFLAGS-s_fminimum_mag_numl.c += -fno-builtin-fabsl
+CFLAGS-s_log2p1l.c += -fno-builtin-fabsl
 endif
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-power6.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-power6.c
index 5b1a5a8cf0..3c279ddd1a 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-power6.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-power6.c
@@ -1,2 +1,6 @@
+#include <libm-alias-float.h>
+
 #define __llrintf __llrintf_power6
+#undef libm_alias_float
+#define libm_alias_float(a, b)
 #include <sysdeps/powerpc/powerpc32/fpu/s_llrintf.c>
diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-ppc32.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-ppc32.c
index 061962b84d..bce8f4564f 100644
--- a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-ppc32.c
+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-ppc32.c
@@ -1,2 +1,6 @@
+#include <libm-alias-float.h>
+
 #define __llrintf __llrintf_ppc32
+#undef libm_alias_float
+#define libm_alias_float(a, b)
 #include <sysdeps/powerpc/powerpc32/fpu/s_llrintf.c>
diff --git a/sysdeps/powerpc/powerpc64/configure b/sysdeps/powerpc/powerpc64/configure
index 6d8153ed50..9df2ceaa1f 100644
--- a/sysdeps/powerpc/powerpc64/configure
+++ b/sysdeps/powerpc/powerpc64/configure
@@ -12,7 +12,7 @@ then :
 else $as_nop
   libc_cv_overlapping_opd=no
 echo 'void foo (void) {}' > conftest.c
-if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s 1>&5'
+if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $libc_cv_cc_submachine -S conftest.c -o conftest.s 1>&5'
   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -51,7 +51,7 @@ int bar (void);
 int foo (void) { return bar () + 1; }
 EOF
   libc_cv_ppc64_notoc=no
-  if { ac_try='${CC-cc} $libc_cv_cc_submachine $CFLAGS $CPPFLAGS -S -o conftest.s conftest.c'
+  if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $libc_cv_cc_submachine -S -o conftest.s conftest.c'
   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
diff --git a/sysdeps/powerpc/powerpc64/configure.ac b/sysdeps/powerpc/powerpc64/configure.ac
index 575745af3e..225d66ef1a 100644
--- a/sysdeps/powerpc/powerpc64/configure.ac
+++ b/sysdeps/powerpc/powerpc64/configure.ac
@@ -7,7 +7,7 @@ AC_CACHE_CHECK(for support for overlapping .opd entries,
 libc_cv_overlapping_opd, [dnl
 libc_cv_overlapping_opd=no
 echo 'void foo (void) {}' > conftest.c
-if AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
+if AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $libc_cv_cc_submachine -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
 changequote(,)dnl
   if grep '\.TOC\.@tocbase' conftest.s > /dev/null; then
     if grep '\.TOC\.@tocbase[ 	]*,[ 	]*0' conftest.s > /dev/null; then
@@ -35,7 +35,7 @@ int bar (void);
 int foo (void) { return bar () + 1; }
 EOF
   libc_cv_ppc64_notoc=no
-  if AC_TRY_COMMAND([${CC-cc} $libc_cv_cc_submachine $CFLAGS $CPPFLAGS -S -o conftest.s conftest.c]) \
+  if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $libc_cv_cc_submachine -S -o conftest.s conftest.c]) \
      && AC_TRY_COMMAND([grep -q -E 'bar@notoc' conftest.s])
   then
     libc_cv_ppc64_notoc=yes
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S
index 384edce8b9..fc784c2856 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S
@@ -18,6 +18,9 @@
 
 #define STRCHRNUL __strchrnul_power7
 
+#undef weak_alias
+#define weak_alias(a,b)
+
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
 
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c
index 8e42504efe..7127972250 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c
@@ -16,4 +16,16 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#include <sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c>
+#include <string.h>
+
+#if IS_IN (libc)
+# define STRCHRNUL  __strchrnul_ppc
+extern __typeof (strchrnul) __strchrnul_ppc attribute_hidden;
+
+# include <string/strchrnul.c>
+# undef __strchrnul
+weak_alias (__strchrnul_ppc, __strchrnul)
+# ifdef SHARED
+__hidden_ver1 (__strchrnul_ppc, __GI___strchrnul, __strchrnul_ppc);
+# endif
+#endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c
index 1587079580..664ce44345 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c
@@ -19,6 +19,9 @@
 
 #define __strncasecmp_l __strncasecmp_l_power7
 
+#undef weak_alias
+#define weak_alias(a,b)
+
 #undef libc_hidden_def
 #define libc_hidden_def(name)
 
diff --git a/sysdeps/s390/fpu/libm-test-ulps b/sysdeps/s390/fpu/libm-test-ulps
index a898eebb20..e24adb94e8 100644
--- a/sysdeps/s390/fpu/libm-test-ulps
+++ b/sysdeps/s390/fpu/libm-test-ulps
@@ -1201,6 +1201,26 @@ Function: "log2_upward":
 double: 1
 ldouble: 1
 
+Function: "log2p1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log2p1_upward":
+double: 1
+float: 2
+ldouble: 2
+
 Function: "log_downward":
 ldouble: 1
 
diff --git a/sysdeps/unix/sysv/linux/aarch64/clone3.S b/sysdeps/unix/sysv/linux/aarch64/clone3.S
index 92d69a5430..e28aaa5083 100644
--- a/sysdeps/unix/sysv/linux/aarch64/clone3.S
+++ b/sysdeps/unix/sysv/linux/aarch64/clone3.S
@@ -82,4 +82,3 @@ thread_start:
 	.size thread_start, .-thread_start
 
 libc_hidden_def (__clone3)
-weak_alias (__clone3, clone3)
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index f0da228fbb..a4bb539670 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1149,3 +1149,11 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist b/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist
index 26c3fbf18b..b685106954 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libmvec.abilist
@@ -79,6 +79,8 @@ GLIBC_2.40 _ZGVnN2v_asinh F
 GLIBC_2.40 _ZGVnN2v_asinhf F
 GLIBC_2.40 _ZGVnN2v_atanh F
 GLIBC_2.40 _ZGVnN2v_atanhf F
+GLIBC_2.40 _ZGVnN2v_cbrt F
+GLIBC_2.40 _ZGVnN2v_cbrtf F
 GLIBC_2.40 _ZGVnN2v_cosh F
 GLIBC_2.40 _ZGVnN2v_coshf F
 GLIBC_2.40 _ZGVnN2v_erf F
@@ -89,20 +91,29 @@ GLIBC_2.40 _ZGVnN2v_sinh F
 GLIBC_2.40 _ZGVnN2v_sinhf F
 GLIBC_2.40 _ZGVnN2v_tanh F
 GLIBC_2.40 _ZGVnN2v_tanhf F
+GLIBC_2.40 _ZGVnN2vv_hypot F
+GLIBC_2.40 _ZGVnN2vv_hypotf F
+GLIBC_2.40 _ZGVnN2vv_pow F
+GLIBC_2.40 _ZGVnN2vv_powf F
 GLIBC_2.40 _ZGVnN4v_acoshf F
 GLIBC_2.40 _ZGVnN4v_asinhf F
 GLIBC_2.40 _ZGVnN4v_atanhf F
+GLIBC_2.40 _ZGVnN4v_cbrtf F
 GLIBC_2.40 _ZGVnN4v_coshf F
 GLIBC_2.40 _ZGVnN4v_erfcf F
 GLIBC_2.40 _ZGVnN4v_erff F
 GLIBC_2.40 _ZGVnN4v_sinhf F
 GLIBC_2.40 _ZGVnN4v_tanhf F
+GLIBC_2.40 _ZGVnN4vv_hypotf F
+GLIBC_2.40 _ZGVnN4vv_powf F
 GLIBC_2.40 _ZGVsMxv_acosh F
 GLIBC_2.40 _ZGVsMxv_acoshf F
 GLIBC_2.40 _ZGVsMxv_asinh F
 GLIBC_2.40 _ZGVsMxv_asinhf F
 GLIBC_2.40 _ZGVsMxv_atanh F
 GLIBC_2.40 _ZGVsMxv_atanhf F
+GLIBC_2.40 _ZGVsMxv_cbrt F
+GLIBC_2.40 _ZGVsMxv_cbrtf F
 GLIBC_2.40 _ZGVsMxv_cosh F
 GLIBC_2.40 _ZGVsMxv_coshf F
 GLIBC_2.40 _ZGVsMxv_erf F
@@ -113,3 +124,7 @@ GLIBC_2.40 _ZGVsMxv_sinh F
 GLIBC_2.40 _ZGVsMxv_sinhf F
 GLIBC_2.40 _ZGVsMxv_tanh F
 GLIBC_2.40 _ZGVsMxv_tanhf F
+GLIBC_2.40 _ZGVsMxvv_hypot F
+GLIBC_2.40 _ZGVsMxvv_hypotf F
+GLIBC_2.40 _ZGVsMxvv_pow F
+GLIBC_2.40 _ZGVsMxvv_powf F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index f5d8023d62..8ff65e3f7e 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1308,3 +1308,11 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/arc/clone3.S b/sysdeps/unix/sysv/linux/arc/clone3.S
index d9a2dfff3e..38a27063fb 100644
--- a/sysdeps/unix/sysv/linux/arc/clone3.S
+++ b/sysdeps/unix/sysv/linux/arc/clone3.S
@@ -87,4 +87,3 @@ thread_start_clone3:
 	.size thread_start_clone3, .-thread_start_clone3
 
 libc_hidden_def (__clone3)
-weak_alias (__clone3, clone3)
diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist
index f2169f8f57..af9df2673c 100644
--- a/sysdeps/unix/sysv/linux/arc/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libm.abilist
@@ -757,3 +757,9 @@ GLIBC_2.35 fminimumf64 F
 GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index f020a8a904..0e460259f3 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -848,3 +848,9 @@ GLIBC_2.4 y1l F
 GLIBC_2.4 yn F
 GLIBC_2.4 ynf F
 GLIBC_2.4 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/arm/clone3.S b/sysdeps/unix/sysv/linux/arm/clone3.S
index e759de9730..094efc2f40 100644
--- a/sysdeps/unix/sysv/linux/arm/clone3.S
+++ b/sysdeps/unix/sysv/linux/arm/clone3.S
@@ -77,4 +77,3 @@ PSEUDO_END (__clone3)
 	.fnend
 
 libc_hidden_def (__clone3)
-weak_alias (__clone3, clone3)
diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index f020a8a904..0e460259f3 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -848,3 +848,9 @@ GLIBC_2.4 y1l F
 GLIBC_2.4 yn F
 GLIBC_2.4 ynf F
 GLIBC_2.4 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
index 86444f0018..5ab19a8c08 100644
--- a/sysdeps/unix/sysv/linux/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/bits/socket.h
@@ -181,7 +181,7 @@ typedef __socklen_t socklen_t;
 #include <bits/sockaddr.h>
 
 /* Structure describing a generic socket address.  */
-struct sockaddr
+struct __attribute_struct_may_alias__ sockaddr
   {
     __SOCKADDR_COMMON (sa_);	/* Common data: address family and length.  */
     char sa_data[14];		/* Address data.  */
@@ -194,7 +194,7 @@ struct sockaddr
 #define _SS_PADSIZE \
   (_SS_SIZE - __SOCKADDR_COMMON_SIZE - sizeof (__ss_aligntype))
 
-struct sockaddr_storage
+struct __attribute_struct_may_alias__ sockaddr_storage
   {
     __SOCKADDR_COMMON (ss_);	/* Address family, etc.  */
     char __ss_padding[_SS_PADSIZE];
diff --git a/sysdeps/unix/sysv/linux/csky/libm.abilist b/sysdeps/unix/sysv/linux/csky/libm.abilist
index 225a5e9b81..4c1216044d 100644
--- a/sysdeps/unix/sysv/linux/csky/libm.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libm.abilist
@@ -823,3 +823,9 @@ GLIBC_2.35 fminimumf64 F
 GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index 450ac03223..3ea5b611eb 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -848,3 +848,9 @@ GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
 GLIBC_2.4 exp2l F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/i386/clone3.S b/sysdeps/unix/sysv/linux/i386/clone3.S
index abb7356b1f..6803e59644 100644
--- a/sysdeps/unix/sysv/linux/i386/clone3.S
+++ b/sysdeps/unix/sysv/linux/i386/clone3.S
@@ -120,4 +120,3 @@ L(thread_start):
 PSEUDO_END (__clone3)
 
 libc_hidden_def (__clone3)
-weak_alias (__clone3, clone3)
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index 5d89aaa08e..696e52e65a 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1188,3 +1188,11 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/loongarch/clone3.S b/sysdeps/unix/sysv/linux/loongarch/clone3.S
index 20eaf4adc2..dfffb1f3d6 100644
--- a/sysdeps/unix/sysv/linux/loongarch/clone3.S
+++ b/sysdeps/unix/sysv/linux/loongarch/clone3.S
@@ -80,4 +80,3 @@ L (thread_start3):
 	END (__thread_start3)
 
 libc_hidden_def (__clone3)
-weak_alias (__clone3, clone3)
diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
index b3dbd00001..1c6f02ac5a 100644
--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
@@ -1028,3 +1028,11 @@ GLIBC_2.36 ynf32x F
 GLIBC_2.36 ynf64 F
 GLIBC_2.36 ynf64x F
 GLIBC_2.36 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index f020a8a904..0e460259f3 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -848,3 +848,9 @@ GLIBC_2.4 y1l F
 GLIBC_2.4 yn F
 GLIBC_2.4 ynf F
 GLIBC_2.4 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
index e7cd739a54..be8262bb48 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -884,3 +884,9 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index 1f7f63f60c..cc091b2d4e 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -848,3 +848,9 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index 1f7f63f60c..cc091b2d4e 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -848,3 +848,9 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/microblaze/syscalls.list b/sysdeps/unix/sysv/linux/microblaze/syscalls.list
index 878ce7e6a2..5760c657a6 100644
--- a/sysdeps/unix/sysv/linux/microblaze/syscalls.list
+++ b/sysdeps/unix/sysv/linux/microblaze/syscalls.list
@@ -1,5 +1,3 @@
 # File name	Caller	Syscall name	Args	Strong name	Weak names
 
-cacheflush	EXTRA	cacheflush	i:iiii	__cacheflush	cacheflush
-
 personality	EXTRA	personality	Ei:i	__personality	personality
diff --git a/sysdeps/unix/sysv/linux/mips/clone3.S b/sysdeps/unix/sysv/linux/mips/clone3.S
index 481b8ae963..58925d6b41 100644
--- a/sysdeps/unix/sysv/linux/mips/clone3.S
+++ b/sysdeps/unix/sysv/linux/mips/clone3.S
@@ -158,4 +158,3 @@ L(thread_start_clone3):
 END(__thread_start_clone3)
 
 libc_hidden_def (__clone3)
-weak_alias (__clone3, clone3)
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index 797071aee8..4d442a989d 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -848,3 +848,9 @@ GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
 GLIBC_2.4 exp2l F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index 14758703cf..ae7b4a7558 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1149,3 +1149,11 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/net/if_packet.h b/sysdeps/unix/sysv/linux/net/if_packet.h
index 9ffb69b508..c17e1c23c5 100644
--- a/sysdeps/unix/sysv/linux/net/if_packet.h
+++ b/sysdeps/unix/sysv/linux/net/if_packet.h
@@ -26,7 +26,7 @@
    From Linux 2.1 the AF_PACKET interface is preferred and you should
    consider using it in place of this one.  */
 
-struct sockaddr_pkt
+struct __attribute_struct_may_alias__ sockaddr_pkt
   {
     __SOCKADDR_COMMON (spkt_);
     unsigned char spkt_device[14];
diff --git a/sysdeps/unix/sysv/linux/netash/ash.h b/sysdeps/unix/sysv/linux/netash/ash.h
index 7d885d17cc..7a6ff50b17 100644
--- a/sysdeps/unix/sysv/linux/netash/ash.h
+++ b/sysdeps/unix/sysv/linux/netash/ash.h
@@ -22,7 +22,7 @@
 #include <features.h>
 #include <bits/sockaddr.h>
 
-struct sockaddr_ash
+struct __attribute_struct_may_alias__ sockaddr_ash
   {
     __SOCKADDR_COMMON (sash_);		/* Common data: address family etc.  */
     int sash_ifindex;			/* Interface to use.  */
diff --git a/sysdeps/unix/sysv/linux/neteconet/ec.h b/sysdeps/unix/sysv/linux/neteconet/ec.h
index b07a107961..f3132f06ff 100644
--- a/sysdeps/unix/sysv/linux/neteconet/ec.h
+++ b/sysdeps/unix/sysv/linux/neteconet/ec.h
@@ -28,7 +28,7 @@ struct ec_addr
     unsigned char net;			/* Network number.  */
   };
 
-struct sockaddr_ec
+struct __attribute_struct_may_alias__ sockaddr_ec
   {
     __SOCKADDR_COMMON (sec_);
     unsigned char port;			/* Port number.  */
diff --git a/sysdeps/unix/sysv/linux/netiucv/iucv.h b/sysdeps/unix/sysv/linux/netiucv/iucv.h
index f5fad81751..27151e8bbe 100644
--- a/sysdeps/unix/sysv/linux/netiucv/iucv.h
+++ b/sysdeps/unix/sysv/linux/netiucv/iucv.h
@@ -23,7 +23,7 @@
 
 __BEGIN_DECLS
 
-struct sockaddr_iucv
+struct __attribute_struct_may_alias__ sockaddr_iucv
   {
     __SOCKADDR_COMMON (siucv_);
     unsigned short	siucv_port;		/* Reserved */
diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
index c0ebe119dc..9ed3fbdee4 100644
--- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
@@ -848,3 +848,9 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/or1k/libm.abilist b/sysdeps/unix/sysv/linux/or1k/libm.abilist
index 9d26508ff5..69655f7d23 100644
--- a/sysdeps/unix/sysv/linux/or1k/libm.abilist
+++ b/sysdeps/unix/sysv/linux/or1k/libm.abilist
@@ -757,3 +757,9 @@ GLIBC_2.35 ynf32 F
 GLIBC_2.35 ynf32x F
 GLIBC_2.35 ynf64 F
 GLIBC_2.35 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/pidfd_getpid.c b/sysdeps/unix/sysv/linux/pidfd_getpid.c
index 8567b413dd..6967477fab 100644
--- a/sysdeps/unix/sysv/linux/pidfd_getpid.c
+++ b/sysdeps/unix/sysv/linux/pidfd_getpid.c
@@ -74,8 +74,10 @@ parse_fdinfo (const char *l, void *arg)
 
       /* Ignore invalid large values.  */
       if (INT_MULTIPLY_WRAPV (10, n, &n)
-          || INT_ADD_WRAPV (n, *l++ - '0', &n))
+          || INT_ADD_WRAPV (n, *l - '0', &n))
         return -1;
+
+      l++;
     }
 
   /* -1 indicates that the process is terminated.  */
@@ -105,7 +107,7 @@ pidfd_getpid (int fd)
   *_fitoa_word (fd, p, 10, 0) = '\0';
 
   struct parse_fdinfo_t fdinfo = { .found = false, .pid = -1 };
-  if (!procutils_read_file (fdinfoname, parse_fdinfo, &fdinfo))
+  if (!__libc_procutils_read_file (fdinfoname, parse_fdinfo, &fdinfo))
     /* The fdinfo contains an invalid 'Pid:' value.  */
     return INLINE_SYSCALL_ERROR_RETURN_VALUE (EBADF);
 
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index 4f88e0af9c..564eb87d4b 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -995,3 +995,9 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index edc26140dc..a57eedb779 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -994,3 +994,9 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
index 0a8a1433d7..7564069a37 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -988,3 +988,9 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone3.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone3.S
index 6fdb4a6073..900c354c9c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone3.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone3.S
@@ -154,4 +154,3 @@ L(parent):
 PSEUDO_END (__clone3)
 
 libc_hidden_def (__clone3)
-weak_alias (__clone3, clone3)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index 5174d20032..b02a7115af 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1321,3 +1321,12 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 __log2p1ieee128 F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/procutils.c b/sysdeps/unix/sysv/linux/procutils.c
index 25666ec0cb..86d3d37329 100644
--- a/sysdeps/unix/sysv/linux/procutils.c
+++ b/sysdeps/unix/sysv/linux/procutils.c
@@ -71,8 +71,9 @@ next_line (char **r, int fd, char *const buffer, char **cp, char **re,
 }
 
 bool
-procutils_read_file (const char *filename, procutils_closure_t closure,
-		     void *arg)
+__libc_procutils_read_file (const char *filename,
+			    procutils_closure_t closure,
+			    void *arg)
 {
   enum { buffer_size = PROCUTILS_MAX_LINE_LEN };
   char buffer[buffer_size];
diff --git a/sysdeps/unix/sysv/linux/procutils.h b/sysdeps/unix/sysv/linux/procutils.h
index 73ef3e5f5b..acf1ec587a 100644
--- a/sysdeps/unix/sysv/linux/procutils.h
+++ b/sysdeps/unix/sysv/linux/procutils.h
@@ -37,7 +37,8 @@ typedef int (*procutils_closure_t) (const char *line, void *arg);
 
    It returns true in case the file is fully read or false if CLOSURE
    returns a value diferent than 0.  */
-bool procutils_read_file (const char *filename, procutils_closure_t closure,
-			  void *arg) attribute_hidden;
+bool __libc_procutils_read_file (const char *filename,
+				 procutils_closure_t closure,
+				 void *arg) attribute_hidden;
 
 #endif
diff --git a/sysdeps/unix/sysv/linux/riscv/clone3.S b/sysdeps/unix/sysv/linux/riscv/clone3.S
index 29264be054..c81ee2ab51 100644
--- a/sysdeps/unix/sysv/linux/riscv/clone3.S
+++ b/sysdeps/unix/sysv/linux/riscv/clone3.S
@@ -76,4 +76,3 @@ L(thread_start):
 END(__thread_start_clone3)
 
 libc_hidden_def (__clone3)
-weak_alias (__clone3, clone3)
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
index 45ca5c677a..7bf0bd7c7a 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
@@ -1028,3 +1028,11 @@ GLIBC_2.35 fminimumf64x F
 GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
index 4838edf991..c22d9bb7c6 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
@@ -1125,3 +1125,11 @@ GLIBC_2.35 fminimumf64x F
 GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/Makefile b/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
index 6b6d59b7dd..2a5b4fbb6f 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
@@ -3,6 +3,7 @@ default-abi := 32
 
 ifeq ($(subdir),login)
 sysdep_routines += utmp32 utmpx32 login32
+shared-only-routines += utmp32 utmpx32 login32
 endif
 
 ifeq ($(subdir),misc)
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/clone3.S b/sysdeps/unix/sysv/linux/s390/s390-32/clone3.S
index d344c2cf36..1ea633aabb 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/clone3.S
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/clone3.S
@@ -75,4 +75,3 @@ thread_start:
 	ASM_SIZE_DIRECTIVE (thread_start)
 
 libc_hidden_def (__clone3)
-weak_alias (__clone3, clone3)
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index 5ff11fb54f..2fb712ec71 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1252,3 +1252,11 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/clone3.S b/sysdeps/unix/sysv/linux/s390/s390-64/clone3.S
index ca382d903c..70ae7f1532 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/clone3.S
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/clone3.S
@@ -75,4 +75,3 @@ thread_start:
 	ASM_SIZE_DIRECTIVE (thread_start)
 
 libc_hidden_def (__clone3)
-weak_alias (__clone3, clone3)
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index 0e246c2c54..40489589a7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1252,3 +1252,11 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
index 7b43a866e2..a5363e90d6 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -848,3 +848,9 @@ GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
 GLIBC_2.4 exp2l F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
index 7b43a866e2..a5363e90d6 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -848,3 +848,9 @@ GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
 GLIBC_2.4 exp2l F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index e3dcf3d4e7..9bda9bdeb5 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1259,3 +1259,11 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index 20fef20c8b..61d2aa05a9 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1149,3 +1149,11 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/sys/pidfd.h b/sysdeps/unix/sysv/linux/sys/pidfd.h
index 1078322062..9f88d297e8 100644
--- a/sysdeps/unix/sysv/linux/sys/pidfd.h
+++ b/sysdeps/unix/sysv/linux/sys/pidfd.h
@@ -22,12 +22,14 @@
 #include <bits/types/siginfo_t.h>
 
 #define PIDFD_NONBLOCK O_NONBLOCK
+#define PIDFD_THREAD O_EXCL
 
-/* Returns a file descriptor that refers to the process PID.  The
-   close-on-exec is set on the file descriptor.
+#define PIDFD_SIGNAL_THREAD (1UL << 0)
+#define PIDFD_SIGNAL_THREAD_GROUP (1UL << 1)
+#define PIDFD_SIGNAL_PROCESS_GROUP (1UL << 2)
 
-   The FLAGS argument is reserved for future use, it must be specified
-   as 0.  */
+/* Returns a file descriptor that refers to the process PID.  The
+   close-on-exec is set on the file descriptor.  */
 extern int pidfd_open (__pid_t __pid, unsigned int __flags) __THROW;
 
 /* Duplicates an existing file descriptor TARGETFD in the process referred
@@ -39,10 +41,7 @@ extern int pidfd_getfd (int __pidfd, int __targetfd,
 			unsigned int __flags) __THROW;
 
 /* Sends the signal SIG to the target process referred by the PIDFD.  If
-   INFO points to a siginfo_t buffer, it will be populated.
-
-   The FLAGS argument is reserved for future use, it must be specified
-   as 0.  */
+   INFO points to a siginfo_t buffer, it will be populated.  */
 extern int pidfd_send_signal (int __pidfd, int __sig, siginfo_t *__info,
 			      unsigned int __flags) __THROW;
 
diff --git a/sysdeps/unix/sysv/linux/syscall-names.list b/sysdeps/unix/sysv/linux/syscall-names.list
index 6557bcfde4..672d39eaad 100644
--- a/sysdeps/unix/sysv/linux/syscall-names.list
+++ b/sysdeps/unix/sysv/linux/syscall-names.list
@@ -21,8 +21,8 @@
 # This file can list all potential system calls.  The names are only
 # used if the installed kernel headers also provide them.
 
-# The list of system calls is current as of Linux 6.8.
-kernel 6.8
+# The list of system calls is current as of Linux 6.9.
+kernel 6.9
 
 FAST_atomic_update
 FAST_cmpxchg
diff --git a/sysdeps/unix/sysv/linux/tst-mman-consts.py b/sysdeps/unix/sysv/linux/tst-mman-consts.py
index 56c0cf3e22..4a8f4e8919 100644
--- a/sysdeps/unix/sysv/linux/tst-mman-consts.py
+++ b/sysdeps/unix/sysv/linux/tst-mman-consts.py
@@ -33,7 +33,7 @@ def main():
                         help='C compiler (including options) to use')
     args = parser.parse_args()
     linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
-    linux_version_glibc = (6, 8)
+    linux_version_glibc = (6, 9)
     sys.exit(glibcextract.compare_macro_consts(
         '#define _GNU_SOURCE 1\n'
         '#include <sys/mman.h>\n',
diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py
index 8613db96d7..c4a67221c1 100755
--- a/sysdeps/unix/sysv/linux/tst-mount-consts.py
+++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py
@@ -39,10 +39,10 @@ def main():
         sys.exit (77)
 
     linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
-    # Constants in glibc were updated to match Linux v6.8.  When glibc
+    # Constants in glibc were updated to match Linux v6.9.  When glibc
     # constants are updated this value should be updated to match the
     # released kernel version from which the constants were taken.
-    linux_version_glibc = (6, 8)
+    linux_version_glibc = (6, 9)
     def check(cte, exclude=None):
         return glibcextract.compare_macro_consts(
                 '#include <sys/mount.h>\n',
diff --git a/sysdeps/unix/sysv/linux/tst-pidfd-consts.py b/sysdeps/unix/sysv/linux/tst-pidfd-consts.py
index 96875ac266..6f05291949 100644
--- a/sysdeps/unix/sysv/linux/tst-pidfd-consts.py
+++ b/sysdeps/unix/sysv/linux/tst-pidfd-consts.py
@@ -39,7 +39,7 @@ def main():
         sys.exit (77)
 
     linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc)
-    linux_version_glibc = (6, 8)
+    linux_version_glibc = (6, 9)
     sys.exit(glibcextract.compare_macro_consts(
                 '#include <sys/pidfd.h>\n',
                 '#include <asm/fcntl.h>\n'
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index c1c5c76e26..bbf646fe7f 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1182,3 +1182,11 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/unix/sysv/linux/x86_64/clone3.S b/sysdeps/unix/sysv/linux/x86_64/clone3.S
index 5a2d42234e..4cc19e066c 100644
--- a/sysdeps/unix/sysv/linux/x86_64/clone3.S
+++ b/sysdeps/unix/sysv/linux/x86_64/clone3.S
@@ -86,4 +86,3 @@ L(thread_start):
 PSEUDO_END (__clone3)
 
 libc_hidden_def (__clone3)
-weak_alias (__clone3, clone3)
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index fac219d45a..7c7b884dde 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1182,3 +1182,11 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 log2p1 F
+GLIBC_2.40 log2p1f F
+GLIBC_2.40 log2p1f128 F
+GLIBC_2.40 log2p1f32 F
+GLIBC_2.40 log2p1f32x F
+GLIBC_2.40 log2p1f64 F
+GLIBC_2.40 log2p1f64x F
+GLIBC_2.40 log2p1l F
diff --git a/sysdeps/x86/tst-cpu-features-supports.c b/sysdeps/x86/tst-cpu-features-supports.c
index e270c29db7..a50afea2f9 100644
--- a/sysdeps/x86/tst-cpu-features-supports.c
+++ b/sysdeps/x86/tst-cpu-features-supports.c
@@ -65,7 +65,7 @@ do_test (int argc, char **argv)
 #endif
   fails += CHECK_FEATURE_ACTIVE (avx, AVX);
   fails += CHECK_FEATURE_ACTIVE (avx2, AVX2);
-#if __GNUC_PREREQ (7, 0)
+#if __GNUC_PREREQ (7, 0) && !__GNUC_PREREQ (15, 0)
   fails += CHECK_FEATURE_ACTIVE (avx5124fmaps, AVX512_4FMAPS);
   fails += CHECK_FEATURE_ACTIVE (avx5124vnniw, AVX512_4VNNIW);
 #endif
@@ -92,14 +92,18 @@ do_test (int argc, char **argv)
 #if __GNUC_PREREQ (6, 0)
   fails += CHECK_FEATURE_ACTIVE (avx512bw, AVX512BW);
   fails += CHECK_FEATURE_ACTIVE (avx512cd, AVX512CD);
+# if !__GNUC_PREREQ (15, 0)
   fails += CHECK_FEATURE_ACTIVE (avx512er, AVX512ER);
+# endif
   fails += CHECK_FEATURE_ACTIVE (avx512dq, AVX512DQ);
 #endif
 #if __GNUC_PREREQ (5, 0)
   fails += CHECK_FEATURE_ACTIVE (avx512f, AVX512F);
 #endif
 #if __GNUC_PREREQ (6, 0)
+# if !__GNUC_PREREQ (15, 0)
   fails += CHECK_FEATURE_ACTIVE (avx512pf, AVX512PF);
+# endif
   fails += CHECK_FEATURE_ACTIVE (avx512vl, AVX512VL);
 #endif
 #if __GNUC_PREREQ (5, 0)
@@ -148,7 +152,9 @@ do_test (int argc, char **argv)
 #endif
   fails += CHECK_FEATURE_ACTIVE (popcnt, POPCNT);
 #if __GNUC_PREREQ (11, 0)
+# if !__GNUC_PREREQ (15, 0)
   fails += CHECK_FEATURE_ACTIVE (prefetchwt1, PREFETCHWT1);
+# endif
   fails += CHECK_FEATURE_ACTIVE (ptwrite, PTWRITE);
   fails += CHECK_FEATURE_ACTIVE (rdpid, RDPID);
   fails += CHECK_FEATURE_ACTIVE (rdrnd, RDRAND);
diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h
index ff5d45f7cb..a6de3793e4 100644
--- a/sysdeps/x86_64/dl-machine.h
+++ b/sysdeps/x86_64/dl-machine.h
@@ -245,10 +245,11 @@ elf_machine_plt_value (struct link_map *map, const ElfW(Rela) *reloc,
    MAP is the object containing the reloc.  */
 
 static inline void __attribute__((always_inline))
-elf_machine_rela(struct link_map *map, struct r_scope_elem *scope[],
-		 const ElfW(Rela) *reloc, const ElfW(Sym) *sym,
-		 const struct r_found_version *version,
-		 void *const reloc_addr_arg, int skip_ifunc) {
+elf_machine_rela (struct link_map *map, struct r_scope_elem *scope[],
+		  const ElfW(Rela) *reloc, const ElfW(Sym) *sym,
+		  const struct r_found_version *version,
+		  void *const reloc_addr_arg, int skip_ifunc)
+{
   ElfW(Addr) *const reloc_addr = reloc_addr_arg;
   const unsigned long int r_type = ELFW(R_TYPE) (reloc->r_info);
 
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index e0015347d0..893c22b19b 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -1847,6 +1847,30 @@ float: 1
 Function: "log2_vlen8_avx2":
 float: 1
 
+Function: "log2p1":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+float128: 3
+ldouble: 4
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+float128: 2
+ldouble: 4
+
+Function: "log2p1_upward":
+double: 1
+float: 2
+float128: 2
+ldouble: 5
+
 Function: "log_downward":
 float: 2
 float128: 1
diff --git a/time/time.h b/time/time.h
index bc043188e1..486367f7dd 100644
--- a/time/time.h
+++ b/time/time.h
@@ -77,7 +77,7 @@ extern time_t time (time_t *__timer) __THROW;
 
 /* Return the difference between TIME1 and TIME0.  */
 extern double difftime (time_t __time1, time_t __time0)
-     __THROW __attribute__ ((__const__));
+     __THROW __attribute_pure__;
 
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
@@ -85,7 +85,7 @@ extern time_t mktime (struct tm *__tp) __THROW;
 # ifdef __REDIRECT_NTH
 extern time_t __REDIRECT_NTH (time, (time_t *__timer), __time64);
 extern double __REDIRECT_NTH (difftime, (time_t __time1, time_t __time0),
-                              __difftime64) __attribute__ ((__const__));
+                              __difftime64) __attribute_pure__;
 extern time_t __REDIRECT_NTH (mktime, (struct tm *__tp), __mktime64);
 # else
 #  define time __time64