public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v4 0/5] Improve fmod and fmodf
@ 2023-03-20 16:01 Adhemerval Zanella
  2023-03-20 16:01 ` [PATCH v4 1/5] benchtests: Add fmod benchmark Adhemerval Zanella
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Adhemerval Zanella @ 2023-03-20 16:01 UTC (permalink / raw)
  To: libc-alpha, Wilco Dijkstra, H . J . Lu

This is an updated version of a previous submission aimed to improve
fmod implementation [1] by Kirill Okhotnikov.  I extended it with:

  1. Proper benchmarks for both single and double.  The inputs are
     divided in 3 subsets: subnormals, normal nubmers, and close 
     exponents.  It uses a list with random generated values.

  2. Use math_config.h definitions instead math_private (so it might
     eventually get back on optimize-routines).

  3. Implement the same strategy for float version.

  4. Also tuned the final division to use multiplication with inverse
     instead of direct modulo.  It showed better performance on both
     x86_64 and aarch64 chips I have tested.

  5. Remove SVID error handling wrapper.

The performance shows a good improvement compared to current algorithm
for fmod (using gcc 11):

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  x86_64 (Ryzen 9) | subnormals      | 19.1584  | 9.40992
  x86_64 (Ryzen 9) | normal          | 1016.51  | 296.738
  x86_64 (Ryzen 9) | close-exponents | 18.4428  | 13.119
  aarch64 (N1)     | subnormal       | 11.153   | 4.33313
  aarch64 (N1)     | normal          | 528.649  | 158.339
  aarch64 (N1)     | close-exponents | 11.4517  | 5.76138

I also see similar improvements on arm-linux-gnueabihf when running on
the N1 aarch64 chips, where it uses a lot of soft-fp implementation
(for modulo, clz, ctz, and multiplication):

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  armhf (N1)       | subnormal       | 15.7284  | 14.5746
  armhf (N1)       | normal          | 837.525  | 241.738
  armhf (N1)       | close-exponents | 16.2111  | 22.457


The fmodf shows a more moderate improvement:

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  x86_64 (Ryzen 9) | subnormals      | 17.2549  | 9.35776
  x86_64 (Ryzen 9) | normal          | 85.4096  | 46.2761
  x86_64 (Ryzen 9) | close-exponents | 19.1072  | 12.6199
  aarch64 (N1)     | subnormal       | 10.2182  | 4.39188
  aarch64 (N1)     | normal          | 60.0616  | 18.3888
  aarch64 (N1)     | close-exponents | 11.5256  | 5.93518
  armhf (N1)       | subnormal       | 11.6662  | 7.75977
  armhf (N1)       | normal          | 69.2759  | 31.623
  armhf (N1)       | close-exponents | 13.6472  | 15.6689


I also checked against H.J proposal to use fprem on x86_64 [2] and
against recent suggestion on libc-alpha [3], and on both cases 
this newer implementation shows better performance.

Changes from v3:
 * New tests cover more floating points types.

Changes from v2:
 * Bug fixes and improve testsuite.

Changes from v1:
 * Remove SVID error handling wrapper.
 * Extend testing for subnormal with different signs.
 * Code cleanup.

Adhemerval Zanella (5):
  benchtests: Add fmod benchmark
  benchtests: Add fmodf benchmark
  math: Improve fmod
  math: Improve fmodf
  math: Remove the error handling wrapper from fmod and fmodf

 benchtests/Makefile                           |    2 +
 benchtests/fmod-inputs                        | 2182 +++++++++++++++++
 benchtests/fmodf-inputs                       | 2182 +++++++++++++++++
 math/Versions                                 |    4 +
 math/libm-test-fmod.inc                       |   18 +
 math/w_fmod_compat.c                          |   13 +-
 math/w_fmodf_compat.c                         |    6 +-
 sysdeps/i386/fpu/w_fmod_compat.c              |   14 +
 sysdeps/i386/fpu/w_fmodf_compat.c             |   14 +
 sysdeps/ieee754/dbl-64/e_fmod.c               |  248 +-
 sysdeps/ieee754/dbl-64/math_config.h          |   70 +
 sysdeps/ieee754/dbl-64/math_err.c             |    6 +
 sysdeps/ieee754/dbl-64/w_fmod.c               |    1 +
 sysdeps/ieee754/flt-32/e_fmodf.c              |  244 +-
 sysdeps/ieee754/flt-32/math_config.h          |   48 +
 sysdeps/ieee754/flt-32/math_errf.c            |    6 +
 sysdeps/ieee754/flt-32/w_fmodf.c              |    1 +
 sysdeps/m68k/m680x0/fpu/w_fmod_compat.c       |   14 +
 sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c      |   14 +
 sysdeps/unix/sysv/linux/aarch64/libm.abilist  |    2 +
 sysdeps/unix/sysv/linux/alpha/libm.abilist    |    2 +
 sysdeps/unix/sysv/linux/arm/be/libm.abilist   |    2 +
 sysdeps/unix/sysv/linux/arm/le/libm.abilist   |    2 +
 sysdeps/unix/sysv/linux/hppa/libm.abilist     |    2 +
 .../sysv/linux/m68k/coldfire/libm.abilist     |    2 +
 .../sysv/linux/microblaze/be/libm.abilist     |    2 +
 .../sysv/linux/microblaze/le/libm.abilist     |    2 +
 .../unix/sysv/linux/mips/mips32/libm.abilist  |    2 +
 .../unix/sysv/linux/mips/mips64/libm.abilist  |    2 +
 sysdeps/unix/sysv/linux/nios2/libm.abilist    |    2 +
 .../linux/powerpc/powerpc32/fpu/libm.abilist  |    2 +
 .../powerpc/powerpc32/nofpu/libm.abilist      |    2 +
 .../linux/powerpc/powerpc64/be/libm.abilist   |    2 +
 .../linux/powerpc/powerpc64/le/libm.abilist   |    2 +
 .../unix/sysv/linux/s390/s390-32/libm.abilist |    2 +
 .../unix/sysv/linux/s390/s390-64/libm.abilist |    2 +
 sysdeps/unix/sysv/linux/sh/be/libm.abilist    |    2 +
 sysdeps/unix/sysv/linux/sh/le/libm.abilist    |    2 +
 .../sysv/linux/sparc/sparc32/libm.abilist     |    2 +
 .../sysv/linux/sparc/sparc64/libm.abilist     |    2 +
 .../unix/sysv/linux/x86_64/64/libm.abilist    |    2 +
 .../unix/sysv/linux/x86_64/x32/libm.abilist   |    2 +
 42 files changed, 4936 insertions(+), 197 deletions(-)
 create mode 100644 benchtests/fmod-inputs
 create mode 100644 benchtests/fmodf-inputs
 create mode 100644 sysdeps/i386/fpu/w_fmod_compat.c
 create mode 100644 sysdeps/i386/fpu/w_fmodf_compat.c
 create mode 100644 sysdeps/ieee754/dbl-64/w_fmod.c
 create mode 100644 sysdeps/ieee754/flt-32/w_fmodf.c
 create mode 100644 sysdeps/m68k/m680x0/fpu/w_fmod_compat.c
 create mode 100644 sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c

-- 
2.34.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v4 1/5] benchtests: Add fmod benchmark
  2023-03-20 16:01 [PATCH v4 0/5] Improve fmod and fmodf Adhemerval Zanella
@ 2023-03-20 16:01 ` Adhemerval Zanella
  2023-04-03 13:13   ` Wilco Dijkstra
  2023-03-20 16:01 ` [PATCH v4 2/5] benchtests: Add fmodf benchmark Adhemerval Zanella
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Adhemerval Zanella @ 2023-03-20 16:01 UTC (permalink / raw)
  To: libc-alpha, Wilco Dijkstra, H . J . Lu

Add three different dataset, from random floating point numbers:

1. Subnormals: 128 inputs.
2. Normal numbers with large exponent difference (|x/y| > 2^52):
   1024 inputs between DBL_MIN and DBL_MAX;
3. Close exponents (ey >= -907 and |x/y| < 2^52): 1024 inputs with
   exponents between -10 and 10.
---
 benchtests/Makefile    |    1 +
 benchtests/fmod-inputs | 2182 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 2183 insertions(+)
 create mode 100644 benchtests/fmod-inputs

diff --git a/benchtests/Makefile b/benchtests/Makefile
index 721f32afdb..7427010117 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -48,6 +48,7 @@ bench-math := \
   fmaxf \
   fmin \
   fminf \
+  fmod \
   hypot \
   hypotf \
   ilogb \
diff --git a/benchtests/fmod-inputs b/benchtests/fmod-inputs
new file mode 100644
index 0000000000..6f75ea122e
--- /dev/null
+++ b/benchtests/fmod-inputs
@@ -0,0 +1,2182 @@
+## args: double:double
+## ret: double
+## includes: math.h
+## name: subnormals
+0x0.3212f5b8c8c16p-1022, 0x0.cded0a47373e9p-1022
+0x0.809c23acfa7ddp-1022, 0x0.7f63dc5305822p-1022
+0x0.360cedf5115cdp-1022, 0x0.c9f3120aeea32p-1022
+0x0.b2be3cee373b8p-1022, 0x0.4d41c311c8c47p-1022
+0x0.d285690054e97p-1022, 0x0.2d7a96ffab168p-1022
+0x0.cb68d2682ef4bp-1022, 0x0.34972d97d10b4p-1022
+0x0.9df13f298d759p-1022, 0x0.620ec0d6728a6p-1022
+0x0.2153dc75281fep-1022, 0x0.deac238ad7e01p-1022
+0x0.96768c82892f9p-1022, 0x0.6989737d76d06p-1022
+0x0.455eaa55f7f8p-1022, 0x0.baa155aa0807fp-1022
+0x0.4f3ad8f0e359cp-1022, 0x0.b0c5270f1ca63p-1022
+0x0.799208406573fp-1022, 0x0.866df7bf9a8cp-1022
+0x0.453f460eb1053p-1022, 0x0.bac0b9f14efacp-1022
+0x0.1b747781ee0eap-1022, 0x0.e48b887e11f15p-1022
+0x0.41d05f09e4fdap-1022, 0x0.be2fa0f61b025p-1022
+0x0.291b4d35d8c67p-1022, 0x0.d6e4b2ca27398p-1022
+0x0.9aeb55377b686p-1022, 0x0.6514aac884979p-1022
+0x0.c63b39ff938f2p-1022, 0x0.39c4c6006c70dp-1022
+0x0.c2fadaca8276bp-1022, 0x0.3d0525357d894p-1022
+0x0.b202efb1f5fdap-1022, 0x0.4dfd104e0a025p-1022
+0x0.ac60f2fb10bb1p-1022, 0x0.539f0d04ef44ep-1022
+0x0.bbc8b47f88c54p-1022, 0x0.44374b80773abp-1022
+0x0.3c13f91ce8ea8p-1022, 0x0.c3ec06e317157p-1022
+0x0.f4ebddec75acfp-1022, 0x0.0b1422138a53p-1022
+0x0.8da19fe9fd16p-1022, 0x0.725e601602e9fp-1022
+0x0.6383858b40f02p-1022, 0x0.9c7c7a74bf0fdp-1022
+0x0.7988caaa9cfe8p-1022, 0x0.8677355563017p-1022
+0x0.214f99f08fccbp-1022, 0x0.deb0660f70334p-1022
+0x0.71a030a6a5231p-1022, 0x0.8e5fcf595adcep-1022
+0x0.fb32f0672728dp-1022, 0x0.04cd0f98d8d72p-1022
+0x0.708567094c7dp-1022, 0x0.8f7a98f6b382fp-1022
+0x0.b994a324fd9e7p-1022, 0x0.466b5cdb02618p-1022
+0x0.95d6e740aacadp-1022, 0x0.6a2918bf55352p-1022
+0x0.224dbfeb13addp-1022, 0x0.ddb24014ec522p-1022
+0x0.69eb7e2d5f842p-1022, 0x0.961481d2a07bdp-1022
+0x0.41d8e41315a4p-1022, 0x0.be271becea5bfp-1022
+0x0.db32d0f23094fp-1022, 0x0.24cd2f0dcf6bp-1022
+0x0.63857cdc24c7cp-1022, 0x0.9c7a8323db383p-1022
+0x0.11e17d08ae895p-1022, 0x0.ee1e82f75176ap-1022
+0x0.f2eff6a13515dp-1022, 0x0.0d10095ecaea2p-1022
+0x0.7959bca32dd5ep-1022, 0x0.86a6435cd22a1p-1022
+0x0.84b0fa90179c2p-1022, 0x0.7b4f056fe863dp-1022
+0x0.f5831fb31079bp-1022, 0x0.0a7ce04cef864p-1022
+0x0.72880e61bd787p-1022, 0x0.8d77f19e42878p-1022
+0x0.a74b5706ea9c2p-1022, 0x0.58b4a8f91563dp-1022
+0x0.03d9a9138644p-1022, 0x0.fc2656ec79bbfp-1022
+0x0.2e006a09601eap-1022, 0x0.d1ff95f69fe15p-1022
+0x0.9755a21896c1dp-1022, 0x0.68aa5de7693e2p-1022
+0x0.e326e2f8aeda3p-1022, 0x0.1cd91d075125cp-1022
+0x0.6c6eecb81c2bp-1022, 0x0.93911347e3d4fp-1022
+0x0.549b0958ee6c1p-1022, 0x0.ab64f6a71193ep-1022
+0x0.bf2f8bebe1d8cp-1022, 0x0.40d074141e273p-1022
+0x0.c220f29a889c4p-1022, 0x0.3ddf0d657763bp-1022
+0x0.b71cbd63bde89p-1022, 0x0.48e3429c42176p-1022
+0x0.d50e267f12568p-1022, 0x0.2af1d980eda97p-1022
+0x0.49775f13e63e6p-1022, 0x0.b688a0ec19c19p-1022
+0x0.cc70253184c41p-1022, 0x0.338fdace7b3bep-1022
+0x0.9fc65a5ab56dbp-1022, 0x0.6039a5a54a924p-1022
+0x0.925b49750c50ep-1022, 0x0.6da4b68af3af1p-1022
+0x0.a117aa99456fcp-1022, 0x0.5ee85566ba903p-1022
+0x0.c417ef9b8f985p-1022, 0x0.3be810647067ap-1022
+0x0.afd45fa04f329p-1022, 0x0.502ba05fb0cd6p-1022
+0x0.dad508c622e7ap-1022, 0x0.252af739dd185p-1022
+0x0.1b75300e85ddbp-1022, 0x0.e48acff17a224p-1022
+0x0.2bd307f50ed4fp-1022, 0x0.d42cf80af12bp-1022
+0x0.8a9e65d566af8p-1022, 0x0.75619a2a99507p-1022
+0x0.0f0e09881f1a8p-1022, 0x0.f0f1f677e0e57p-1022
+0x0.58c92c3bc360cp-1022, 0x0.a736d3c43c9f3p-1022
+0x0.db5e11e5c51cbp-1022, 0x0.24a1ee1a3ae34p-1022
+0x0.329d3d9cb6ffp-1022, 0x0.cd62c2634900fp-1022
+0x0.566a1d097dcefp-1022, 0x0.a995e2f68231p-1022
+0x0.16c2681e94158p-1022, 0x0.e93d97e16bea7p-1022
+0x0.d0122a6d74b1ep-1022, 0x0.2fedd5928b4e1p-1022
+0x0.4ca21dcf2d12fp-1022, 0x0.b35de230d2edp-1022
+0x0.aad3ddee3f1ep-1022, 0x0.552c2211c0e1fp-1022
+0x0.bfcf851090e17p-1022, 0x0.40307aef6f1e8p-1022
+0x0.f043b3e485712p-1022, 0x0.0fbc4c1b7a8edp-1022
+0x0.d835f2410367ap-1022, 0x0.27ca0dbefc985p-1022
+0x0.d5a5790ca3aa7p-1022, 0x0.2a5a86f35c558p-1022
+0x0.3b180d8f22fdcp-1022, 0x0.c4e7f270dd023p-1022
+0x0.288a560bb0abbp-1022, 0x0.d775a9f44f544p-1022
+0x0.f9d8e8ca82eadp-1022, 0x0.062717357d152p-1022
+0x0.9f03a54ba283ap-1022, 0x0.60fc5ab45d7c5p-1022
+0x0.b7571118cfe57p-1022, 0x0.48a8eee7301a8p-1022
+0x0.f2fc37f749d5ep-1022, 0x0.0d03c808b62a1p-1022
+0x0.80505074c981ep-1022, 0x0.7fafaf8b367e1p-1022
+0x0.6b93c5c3d648p-1022, 0x0.946c3a3c29b7fp-1022
+0x0.ec7c108bd265bp-1022, 0x0.1383ef742d9a4p-1022
+0x0.79f6a1409a0ccp-1022, 0x0.86095ebf65f33p-1022
+0x0.e807ef9c8174cp-1022, 0x0.17f810637e8b3p-1022
+0x0.5ee748f694d07p-1022, 0x0.a118b7096b2f8p-1022
+0x0.5452c018bdf44p-1022, 0x0.abad3fe7420bbp-1022
+0x0.c527c76e160e1p-1022, 0x0.3ad83891e9f1ep-1022
+0x0.964a823b66519p-1022, 0x0.69b57dc499ae6p-1022
+0x0.b86a621c60582p-1022, 0x0.47959de39fa7dp-1022
+0x0.b07c9ab254c4ep-1022, 0x0.4f83654dab3b1p-1022
+0x0.434017e74a06bp-1022, 0x0.bcbfe818b5f94p-1022
+0x0.8991d4df06a12p-1022, 0x0.766e2b20f95edp-1022
+0x0.f6dd3816ab3eep-1022, 0x0.0922c7e954c11p-1022
+0x0.d44f4f4ad0948p-1022, 0x0.2bb0b0b52f6b7p-1022
+0x0.66f2d139d422dp-1022, 0x0.990d2ec62bdd2p-1022
+0x0.8bf569b1bea2ep-1022, 0x0.740a964e415d1p-1022
+0x0.d300e13e9fcebp-1022, 0x0.2cff1ec160314p-1022
+0x0.6836b224f9e37p-1022, 0x0.97c94ddb061c8p-1022
+0x0.f2932a1d99545p-1022, 0x0.0d6cd5e266abap-1022
+0x0.37e970f90b012p-1022, 0x0.c8168f06f4fedp-1022
+0x0.4ca1dab352f63p-1022, 0x0.b35e254cad09cp-1022
+0x0.81e10040922a4p-1022, 0x0.7e1effbf6dd5bp-1022
+0x0.540b2f65254b8p-1022, 0x0.abf4d09adab47p-1022
+0x0.c5ebed9658964p-1022, 0x0.3a141269a769bp-1022
+0x0.a9e99371853ebp-1022, 0x0.56166c8e7ac14p-1022
+0x0.af789f8c1be41p-1022, 0x0.50876073e41bep-1022
+0x0.fae21156cf837p-1022, 0x0.051deea9307c8p-1022
+0x0.de37bf3bd0b65p-1022, 0x0.21c840c42f49ap-1022
+0x0.a64058b7a73a4p-1022, 0x0.59bfa74858c5bp-1022
+0x0.299fbfee12046p-1022, 0x0.d6604011edfb9p-1022
+0x0.cab748f96a65cp-1022, 0x0.3548b706959a3p-1022
+0x0.2c0e68198944dp-1022, 0x0.d3f197e676bb2p-1022
+0x0.c61d147c98a4ep-1022, 0x0.39e2eb83675b1p-1022
+0x0.ef88a9c41e5p-1022, 0x0.1077563be1affp-1022
+0x0.32ca5453425p-1022, 0x0.cd35abacbdaffp-1022
+0x0.c62c8be7dd452p-1022, 0x0.39d3741822badp-1022
+0x0.7ce2545178defp-1022, 0x0.831dabae8721p-1022
+0x0.84de652973911p-1022, 0x0.7b219ad68c6eep-1022
+0x0.d3f964625245bp-1022, 0x0.2c069b9dadba4p-1022
+0x0.bc8e4bc0faeb9p-1022, 0x0.4371b43f05146p-1022
+0x0.f4f1f63404c96p-1022, 0x0.0b0e09cbfb369p-1022
+0x0.05bee37594244p-1022, 0x0.fa411c8a6bdbbp-1022
+## name: normal
+0x1.be99ad6933c76p-740, 0x1.41665296cc389p+741
+0x1.87b8527e7cddep+690, 0x1.7847ad8183221p-689
+0x1.1d86cb84ad5fcp-944, 0x1.e279347b52a03p+945
+0x1.728643e8ba72ap-1007, 0x1.8d79bc17458d5p+1008
+0x1.026ea748148aep-638, 0x1.fd9158b7eb751p+639
+0x1.02c24bfd97572p-136, 0x1.fd3db40268a8dp+137
+0x1.c512de4a1be6ep-269, 0x1.3aed21b5e4191p+270
+0x1.4b770066d5c14p+156, 0x1.b488ff992a3ebp-155
+0x1.59c1080127ee2p-516, 0x1.a63ef7fed811dp+517
+0x1.eb3c5c47f7beap-519, 0x1.14c3a3b808415p+520
+0x1.8058a0a39ebccp+74, 0x1.7fa75f5c61433p-73
+0x1.86e0e1a4273d6p+75, 0x1.791f1e5bd8c29p-74
+0x1.9deb9bb1ef618p+326, 0x1.6214644e109e7p-325
+0x1.9f534acbc29bap-26, 0x1.60acb5343d645p+27
+0x1.bc43d3fd169aep+329, 0x1.43bc2c02e9651p-328
+0x1.f38243ef30bd4p+400, 0x1.0c7dbc10cf42bp-399
+0x1.2b7120f62146ap+691, 0x1.d48edf09deb95p-690
+0x1.babcc7463bfc6p-584, 0x1.454338b9c4039p+585
+0x1.8f9b18381cc6ep+368, 0x1.7064e7c7e3391p-367
+0x1.61d981d382786p-907, 0x1.9e267e2c7d879p+908
+0x1.48c93a821129ep-499, 0x1.b736c57deed61p+500
+0x1.efe90630749d6p-391, 0x1.1016f9cf8b629p+392
+0x1.d5c9782c58f14p+965, 0x1.2a3687d3a70ebp-964
+0x1.6c61db0f9a642p-13, 0x1.939e24f0659bdp+14
+0x1.4285cb672813cp-255, 0x1.bd7a3498d7ec3p+256
+0x1.466878e00bdc2p+361, 0x1.b997871ff423dp-360
+0x1.4f234a7eb4f9p+456, 0x1.b0dcb5814b06fp-455
+0x1.51e88226aba42p-1001, 0x1.ae177dd9545bdp+1002
+0x1.f8c26d97fb016p-547, 0x1.073d926804fe9p+548
+0x1.cbdbf2281878ep-439, 0x1.34240dd7e7871p+440
+0x1.3c8b2afd2e54cp-432, 0x1.c374d502d1ab3p+433
+0x1.908df85e2ea4cp-824, 0x1.6f7207a1d15b3p+825
+0x1.ca752828264p-984, 0x1.358ad7d7d9bffp+985
+0x1.8c185aefe1cb6p-480, 0x1.73e7a5101e349p+481
+0x1.6629dac71ceap-126, 0x1.99d62538e315fp+127
+0x1.f661024afd09p+802, 0x1.099efdb502f6fp-801
+0x1.32eef763b6b16p-916, 0x1.cd11089c494e9p+917
+0x1.1061b1f6af2fap+508, 0x1.ef9e4e0950d05p-507
+0x1.8c20307fdf102p+1017, 0x1.73dfcf8020efdp-1016
+0x1.44f902141982p-215, 0x1.bb06fdebe67dfp+216
+0x1.fa4ad1001017ep+1011, 0x1.05b52effefe81p-1010
+0x1.62025c87076d6p-446, 0x1.9dfda378f8929p+447
+0x1.33446224f1ffep+691, 0x1.ccbb9ddb0e001p-690
+0x1.0cad5c7d3ba14p-7, 0x1.f352a382c45ebp+8
+0x1.79a2b23c72a66p+239, 0x1.865d4dc38d599p-238
+0x1.e38949bde6162p+882, 0x1.1c76b64219e9dp-881
+0x1.a2cb0d50ba06p-74, 0x1.5d34f2af45f9fp+75
+0x1.2e5dfeec70ac2p-13, 0x1.d1a201138f53dp+14
+0x1.a765833a845fap-380, 0x1.589a7cc57ba05p+381
+0x1.a925ddd92877p-204, 0x1.56da2226d788fp+205
+0x1.e64434c748b3cp+204, 0x1.19bbcb38b74c3p-203
+0x1.a0bfa2f4c09d4p+950, 0x1.5f405d0b3f62bp-949
+0x1.8dc954ffffdc8p+851, 0x1.7236ab0000237p-850
+0x1.441787270a9eep+526, 0x1.bbe878d8f5611p-525
+0x1.6a3c8a2e39abep+988, 0x1.95c375d1c6541p-987
+0x1.80c1673f0eceap-251, 0x1.7f3e98c0f1315p+252
+0x1.09734f25c49eep-805, 0x1.f68cb0da3b611p+806
+0x1.a8efeaf10fa6ep+481, 0x1.5710150ef0591p-480
+0x1.273b74b10a0b2p-278, 0x1.d8c48b4ef5f4dp+279
+0x1.cb185188ccff6p+824, 0x1.34e7ae7733009p-823
+0x1.89d09a2cc24b8p+114, 0x1.762f65d33db47p-113
+0x1.9110b8686839cp+962, 0x1.6eef479797c63p-961
+0x1.6e0d2fea6dae2p-133, 0x1.91f2d0159251dp+134
+0x1.d4fc4eaf4cdd4p+98, 0x1.2b03b150b322bp-97
+0x1.e36cbf35046cep-195, 0x1.1c9340cafb931p+196
+0x1.f4f464c24ee4ap+643, 0x1.0b0b9b3db11b5p-642
+0x1.9a8bd2d68843p-147, 0x1.65742d2977bcfp+148
+0x1.255cb865b81cep+450, 0x1.daa3479a47e31p-449
+0x1.e667c680d8462p-368, 0x1.1998397f27b9dp+369
+0x1.c77d31fd6f5e4p-379, 0x1.3882ce0290a1bp+380
+0x1.c036eba74b14ap+912, 0x1.3fc91458b4eb5p-911
+0x1.a75eb05bcc58ep-124, 0x1.58a14fa433a71p+125
+0x1.6c483839a84b4p-749, 0x1.93b7c7c657b4bp+750
+0x1.0985178675b5cp+362, 0x1.f67ae8798a4a3p-361
+0x1.0093f5a5f0aep-7, 0x1.ff6c0a5a0f51fp+8
+0x1.eb4608f6947b8p+828, 0x1.14b9f7096b847p-827
+0x1.267f13dd7f798p+322, 0x1.d980ec2280867p-321
+0x1.16c5e01308e0cp+905, 0x1.e93a1fecf71f3p-904
+0x1.077304dd8c192p+443, 0x1.f88cfb2273e6dp-442
+0x1.5f4c802c4c478p+383, 0x1.a0b37fd3b3b87p-382
+0x1.8f81ef3a1104cp+869, 0x1.707e10c5eefb3p-868
+0x1.c70232529c02ep-176, 0x1.38fdcdad63fd1p+177
+0x1.aed65b1dd3d36p+831, 0x1.5129a4e22c2c9p-830
+0x1.468f46d920b94p+208, 0x1.b970b926df46bp-207
+0x1.27a97f96f2348p+312, 0x1.d85680690dcb7p-311
+0x1.74dcff95b693p+252, 0x1.8b23006a496cfp-251
+0x1.ea835d91104ap+1014, 0x1.157ca26eefb5fp-1013
+0x1.454426fcd929p-76, 0x1.babbd90326d6fp+77
+0x1.832b13283e442p-191, 0x1.7cd4ecd7c1bbdp+192
+0x1.5818cdd705ee8p+57, 0x1.a7e73228fa117p-56
+0x1.5af6639f42748p+23, 0x1.a5099c60bd8b7p-22
+0x1.8f61ea037f5b2p-441, 0x1.709e15fc80a4dp+442
+0x1.d2c2e682f6ef2p+142, 0x1.2d3d197d0910dp-141
+0x1.d84c48c54a57p-24, 0x1.27b3b73ab5a8fp+25
+0x1.2abb5ee51f4b8p+382, 0x1.d544a11ae0b47p-381
+0x1.e18356b47fe9ep-729, 0x1.1e7ca94b80161p+730
+0x1.ab0746fa4ed4ep-828, 0x1.54f8b905b12b1p+829
+0x1.988d5eefb4f86p-20, 0x1.6772a1104b079p+21
+0x1.9d47270b4a704p-594, 0x1.62b8d8f4b58fbp+595
+0x1.f8fde9c908928p-704, 0x1.07021636f76d7p+705
+0x1.4ce849d28405p+249, 0x1.b317b62d7bfafp-248
+0x1.e685ac0e6aeecp+71, 0x1.197a53f195113p-70
+0x1.c040427f7759cp+24, 0x1.3fbfbd8088a63p-23
+0x1.0da11796a0422p+359, 0x1.f25ee8695fbddp-358
+0x1.6e8ae02cbecaap-870, 0x1.91751fd341355p+871
+0x1.478edab2b7784p-412, 0x1.b871254d4887bp+413
+0x1.b80e41c380bccp+602, 0x1.47f1be3c7f433p-601
+0x1.a4564494887fap-1019, 0x1.5ba9bb6b77805p+1020
+0x1.64788388a8c54p-800, 0x1.9b877c77573abp+801
+0x1.3d0a423c0d372p+912, 0x1.c2f5bdc3f2c8dp-911
+0x1.25b998c44b652p+112, 0x1.da46673bb49adp-111
+0x1.5e22a55c2b972p+819, 0x1.a1dd5aa3d468dp-818
+0x1.d8406108cc5dep-148, 0x1.27bf9ef733a21p+149
+0x1.e490898ddfabap+52, 0x1.1b6f767220545p-51
+0x1.5597c2308c0a4p-221, 0x1.aa683dcf73f5bp+222
+0x1.52089b3ecce6p-509, 0x1.adf764c13319fp+510
+0x1.840390da6760ep-278, 0x1.7bfc6f25989f1p+279
+0x1.a3fe9d7137cc8p+102, 0x1.5c01628ec8337p-101
+0x1.38622608324fap+544, 0x1.c79dd9f7cdb05p-543
+0x1.6e97f76925412p+890, 0x1.91680896dabedp-889
+0x1.8f2f4ebaa15b8p+400, 0x1.70d0b1455ea47p-399
+0x1.8df61e0f29638p+722, 0x1.7209e1f0d69c7p-721
+0x1.d24acd9d3f2a8p-70, 0x1.2db53262c0d57p+71
+0x1.bb3d4679d6094p-65, 0x1.44c2b98629f6bp+66
+0x1.7cc65390c5528p-369, 0x1.8339ac6f3aad7p+370
+0x1.87fcceb918d7cp+316, 0x1.78033146e7283p-315
+0x1.bd28513a63a1ap+526, 0x1.42d7aec59c5e5p-525
+0x1.2b7849e110374p+624, 0x1.d487b61eefc8bp-623
+0x1.2a396c7cfad52p+771, 0x1.d5c69383052adp-770
+0x1.3e3bced5a874ep-906, 0x1.c1c4312a578b1p+907
+0x1.4573aa027b076p-503, 0x1.ba8c55fd84f89p+504
+0x1.de143f4b4db4ap-546, 0x1.21ebc0b4b24b5p+547
+0x1.de9be34c269cep-857, 0x1.21641cb3d9631p+858
+0x1.a0818862b6acap-904, 0x1.5f7e779d49535p+905
+0x1.d30588d04ace8p-519, 0x1.2cfa772fb5317p+520
+0x1.97a6e7b5ed064p-359, 0x1.6859184a12f9bp+360
+0x1.01033582d247ep-354, 0x1.fefcca7d2db81p+355
+0x1.ee596f86489b6p+788, 0x1.11a69079b7649p-787
+0x1.ef006e8b46b7cp-741, 0x1.10ff9174b9483p+742
+0x1.3891ab80760cap-847, 0x1.c76e547f89f35p+848
+0x1.a8aa66017cfb8p+489, 0x1.575599fe83047p-488
+0x1.6b85dc1f6f532p+42, 0x1.947a23e090acdp-41
+0x1.7fd7788772f7cp-816, 0x1.802887788d083p+817
+0x1.0f8a4aabede2p-86, 0x1.f075b554121dfp+87
+0x1.948e046c1ad74p-604, 0x1.6b71fb93e528bp+605
+0x1.889200a8bbdcap-667, 0x1.776dff5744235p+668
+0x1.8401982cf3e86p-94, 0x1.7bfe67d30c179p+95
+0x1.7e086a351da06p-319, 0x1.81f795cae25f9p+320
+0x1.c3db8abbc825p+347, 0x1.3c24754437dafp-346
+0x1.a111714e0ae3ep+742, 0x1.5eee8eb1f51c1p-741
+0x1.afc083c4b6d16p+877, 0x1.503f7c3b492e9p-876
+0x1.08177d1a6d54cp-891, 0x1.f7e882e592ab3p+892
+0x1.8e1a5220f8ba2p+722, 0x1.71e5addf0745dp-721
+0x1.bc0d811d2bca4p-597, 0x1.43f27ee2d435bp+598
+0x1.a989d0113efcp+202, 0x1.56762feec103fp-201
+0x1.bb251372cbcc2p+330, 0x1.44daec8d3433dp-329
+0x1.7b9024d984ba6p-510, 0x1.846fdb267b459p+511
+0x1.7d8c4be25595ep+870, 0x1.8273b41daa6a1p-869
+0x1.7fee28f746c1ap+848, 0x1.8011d708b93e5p-847
+0x1.6ebb7cc477de4p-140, 0x1.9144833b8821bp+141
+0x1.a31d73e0e2882p+914, 0x1.5ce28c1f1d77dp-913
+0x1.bd05d319933cp-20, 0x1.42fa2ce66cc3fp+21
+0x1.1a52c17eab31cp-192, 0x1.e5ad3e8154ce3p+193
+0x1.8103ca2b37494p+349, 0x1.7efc35d4c8b6bp-348
+0x1.ef1c0afc8042cp+567, 0x1.10e3f5037fbd3p-566
+0x1.3399a25ebee68p-165, 0x1.cc665da141197p+166
+0x1.558b5cda7e68ep-944, 0x1.aa74a32581971p+945
+0x1.077aefff53e24p+1018, 0x1.f8851000ac1dbp-1017
+0x1.5bece29fe738ep-318, 0x1.a4131d6018c71p+319
+0x1.37b6e4815a15ap+324, 0x1.c8491b7ea5ea5p-323
+0x1.b2981aba62118p-374, 0x1.4d67e5459dee7p+375
+0x1.d44017ab232cp+359, 0x1.2bbfe854dcd3fp-358
+0x1.f67ebcefedd08p-792, 0x1.09814310122f7p+793
+0x1.c712bc931f852p-354, 0x1.38ed436ce07adp+355
+0x1.13b4a110d9de2p+110, 0x1.ec4b5eef2621dp-109
+0x1.be9ac5dcdd466p-124, 0x1.41653a2322b99p+125
+0x1.f22032611555ap+32, 0x1.0ddfcd9eeaaa5p-31
+0x1.e2e49a9b597d6p-705, 0x1.1d1b6564a6829p+706
+0x1.8f681007629bap-215, 0x1.7097eff89d645p+216
+0x1.64b341a08d932p-836, 0x1.9b4cbe5f726cdp+837
+0x1.5b1067f1d472ep+650, 0x1.a4ef980e2b8d1p-649
+0x1.3a52d246bac8ap-438, 0x1.c5ad2db945375p+439
+0x1.a5b55dbe00da4p-167, 0x1.5a4aa241ff25bp+168
+0x1.1d414721bb34cp+250, 0x1.e2beb8de44cb3p-249
+0x1.5888a01cdac28p+247, 0x1.a7775fe3253d7p-246
+0x1.b8f8382f08f34p-324, 0x1.4707c7d0f70cbp+325
+0x1.01d9965aa506p-875, 0x1.fe2669a55af9fp+876
+0x1.8485a4702c5e6p-271, 0x1.7b7a5b8fd3a19p+272
+0x1.21a266872871cp-415, 0x1.de5d9978d78e3p+416
+0x1.86db99676c17cp+13, 0x1.7924669893e83p-12
+0x1.87ce537a99b14p+353, 0x1.7831ac85664ebp-352
+0x1.728e3fe7a2bf8p+359, 0x1.8d71c0185d407p-358
+0x1.463c594b41432p+216, 0x1.b9c3a6b4bebcdp-215
+0x1.105c389d06f8cp+15, 0x1.efa3c762f9073p-14
+0x1.f9959a0a7526p+469, 0x1.066a65f58ad9fp-468
+0x1.9ad727ee6101ap-333, 0x1.6528d8119efe5p+334
+0x1.cb92a48e9206ap-943, 0x1.346d5b716df95p+944
+0x1.7ff6801843724p+260, 0x1.80097fe7bc8dbp-259
+0x1.045a1266d4528p-697, 0x1.fba5ed992bad7p+698
+0x1.8b7b54eab5fbcp+948, 0x1.7484ab154a043p-947
+0x1.1cfe33fa481bap+340, 0x1.e301cc05b7e45p-339
+0x1.5decaa0818dfep+193, 0x1.a21355f7e7201p-192
+0x1.1af4690faf25ep+984, 0x1.e50b96f050da1p-983
+0x1.50960cbc3eebp+515, 0x1.af69f343c114fp-514
+0x1.b435bdaa22156p-655, 0x1.4bca4255ddea9p+656
+0x1.7d8079e83bddcp-391, 0x1.827f8617c4223p+392
+0x1.7ae8eac6d1c0ap+997, 0x1.851715392e3f5p-996
+0x1.0a74e17ab9d7cp-950, 0x1.f58b1e8546283p+951
+0x1.e2d03d5ee6eeep-200, 0x1.1d2fc2a119111p+201
+0x1.72249e28462ep-659, 0x1.8ddb61d7b9d1fp+660
+0x1.ef915f9ef1202p+85, 0x1.106ea0610edfdp-84
+0x1.75cb2837c5994p-361, 0x1.8a34d7c83a66bp+362
+0x1.9d84e3b6f0c5cp-885, 0x1.627b1c490f3a3p+886
+0x1.7344efb446152p-964, 0x1.8cbb104bb9eadp+965
+0x1.3bf8cb33dd116p-17, 0x1.c40734cc22ee9p+18
+0x1.e4371ba19c394p-903, 0x1.1bc8e45e63c6bp+904
+0x1.50be679958cb4p-705, 0x1.af419866a734bp+706
+0x1.7563d67bee278p+783, 0x1.8a9c298411d87p-782
+0x1.69d5132c3e534p-858, 0x1.962aecd3c1acbp+859
+0x1.2c6d64df3cdf4p+255, 0x1.d3929b20c320bp-254
+0x1.f0ddef4f4d41ap-331, 0x1.0f2210b0b2be5p+332
+0x1.6eba2e1e03d42p+956, 0x1.9145d1e1fc2bdp-955
+0x1.96924a26426bcp+818, 0x1.696db5d9bd943p-817
+0x1.0f09ba34d322ap+865, 0x1.f0f645cb2cdd5p-864
+0x1.46b28e8382ddcp+335, 0x1.b94d717c7d223p-334
+0x1.ca929016fc8aep+687, 0x1.356d6fe903751p-686
+0x1.8878e9ab6b0ap-665, 0x1.7787165494f5fp+666
+0x1.0a6ab99ad5e64p-198, 0x1.f59546652a19bp+199
+0x1.dc65ff8daebeap-774, 0x1.239a007251415p+775
+0x1.38bcae7eba5bep-250, 0x1.c743518145a41p+251
+0x1.25d41c9141b48p+1019, 0x1.da2be36ebe4b7p-1018
+0x1.79f2e8467ba3cp-435, 0x1.860d17b9845c3p+436
+0x1.69b7bbe4c21ap+308, 0x1.9648441b3de5fp-307
+0x1.b7cfc9715382ap+50, 0x1.4830368eac7d5p-49
+0x1.02849f71d7486p-25, 0x1.fd7b608e28b79p+26
+0x1.7b63da56eb8acp-857, 0x1.849c25a914753p+858
+0x1.fe03bc4345766p-635, 0x1.01fc43bcba899p+636
+0x1.0e47e817937d8p+882, 0x1.f1b817e86c827p-881
+0x1.d7c924fc68ba8p-952, 0x1.2836db0397457p+953
+0x1.b47db69eafbf8p+501, 0x1.4b82496150407p-500
+0x1.0965a095fa7b8p+657, 0x1.f69a5f6a05847p-656
+0x1.5969e898c86cp+580, 0x1.a69617673793fp-579
+0x1.08aebc81baae8p-289, 0x1.f751437e45517p+290
+0x1.84e431bccac52p+10, 0x1.7b1bce43353adp-9
+0x1.27244f3f0d874p+386, 0x1.d8dbb0c0f278bp-385
+0x1.890d2b415dceap-668, 0x1.76f2d4bea2315p+669
+0x1.582545f03571ep-579, 0x1.a7daba0fca8e1p+580
+0x1.fe2b46a5482aap-805, 0x1.01d4b95ab7d55p+806
+0x1.0aca8d1cc1ba8p-493, 0x1.f53572e33e457p+494
+0x1.25c03b73ea544p+181, 0x1.da3fc48c15abbp-180
+0x1.5cc7f22962b8cp-468, 0x1.a3380dd69d473p+469
+0x1.995849d2fcf0cp+662, 0x1.66a7b62d030f3p-661
+0x1.2f366d71b4314p-995, 0x1.d0c9928e4bcebp+996
+0x1.1c969b33b2508p+574, 0x1.e36964cc4daf7p-573
+0x1.76d5fe4091bcp+395, 0x1.892a01bf6e43fp-394
+0x1.3c0b15b22e148p+251, 0x1.c3f4ea4dd1eb7p-250
+0x1.5f62221e6b14p-809, 0x1.a09ddde194ebfp+810
+0x1.274c24117122ap-913, 0x1.d8b3dbee8edd5p+914
+0x1.b4e9e436d9f62p+1012, 0x1.4b161bc92609dp-1011
+0x1.da83c951e70dp+692, 0x1.257c36ae18f2fp-691
+0x1.4d71be61aa718p-11, 0x1.b28e419e558e7p+12
+0x1.48147eb36401ap+522, 0x1.b7eb814c9bfe5p-521
+0x1.78b71511fdccp+775, 0x1.8748eaee0233fp-774
+0x1.b52090580481cp+303, 0x1.4adf6fa7fb7e3p-302
+0x1.200c311fa08ecp-158, 0x1.dff3cee05f713p+159
+0x1.2e09487f035bep+284, 0x1.d1f6b780fca41p-283
+0x1.36717e7e53d74p-187, 0x1.c98e8181ac28bp+188
+0x1.0f6b2f08f412ap-129, 0x1.f094d0f70bed5p+130
+0x1.aca80dc920fccp-205, 0x1.5357f236df033p+206
+0x1.541d7a0a56d0ap+229, 0x1.abe285f5a92f5p-228
+0x1.5b10d4ae43976p+458, 0x1.a4ef2b51bc689p-457
+0x1.d834da3721146p+264, 0x1.27cb25c8deeb9p-263
+0x1.cdb8c4307593cp+772, 0x1.32473bcf8a6c3p-771
+0x1.6733700c7fdcep+464, 0x1.98cc8ff380231p-463
+0x1.902ed66694e1ep-893, 0x1.6fd129996b1e1p+894
+0x1.2f4d01023145ep+821, 0x1.d0b2fefdceba1p-820
+0x1.f6d941d039926p+668, 0x1.0926be2fc66d9p-667
+0x1.c33f9101cf514p-113, 0x1.3cc06efe30aebp+114
+0x1.3ba5366da6cf4p-484, 0x1.c45ac9925930bp+485
+0x1.ff274a0ecaa84p-521, 0x1.00d8b5f13557bp+522
+0x1.ee18419119914p-749, 0x1.11e7be6ee66ebp+750
+0x1.c6db71499150ep-210, 0x1.39248eb66eaf1p+211
+0x1.34a64f5590c4cp+656, 0x1.cb59b0aa6f3b3p-655
+0x1.b2d3ce6814eb2p-86, 0x1.4d2c3197eb14dp+87
+0x1.35440441d30a8p+43, 0x1.cabbfbbe2cf57p-42
+0x1.057fc0ce59348p-787, 0x1.fa803f31a6cb7p+788
+0x1.c5ee3e0cb699cp+942, 0x1.3a11c1f349663p-941
+0x1.d2d010e3b2c0ep+113, 0x1.2d2fef1c4d3f1p-112
+0x1.703564edae61ep-370, 0x1.8fca9b12519e1p+371
+0x1.0f1db5f4a5cbap+469, 0x1.f0e24a0b5a345p-468
+0x1.899abf187c21cp-872, 0x1.766540e783de3p+873
+0x1.9c50bf477e66ep+552, 0x1.63af40b881991p-551
+0x1.90db6cee6ca7cp+76, 0x1.6f24931193583p-75
+0x1.b4dfda294d69p+537, 0x1.4b2025d6b296fp-536
+0x1.5dc207376d034p-839, 0x1.a23df8c892fcbp+840
+0x1.56b812fa24feep+334, 0x1.a947ed05db011p-333
+0x1.a7cf8826bbc2cp+425, 0x1.583077d9443d3p-424
+0x1.8c59e9a4767ep-23, 0x1.73a6165b8981fp+24
+0x1.8db5a1cfb971ep+437, 0x1.724a5e30468e1p-436
+0x1.a21c04fb95f86p+706, 0x1.5de3fb046a079p-705
+0x1.9b4104bb72708p+707, 0x1.64befb448d8f7p-706
+0x1.da42fc16f0f5ep-94, 0x1.25bd03e90f0a1p+95
+0x1.b331f8573ec3ap+623, 0x1.4cce07a8c13c5p-622
+0x1.74416d2648a62p+342, 0x1.8bbe92d9b759dp-341
+0x1.ed44d7fa4f746p+578, 0x1.12bb2805b08b9p-577
+0x1.16949133c37ecp-432, 0x1.e96b6ecc3c813p+433
+0x1.183427c04636cp-585, 0x1.e7cbd83fb9c93p+586
+0x1.f9c34cb2633ccp-224, 0x1.063cb34d9cc33p+225
+0x1.835924485d2bep+616, 0x1.7ca6dbb7a2d41p-615
+0x1.b98dcdd8274a2p-334, 0x1.46723227d8b5dp+335
+0x1.4bb868ac7f6bcp+744, 0x1.b447975380943p-743
+0x1.98dd427969eb4p+525, 0x1.6722bd869614bp-524
+0x1.b30684af74f74p-760, 0x1.4cf97b508b08bp+761
+0x1.868c31c70be1p+171, 0x1.7973ce38f41efp-170
+0x1.12cde77bd0ddcp-1021, 0x1.ed3218842f223p+1022
+0x1.a62da7649eec6p-925, 0x1.59d2589b61139p+926
+0x1.0ce094dd0ee42p+251, 0x1.f31f6b22f11bdp-250
+0x1.88d6953e9e47cp+305, 0x1.77296ac161b83p-304
+0x1.e32ca560085a6p+167, 0x1.1cd35a9ff7a59p-166
+0x1.b16f435ded91ap+955, 0x1.4e90bca2126e5p-954
+0x1.be2b7fd0dd31ep-6, 0x1.41d4802f22ce1p+7
+0x1.8dbb88779e032p+93, 0x1.7244778861fcdp-92
+0x1.d0af5e9941392p-166, 0x1.2f50a166bec6dp+167
+0x1.b727e046f0562p+957, 0x1.48d81fb90fa9dp-956
+0x1.21e3a7d14693cp-882, 0x1.de1c582eb96c3p+883
+0x1.9306d2902feep+771, 0x1.6cf92d6fd011fp-770
+0x1.7ec38eef8f97cp+864, 0x1.813c711070683p-863
+0x1.1254a65e90172p-268, 0x1.edab59a16fe8dp+269
+0x1.d5d09e180582ep+676, 0x1.2a2f61e7fa7d1p-675
+0x1.b75fcd2b8411ap+414, 0x1.48a032d47bee5p-413
+0x1.1f726a2dcf61cp+295, 0x1.e08d95d2309e3p-294
+0x1.a53a84b2b243ap-310, 0x1.5ac57b4d4dbc5p+311
+0x1.5ae0b971c37d8p-311, 0x1.a51f468e3c827p+312
+0x1.e0fb438495fe8p+738, 0x1.1f04bc7b6a017p-737
+0x1.02ef021e31f5p-522, 0x1.fd10fde1ce0afp+523
+0x1.f9f443a9c9c1ap-588, 0x1.060bbc56363e5p+589
+0x1.2f88b3f2a9e28p+138, 0x1.d0774c0d561d7p-137
+0x1.ad4736768e2c6p-540, 0x1.52b8c98971d39p+541
+0x1.95ea3f7237f46p-72, 0x1.6a15c08dc80b9p+73
+0x1.f315d638a0e4ep+179, 0x1.0cea29c75f1b1p-178
+0x1.0e17e1db10b22p-164, 0x1.f1e81e24ef4ddp+165
+0x1.c24cf03ce8d82p-182, 0x1.3db30fc31727dp+183
+0x1.0bceee62ffe3cp+618, 0x1.f431119d001c3p-617
+0x1.b75421cbc268cp+638, 0x1.48abde343d973p-637
+0x1.c2ae9b0e0de12p-842, 0x1.3d5164f1f21edp+843
+0x1.fa80b3c842a14p+506, 0x1.057f4c37bd5ebp-505
+0x1.35734e4601bb6p+891, 0x1.ca8cb1b9fe449p-890
+0x1.3851dc4747e86p+2, 0x1.c7ae23b8b8179p-1
+0x1.16e39ed5a9bd8p+74, 0x1.e91c612a56427p-73
+0x1.d0c7be6eeeb5ap-678, 0x1.2f384191114a5p+679
+0x1.e0181d2e49e1ep-860, 0x1.1fe7e2d1b61e1p+861
+0x1.067e3c2f19bfp-192, 0x1.f981c3d0e640fp+193
+0x1.bda6e0011716p+924, 0x1.42591ffee8e9fp-923
+0x1.619e713b49ap+348, 0x1.9e618ec4b65ffp-347
+0x1.d8e4e99100e76p-46, 0x1.271b166eff189p+47
+0x1.0222fcb0a562cp+545, 0x1.fddd034f5a9d3p-544
+0x1.1d4304604656ap+474, 0x1.e2bcfb9fb9a95p-473
+0x1.661800911deacp+822, 0x1.99e7ff6ee2153p-821
+0x1.5a990ea4e6a1p+428, 0x1.a566f15b195efp-427
+0x1.4fe50f4fe3af4p-775, 0x1.b01af0b01c50bp+776
+0x1.923f412cf76eep-74, 0x1.6dc0bed308911p+75
+0x1.7b9009493578p-32, 0x1.846ff6b6ca87fp+33
+0x1.7bcc3b8378a9p-220, 0x1.8433c47c8756fp+221
+0x1.1e4c9d97ec57ap+211, 0x1.e1b3626813a85p-210
+0x1.0cb069b142402p-553, 0x1.f34f964ebdbfdp+554
+0x1.d0e0a89d9c48ep-563, 0x1.2f1f576263b71p+564
+0x1.4c88da7073b18p-744, 0x1.b377258f8c4e7p+745
+0x1.48983c992537ep+496, 0x1.b767c366dac81p-495
+0x1.004d4342b7352p-338, 0x1.ffb2bcbd48cadp+339
+0x1.52e503ec24bc8p-978, 0x1.ad1afc13db437p+979
+0x1.a44da3645e612p+268, 0x1.5bb25c9ba19edp-267
+0x1.19237dd0cf55p+972, 0x1.e6dc822f30aafp-971
+0x1.e74fd63a7b3e2p+222, 0x1.18b029c584c1dp-221
+0x1.7c92db73bfe72p-767, 0x1.836d248c4018dp+768
+0x1.3cab27f85fd3ep-648, 0x1.c354d807a02c1p+649
+0x1.e63bc3fbfe1fp-880, 0x1.19c43c0401e0fp+881
+0x1.1abff76fc5562p-716, 0x1.e54008903aa9dp+717
+0x1.ad1db2a4b10d2p+674, 0x1.52e24d5b4ef2dp-673
+0x1.317b86f723d0cp+1012, 0x1.ce847908dc2f3p-1011
+0x1.14f2255112e9ap+282, 0x1.eb0ddaaeed165p-281
+0x1.881f29a007066p-831, 0x1.77e0d65ff8f99p+832
+0x1.d2924a1bd7982p-803, 0x1.2d6db5e42867dp+804
+0x1.fe8a116d1097ep+365, 0x1.0175ee92ef681p-364
+0x1.be83d9f8f4706p+451, 0x1.417c26070b8f9p-450
+0x1.e0dabcc2319e8p-318, 0x1.1f25433dce617p+319
+0x1.60a4365021834p+205, 0x1.9f5bc9afde7cbp-204
+0x1.ec56606e28aep+156, 0x1.13a99f91d751fp-155
+0x1.fab86c2f73734p-260, 0x1.054793d08c8cbp+261
+0x1.01882afd9bd46p-665, 0x1.fe77d502642b9p+666
+0x1.2c315c1327156p+534, 0x1.d3cea3ecd8ea9p-533
+0x1.f4d37d1517d5p-949, 0x1.0b2c82eae82afp+950
+0x1.d2c55eaaceb8ap+238, 0x1.2d3aa15531475p-237
+0x1.9ccb93a34fb26p+577, 0x1.63346c5cb04d9p-576
+0x1.b95ffc140711ap-571, 0x1.46a003ebf8ee5p+572
+0x1.5b459ba256c98p-455, 0x1.a4ba645da9367p+456
+0x1.27762f0745878p+324, 0x1.d889d0f8ba787p-323
+0x1.d90699a95bffap+586, 0x1.26f96656a4005p-585
+0x1.778dde4f84818p-152, 0x1.887221b07b7e7p+153
+0x1.2adaa095d0a9cp+724, 0x1.d5255f6a2f563p-723
+0x1.f2c76eb0a3bbep-393, 0x1.0d38914f5c441p+394
+0x1.7abfce7545fa6p+715, 0x1.8540318aba059p-714
+0x1.d5d32f9351224p-788, 0x1.2a2cd06caeddbp+789
+0x1.2ee663a4813d6p+207, 0x1.d1199c5b7ec29p-206
+0x1.80a3454f93204p+793, 0x1.7f5cbab06cdfbp-792
+0x1.b73e6a4d05cd6p+921, 0x1.48c195b2fa329p-920
+0x1.eed602d0dff4ep+933, 0x1.1129fd2f200b1p-932
+0x1.5b92203a18058p+995, 0x1.a46ddfc5e7fa7p-994
+0x1.1ed6c94eb61a4p+461, 0x1.e12936b149e5bp-460
+0x1.6189c3f6519b2p-723, 0x1.9e763c09ae64dp+724
+0x1.6d4390d9c468p-517, 0x1.92bc6f263b97fp+518
+0x1.91ff2608f3e98p-38, 0x1.6e00d9f70c167p+39
+0x1.182ce974267e6p+189, 0x1.e7d3168bd9819p-188
+0x1.b61d418a2fbf4p+861, 0x1.49e2be75d040bp-860
+0x1.15b7e6b7cb1a6p+431, 0x1.ea48194834e59p-430
+0x1.787d3fd5a350ep-724, 0x1.8782c02a5caf1p+725
+0x1.bc806de3182cp+261, 0x1.437f921ce7d3fp-260
+0x1.b5aec3b8b9f6cp+234, 0x1.4a513c4746093p-233
+0x1.72f6372b96112p-206, 0x1.8d09c8d469eedp+207
+0x1.8b52392af76b6p+21, 0x1.74adc6d508949p-20
+0x1.4ea1b6f521826p+84, 0x1.b15e490ade7d9p-83
+0x1.08e2f978d48dap-428, 0x1.f71d06872b725p+429
+0x1.e9faa4ad9d77ap+286, 0x1.16055b5262885p-285
+0x1.d9ba34016bd66p+114, 0x1.2645cbfe94299p-113
+0x1.384bd8f0a65e8p+283, 0x1.c7b4270f59a17p-282
+0x1.e5d8d1d71df24p-185, 0x1.1a272e28e20dbp+186
+0x1.c8e2e0bb0f75cp-887, 0x1.371d1f44f08a3p+888
+0x1.f76f3089fde7ap-762, 0x1.0890cf7602185p+763
+0x1.35444490d268ep-462, 0x1.cabbbb6f2d971p+463
+0x1.6a7edffeeaf44p+159, 0x1.95812001150bbp-158
+0x1.677f46e0c50e8p-191, 0x1.9880b91f3af17p+192
+0x1.fe711ae0260f6p-208, 0x1.018ee51fd9f09p+209
+0x1.1bfbb331a400cp-685, 0x1.e4044cce5bff3p+686
+0x1.5864a44a17a6ep-168, 0x1.a79b5bb5e8591p+169
+0x1.85dc8208f74acp+691, 0x1.7a237df708b53p-690
+0x1.ecfed6c03493ap+313, 0x1.1301293fcb6c5p-312
+0x1.634dc7f21d9bp-750, 0x1.9cb2380de264fp+751
+0x1.6cf9d3aff9796p+565, 0x1.93062c5006869p-564
+0x1.4be7dc853bb28p-578, 0x1.b418237ac44d7p+579
+0x1.c517a58cd18cp-598, 0x1.3ae85a732e73fp+599
+0x1.f586520146022p-239, 0x1.0a79adfeb9fddp+240
+0x1.cab1422d63516p+929, 0x1.354ebdd29cae9p-928
+0x1.3cff252cbb68ap-921, 0x1.c300dad344975p+922
+0x1.03dc8ef326756p-77, 0x1.fc23710cd98a9p+78
+0x1.235d3838de8bep+634, 0x1.dca2c7c721741p-633
+0x1.29a1a10c72788p-354, 0x1.d65e5ef38d877p+355
+0x1.71d0bc8439dbap-864, 0x1.8e2f437bc6245p+865
+0x1.3e537ea0a50f8p-943, 0x1.c1ac815f5af07p+944
+0x1.88abb790d74a6p-964, 0x1.7754486f28b59p+965
+0x1.7482b381178c8p-437, 0x1.8b7d4c7ee8737p+438
+0x1.e8ad12d89c988p+135, 0x1.1752ed2763677p-134
+0x1.781e729b3905p-930, 0x1.87e18d64c6fafp+931
+0x1.9b53337e072a2p-163, 0x1.64accc81f8d5dp+164
+0x1.075212de59c42p-310, 0x1.f8aded21a63bdp+311
+0x1.ecd0dcac54aa4p+526, 0x1.132f2353ab55bp-525
+0x1.ae5aafbbc61d8p+226, 0x1.51a5504439e27p-225
+0x1.dd8ba8834f63p-122, 0x1.2274577cb09cfp+123
+0x1.dff282d7fa4cep-139, 0x1.200d7d2805b31p+140
+0x1.c44da19f12882p-665, 0x1.3bb25e60ed77dp+666
+0x1.958c6c1be5862p+594, 0x1.6a7393e41a79dp-593
+0x1.a1b9784598bf4p+439, 0x1.5e4687ba6740bp-438
+0x1.6ad8f528b1e82p-242, 0x1.95270ad74e17dp+243
+0x1.1272876d3f314p-162, 0x1.ed8d7892c0cebp+163
+0x1.260933f43a8bcp-579, 0x1.d9f6cc0bc5743p+580
+0x1.5fecd88f6866ap-362, 0x1.a013277097995p+363
+0x1.40299bc80e8f2p+913, 0x1.bfd66437f170dp-912
+0x1.8ce52b00411d4p+406, 0x1.731ad4ffbee2bp-405
+0x1.94175b24b131cp+530, 0x1.6be8a4db4ece3p-529
+0x1.9f559a173a33ep-666, 0x1.60aa65e8c5cc1p+667
+0x1.bbc9884f372f8p-796, 0x1.443677b0c8d07p+797
+0x1.0d1f1481f504ap-258, 0x1.f2e0eb7e0afb5p+259
+0x1.842bd4757bd0ap-472, 0x1.7bd42b8a842f5p+473
+0x1.209c1b5f28ee6p-17, 0x1.df63e4a0d7119p+18
+0x1.78b4761f3436ap-591, 0x1.874b89e0cbc95p+592
+0x1.1d2d378585a9p-367, 0x1.e2d2c87a7a56fp+368
+0x1.260c75a5a4142p-902, 0x1.d9f38a5a5bebdp+903
+0x1.8ecf3cca8ad1ap+881, 0x1.7130c335752e5p-880
+0x1.1a13da2e06b12p+197, 0x1.e5ec25d1f94edp-196
+0x1.9c31ee457f3b4p-835, 0x1.63ce11ba80c4bp+836
+0x1.a5cb50aba5cc4p-858, 0x1.5a34af545a33bp+859
+0x1.cf035b9491b6p+110, 0x1.30fca46b6e49fp-109
+0x1.edf15e676da9p-104, 0x1.120ea1989256fp+105
+0x1.38b372186fa2ep-381, 0x1.c74c8de7905d1p+382
+0x1.0147b21975058p+673, 0x1.feb84de68afa7p-672
+0x1.8bf82b27884eep-591, 0x1.7407d4d877b11p+592
+0x1.5fa8c4ee5ec68p+888, 0x1.a0573b11a1397p-887
+0x1.6665092c80714p-777, 0x1.999af6d37f8ebp+778
+0x1.44c97fa044d98p-433, 0x1.bb36805fbb267p+434
+0x1.363ba937f8aeep-514, 0x1.c9c456c807511p+515
+0x1.eb136de37ceep-377, 0x1.14ec921c8311fp+378
+0x1.0279b349ac19p+619, 0x1.fd864cb653e6fp-618
+0x1.9a7e46f92c8bcp-9, 0x1.6581b906d3743p+10
+0x1.f0f62ac25165ep+585, 0x1.0f09d53dae9a1p-584
+0x1.22f4069666f72p-784, 0x1.dd0bf9699908dp+785
+0x1.53a877e839fdcp-508, 0x1.ac578817c6023p+509
+0x1.3d7230519faf2p-104, 0x1.c28dcfae6050dp+105
+0x1.cdc136b127ca2p-79, 0x1.323ec94ed835dp+80
+0x1.44848cb871efp+542, 0x1.bb7b73478e10fp-541
+0x1.9b16102cd97bep+34, 0x1.64e9efd326841p-33
+0x1.97c97c86f5a68p-194, 0x1.683683790a597p+195
+0x1.3d0d9dfe24d26p+0, 0x1.c2f26201db2d9p+1
+0x1.48ae45749b72p+284, 0x1.b751ba8b648dfp-283
+0x1.865ba5dbd9948p+447, 0x1.79a45a24266b7p-446
+0x1.313056ce94eacp+956, 0x1.cecfa9316b153p-955
+0x1.c293586587dcp-768, 0x1.3d6ca79a7823fp+769
+0x1.b9b2a7d345f9ep-185, 0x1.464d582cba061p+186
+0x1.44d453c403a5ep+809, 0x1.bb2bac3bfc5a1p-808
+0x1.683a83cb107p+722, 0x1.97c57c34ef8ffp-721
+0x1.a3edff84eb242p-948, 0x1.5c12007b14dbdp+949
+0x1.785ba307dde58p+302, 0x1.87a45cf8221a7p-301
+0x1.f2c15efbc53ccp-570, 0x1.0d3ea1043ac33p+571
+0x1.690b084cf9e24p-294, 0x1.96f4f7b3061dbp+295
+0x1.11f286959bbf2p-942, 0x1.ee0d796a6440dp+943
+0x1.3b79be41ccbeep-369, 0x1.c48641be33411p+370
+0x1.6189ed034b89p-202, 0x1.9e7612fcb476fp+203
+0x1.bb52667eeea62p-573, 0x1.44ad99811159dp+574
+0x1.f7add9c87e766p+436, 0x1.0852263781899p-435
+0x1.3433041246dc8p+129, 0x1.cbccfbedb9237p-128
+0x1.cc955df775d5cp-763, 0x1.336aa2088a2a3p+764
+0x1.c09e06a3b77aep+294, 0x1.3f61f95c48851p-293
+0x1.858043456989cp+630, 0x1.7a7fbcba96763p-629
+0x1.571b6097f39dap+917, 0x1.a8e49f680c625p-916
+0x1.42fae37c42e44p-870, 0x1.bd051c83bd1bbp+871
+0x1.171e0b603b3p+182, 0x1.e8e1f49fc4cffp-181
+0x1.85cb78af42f0cp+159, 0x1.7a348750bd0f3p-158
+0x1.5fdbc27116e8ap+909, 0x1.a0243d8ee9175p-908
+0x1.39cc306a869ep+440, 0x1.c633cf957961fp-439
+0x1.fc53bf728865ap+529, 0x1.03ac408d779a5p-528
+0x1.c635cc5b703a4p-75, 0x1.39ca33a48fc5bp+76
+0x1.3617128b1bbc8p-946, 0x1.c9e8ed74e4437p+947
+0x1.5d822a50fa76ep-774, 0x1.a27dd5af05891p+775
+0x1.4b5947774c9b6p-185, 0x1.b4a6b888b3649p+186
+0x1.dc6a86b1fec2p-813, 0x1.2395794e013dfp+814
+0x1.fb94df8acd52ep-167, 0x1.046b207532ad1p+168
+0x1.0a8ba4d91c8acp+971, 0x1.f5745b26e3753p-970
+0x1.5a1001c17e94ap+808, 0x1.a5effe3e816b5p-807
+0x1.1292d8f5066acp-300, 0x1.ed6d270af9953p+301
+0x1.eec9b18cfba86p-823, 0x1.11364e7304579p+824
+0x1.a04e7badec3d6p+11, 0x1.5fb1845213c29p-10
+0x1.d4ba917bd9ff2p-138, 0x1.2b456e842600dp+139
+0x1.138bc0bad6eeep+606, 0x1.ec743f4529111p-605
+0x1.51f713e528b5p+621, 0x1.ae08ec1ad74afp-620
+0x1.0abd5f8c29cd2p-471, 0x1.f542a073d632dp+472
+0x1.c94dbaccae9a8p+817, 0x1.36b2453351657p-816
+0x1.d1bdc361e6b12p-210, 0x1.2e423c9e194edp+211
+0x1.d5a0b54779ed2p+664, 0x1.2a5f4ab88612dp-663
+0x1.8c8d85c2f1c86p-623, 0x1.73727a3d0e379p+624
+0x1.7549ca196905cp+246, 0x1.8ab635e696fa3p-245
+0x1.1b7ea036e1e42p+936, 0x1.e4815fc91e1bdp-935
+0x1.8dba89523ba48p-252, 0x1.724576adc45b7p+253
+0x1.581d01ee6167p+51, 0x1.a7e2fe119e98fp-50
+0x1.fbbd8652bc944p-574, 0x1.044279ad436bbp+575
+0x1.3a7e82ac745e8p+863, 0x1.c5817d538ba17p-862
+0x1.12a79e393e1d2p+716, 0x1.ed5861c6c1e2dp-715
+0x1.9d374a323c34ap+288, 0x1.62c8b5cdc3cb5p-287
+0x1.4e0e62e509a62p+501, 0x1.b1f19d1af659dp-500
+0x1.3e30fe0d32cb4p-525, 0x1.c1cf01f2cd34bp+526
+0x1.8fdb242f3ab4ap-563, 0x1.7024dbd0c54b5p+564
+0x1.a9831c847f892p-658, 0x1.567ce37b8076dp+659
+0x1.b520dd970e0b4p-389, 0x1.4adf2268f1f4bp+390
+0x1.e2187ac118148p-450, 0x1.1de7853ee7eb7p+451
+0x1.79c1acb1cbeeap-114, 0x1.863e534e34115p+115
+0x1.fd6460c8b0496p-627, 0x1.029b9f374fb69p+628
+0x1.406aeb81d80bcp+370, 0x1.bf95147e27f43p-369
+0x1.1dc182193f8aap+296, 0x1.e23e7de6c0755p-295
+0x1.14e87a7e1e2p+447, 0x1.eb178581e1dffp-446
+0x1.eeb6753559358p-222, 0x1.11498acaa6ca7p+223
+0x1.f11b7d7c156bap-401, 0x1.0ee48283ea945p+402
+0x1.8627b530c88fcp+969, 0x1.79d84acf37703p-968
+0x1.1ac7ebbfedf8ep+310, 0x1.e538144012071p-309
+0x1.3219af60c0eb8p-209, 0x1.cde6509f3f147p+210
+0x1.e90f9dde5ee58p+506, 0x1.16f06221a11a7p-505
+0x1.63cb72c28a79ep-745, 0x1.9c348d3d75861p+746
+0x1.ceb484817cc62p-707, 0x1.314b7b7e8339dp+708
+0x1.7a2979335db0cp+735, 0x1.85d686cca24f3p-734
+0x1.cb96796629062p+242, 0x1.34698699d6f9dp-241
+0x1.d9dfca0444e4p+676, 0x1.262035fbbb1bfp-675
+0x1.814a5d110b272p+180, 0x1.7eb5a2eef4d8dp-179
+0x1.73ae41f7bdb0ap-336, 0x1.8c51be08424f5p+337
+0x1.ea586875d6d5p-845, 0x1.15a7978a292afp+846
+0x1.b54416a12b188p+29, 0x1.4abbe95ed4e77p-28
+0x1.43e93c17a49p+238, 0x1.bc16c3e85b6ffp-237
+0x1.19d9fd6e5993p-26, 0x1.e6260291a66cfp+27
+0x1.ff68a383957eep+573, 0x1.00975c7c6a811p-572
+0x1.25bad29b5bdd6p-922, 0x1.da452d64a4229p+923
+0x1.6eb842c1cep+523, 0x1.9147bd3e31fffp-522
+0x1.1ed0434dd423cp+455, 0x1.e12fbcb22bdc3p-454
+0x1.470c15316cf02p+375, 0x1.b8f3eace930fdp-374
+0x1.8fc57640126c2p-259, 0x1.703a89bfed93dp+260
+0x1.d2dbe2512bf8ap+188, 0x1.2d241daed4075p-187
+0x1.e77c1e4f9f44ap-298, 0x1.1883e1b060bb5p+299
+0x1.892b9b27f08ep+398, 0x1.76d464d80f71fp-397
+0x1.c7db46c12ee12p-1009, 0x1.3824b93ed11edp+1010
+0x1.7fa8cc5773c72p+406, 0x1.805733a88c38dp-405
+0x1.77ca3d8904ae8p-672, 0x1.8835c276fb517p+673
+0x1.340de1b835abp+575, 0x1.cbf21e47ca54fp-574
+0x1.3b725dda3885cp-747, 0x1.c48da225c77a3p+748
+0x1.70b0b5023aacep+573, 0x1.8f4f4afdc5531p-572
+0x1.9ceb36a533efp-806, 0x1.6314c95acc10fp+807
+0x1.04514af858e88p+506, 0x1.fbaeb507a7177p-505
+0x1.ee3f2097e8aecp-326, 0x1.11c0df6817513p+327
+0x1.b3864feb47c9ap-744, 0x1.4c79b014b8365p+745
+0x1.eeeb05956e634p+1007, 0x1.1114fa6a919cbp-1006
+0x1.5b4976d9a6004p+744, 0x1.a4b6892659ffbp-743
+0x1.82cf0c428944ep-237, 0x1.7d30f3bd76bb1p+238
+0x1.757354d79edcap+232, 0x1.8a8cab2861235p-231
+0x1.40d1a28f02adep+825, 0x1.bf2e5d70fd521p-824
+0x1.027353b7b52aap+482, 0x1.fd8cac484ad55p-481
+0x1.049a7557fd23cp-683, 0x1.fb658aa802dc3p+684
+0x1.6ebfa6ba71cep+478, 0x1.914059458e31fp-477
+0x1.6e0cd46c5286ap+420, 0x1.91f32b93ad795p-419
+0x1.b81ce6d6ece58p+220, 0x1.47e31929131a7p-219
+0x1.1b110b0b2ffc4p+820, 0x1.e4eef4f4d003bp-819
+0x1.00ea12e47ebdp+161, 0x1.ff15ed1b8142fp-160
+0x1.6738fd171def6p+354, 0x1.98c702e8e2109p-353
+0x1.d6b359674a1cap+531, 0x1.294ca698b5e35p-530
+0x1.e0f4fa723d8e2p+435, 0x1.1f0b058dc271dp-434
+0x1.c8e8d71c7a1fp+850, 0x1.371728e385e0fp-849
+0x1.8b33e9e037fd4p-4, 0x1.74cc161fc802bp+5
+0x1.121f188426c16p-115, 0x1.ede0e77bd93e9p+116
+0x1.62eb4bb80d6c6p+204, 0x1.9d14b447f2939p-203
+0x1.88d6e5ad83ecep-380, 0x1.77291a527c131p+381
+0x1.38d6f0ada9dap+836, 0x1.c7290f525625fp-835
+0x1.64db382d3236p-553, 0x1.9b24c7d2cdc9fp+554
+0x1.be7a7a8434878p+243, 0x1.4185857bcb787p-242
+0x1.dd88c4616f678p-886, 0x1.22773b9e90987p+887
+0x1.c55db4d5644e2p+21, 0x1.3aa24b2a9bb1dp-20
+0x1.df3c24c9440f4p+825, 0x1.20c3db36bbf0bp-824
+0x1.44d295f8d803ap-601, 0x1.bb2d6a0727fc5p+602
+0x1.0e2bfe36b6ac6p+481, 0x1.f1d401c949539p-480
+0x1.4fa70776a235ap-326, 0x1.b058f8895dca5p+327
+0x1.7fe3c15f5d5d2p-371, 0x1.801c3ea0a2a2dp+372
+0x1.e2ed48552d984p+82, 0x1.1d12b7aad267bp-81
+0x1.5587d80b6cdfcp-553, 0x1.aa7827f493203p+554
+0x1.31c03c5e9fff4p+979, 0x1.ce3fc3a16000bp-978
+0x1.693f5a6f7e17p+906, 0x1.96c0a59081e8fp-905
+0x1.667acf15bbb1cp+695, 0x1.998530ea444e3p-694
+0x1.76cc49de089f8p+539, 0x1.8933b621f7607p-538
+0x1.5f59cbbaa8a06p+750, 0x1.a0a63445575f9p-749
+0x1.1115d857fa094p+559, 0x1.eeea27a805f6bp-558
+0x1.f14f47b83b684p-792, 0x1.0eb0b847c497bp+793
+0x1.6e97a730060e2p-471, 0x1.916858cff9f1dp+472
+0x1.e8da78418125cp+134, 0x1.172587be7eda3p-133
+0x1.20a8fe848caa2p-741, 0x1.df57017b7355dp+742
+0x1.7b10d5566ce78p+392, 0x1.84ef2aa993187p-391
+0x1.191035acbd22cp+470, 0x1.e6efca5342dd3p-469
+0x1.5e3d157d58c06p+498, 0x1.a1c2ea82a73f9p-497
+0x1.b91877e6aef9ep-178, 0x1.46e7881951061p+179
+0x1.94dec61e2b5e4p-325, 0x1.6b2139e1d4a1bp+326
+0x1.a0dba4da09d16p-535, 0x1.5f245b25f62e9p+536
+0x1.e31c4dc13fce6p-944, 0x1.1ce3b23ec0319p+945
+0x1.d563bc881411cp-338, 0x1.2a9c4377ebee3p+339
+0x1.724c85523ec72p+775, 0x1.8db37aadc138dp-774
+0x1.ba722f23f1954p+771, 0x1.458dd0dc0e6abp-770
+0x1.6537810cf4ca4p+715, 0x1.9ac87ef30b35bp-714
+0x1.753b3d9709c06p-72, 0x1.8ac4c268f63f9p+73
+0x1.16b797d1ec07ep-771, 0x1.e948682e13f81p+772
+0x1.f9334c546fd86p-629, 0x1.06ccb3ab90279p+630
+0x1.d46a4764d4626p-262, 0x1.2b95b89b2b9d9p+263
+0x1.ed3216cec780ap+911, 0x1.12cde931387f5p-910
+0x1.ba67882adcccp+813, 0x1.459877d52333fp-812
+0x1.93baba57e30aep-608, 0x1.6c4545a81cf51p+609
+0x1.944655b227a22p-843, 0x1.6bb9aa4dd85ddp+844
+0x1.ea977990af808p+258, 0x1.1568866f507f7p-257
+0x1.5edc457d7ed66p-898, 0x1.a123ba8281299p+899
+0x1.5bcbcdee4677cp+253, 0x1.a4343211b9883p-252
+0x1.14f53ac5a6688p-569, 0x1.eb0ac53a59977p+570
+0x1.e802e277e1acap-239, 0x1.17fd1d881e535p+240
+0x1.141586d750b6cp+202, 0x1.ebea7928af493p-201
+0x1.a6d00740e0a26p-529, 0x1.592ff8bf1f5d9p+530
+0x1.a83cb39a6d9aap-876, 0x1.57c34c6592655p+877
+0x1.46c030afe3566p+246, 0x1.b93fcf501ca99p-245
+0x1.95ad3e41ab7c6p-554, 0x1.6a52c1be54839p+555
+0x1.636fd357fa1e2p-456, 0x1.9c902ca805e1dp+457
+0x1.a885311a105a2p+248, 0x1.577acee5efa5dp-247
+0x1.58b9e47eb7d8p+807, 0x1.a7461b814827fp-806
+0x1.7f71dadbc5ce4p+101, 0x1.808e25243a31bp-100
+0x1.0f99c2a7e65fep-651, 0x1.f0663d5819a01p+652
+0x1.e0ccc1e65ea0cp+761, 0x1.1f333e19a15f3p-760
+0x1.83118b8167f46p-975, 0x1.7cee747e980b9p+976
+0x1.8a35b9ad1296ep-757, 0x1.75ca4652ed691p+758
+0x1.bb04a1dbd1c1cp+613, 0x1.44fb5e242e3e3p-612
+0x1.f78ce52b3d3bap-969, 0x1.08731ad4c2c45p+970
+0x1.572a3cfc9807cp-636, 0x1.a8d5c30367f83p+637
+0x1.f120d6f7248e4p+22, 0x1.0edf2908db71bp-21
+0x1.0643118b5f894p-179, 0x1.f9bcee74a076bp+180
+0x1.9787bcb0472d2p+749, 0x1.6878434fb8d2dp-748
+0x1.865ab19512fbap+449, 0x1.79a54e6aed045p-448
+0x1.8ea9460d78d1p-432, 0x1.7156b9f2872efp+433
+0x1.2dc534e326714p-297, 0x1.d23acb1cd98ebp+298
+0x1.11e85226e11bcp-433, 0x1.ee17add91ee43p+434
+0x1.c0a2171ffd432p-975, 0x1.3f5de8e002bcdp+976
+0x1.36d4becae4d1ap+1013, 0x1.c92b41351b2e5p-1012
+0x1.a69ab29357814p-35, 0x1.59654d6ca87ebp+36
+0x1.e526bdd2c12acp-579, 0x1.1ad9422d3ed53p+580
+0x1.548ea7e17d246p+967, 0x1.ab71581e82db9p-966
+0x1.5be13b32689e2p-947, 0x1.a41ec4cd9761dp+948
+0x1.92855b5425f6cp+892, 0x1.6d7aa4abda093p-891
+0x1.046a55976cc5ep+46, 0x1.fb95aa68933a1p-45
+0x1.55909d37e027cp-1007, 0x1.aa6f62c81fd83p+1008
+0x1.1fc9f85edfb84p+304, 0x1.e03607a12047bp-303
+0x1.5ffcffd3aad3ep-542, 0x1.a003002c552c1p+543
+0x1.f761e949eb60ap-581, 0x1.089e16b6149f5p+582
+0x1.63e9c8f9a29fap+480, 0x1.9c1637065d605p-479
+0x1.686ce13790efep-578, 0x1.97931ec86f101p+579
+0x1.74f5e93296f06p+1012, 0x1.8b0a16cd690f9p-1011
+0x1.785822ed765dp-1020, 0x1.87a7dd1289a2fp+1021
+0x1.fc1bb60fd16e2p+794, 0x1.03e449f02e91dp-793
+0x1.ec01aeb038a8ep+571, 0x1.13fe514fc7571p-570
+0x1.0c8b5ec4a3864p+483, 0x1.f374a13b5c79bp-482
+0x1.4c93069974bf6p+883, 0x1.b36cf9668b409p-882
+0x1.da2d3927cb5eep+487, 0x1.25d2c6d834a11p-486
+0x1.7e3d0d88ee6ccp-664, 0x1.81c2f27711933p+665
+0x1.31ab0670e2cfcp-823, 0x1.ce54f98f1d303p+824
+0x1.ae1f99e76f79ap+177, 0x1.51e0661890865p-176
+0x1.94bf69fb9873ep+352, 0x1.6b409604678c1p-351
+0x1.e955e8c673baep+502, 0x1.16aa17398c451p-501
+0x1.ef8d747328a9cp+682, 0x1.10728b8cd7563p-681
+0x1.1eb1aab64e3a4p+269, 0x1.e14e5549b1c5bp-268
+0x1.85e5d4eee081cp+656, 0x1.7a1a2b111f7e3p-655
+0x1.f9aaf8ae52352p-440, 0x1.06550751adcadp+441
+0x1.7e0853b57f226p-153, 0x1.81f7ac4a80dd9p+154
+0x1.1bfc4d4956e5p+192, 0x1.e403b2b6a91afp-191
+0x1.2f21ed57662f8p-782, 0x1.d0de12a899d07p+783
+0x1.345894a86862p-398, 0x1.cba76b57979dfp+399
+0x1.d8de815d499fcp+552, 0x1.27217ea2b6603p-551
+0x1.2247edd38be0ap+462, 0x1.ddb8122c741f5p-461
+0x1.2996491ad8d3cp-593, 0x1.d669b6e5272c3p+594
+0x1.296f889e6ea22p+559, 0x1.d6907761915ddp-558
+0x1.7836ed0e3514cp-845, 0x1.87c912f1caeb3p+846
+0x1.a70ce1401b1fcp+944, 0x1.58f31ebfe4e03p-943
+0x1.920b9d905637p-29, 0x1.6df4626fa9c8fp+30
+0x1.3d619a701974ap+587, 0x1.c29e658fe68b5p-586
+0x1.1dea12f35d83ep-590, 0x1.e215ed0ca27c1p+591
+0x1.054c079fed784p+180, 0x1.fab3f8601287bp-179
+0x1.5cd1e0456c8a4p+915, 0x1.a32e1fba9375bp-914
+0x1.67a5dbacf9b7p-685, 0x1.985a24530648fp+686
+0x1.0b3605fabdc42p+375, 0x1.f4c9fa05423bdp-374
+0x1.60aafe503dc44p-398, 0x1.9f5501afc23bbp+399
+0x1.9e2eb6b8bbe16p+361, 0x1.61d14947441e9p-360
+0x1.4901309505bfp-591, 0x1.b6fecf6afa40fp+592
+0x1.f31eac119af4p+731, 0x1.0ce153ee650bfp-730
+0x1.f02474530a4d2p-902, 0x1.0fdb8bacf5b2dp+903
+0x1.195e4c9a679f8p+111, 0x1.e6a1b36598607p-110
+0x1.8adaa5eec2726p+318, 0x1.75255a113d8d9p-317
+0x1.e474f8b87c236p+62, 0x1.1b8b074783dc9p-61
+0x1.40af921da21bep-988, 0x1.bf506de25de41p+989
+0x1.980d2c99f0fbcp-801, 0x1.67f2d3660f043p+802
+0x1.fe6bf973896b2p-831, 0x1.0194068c7694dp+832
+0x1.f5f4c911d01a2p+804, 0x1.0a0b36ee2fe5dp-803
+0x1.f02fe923faa72p-815, 0x1.0fd016dc0558dp+816
+0x1.8f3876e355b88p-52, 0x1.70c7891caa477p+53
+0x1.acd801d97bd18p-276, 0x1.5327fe26842e7p+277
+0x1.d405ac0e65b32p+1007, 0x1.2bfa53f19a4cdp-1006
+0x1.8583eca291724p+427, 0x1.7a7c135d6e8dbp-426
+0x1.e1dac7d59fce8p-353, 0x1.1e25382a60317p+354
+0x1.4f58e30c4d0d6p-966, 0x1.b0a71cf3b2f29p+967
+0x1.95a3b16c7b1e4p+0, 0x1.6a5c4e9384e1bp+1
+0x1.c926c814e9a16p+997, 0x1.36d937eb165e9p-996
+0x1.11b9bfd6f6416p+415, 0x1.ee46402909be9p-414
+0x1.6f0e2496a06dep-732, 0x1.90f1db695f921p+733
+0x1.e04583e635e2p-535, 0x1.1fba7c19ca1dfp+536
+0x1.6f2b8e664b618p+620, 0x1.90d47199b49e7p-619
+0x1.1126521763cb8p+991, 0x1.eed9ade89c347p-990
+0x1.bb4d0ca2ac0a4p-566, 0x1.44b2f35d53f5bp+567
+0x1.682ede0dccc16p-11, 0x1.97d121f2333e9p+12
+0x1.a19caa3ddb9cp-140, 0x1.5e6355c22463fp+141
+0x1.dbbceb31ace6ap-955, 0x1.244314ce53195p+956
+0x1.71c9d6e25ff2ep+751, 0x1.8e36291da00d1p-750
+0x1.3e1aa3d502f26p-384, 0x1.c1e55c2afd0d9p+385
+0x1.117fa689f3166p+59, 0x1.ee8059760ce99p-58
+0x1.68c006d3e2e46p-786, 0x1.973ff92c1d1b9p+787
+0x1.03f669a6f15p+674, 0x1.fc0996590eaffp-673
+0x1.a82ff5c05a7b4p+1007, 0x1.57d00a3fa584bp-1006
+0x1.3b4c39b7895a6p+533, 0x1.c4b3c64876a59p-532
+0x1.11d3ee2982dccp+488, 0x1.ee2c11d67d233p-487
+0x1.fefad1fb2746cp+109, 0x1.01052e04d8b93p-108
+0x1.898a50631b2c6p+659, 0x1.7675af9ce4d39p-658
+0x1.6f5bd5e4ce3a6p+86, 0x1.90a42a1b31c59p-85
+0x1.792facb4dfa4ap+296, 0x1.86d0534b205b5p-295
+0x1.91a8ba0bbb218p+375, 0x1.6e5745f444de7p-374
+0x1.5aa01c04b304cp-992, 0x1.a55fe3fb4cfb3p+993
+0x1.92dd6f034c11cp-206, 0x1.6d2290fcb3ee3p+207
+0x1.347243dc97702p+796, 0x1.cb8dbc23688fdp-795
+0x1.fd5237a8998ap-714, 0x1.02adc8576675fp+715
+0x1.23daa85cca06ap+187, 0x1.dc2557a335f95p-186
+0x1.2490109febc66p+945, 0x1.db6fef6014399p-944
+0x1.cfb67df063294p-87, 0x1.3049820f9cd6bp+88
+0x1.14cd5b4540c4p+168, 0x1.eb32a4babf3bfp-167
+0x1.49585bc9d5008p-584, 0x1.b6a7a4362aff7p+585
+0x1.2c6b2376d0214p-367, 0x1.d394dc892fdebp+368
+0x1.17cb8e54acdd8p-807, 0x1.e83471ab53227p+808
+0x1.1aa464b98d252p-387, 0x1.e55b9b4672dadp+388
+0x1.1215d4d04fd78p-1016, 0x1.edea2b2fb0287p+1017
+0x1.6caefed4ebfe4p+171, 0x1.9351012b1401bp-170
+0x1.c9321857c39cp+896, 0x1.36cde7a83c63fp-895
+0x1.4262541f7a0d8p-702, 0x1.bd9dabe085f27p+703
+0x1.9e99e2eea84cep-555, 0x1.61661d1157b31p+556
+0x1.4f60c5bcee39ep+129, 0x1.b09f3a4311c61p-128
+0x1.716bc1055f6f4p-991, 0x1.8e943efaa090bp+992
+0x1.19bd50c4d6b38p-424, 0x1.e642af3b294c7p+425
+0x1.36fe46ba72062p+562, 0x1.c901b9458df9dp-561
+0x1.497a103079eaap+596, 0x1.b685efcf86155p-595
+0x1.b0339e4c4721ap+543, 0x1.4fcc61b3b8de5p-542
+0x1.171202a6b66c6p-553, 0x1.e8edfd5949939p+554
+0x1.5260eab8e21b6p-614, 0x1.ad9f15471de49p+615
+0x1.3818b5c16a26cp-467, 0x1.c7e74a3e95d93p+468
+0x1.d94ee3ffcffep-18, 0x1.26b11c003001fp+19
+0x1.daf574c7c9be8p+198, 0x1.250a8b3836417p-197
+0x1.422b276050c52p+1017, 0x1.bdd4d89faf3adp-1016
+0x1.9daca8030debap+257, 0x1.625357fcf2145p-256
+0x1.9a2c0f134f3c4p+398, 0x1.65d3f0ecb0c3bp-397
+0x1.9974293671756p+286, 0x1.668bd6c98e8a9p-285
+0x1.e2ac6799db622p-316, 0x1.1d539866249ddp+317
+0x1.e3490c7e6e1p-234, 0x1.1cb6f38191effp+235
+0x1.13aca9bc4226ep+693, 0x1.ec535643bdd91p-692
+0x1.317ad32ff652ep+294, 0x1.ce852cd009ad1p-293
+0x1.6c823476bb046p-26, 0x1.937dcb8944fb9p+27
+0x1.6d2645f5b1d98p-724, 0x1.92d9ba0a4e267p+725
+0x1.c2960d1ab5b26p-539, 0x1.3d69f2e54a4d9p+540
+0x1.64ca24e2b60fep-676, 0x1.9b35db1d49f01p+677
+0x1.a899b3153304ap-284, 0x1.57664ceaccfb5p+285
+0x1.1df85f87f0e42p-197, 0x1.e207a0780f1bdp+198
+0x1.25a53b573f1ap+832, 0x1.da5ac4a8c0e5fp-831
+0x1.c271a007732e4p+736, 0x1.3d8e5ff88cd1bp-735
+0x1.58c38024c70ap-253, 0x1.a73c7fdb38f5fp+254
+0x1.4232ebe7c07fp+107, 0x1.bdcd14183f80fp-106
+0x1.ac1d23f92e76ep-334, 0x1.53e2dc06d1891p+335
+0x1.518862281d38ep-874, 0x1.ae779dd7e2c71p+875
+0x1.48e97cd7c6164p+299, 0x1.b716832839e9bp-298
+0x1.2cd46a49dec12p+559, 0x1.d32b95b6213edp-558
+0x1.6022441896c98p+379, 0x1.9fddbbe769367p-378
+0x1.0efb5a81171cap+430, 0x1.f104a57ee8e35p-429
+0x1.7ca24dcd3a6acp-375, 0x1.835db232c5953p+376
+0x1.3ccb3fc179a2ep-482, 0x1.c334c03e865d1p+483
+0x1.55be032d65356p+178, 0x1.aa41fcd29aca9p-177
+0x1.e7e3dc921f68cp+412, 0x1.181c236de0973p-411
+0x1.708eda88b17e6p+925, 0x1.8f7125774e819p-924
+0x1.f0ab3096c698ep+863, 0x1.0f54cf6939671p-862
+0x1.297152cd03ef2p+596, 0x1.d68ead32fc10dp-595
+0x1.b41ccd4c56078p-999, 0x1.4be332b3a9f87p+1000
+0x1.2575f15310692p-16, 0x1.da8a0eacef96dp+17
+0x1.291d61fc12052p-504, 0x1.d6e29e03edfadp+505
+0x1.8beee91ebf9bap+235, 0x1.741116e140645p-234
+0x1.84a7347954a5cp+506, 0x1.7b58cb86ab5a3p-505
+0x1.3fed6451ad92ap-203, 0x1.c0129bae526d5p+204
+0x1.5729191358d7ap+877, 0x1.a8d6e6eca7285p-876
+0x1.48b149d647fbp+688, 0x1.b74eb629b804fp-687
+0x1.b1c369d509866p-843, 0x1.4e3c962af6799p+844
+0x1.eff72c561cf58p+133, 0x1.1008d3a9e30a7p-132
+0x1.d41dd22565c52p+799, 0x1.2be22dda9a3adp-798
+0x1.84e1fc20cdc68p+491, 0x1.7b1e03df32397p-490
+0x1.a5ec088af73d8p+629, 0x1.5a13f77508c27p-628
+0x1.4232a95be5b42p-470, 0x1.bdcd56a41a4bdp+471
+0x1.3759070ed2d42p-217, 0x1.c8a6f8f12d2bdp+218
+0x1.5a0b8102137ep-970, 0x1.a5f47efdec81fp+971
+0x1.a4ed19816ed6ep-974, 0x1.5b12e67e91291p+975
+0x1.e0f4c057895fep-662, 0x1.1f0b3fa876a01p+663
+0x1.f067a90424b12p+805, 0x1.0f9856fbdb4edp-804
+0x1.57ece85cef83cp+1009, 0x1.a81317a3107c3p-1008
+0x1.d91187208ea1ep+268, 0x1.26ee78df715e1p-267
+0x1.5fdbc3f0b8182p+1020, 0x1.a0243c0f47e7dp-1019
+0x1.bcf51c3b0637p+60, 0x1.430ae3c4f9c8fp-59
+0x1.a1243c9af4606p-215, 0x1.5edbc3650b9f9p+216
+0x1.7c8fbf0da6fb2p+715, 0x1.837040f25904dp-714
+0x1.c6ef064b79936p+30, 0x1.3910f9b4866c9p-29
+0x1.f71965f730ea4p-533, 0x1.08e69a08cf15bp+534
+0x1.efedf9e09a08ap-407, 0x1.1012061f65f75p+408
+0x1.8f51eefc12f76p+267, 0x1.70ae1103ed089p-266
+0x1.fd3068cae65e4p+956, 0x1.02cf973519a1bp-955
+0x1.0728872d233e2p+779, 0x1.f8d778d2dcc1dp-778
+0x1.fb585ad562ccep-591, 0x1.04a7a52a9d331p+592
+0x1.f14cc86e4475p-42, 0x1.0eb33791bb8afp+43
+0x1.b0f734999755cp+119, 0x1.4f08cb6668aa3p-118
+0x1.c36c8c7ced5c6p+515, 0x1.3c93738312a39p-514
+0x1.f8aeaf53525eep+738, 0x1.075150acada11p-737
+0x1.0c6a3f03cd42cp+922, 0x1.f395c0fc32bd3p-921
+0x1.bb8af049dde84p+198, 0x1.44750fb62217bp-197
+0x1.a87ecac72dbb4p+527, 0x1.57813538d244bp-526
+0x1.09dcf0b48773cp+428, 0x1.f6230f4b788c3p-427
+0x1.7192676beed88p+277, 0x1.8e6d989411277p-276
+0x1.826e2f493fccap+552, 0x1.7d91d0b6c0335p-551
+0x1.a6a36b5c611e8p+884, 0x1.595c94a39ee17p-883
+0x1.38aa14848462cp-908, 0x1.c755eb7b7b9d3p+909
+0x1.e4397f257d78p+871, 0x1.1bc680da8287fp-870
+0x1.c3d3e648b7f18p-719, 0x1.3c2c19b7480e7p+720
+0x1.028110255d72cp-411, 0x1.fd7eefdaa28d3p+412
+0x1.9c56e1f01884ap-845, 0x1.63a91e0fe77b5p+846
+0x1.3384297ec6bd6p-283, 0x1.cc7bd68139429p+284
+0x1.def3f66452cc8p+521, 0x1.210c099bad337p-520
+0x1.91a32521c3a84p+360, 0x1.6e5cdade3c57bp-359
+0x1.f7b4b8a96caeap-763, 0x1.084b475693515p+764
+0x1.060e4f4bf657cp-979, 0x1.f9f1b0b409a83p+980
+0x1.eaa75576bd0dp+451, 0x1.1558aa8942f2fp-450
+0x1.af0c2497bf3c6p+55, 0x1.50f3db6840c39p-54
+0x1.1bbde8d38c8dap+653, 0x1.e442172c73725p-652
+0x1.8559ddba79ff4p+43, 0x1.7aa622458600bp-42
+0x1.3409eeddad8a8p+832, 0x1.cbf6112252757p-831
+0x1.360b9068edbe2p-416, 0x1.c9f46f971241dp+417
+0x1.0e370dce8a84ep-516, 0x1.f1c8f231757b1p+517
+0x1.7186c4aded88ep-234, 0x1.8e793b5212771p+235
+0x1.dd2cb1dab7bp-419, 0x1.22d34e25484ffp+420
+0x1.65c5b43d1082ap+861, 0x1.9a3a4bc2ef7d5p-860
+0x1.d32e21e5c8f24p+121, 0x1.2cd1de1a370dbp-120
+0x1.237fbb0e58f22p-533, 0x1.dc8044f1a70ddp+534
+0x1.5803b0a5c2a98p-829, 0x1.a7fc4f5a3d567p+830
+0x1.ba7f148b5d73p-702, 0x1.4580eb74a28cfp+703
+0x1.e7ec9f2083cbp-694, 0x1.181360df7c34fp+695
+0x1.2be67268b6086p+202, 0x1.d4198d9749f79p-201
+0x1.9b4a5714bb272p-514, 0x1.64b5a8eb44d8dp+515
+0x1.cff870bfa6a72p+913, 0x1.30078f405958dp-912
+0x1.04671d1464172p+820, 0x1.fb98e2eb9be8dp-819
+0x1.8fe5fb26ced8ep-715, 0x1.701a04d931271p+716
+0x1.caf8e24c3e24cp-372, 0x1.35071db3c1db3p+373
+0x1.da27a0815749ap-721, 0x1.25d85f7ea8b65p+722
+0x1.e5c08a3149dfep+57, 0x1.1a3f75ceb6201p-56
+0x1.edd35cb7be882p+580, 0x1.122ca3484177dp-579
+0x1.02ee0ec53f55cp+236, 0x1.fd11f13ac0aa3p-235
+0x1.72714e703cf32p+133, 0x1.8d8eb18fc30cdp-132
+0x1.702c84f352cap-298, 0x1.8fd37b0cad35fp+299
+0x1.6d4a21b942244p-164, 0x1.92b5de46bddbbp+165
+0x1.9ccec416653dcp-107, 0x1.63313be99ac23p+108
+0x1.8277b65085296p-661, 0x1.7d8849af7ad69p+662
+0x1.bc2b99474cb3ap+384, 0x1.43d466b8b34c5p-383
+0x1.16dbc1c259d5cp-147, 0x1.e9243e3da62a3p+148
+0x1.44021208bbc74p-230, 0x1.bbfdedf74438bp+231
+0x1.e72f6a7698eaap-667, 0x1.18d0958967155p+668
+0x1.f5f3e09ca5f62p+78, 0x1.0a0c1f635a09dp-77
+0x1.ffde5f45243cp-975, 0x1.0021a0badbc3fp+976
+0x1.f220e509d51d4p+209, 0x1.0ddf1af62ae2bp-208
+0x1.31dcfe0d4ce2cp-731, 0x1.ce2301f2b31d3p+732
+0x1.bd34bf9365158p+84, 0x1.42cb406c9aea7p-83
+0x1.ed91635829166p-219, 0x1.126e9ca7d6e99p+220
+0x1.c49fc391f1dap+280, 0x1.3b603c6e0e25fp-279
+0x1.d9fe159287b62p-492, 0x1.2601ea6d7849dp+493
+0x1.309c66c5f5818p+815, 0x1.cf63993a0a7e7p-814
+0x1.39f00ea0b8c76p+36, 0x1.c60ff15f47389p-35
+0x1.89a789a7a644ap+935, 0x1.7658765859bb5p-934
+0x1.b9dad1bedfdp-220, 0x1.46252e41202ffp+221
+0x1.279e13c8f5adp-940, 0x1.d861ec370a52fp+941
+0x1.bb567994169eap+641, 0x1.44a9866be9615p-640
+0x1.6fd34a60d7d56p+260, 0x1.902cb59f282a9p-259
+0x1.b2c73cd0048acp+494, 0x1.4d38c32ffb753p-493
+0x1.cd4216fbf595ap+928, 0x1.32bde9040a6a5p-927
+0x1.683a8dec71f8cp+98, 0x1.97c572138e073p-97
+0x1.3b4cba8621d3cp-692, 0x1.c4b34579de2c3p+693
+0x1.84d2b005a48e6p+183, 0x1.7b2d4ffa5b719p-182
+0x1.ba975e0cd978ap+568, 0x1.4568a1f326875p-567
+0x1.92753bf469a5cp-634, 0x1.6d8ac40b965a3p+635
+0x1.8423910574fbap-487, 0x1.7bdc6efa8b045p+488
+0x1.0138fecc23f44p-915, 0x1.fec70133dc0bbp+916
+0x1.aff64a6ff998p-336, 0x1.5009b5900667fp+337
+0x1.e1e9de4fcbb16p+1022, 0x1.1e1621b0344e9p-1021
+0x1.f3ca3c26842a6p+585, 0x1.0c35c3d97bd59p-584
+0x1.c59abe15e3e98p+413, 0x1.3a6541ea1c167p-412
+0x1.318819b2ce9cep-858, 0x1.ce77e64d31631p+859
+0x1.db645d496cfbap-664, 0x1.249ba2b693045p+665
+0x1.57aad160c91fcp-609, 0x1.a8552e9f36e03p+610
+0x1.5b3547c00ad98p-373, 0x1.a4cab83ff5267p+374
+0x1.93573326d408cp+729, 0x1.6ca8ccd92bf73p-728
+0x1.16ae619abfc98p-673, 0x1.e9519e6540367p+674
+0x1.aa366e4d03218p-320, 0x1.55c991b2fcde7p+321
+0x1.a65bbc15cd69p-541, 0x1.59a443ea3296fp+542
+0x1.94da5c3538d3ep+963, 0x1.6b25a3cac72c1p-962
+0x1.a9a3adc978eb2p-656, 0x1.565c52368714dp+657
+0x1.7199005b5fb82p+540, 0x1.8e66ffa4a047dp-539
+0x1.10685568b5114p-283, 0x1.ef97aa974aeebp+284
+0x1.796e86b44680ep+524, 0x1.8691794bb97f1p-523
+0x1.2cb757130b37cp+582, 0x1.d348a8ecf4c83p-581
+0x1.4a635e4010e96p+485, 0x1.b59ca1bfef169p-484
+0x1.c0750700e8ad4p+75, 0x1.3f8af8ff1752bp-74
+0x1.0fc6a2f3e8a1ep+25, 0x1.f0395d0c175e1p-24
+0x1.53bb26b1d388cp+88, 0x1.ac44d94e2c773p-87
+0x1.634cc32a3d422p-138, 0x1.9cb33cd5c2bddp+139
+0x1.faa73302acc56p+934, 0x1.0558ccfd533a9p-933
+0x1.6baf39212df1p-611, 0x1.9450c6ded20efp+612
+0x1.569e68d179ffap+659, 0x1.a961972e86005p-658
+0x1.be6ee93520f18p-122, 0x1.419116cadf0e7p+123
+0x1.022bd67be28p+244, 0x1.fdd429841d7ffp-243
+0x1.fc2e572c2691p+606, 0x1.03d1a8d3d96efp-605
+0x1.f730b5c52eceep-350, 0x1.08cf4a3ad1311p+351
+0x1.0cf742b4007dcp-568, 0x1.f308bd4bff823p+569
+0x1.37e93079c0266p+709, 0x1.c816cf863fd99p-708
+0x1.f1f92b9c53bd2p-586, 0x1.0e06d463ac42dp+587
+0x1.0bc96f9ca024cp-964, 0x1.f43690635fdb3p+965
+0x1.1a8526c55862ep+464, 0x1.e57ad93aa79d1p-463
+0x1.5b811ad2a6b9ap-390, 0x1.a47ee52d59465p+391
+0x1.51031d8d757a2p+448, 0x1.aefce2728a85dp-447
+0x1.d679f7167d40ap-931, 0x1.298608e982bf5p+932
+0x1.6fbcfb68773b8p+318, 0x1.9043049788c47p-317
+0x1.6c483ec4cd89ap+881, 0x1.93b7c13b32765p-880
+0x1.b001980f97f76p+742, 0x1.4ffe67f068089p-741
+0x1.6091ffdecd1f8p+735, 0x1.9f6e002132e07p-734
+0x1.4278ea229900cp+150, 0x1.bd8715dd66ff3p-149
+0x1.dd605ae4107p+625, 0x1.229fa51bef8ffp-624
+0x1.678757e4d75f6p-933, 0x1.9878a81b28a09p+934
+0x1.bb1e9ac3277ap-293, 0x1.44e1653cd885fp+294
+0x1.be504f1df9d88p-419, 0x1.41afb0e206277p+420
+0x1.89c480c18a0b4p+204, 0x1.763b7f3e75f4bp-203
+0x1.90e8e06b55384p+423, 0x1.6f171f94aac7bp-422
+0x1.693a2ee6ac9f8p-924, 0x1.96c5d11953607p+925
+0x1.fb635b6bbe14ep-867, 0x1.049ca49441eb1p+868
+0x1.73c4bf3e62b96p-400, 0x1.8c3b40c19d469p+401
+0x1.9074a7fe372b6p+883, 0x1.6f8b5801c8d49p-882
+0x1.6093f02046b0ep-760, 0x1.9f6c0fdfb94f1p+761
+0x1.b61456b13861ap+586, 0x1.49eba94ec79e5p-585
+0x1.1ad331b5f963ap-783, 0x1.e52cce4a069c5p+784
+0x1.d1467b83e698ep-286, 0x1.2eb9847c19671p+287
+0x1.137dddb2d6978p+14, 0x1.ec82224d29687p-13
+0x1.a9e11be70e444p-581, 0x1.561ee418f1bbbp+582
+0x1.cb39c57a32398p-938, 0x1.34c63a85cdc67p+939
+0x1.ac5fe861f6d7p+157, 0x1.53a0179e0928fp-156
+0x1.306ca1f6dfcacp-195, 0x1.cf935e0920353p+196
+0x1.7c88c8020c0e4p+353, 0x1.837737fdf3f1bp-352
+0x1.44ad460dbca04p+822, 0x1.bb52b9f2435fbp-821
+0x1.e90244fec4e84p+756, 0x1.16fdbb013b17bp-755
+0x1.c0b3c544934p-835, 0x1.3f4c3abb6cbffp+836
+0x1.0d907fd972146p-462, 0x1.f26f80268deb9p+463
+0x1.ec9d828d13aa6p+517, 0x1.13627d72ec559p-516
+0x1.6326bf1bed9d2p-834, 0x1.9cd940e41262dp+835
+0x1.9d4212ba24fe4p+212, 0x1.62bded45db01bp-211
+0x1.ce84a3bbb79e4p+1022, 0x1.317b5c444861bp-1021
+0x1.24dace6eba432p+319, 0x1.db25319145bcdp-318
+0x1.3fc7522fb956cp+578, 0x1.c038add046a93p-577
+0x1.a96e0d311a68ep-975, 0x1.5691f2cee5971p+976
+## name: close-exponents
+0x1.88c3696801c18p-8, 0x1.773c9697fe3e8p+7
+0x1.7c4e20fb600cp-2, 0x1.83b1df049ff4p+1
+0x1.59a3ed1a02abep-6, 0x1.a65c12e5fd542p+5
+0x1.b5bd3bdbc792p+2, 0x1.4a42c424386ep-3
+0x1.a7d52afd2339ep+5, 0x1.582ad502dcc62p-6
+0x1.9269769d347a2p-8, 0x1.6d968962cb85ep+7
+0x1.67051b1bd3de6p-7, 0x1.98fae4e42c21ap+6
+0x1.0899fbb0afe4p-6, 0x1.f766044f501cp+5
+0x1.cc9c9e86f0a72p+1, 0x1.336361790f58ep-2
+0x1.bd0a8457d03dap-8, 0x1.42f57ba82fc26p+7
+0x1.68d9ab2867184p-4, 0x1.972654d798e7cp+3
+0x1.4de9f3a230a2p-1, 0x1.b2160c5dcf5ep+0
+0x1.6aeeca70bf48cp+8, 0x1.9511358f40b74p-9
+0x1.cd410c8ee8b1ep-9, 0x1.32bef371174e2p+8
+0x1.b856fe8bc1bfep-5, 0x1.47a901743e402p+4
+0x1.c314f844dc778p+2, 0x1.3ceb07bb23888p-3
+0x1.55c7b57c879a8p+4, 0x1.aa384a8378658p-5
+0x1.ae4e43e2fa642p-8, 0x1.51b1bc1d059bep+7
+0x1.46f5875fec0cp-10, 0x1.b90a78a013f4p+9
+0x1.ee7ccb4a139c8p-8, 0x1.118334b5ec638p+7
+0x1.54513920d74c6p+6, 0x1.abaec6df28b3ap-7
+0x1.64525b450e05ap-7, 0x1.9bada4baf1fa6p+6
+0x1.3fa78d0d2dcacp+6, 0x1.c05872f2d2354p-7
+0x1.6ccc8096dbb84p-5, 0x1.93337f692447cp+4
+0x1.269c003b5d2f2p-9, 0x1.d963ffc4a2d0ep+8
+0x1.bc43017826c96p-5, 0x1.43bcfe87d936ap+4
+0x1.dc04d9bfd8bcap-1, 0x1.23fb264027436p+0
+0x1.0f7646942273p+5, 0x1.f089b96bdd8dp-6
+0x1.c5b4322d03bcap+1, 0x1.3a4bcdd2fc436p-2
+0x1.afb433ff7b888p-5, 0x1.504bcc0084778p+4
+0x1.b337d93517868p+0, 0x1.4cc826cae8798p-1
+0x1.83b27e668ececp+6, 0x1.7c4d819971314p-7
+0x1.08435d3f02886p-9, 0x1.f7bca2c0fd77ap+8
+0x1.190be5bd4539ep-8, 0x1.e6f41a42bac62p+7
+0x1.503fa226817p+0, 0x1.afc05dd97e9p-1
+0x1.7d917866e1836p+0, 0x1.826e87991e7cap-1
+0x1.e9a682db8dbcap-1, 0x1.16597d2472436p+0
+0x1.67d330bc7ea8p+7, 0x1.982ccf438158p-8
+0x1.8256d4f4f0522p-5, 0x1.7da92b0b0fadep+4
+0x1.e03350c4a4d88p-1, 0x1.1fccaf3b5b278p+0
+0x1.d4a86557089a8p+4, 0x1.2b579aa8f7658p-5
+0x1.3a4aab93ed6e6p-9, 0x1.c5b5546c1291ap+8
+0x1.90894eace6814p-2, 0x1.6f76b153197ecp+1
+0x1.a544e09bec49p+7, 0x1.5abb1f6413b7p-8
+0x1.ca7453e8bc966p-6, 0x1.358bac174369ap+5
+0x1.5ebbb153587e4p-5, 0x1.a1444eaca781cp+4
+0x1.3a72d14c7d17cp+5, 0x1.c58d2eb382e84p-6
+0x1.d632a76232168p+5, 0x1.29cd589dcde98p-6
+0x1.411c22deede8p-6, 0x1.bee3dd211218p+5
+0x1.765ba47bae24p-9, 0x1.89a45b8451dcp+8
+0x1.a997c96fce09ap+6, 0x1.5668369031f66p-7
+0x1.6bb77ea8d3872p+3, 0x1.944881572c78ep-4
+0x1.b5d73b6134c4cp-5, 0x1.4a28c49ecb3b4p+4
+0x1.22716208fd99p+4, 0x1.dd8e9df70267p-5
+0x1.6b4e52961eb7cp-9, 0x1.94b1ad69e1484p+8
+0x1.e0bffd0f12c3ap-6, 0x1.1f4002f0ed3c6p+5
+0x1.4fdf95771b3f6p-4, 0x1.b0206a88e4c0ap+3
+0x1.43cb520776da6p-2, 0x1.bc34adf88925ap+1
+0x1.ffe492bc50e0ep-6, 0x1.001b6d43af1f2p+5
+0x1.98ea64635575p+4, 0x1.67159b9caa8bp-5
+0x1.9b27c94511e9cp-9, 0x1.64d836baee164p+8
+0x1.7e9dceb4c4264p-5, 0x1.8162314b3bd9cp+4
+0x1.e0c6891a40cfep-5, 0x1.1f3976e5bf302p+4
+0x1.931a3d78c527cp-2, 0x1.6ce5c2873ad84p+1
+0x1.a7ec9221eaa62p-6, 0x1.58136dde1559ep+5
+0x1.c164f83a4a738p+0, 0x1.3e9b07c5b58c8p-1
+0x1.5d724a035ab72p-2, 0x1.a28db5fca548ep+1
+0x1.135180db81308p+6, 0x1.ecae7f247ecf8p-7
+0x1.677ac4eb4778ap-1, 0x1.98853b14b8876p+0
+0x1.b801b808bfc4ap+7, 0x1.47fe47f7403b6p-8
+0x1.de7831a23a00ep-6, 0x1.2187ce5dc5ff2p+5
+0x1.f8a1d5b48aab4p-5, 0x1.075e2a4b7554cp+4
+0x1.6111b8c2ea43ap+3, 0x1.9eee473d15bc6p-4
+0x1.f75926f115c2ep+8, 0x1.08a6d90eea3d2p-9
+0x1.db653622110e6p-2, 0x1.249ac9ddeef1ap+1
+0x1.e20a99124b26p+7, 0x1.1df566edb4dap-8
+0x1.31e20aceb25e8p-4, 0x1.ce1df5314da18p+3
+0x1.9c237d842ed6ep+4, 0x1.63dc827bd1292p-5
+0x1.0cf249485f4ecp-10, 0x1.f30db6b7a0b14p+9
+0x1.17dadc31f09cp-3, 0x1.e82523ce0f64p+2
+0x1.47b9fac08f8a6p-6, 0x1.b846053f7075ap+5
+0x1.b73e8a2268398p+9, 0x1.48c175dd97c68p-10
+0x1.96dbe6f58e35ep+0, 0x1.6924190a71ca2p-1
+0x1.8622459ab32cap+5, 0x1.79ddba654cd36p-6
+0x1.382a5fc77ae36p+4, 0x1.c7d5a038851cap-5
+0x1.aa17e5891dbccp-2, 0x1.55e81a76e2434p+1
+0x1.62340bd222378p+3, 0x1.9dcbf42dddc88p-4
+0x1.8a5c420ea6f38p+7, 0x1.75a3bdf1590c8p-8
+0x1.7e274e25a8754p-3, 0x1.81d8b1da578acp+2
+0x1.51566763090cep+3, 0x1.aea9989cf6f32p-4
+0x1.bc0b121dfb3dp-10, 0x1.43f4ede204c3p+9
+0x1.c5f3c0b7dc8e4p+3, 0x1.3a0c3f482371cp-4
+0x1.5548412916bbep-8, 0x1.aab7bed6e9442p+7
+0x1.32d13c48bef3ap-2, 0x1.cd2ec3b7410c6p+1
+0x1.7b4f9b5096074p-5, 0x1.84b064af69f8cp+4
+0x1.24a033aa0e28ep-5, 0x1.db5fcc55f1d72p+4
+0x1.12a41a06aec42p+5, 0x1.ed5be5f9513bep-6
+0x1.b54b56bcdf546p+1, 0x1.4ab4a94320abap-2
+0x1.6867a47b8fd18p-5, 0x1.97985b84702e8p+4
+0x1.b3d46f015afaep+7, 0x1.4c2b90fea5052p-8
+0x1.4d3aa7f0bc19ep+7, 0x1.b2c5580f43e62p-8
+0x1.9794068aea9e8p+5, 0x1.686bf97515618p-6
+0x1.cd1221c023ab2p-10, 0x1.32edde3fdc54ep+9
+0x1.55ab8dfecde0ap+0, 0x1.aa547201321f6p-1
+0x1.24d69a6e0fafcp-6, 0x1.db296591f0504p+5
+0x1.8289e26806e0ep+5, 0x1.7d761d97f91f2p-6
+0x1.1aa472e4b7548p-8, 0x1.e55b8d1b48ab8p+7
+0x1.d07bcacb55ee6p+0, 0x1.2f843534aa11ap-1
+0x1.afc4b4801e8e4p-3, 0x1.503b4b7fe171cp+2
+0x1.8b01af1a09674p+5, 0x1.74fe50e5f698cp-6
+0x1.3810a86670f6ep+8, 0x1.c7ef57998f092p-9
+0x1.9f23c31f5a5c8p-5, 0x1.60dc3ce0a5a38p+4
+0x1.4ab1c8bde3f8p-3, 0x1.b54e37421c08p+2
+0x1.81dca229a8b1ap+1, 0x1.7e235dd6574e6p-2
+0x1.ff11409b9abf6p-1, 0x1.00eebf646540ap+0
+0x1.e3bc0d9126066p+7, 0x1.1c43f26ed9f9ap-8
+0x1.e3c2ed7f437cep-2, 0x1.1c3d1280bc832p+1
+0x1.e81b41ccf9d7ap-10, 0x1.17e4be3306286p+9
+0x1.3f499aea39e82p+1, 0x1.c0b66515c617ep-2
+0x1.44078df76ba3ep+7, 0x1.bbf87208945c2p-8
+0x1.63f0eff0c1ddcp-2, 0x1.9c0f100f3e224p+1
+0x1.06655b997f5aap+9, 0x1.f99aa46680a56p-10
+0x1.9fe622a9927cep-4, 0x1.6019dd566d832p+3
+0x1.1d0473d243476p-2, 0x1.e2fb8c2dbcb8ap+1
+0x1.6503de082b0ap+7, 0x1.9afc21f7d4f6p-8
+0x1.18e636d738a7p+2, 0x1.e719c928c759p-3
+0x1.3fec947de9168p-7, 0x1.c0136b8216e98p+6
+0x1.3611695a04424p-2, 0x1.c9ee96a5fbbdcp+1
+0x1.0ad7ebd27a0a6p-2, 0x1.f528142d85f5ap+1
+0x1.9b35785a07d7ep+3, 0x1.64ca87a5f8282p-4
+0x1.26e76b731ce72p+3, 0x1.d918948ce318ep-4
+0x1.766d97c3184a2p-8, 0x1.8992683ce7b5ep+7
+0x1.d320b9ff0329p+8, 0x1.2cdf4600fcd7p-9
+0x1.c5f3a0d76f412p+2, 0x1.3a0c5f2890beep-3
+0x1.dcaa0a65640e2p-7, 0x1.2355f59a9bf1ep+6
+0x1.166ff103f41cep-6, 0x1.e9900efc0be32p+5
+0x1.4ce758beef4e6p-1, 0x1.b318a74110b1ap+0
+0x1.d3294fcfc5d22p-2, 0x1.2cd6b0303a2dep+1
+0x1.c5f06c6faa71p-9, 0x1.3a0f9390558fp+8
+0x1.1f2d7f60bc89cp-10, 0x1.e0d2809f43764p+9
+0x1.e5ae6f3fbfafap+0, 0x1.1a5190c040506p-1
+0x1.ac330c529d37ep-10, 0x1.53ccf3ad62c82p+9
+0x1.6452f243a7db4p+3, 0x1.9bad0dbc5824cp-4
+0x1.e76edd56954c4p-5, 0x1.189122a96ab3cp+4
+0x1.9322e0b5620ap+0, 0x1.6cdd1f4a9df6p-1
+0x1.69477b0ed807p+0, 0x1.96b884f127f9p-1
+0x1.9a0038088088ep-9, 0x1.65ffc7f77f772p+8
+0x1.a1ed806861ab4p+7, 0x1.5e127f979e54cp-8
+0x1.31381b7d82d48p+6, 0x1.cec7e4827d2b8p-7
+0x1.b255221cc6444p-6, 0x1.4daadde339bbcp+5
+0x1.7840937af55a8p-4, 0x1.87bf6c850aa58p+3
+0x1.d32751c8bd594p+2, 0x1.2cd8ae3742a6cp-3
+0x1.0fb523487955ep-7, 0x1.f04adcb786aa2p+6
+0x1.bbecf1a18a976p+7, 0x1.44130e5e7568ap-8
+0x1.6730a5e3a6fdp+9, 0x1.98cf5a1c5903p-10
+0x1.1660cbccffef8p+5, 0x1.e99f343300108p-6
+0x1.146b813608346p-4, 0x1.eb947ec9f7cbap+3
+0x1.3502e2b04c6c4p-3, 0x1.cafd1d4fb393cp+2
+0x1.fc8694090522ep+4, 0x1.03796bf6fadd2p-5
+0x1.b6fd425a1a642p-10, 0x1.4902bda5e59bep+9
+0x1.a2df28b558a4ap-7, 0x1.5d20d74aa75b6p+6
+0x1.91c4642a94b9cp+0, 0x1.6e3b9bd56b464p-1
+0x1.85f5699a07f6cp-10, 0x1.7a0a9665f8094p+9
+0x1.ee7fe4d9f0538p-1, 0x1.11801b260fac8p+0
+0x1.2fbfc7b13e4aap+9, 0x1.d040384ec1b56p-10
+0x1.b0b9a556bb80ep+2, 0x1.4f465aa9447f2p-3
+0x1.f197106a78aep-4, 0x1.0e68ef958752p+3
+0x1.e713762839502p+2, 0x1.18ec89d7c6afep-3
+0x1.94a5a1c2c9d1ep+6, 0x1.6b5a5e3d362e2p-7
+0x1.86350a9940358p+1, 0x1.79caf566bfca8p-2
+0x1.a18d7f77879eap-4, 0x1.5e72808878616p+3
+0x1.7c74f3cdc989p-6, 0x1.838b0c323677p+5
+0x1.f7c887d16d0ap-7, 0x1.0837782e92f6p+6
+0x1.d0c0510ca6a2cp+4, 0x1.2f3faef3595d4p-5
+0x1.2ae168f41243ep-10, 0x1.d51e970bedbc2p+9
+0x1.5b75d5ac60834p+2, 0x1.a48a2a539f7ccp-3
+0x1.516060e1033a6p+1, 0x1.ae9f9f1efcc5ap-2
+0x1.f23c33a3f61f8p-2, 0x1.0dc3cc5c09e08p+1
+0x1.09cfdebf5d2cap+9, 0x1.f6302140a2d36p-10
+0x1.5a66b4a90b5fap-7, 0x1.a5994b56f4a06p+6
+0x1.478ba89de6154p+2, 0x1.b874576219eacp-3
+0x1.1a342722d6cd8p+7, 0x1.e5cbd8dd29328p-8
+0x1.4415c69f54d56p-3, 0x1.bbea3960ab2aap+2
+0x1.0cbe9917ef1f8p-3, 0x1.f34166e810e08p+2
+0x1.7027d7cff213cp-10, 0x1.8fd828300dec4p+9
+0x1.c61220f4f4274p+8, 0x1.39eddf0b0bd8cp-9
+0x1.d7ebdaf227894p+3, 0x1.2814250dd876cp-4
+0x1.af91e372df21cp-9, 0x1.506e1c8d20de4p+8
+0x1.cfff6e5a400acp-4, 0x1.300091a5bff54p+3
+0x1.41c1934553d3cp-10, 0x1.be3e6cbaac2c4p+9
+0x1.c29110c4fa77cp+9, 0x1.3d6eef3b05884p-10
+0x1.0524c177962aep+9, 0x1.fadb3e8869d52p-10
+0x1.8e8848f6c342p-1, 0x1.7177b7093cbep+0
+0x1.dc6b9abe62f2ap+0, 0x1.239465419d0d6p-1
+0x1.26cc5dd0e9564p-9, 0x1.d933a22f16a9cp+8
+0x1.c015307e18114p-4, 0x1.3feacf81e7eecp+3
+0x1.99cb9b49055dcp-1, 0x1.663464b6faa24p+0
+0x1.0aa8d8bfbf0a8p+1, 0x1.f557274040f58p-2
+0x1.9e8530f9902b4p-9, 0x1.617acf066fd4cp+8
+0x1.a9f2100cd093ap-9, 0x1.560deff32f6c6p+8
+0x1.6faa73f7b5744p+3, 0x1.90558c084a8bcp-4
+0x1.2c4a72a0701f4p+0, 0x1.d3b58d5f8fe0cp-1
+0x1.601d949aeaffcp-4, 0x1.9fe26b6515004p+3
+0x1.4da4e57ba20d2p-4, 0x1.b25b1a845df2ep+3
+0x1.6cfb93a996b82p-8, 0x1.93046c566947ep+7
+0x1.7014787794166p+6, 0x1.8feb87886be9ap-7
+0x1.a868f39b85bdcp-5, 0x1.57970c647a424p+4
+0x1.16588b8cae6cap+4, 0x1.e9a7747351936p-5
+0x1.30733459b645ap-9, 0x1.cf8ccba649ba6p+8
+0x1.1f5388df58292p+6, 0x1.e0ac7720a7d6ep-7
+0x1.3df4fb57fcf04p-4, 0x1.c20b04a8030fcp+3
+0x1.8b33c0e4b905p+5, 0x1.74cc3f1b46fbp-6
+0x1.14fe80809cdaap+6, 0x1.eb017f7f63256p-7
+0x1.9e243e70f247ep+4, 0x1.61dbc18f0db82p-5
+0x1.ac09d1c6d8f2ap+1, 0x1.53f62e39270d6p-2
+0x1.6b2206de06678p-10, 0x1.94ddf921f9988p+9
+0x1.467fc2b85cb1cp+0, 0x1.b9803d47a34e4p-1
+0x1.cecbbd54b60a6p+6, 0x1.313442ab49f5ap-7
+0x1.e29b508425f8p+5, 0x1.1d64af7bda08p-6
+0x1.e691a5d9f9cd4p-10, 0x1.196e5a260632cp+9
+0x1.2e2d68a13410ep+6, 0x1.d1d2975ecbef2p-7
+0x1.44488bee3bc4cp-10, 0x1.bbb77411c43b4p+9
+0x1.806c78ce52c58p-2, 0x1.7f938731ad3a8p+1
+0x1.389d9e82c3e44p-1, 0x1.c762617d3c1bcp+0
+0x1.81579f20f273cp-3, 0x1.7ea860df0d8c4p+2
+0x1.69e7fdcf9cd12p+8, 0x1.96180230632eep-9
+0x1.62be62d7c86e6p-6, 0x1.9d419d283791ap+5
+0x1.f69756022273p+2, 0x1.0968a9fddd8dp-3
+0x1.14b860e210c8cp+6, 0x1.eb479f1def374p-7
+0x1.0365a13ec8d46p-5, 0x1.fc9a5ec1372bap+4
+0x1.fc0d9e54b4708p+1, 0x1.03f261ab4b8f8p-2
+0x1.e89fc70148f62p+9, 0x1.176038feb709ep-10
+0x1.ada7046f88e8ap-8, 0x1.5258fb9077176p+7
+0x1.0b9afb85e6046p-6, 0x1.f465047a19fbap+5
+0x1.218016027eb5ep+3, 0x1.de7fe9fd814a2p-4
+0x1.42d6190c76a18p-4, 0x1.bd29e6f3895e8p+3
+0x1.1944c353fd7e2p-5, 0x1.e6bb3cac0281ep+4
+0x1.13c8412b777bcp+6, 0x1.ec37bed488844p-7
+0x1.f6140a899323cp-4, 0x1.09ebf5766cdc4p+3
+0x1.2ee206a1e32f2p+6, 0x1.d11df95e1cd0ep-7
+0x1.779d968c42b42p+6, 0x1.88626973bd4bep-7
+0x1.8d4f77f6ff0cap-9, 0x1.72b0880900f36p+8
+0x1.a0310b0499886p+6, 0x1.5fcef4fb6677ap-7
+0x1.3a97d1b6d78dp-1, 0x1.c5682e492873p+0
+0x1.efad9d77e2a54p+0, 0x1.105262881d5acp-1
+0x1.52959dd7bab84p-5, 0x1.ad6a62284547cp+4
+0x1.fca704c1b848cp-6, 0x1.0358fb3e47b74p+5
+0x1.1b0bb009f347p-1, 0x1.e4f44ff60cb9p+0
+0x1.9bdd3aaa31ffep+5, 0x1.6422c555ce002p-6
+0x1.b9c5d1a5ba60cp+2, 0x1.463a2e5a459f4p-3
+0x1.4e7513fb710fap-10, 0x1.b18aec048ef06p+9
+0x1.096aa804b25fp-7, 0x1.f69557fb4da1p+6
+0x1.39f86723e389p+4, 0x1.c60798dc1c77p-5
+0x1.adefa3445463ep-9, 0x1.52105cbbab9c2p+8
+0x1.3f8fb077bb92p+7, 0x1.c0704f88446ep-8
+0x1.fefc7a3b01c5ap+9, 0x1.010385c4fe3a6p-10
+0x1.38490320708eap+9, 0x1.c7b6fcdf8f716p-10
+0x1.7f32db1ff0e16p-8, 0x1.80cd24e00f1eap+7
+0x1.f1fb46743756ap+5, 0x1.0e04b98bc8a96p-6
+0x1.13c3919962df4p+1, 0x1.ec3c6e669d20cp-2
+0x1.f8f780e1261bp+3, 0x1.07087f1ed9e5p-4
+0x1.5796d861f8252p-5, 0x1.a869279e07daep+4
+0x1.35289343a7144p+6, 0x1.cad76cbc58ebcp-7
+0x1.ad5785ac9ff6ep+2, 0x1.52a87a5360092p-3
+0x1.2f6963f819fc2p-9, 0x1.d0969c07e603ep+8
+0x1.9b5448ff78b04p+1, 0x1.64abb700874fcp-2
+0x1.f78bf7fe88d64p-6, 0x1.087408017729cp+5
+0x1.62ca69762709ep-1, 0x1.9d359689d8f62p+0
+0x1.ec17d600df98p+2, 0x1.13e829ff2068p-3
+0x1.edb84a7d623e2p-4, 0x1.1247b5829dc1ep+3
+0x1.b04c7324eb57cp+4, 0x1.4fb38cdb14a84p-5
+0x1.f5ebb0ce815d4p-7, 0x1.0a144f317ea2cp+6
+0x1.588ce66f1eb8cp-10, 0x1.a7731990e1474p+9
+0x1.90e92ab501b3ap-9, 0x1.6f16d54afe4c6p+8
+0x1.cfdfa20c349a8p+8, 0x1.30205df3cb658p-9
+0x1.4edb4d14bd652p-8, 0x1.b124b2eb429aep+7
+0x1.2e49612524888p-2, 0x1.d1b69edadb778p+1
+0x1.4c6613b0bd7d2p+4, 0x1.b399ec4f4282ep-5
+0x1.fc797a45274e6p+3, 0x1.038685bad8b1ap-4
+0x1.8a3f77d3c74p+0, 0x1.75c0882c38cp-1
+0x1.1f2d9a38a4a2ep-6, 0x1.e0d265c75b5d2p+5
+0x1.076295142a23p-10, 0x1.f89d6aebd5ddp+9
+0x1.f5de086f5eb84p-3, 0x1.0a21f790a147cp+2
+0x1.df36753df3e26p+2, 0x1.20c98ac20c1dap-3
+0x1.2dc7ad5c1b33ep+9, 0x1.d23852a3e4cc2p-10
+0x1.e7392360c427p-7, 0x1.18c6dc9f3bd9p+6
+0x1.371d544812d9cp-3, 0x1.c8e2abb7ed264p+2
+0x1.30ffb1aa2747ap-6, 0x1.cf004e55d8b86p+5
+0x1.11b46fc0f3ea8p-5, 0x1.ee4b903f0c158p+4
+0x1.d6b21f10da14p-5, 0x1.294de0ef25ecp+4
+0x1.3157cea0f440cp+9, 0x1.cea8315f0bbf4p-10
+0x1.05cfa9165cd4cp-9, 0x1.fa3056e9a32b4p+8
+0x1.40e20683bcf9ap+1, 0x1.bf1df97c43066p-2
+0x1.689b3d2ee7b8cp+2, 0x1.9764c2d118474p-3
+0x1.412da4107d12cp+3, 0x1.bed25bef82ed4p-4
+0x1.aefd1a239078ep-6, 0x1.5102e5dc6f872p+5
+0x1.db21529de653ap-3, 0x1.24dead6219ac6p+2
+0x1.2ae79f6ecf29ep+2, 0x1.d518609130d62p-3
+0x1.1b40debf8313cp+4, 0x1.e4bf21407cec4p-5
+0x1.79a5b38dd5582p+3, 0x1.865a4c722aa7ep-4
+0x1.42e34544b3e32p+6, 0x1.bd1cbabb4c1cep-7
+0x1.0fb05f944fe96p+0, 0x1.f04fa06bb016ap-1
+0x1.619628280a23ep-5, 0x1.9e69d7d7f5dc2p+4
+0x1.b83bcf5b6b7fp+3, 0x1.47c430a49481p-4
+0x1.7214d4ba8a6cp+6, 0x1.8deb2b457594p-7
+0x1.4bed1dfc6ccacp+1, 0x1.b412e20393354p-2
+0x1.b823dcf696612p-3, 0x1.47dc2309699eep+2
+0x1.633fda3ac6f9ep-1, 0x1.9cc025c539062p+0
+0x1.9b0593905d9c2p-9, 0x1.64fa6c6fa263ep+8
+0x1.2f53e00272efap-6, 0x1.d0ac1ffd8d106p+5
+0x1.aa4c4ff39886cp+0, 0x1.55b3b00c67794p-1
+0x1.ef8a1181d10c6p+4, 0x1.1075ee7e2ef3ap-5
+0x1.fcafd1efcce02p-9, 0x1.03502e10331fep+8
+0x1.d0ea8df6d8c9p-1, 0x1.2f1572092737p+0
+0x1.36e0088da24f4p-10, 0x1.c91ff7725db0cp+9
+0x1.242dc85369c6cp-6, 0x1.dbd237ac96394p+5
+0x1.c9b6cc348f0bap-6, 0x1.364933cb70f46p+5
+0x1.c8a3faa25c0dap+8, 0x1.375c055da3f26p-9
+0x1.f32e622875968p+4, 0x1.0cd19dd78a698p-5
+0x1.e717dd961e4d4p-10, 0x1.18e82269e1b2cp+9
+0x1.f998a4b1c2c9ap-5, 0x1.06675b4e3d366p+4
+0x1.9e55dacaf7192p-6, 0x1.61aa253508e6ep+5
+0x1.6d6fb187dcd4ep-6, 0x1.92904e78232b2p+5
+0x1.16d6d53def18p-6, 0x1.e9292ac210e8p+5
+0x1.78629d90b037p+2, 0x1.879d626f4fc9p-3
+0x1.35b2ef51d27f2p-6, 0x1.ca4d10ae2d80ep+5
+0x1.687ab4f94ff1cp+6, 0x1.97854b06b00e4p-7
+0x1.2bff9cb9c880ep-1, 0x1.d4006346377f2p+0
+0x1.30864b8d7d55ep-2, 0x1.cf79b47282aa2p+1
+0x1.dc92008376a84p+1, 0x1.236dff7c8957cp-2
+0x1.3d23692af6696p-6, 0x1.c2dc96d50996ap+5
+0x1.71e94d4d871e8p+8, 0x1.8e16b2b278e18p-9
+0x1.4ce6e6a91453p+7, 0x1.b3191956ebadp-8
+0x1.ea6f1585b2f1ep-6, 0x1.1590ea7a4d0e2p+5
+0x1.46d62d27bb972p-6, 0x1.b929d2d84468ep+5
+0x1.88e3d6c57dc88p+4, 0x1.771c293a82378p-5
+0x1.e301e288e6ebcp-6, 0x1.1cfe1d7719144p+5
+0x1.fe330512dbfc8p+9, 0x1.01ccfaed24038p-10
+0x1.68a144afdb5c8p+2, 0x1.975ebb5024a38p-3
+0x1.a7b8c719925dcp-3, 0x1.584738e66da24p+2
+0x1.259925970d9a6p+9, 0x1.da66da68f265ap-10
+0x1.88c516e71e482p-4, 0x1.773ae918e1b7ep+3
+0x1.32e5542da5cfcp-8, 0x1.cd1aabd25a304p+7
+0x1.cb81b85365976p+8, 0x1.347e47ac9a68ap-9
+0x1.3118ece44bd0cp+4, 0x1.cee7131bb42f4p-5
+0x1.132286f36034ap-6, 0x1.ecdd790c9fcb6p+5
+0x1.50d5290ade2bap+4, 0x1.af2ad6f521d46p-5
+0x1.a593407ac9ddcp+8, 0x1.5a6cbf8536224p-9
+0x1.f0477e5e167ep+0, 0x1.0fb881a1e982p-1
+0x1.92c545d02d62cp+3, 0x1.6d3aba2fd29d4p-4
+0x1.4d78cf7359ef2p+3, 0x1.b287308ca610ep-4
+0x1.d60f6da18e2bep+0, 0x1.29f0925e71d42p-1
+0x1.3ab43c506f592p+3, 0x1.c54bc3af90a6ep-4
+0x1.ef54f0384f1fap-9, 0x1.10ab0fc7b0e06p+8
+0x1.223bd204a428ep-3, 0x1.ddc42dfb5bd72p+2
+0x1.3d3956d2bc1e6p+8, 0x1.c2c6a92d43e1ap-9
+0x1.1ffdde87d68a8p-5, 0x1.e002217829758p+4
+0x1.fe2947faec982p-5, 0x1.01d6b8051367ep+4
+0x1.acfc39565fbacp-7, 0x1.5303c6a9a0454p+6
+0x1.49be20bc9670ap-4, 0x1.b641df43698f6p+3
+0x1.5b76b82a61172p+7, 0x1.a48947d59ee8ep-8
+0x1.ac6c879df641cp-1, 0x1.5393786209be4p+0
+0x1.d4ed7d8ea1976p+1, 0x1.2b1282715e68ap-2
+0x1.62d7203db97fp-1, 0x1.9d28dfc24681p+0
+0x1.50f30b73c24c2p+4, 0x1.af0cf48c3db3ep-5
+0x1.073d2441766e6p+3, 0x1.f8c2dbbe8991ap-4
+0x1.4039254fbb1b8p-10, 0x1.bfc6dab044e48p+9
+0x1.ca74bbed8d29cp-8, 0x1.358b441272d64p+7
+0x1.ecc8459eb10a4p+0, 0x1.1337ba614ef5cp-1
+0x1.4ff5fd98449bcp-3, 0x1.b00a0267bb644p+2
+0x1.18e2f50365f6ep-1, 0x1.e71d0afc9a092p+0
+0x1.2341cb412201cp+3, 0x1.dcbe34beddfe4p-4
+0x1.c8a6b49124842p-8, 0x1.37594b6edb7bep+7
+0x1.710303d97739ep+7, 0x1.8efcfc2688c62p-8
+0x1.4c51b1fa2545ap-6, 0x1.b3ae4e05daba6p+5
+0x1.526734382ca2p-3, 0x1.ad98cbc7d35ep+2
+0x1.bf9b4adfb8ebp-4, 0x1.4064b5204715p+3
+0x1.fdd16ac4c6926p+2, 0x1.022e953b396dap-3
+0x1.88660ff129708p-4, 0x1.7799f00ed68f8p+3
+0x1.6f4fc70397b9cp-1, 0x1.90b038fc68464p+0
+0x1.74f9eb255fb0cp+5, 0x1.8b0614daa04f4p-6
+0x1.f66a62845ef52p+1, 0x1.09959d7ba10aep-2
+0x1.b244638896b96p+9, 0x1.4dbb9c776946ap-10
+0x1.8782a7022298ap-4, 0x1.787d58fddd676p+3
+0x1.8f39cf1517654p-9, 0x1.70c630eae89acp+8
+0x1.92b29f048bebp+9, 0x1.6d4d60fb7415p-10
+0x1.d7e17b1cde846p+6, 0x1.281e84e3217bap-7
+0x1.0cb33d9a3f29ap-10, 0x1.f34cc265c0d66p+9
+0x1.d585a02ea7918p+7, 0x1.2a7a5fd1586e8p-8
+0x1.477d7a07074bcp+6, 0x1.b88285f8f8b44p-7
+0x1.5cbf2c354cf26p+9, 0x1.a340d3cab30dap-10
+0x1.3a9918dea53c4p+4, 0x1.c566e7215ac3cp-5
+0x1.056303d21c194p+9, 0x1.fa9cfc2de3e6cp-10
+0x1.0b9c91881de9ep-8, 0x1.f4636e77e2162p+7
+0x1.f89dd49df4858p+6, 0x1.07622b620b7a8p-7
+0x1.8a3bf4919839ap-4, 0x1.75c40b6e67c66p+3
+0x1.ef3487e324a5cp-4, 0x1.10cb781cdb5a4p+3
+0x1.e2a1997375f2p+6, 0x1.1d5e668c8a0ep-7
+0x1.0003a67d9fcb8p-7, 0x1.fffc598260348p+6
+0x1.2670721852f1ap-3, 0x1.d98f8de7ad0e6p+2
+0x1.cb9842027dfcep+9, 0x1.3467bdfd82032p-10
+0x1.ea96845f3b788p-3, 0x1.15697ba0c4878p+2
+0x1.397a3f00c58dap-6, 0x1.c685c0ff3a726p+5
+0x1.7383b89b9464ep+3, 0x1.8c7c47646b9b2p-4
+0x1.1567cac670e2p+0, 0x1.ea9835398f1ep-1
+0x1.2b7a1bdcdeca8p-10, 0x1.d485e42321358p+9
+0x1.8172d5071bfdcp+5, 0x1.7e8d2af8e4024p-6
+0x1.f9f3edacff8dcp+6, 0x1.060c125300724p-7
+0x1.4359ec6a43d14p+1, 0x1.bca61395bc2ecp-2
+0x1.59e1a286c585cp-2, 0x1.a61e5d793a7a4p+1
+0x1.a1122564df9cp-2, 0x1.5eedda9b2064p+1
+0x1.2d567002de23ep+8, 0x1.d2a98ffd21dc2p-9
+0x1.29a63f544f3b6p+0, 0x1.d659c0abb0c4ap-1
+0x1.ad73a4c704abap-9, 0x1.528c5b38fb546p+8
+0x1.3b64f2652255ap-1, 0x1.c49b0d9addaa6p+0
+0x1.b1f77d268735p+3, 0x1.4e0882d978cbp-4
+0x1.3f2a54d41e434p-7, 0x1.c0d5ab2be1bccp+6
+0x1.7f6baea59ebdap+1, 0x1.8094515a61426p-2
+0x1.47e7c1a2c4002p+9, 0x1.b8183e5d3bffep-10
+0x1.bf15838bba038p+9, 0x1.40ea7c7445fc8p-10
+0x1.2497419307106p+0, 0x1.db68be6cf8efap-1
+0x1.f59a29f3b9318p-7, 0x1.0a65d60c46ce8p+6
+0x1.ea0d11854b386p-10, 0x1.15f2ee7ab4c7ap+9
+0x1.52e2bd449de6ep+7, 0x1.ad1d42bb62192p-8
+0x1.4e5c7b7e3ed94p+3, 0x1.b1a38481c126cp-4
+0x1.b2bf58f171a0ap+7, 0x1.4d40a70e8e5f6p-8
+0x1.e6bc715f3d1d2p+0, 0x1.19438ea0c2e2ep-1
+0x1.e51ca803691cap+4, 0x1.1ae357fc96e36p-5
+0x1.fa9b2162188c2p-7, 0x1.0564de9de773ep+6
+0x1.362b368a7113ep+1, 0x1.c9d4c9758eec2p-2
+0x1.734113dbe2544p-8, 0x1.8cbeec241dabcp+7
+0x1.0f4dd8b72f836p-6, 0x1.f0b22748d07cap+5
+0x1.ea103f3709188p+5, 0x1.15efc0c8f6e78p-6
+0x1.cac3b11d82d82p+4, 0x1.353c4ee27d27ep-5
+0x1.9bb3153d1821ap-4, 0x1.644ceac2e7de6p+3
+0x1.b3029ec0fb95cp+2, 0x1.4cfd613f046a4p-3
+0x1.8ccc4fb9acdbap+4, 0x1.7333b04653246p-5
+0x1.d77c735bfcf9p+2, 0x1.28838ca40307p-3
+0x1.af9eab014f48p+1, 0x1.506154feb0b8p-2
+0x1.87eb91a67b11cp+7, 0x1.78146e5984ee4p-8
+0x1.fdab0a083810cp-2, 0x1.0254f5f7c7ef4p+1
+0x1.c1c79d4a566aap+8, 0x1.3e3862b5a9956p-9
+0x1.166c1328cebc4p+4, 0x1.e993ecd73143cp-5
+0x1.a4b9bb3a5a4e4p-1, 0x1.5b4644c5a5b1cp+0
+0x1.06f79d4f3995p-8, 0x1.f90862b0c66bp+7
+0x1.946e9ef7a9416p+0, 0x1.6b91610856beap-1
+0x1.c9ae0e1fd6696p+8, 0x1.3651f1e02996ap-9
+0x1.d0f26129d4848p+5, 0x1.2f0d9ed62b7b8p-6
+0x1.95ed0b0bbf202p+7, 0x1.6a12f4f440dfep-8
+0x1.832891136e8e2p-8, 0x1.7cd76eec9171ep+7
+0x1.fe4eb069e3f9ep+7, 0x1.01b14f961c062p-8
+0x1.f1008ddd815a8p+2, 0x1.0eff72227ea58p-3
+0x1.4cbe29f1b72d2p+3, 0x1.b341d60e48d2ep-4
+0x1.28a2569339488p-1, 0x1.d75da96cc6b78p+0
+0x1.42b78827e0636p+0, 0x1.bd4877d81f9cap-1
+0x1.dff1efd1bcff2p-5, 0x1.200e102e4300ep+4
+0x1.b830ba549d136p-6, 0x1.47cf45ab62ecap+5
+0x1.31a98b2bc045ap-3, 0x1.ce5674d43fba6p+2
+0x1.c11d719383654p-6, 0x1.3ee28e6c7c9acp+5
+0x1.3beea3526b74p+9, 0x1.c4115cad948cp-10
+0x1.f355d45d01952p+5, 0x1.0caa2ba2fe6aep-6
+0x1.1650174a0e738p-6, 0x1.e9afe8b5f18c8p+5
+0x1.f540033723f4ap+9, 0x1.0abffcc8dc0b6p-10
+0x1.d569b00e736ccp-10, 0x1.2a964ff18c934p+9
+0x1.2941bf78ab908p-5, 0x1.d6be4087546f8p+4
+0x1.d49a046b5d16cp-2, 0x1.2b65fb94a2e94p+1
+0x1.4ef0822ffa3b6p-4, 0x1.b10f7dd005c4ap+3
+0x1.0e07d67675318p-1, 0x1.f1f829898ace8p+0
+0x1.47af1ec494c9p-9, 0x1.b850e13b6b37p+8
+0x1.917bea3ebbbfap-1, 0x1.6e8415c144406p+0
+0x1.95577bc3d9b88p+8, 0x1.6aa8843c26478p-9
+0x1.18729372228acp+7, 0x1.e78d6c8ddd754p-8
+0x1.e2b783c06bd5ep+2, 0x1.1d487c3f942a2p-3
+0x1.cb365076a9576p-6, 0x1.34c9af8956a8ap+5
+0x1.608869246ac8ap-5, 0x1.9f7796db95376p+4
+0x1.fd135cd8dce32p+2, 0x1.02eca327231cep-3
+0x1.aa1ae293909eap+2, 0x1.55e51d6c6f616p-3
+0x1.dd8b38e78b4aep-7, 0x1.2274c71874b52p+6
+0x1.e82f671dbaecep-4, 0x1.17d098e245132p+3
+0x1.cc5c053a21488p-2, 0x1.33a3fac5deb78p+1
+0x1.c22d6b04025bap-6, 0x1.3dd294fbfda46p+5
+0x1.f9d3408ea8ec8p-8, 0x1.062cbf7157138p+7
+0x1.0de6ad31392cep-1, 0x1.f21952cec6d32p+0
+0x1.69c0b3df06cbap+3, 0x1.963f4c20f9346p-4
+0x1.4983a9c8a2ceep-3, 0x1.b67c56375d312p+2
+0x1.127506f3f3c44p+8, 0x1.ed8af90c0c3bcp-9
+0x1.6f93930addd36p-6, 0x1.906c6cf5222cap+5
+0x1.a59a9e3d1acccp+4, 0x1.5a6561c2e5334p-5
+0x1.10b9959c4ee54p-8, 0x1.ef466a63b11acp+7
+0x1.16ac2cf3e8e66p+3, 0x1.e953d30c1719ap-4
+0x1.9bd7515c29ed4p+7, 0x1.6428aea3d612cp-8
+0x1.6a51ec80188e2p+4, 0x1.95ae137fe771ep-5
+0x1.a9e0ba7a07332p-4, 0x1.561f4585f8ccep+3
+0x1.9d39ffa4d8618p+7, 0x1.62c6005b279e8p-8
+0x1.1cdb6692fa2f4p+2, 0x1.e324996d05d0cp-3
+0x1.a167b914966aap+0, 0x1.5e9846eb69956p-1
+0x1.b2fbfb38e8e86p-5, 0x1.4d0404c71717ap+4
+0x1.b3255249e35bep+7, 0x1.4cdaadb61ca42p-8
+0x1.700040b27394p-9, 0x1.8fffbf4d8c6cp+8
+0x1.ec35556d78592p+1, 0x1.13caaa9287a6ep-2
+0x1.8e73c0a9b6cd6p-8, 0x1.718c3f564932ap+7
+0x1.b6ea2b261fadp+3, 0x1.4915d4d9e053p-4
+0x1.2752c98f5c4c8p+0, 0x1.d8ad3670a3b38p-1
+0x1.d80d7144b9554p-2, 0x1.27f28ebb46aacp+1
+0x1.e34ec234ef802p+4, 0x1.1cb13dcb107fep-5
+0x1.2abb8b1408c7ep+8, 0x1.d54474ebf7382p-9
+0x1.dbd90880f06cep+5, 0x1.2426f77f0f932p-6
+0x1.711d44cd40c2ep+1, 0x1.8ee2bb32bf3d2p-2
+0x1.a4d9dd18a33dep-4, 0x1.5b2622e75cc22p+3
+0x1.c9cc1c27b3fbp+2, 0x1.3633e3d84c05p-3
+0x1.39856b84789a6p+9, 0x1.c67a947b8765ap-10
+0x1.ab97f002f42dp-2, 0x1.54680ffd0bd3p+1
+0x1.3b30f1acf9dbp-6, 0x1.c4cf0e530625p+5
+0x1.80c03f1e7fc06p-5, 0x1.7f3fc0e1803fap+4
+0x1.65e2df89808bap-1, 0x1.9a1d20767f746p+0
+0x1.ef2f1405c75fap+8, 0x1.10d0ebfa38a06p-9
+0x1.71461e0a07bdep+8, 0x1.8eb9e1f5f8422p-9
+0x1.cfcbdc5cbb6cap+5, 0x1.303423a344936p-6
+0x1.9212b19512e16p-8, 0x1.6ded4e6aed1eap+7
+0x1.5ae0324299f28p-5, 0x1.a51fcdbd660d8p+4
+0x1.392c380d28f04p+0, 0x1.c6d3c7f2d70fcp-1
+0x1.f4459b2859eacp-2, 0x1.0bba64d7a6154p+1
+0x1.34f46bf50a5c8p+4, 0x1.cb0b940af5a38p-5
+0x1.5622aa95089b4p+5, 0x1.a9dd556af764cp-6
+0x1.1390bb839e3ecp-2, 0x1.ec6f447c61c14p+1
+0x1.22fcfb2dec4b2p+3, 0x1.dd0304d213b4ep-4
+0x1.2e14590608f8ep-10, 0x1.d1eba6f9f7072p+9
+0x1.f10624f61bbeep+9, 0x1.0ef9db09e4412p-10
+0x1.666af2113cbf6p-4, 0x1.99950deec340ap+3
+0x1.e89a25d7a429cp+8, 0x1.1765da285bd64p-9
+0x1.079e568aeeecp-8, 0x1.f861a9751114p+7
+0x1.c76d01132c14p-1, 0x1.3892feecd3ecp+0
+0x1.2ef5f7f055ce2p+3, 0x1.d10a080faa31ep-4
+0x1.f8696f3bfeef8p+1, 0x1.079690c401108p-2
+0x1.10ece122be524p+5, 0x1.ef131edd41adcp-6
+0x1.9e679bbd60de2p+5, 0x1.619864429f21ep-6
+0x1.1afca9061e51ap-8, 0x1.e50356f9e1ae6p+7
+0x1.35d668d35104p+1, 0x1.ca29972caefcp-2
+0x1.3ab9f851fc3eap+8, 0x1.c54607ae03c16p-9
+0x1.6d0b767565516p+8, 0x1.92f4898a9aaeap-9
+0x1.a4a97f831716cp-4, 0x1.5b56807ce8e94p+3
+0x1.a860cad818dcp+0, 0x1.579f3527e724p-1
+0x1.2d7b9703acd64p-1, 0x1.d28468fc5329cp+0
+0x1.d3548d6ae41d6p+0, 0x1.2cab72951be2ap-1
+0x1.c81e92efd8b46p+4, 0x1.37e16d10274bap-5
+0x1.23b279ff1a414p+9, 0x1.dc4d8600e5becp-10
+0x1.d8b2764b4b35ap-2, 0x1.274d89b4b4ca6p+1
+0x1.5d79000000788p-6, 0x1.a286ffffff878p+5
+0x1.fce01d10c5f34p+2, 0x1.031fe2ef3a0ccp-3
+0x1.55d170e728e9cp-1, 0x1.aa2e8f18d7164p+0
+0x1.3024874df036ap-4, 0x1.cfdb78b20fc96p+3
+0x1.47f5e9839bd9ap+9, 0x1.b80a167c64266p-10
+0x1.6b766ae2d428p-7, 0x1.9489951d2bd8p+6
+0x1.34a562a2ffde2p+4, 0x1.cb5a9d5d0021ep-5
+0x1.1236d5607f2dep-2, 0x1.edc92a9f80d22p+1
+0x1.7657746b4ebcp-10, 0x1.89a88b94b144p+9
+0x1.47c52dfa49872p+5, 0x1.b83ad205b678ep-6
+0x1.b3a5e3d3dddb8p+9, 0x1.4c5a1c2c22248p-10
+0x1.f1a2ddfe039f4p-5, 0x1.0e5d2201fc60cp+4
+0x1.9b1b1e3bd7f1cp+4, 0x1.64e4e1c4280e4p-5
+0x1.80af152aafd1p-6, 0x1.7f50ead5502fp+5
+0x1.f46e1d2761aa6p-3, 0x1.0b91e2d89e55ap+2
+0x1.dd2645488ae8ap-3, 0x1.22d9bab775176p+2
+0x1.fc25c30e89ef8p-3, 0x1.03da3cf176108p+2
+0x1.84a46b7ce5966p-9, 0x1.7b5b94831a69ap+8
+0x1.a439a5d7118b2p+3, 0x1.5bc65a28ee74ep-4
+0x1.234170a85f4e6p-3, 0x1.dcbe8f57a0b1ap+2
+0x1.233a46e8907c8p-10, 0x1.dcc5b9176f838p+9
+0x1.61d1cb6be35bcp-5, 0x1.9e2e34941ca44p+4
+0x1.ea2e4eec68662p-2, 0x1.15d1b1139799ep+1
+0x1.3af734f310d4p+4, 0x1.c508cb0cef2cp-5
+0x1.f93ee7a77fdc2p+8, 0x1.06c118588023ep-9
+0x1.92be65e243932p-8, 0x1.6d419a1dbc6cep+7
+0x1.21b343563638ap-6, 0x1.de4cbca9c9c76p+5
+0x1.479450e3082b8p+1, 0x1.b86baf1cf7d48p-2
+0x1.60ded1e647f2p-10, 0x1.9f212e19b80ep+9
+0x1.a4977ecf9f10ap+3, 0x1.5b68813060ef6p-4
+0x1.77de4903ac16cp-6, 0x1.8821b6fc53e94p+5
+0x1.36e1c1cb1753p+7, 0x1.c91e3e34e8adp-8
+0x1.f27e390185ae8p+4, 0x1.0d81c6fe7a518p-5
+0x1.89cc955ef6556p-10, 0x1.76336aa109aaap+9
+0x1.cfd045782225cp-8, 0x1.302fba87ddda4p+7
+0x1.21fc9c650c4eap+2, 0x1.de03639af3b16p-3
+0x1.c44635d27f8bap+6, 0x1.3bb9ca2d80746p-7
+0x1.a7962b0d8f38cp-2, 0x1.5869d4f270c74p+1
+0x1.c6db408cdc71p-1, 0x1.3924bf73238fp+0
+0x1.e583faf83b9b2p-2, 0x1.1a7c0507c464ep+1
+0x1.c6dc1c54d614ep+8, 0x1.3923e3ab29eb2p-9
+0x1.3258b6fc93d9cp+8, 0x1.cda749036c264p-9
+0x1.9e9fd84474e4cp+4, 0x1.616027bb8b1b4p-5
+0x1.ec6f158231314p+9, 0x1.1390ea7dcececp-10
+0x1.c07212d69032ep+3, 0x1.3f8ded296fcd2p-4
+0x1.15f4ec818999ap+5, 0x1.ea0b137e76666p-6
+0x1.2fdf8840bd96ep+4, 0x1.d02077bf42692p-5
+0x1.b51f5831af7e6p-6, 0x1.4ae0a7ce5081ap+5
+0x1.cfb9902a104f2p-3, 0x1.30466fd5efb0ep+2
+0x1.94dd368432aaep+5, 0x1.6b22c97bcd552p-6
+0x1.919ab936aadcp-2, 0x1.6e6546c95524p+1
+0x1.4092a4467183ep-6, 0x1.bf6d5bb98e7c2p+5
+0x1.2a7fe2c7de02ep-9, 0x1.d5801d3821fd2p+8
+0x1.f7695f4d89294p-7, 0x1.0896a0b276d6cp+6
+0x1.e5506c55ba75p+5, 0x1.1aaf93aa458bp-6
+0x1.10d189aea5bf2p-3, 0x1.ef2e76515a40ep+2
+0x1.d0591594ec6c4p-4, 0x1.2fa6ea6b1393cp+3
+0x1.b06e1f46e008ep+6, 0x1.4f91e0b91ff72p-7
+0x1.5ed42339e2d0ap+5, 0x1.a12bdcc61d2f6p-6
+0x1.b80556230a8bp-5, 0x1.47faa9dcf575p+4
+0x1.e3b074001d324p-3, 0x1.1c4f8bffe2cdcp+2
+0x1.ba740020a547ep+4, 0x1.458bffdf5ab82p-5
+0x1.3c5fdd50d8b2ep-8, 0x1.c3a022af274d2p+7
+0x1.ccec316bbac2p-1, 0x1.3313ce94453ep+0
+0x1.86f9f36ac2274p-5, 0x1.79060c953dd8cp+4
+0x1.85f3201398bfap-1, 0x1.7a0cdfec67406p+0
+0x1.b039e228e06cp-3, 0x1.4fc61dd71f94p+2
+0x1.c47e6ba38ca24p+9, 0x1.3b81945c735dcp-10
+0x1.1330b081b9ca2p-7, 0x1.eccf4f7e4635ep+6
+0x1.41b898cac40f4p+0, 0x1.be4767353bf0cp-1
+0x1.96f825f06037cp-10, 0x1.6907da0f9fc84p+9
+0x1.3da868d8a92f4p+0, 0x1.c257972756d0cp-1
+0x1.688d24679f7b4p-7, 0x1.9772db986084cp+6
+0x1.45d062e507008p+0, 0x1.ba2f9d1af8ff8p-1
+0x1.fe960816e1c5ep+1, 0x1.0169f7e91e3a2p-2
+0x1.58efcced87062p-1, 0x1.a710331278f9ep+0
+0x1.6e7ab9f7b731ap+8, 0x1.9185460848ce6p-9
+0x1.648d02e04ca5ap+3, 0x1.9b72fd1fb35a6p-4
+0x1.3bd662135fc6cp-10, 0x1.c4299deca0394p+9
+0x1.f907605224e32p+1, 0x1.06f89faddb1cep-2
+0x1.796b50bbf6866p-8, 0x1.8694af440979ap+7
+0x1.bfb0f56bd434ap-10, 0x1.404f0a942bcb6p+9
+0x1.10b6663cdba24p-2, 0x1.ef4999c3245dcp+1
+0x1.75a7db8cf1b9ap+4, 0x1.8a5824730e466p-5
+0x1.a0064b3daeb5ap+9, 0x1.5ff9b4c2514a6p-10
+0x1.9fde420a88e16p-2, 0x1.6021bdf5771eap+1
+0x1.5a83a57a5f504p-3, 0x1.a57c5a85a0afcp+2
+0x1.4176d836944e8p-7, 0x1.be8927c96bb18p+6
+0x1.7e1e7d9c9065ep+2, 0x1.81e182636f9a2p-3
+0x1.b93b2a185bde8p-1, 0x1.46c4d5e7a4218p+0
+0x1.3ed180fde2d9ap+7, 0x1.c12e7f021d266p-8
+0x1.8b23116a4cbdp-9, 0x1.74dcee95b343p+8
+0x1.ee36546d94a86p+4, 0x1.11c9ab926b57ap-5
+0x1.744f8ec70e064p+0, 0x1.8bb07138f1f9cp-1
+0x1.14eb27de79742p-2, 0x1.eb14d821868bep+1
+0x1.b070b44cb5fe4p-8, 0x1.4f8f4bb34a01cp+7
+0x1.94088411487dp+0, 0x1.6bf77beeb783p-1
+0x1.5f9d33b83b7e6p+5, 0x1.a062cc47c481ap-6
+0x1.fb91fdcb2ae3ap+5, 0x1.046e0234d51c6p-6
+0x1.666adf9ca9ab6p+7, 0x1.999520635654ap-8
+0x1.fe12117da3d1p-3, 0x1.01edee825c2fp+2
+0x1.86f0d90fc515ap+4, 0x1.790f26f03aea6p-5
+0x1.0410a207c2348p+2, 0x1.fbef5df83dcb8p-3
+0x1.5f43e0607e872p-5, 0x1.a0bc1f9f8178ep+4
+0x1.1a2fceceb5134p-10, 0x1.e5d031314aeccp+9
+0x1.2ac9db38d69a8p+4, 0x1.d53624c729658p-5
+0x1.dd219763f8082p-9, 0x1.22de689c07f7ep+8
+0x1.b9975df555896p-10, 0x1.4668a20aaa76ap+9
+0x1.b4ca6c47a3dd6p-8, 0x1.4b3593b85c22ap+7
+0x1.b1f95cfaa41ccp-3, 0x1.4e06a3055be34p+2
+0x1.b91a22610ee3p-1, 0x1.46e5dd9ef11dp+0
+0x1.e6761f6be451p-10, 0x1.1989e0941bafp+9
+0x1.06c24d0b87184p+7, 0x1.f93db2f478e7cp-8
+0x1.1ba5d40c0532p-1, 0x1.e45a2bf3facep+0
+0x1.6994433dfbfa4p+4, 0x1.966bbcc20405cp-5
+0x1.0fcdcc8c893d6p-10, 0x1.f032337376c2ap+9
+0x1.a0de2b628a6a8p+9, 0x1.5f21d49d75958p-10
+0x1.05010b904083cp-2, 0x1.fafef46fbf7c4p+1
+0x1.b48e030b33e6cp-10, 0x1.4b71fcf4cc194p+9
+0x1.888f2238c415cp+9, 0x1.7770ddc73bea4p-10
+0x1.422f236aea284p-8, 0x1.bdd0dc9515d7cp+7
+0x1.a3855f14554f2p-9, 0x1.5c7aa0ebaab0ep+8
+0x1.214eb2b38135cp-1, 0x1.deb14d4c7eca4p+0
+0x1.b3bf0ff4a66f8p+8, 0x1.4c40f00b59908p-9
+0x1.93b7be2691dcp+5, 0x1.6c4841d96e24p-6
+0x1.8ae5c40226cfap+5, 0x1.751a3bfdd9306p-6
+0x1.1d0203b5937ap-10, 0x1.e2fdfc4a6c86p+9
+0x1.13b8c9bf4947p+6, 0x1.ec473640b6b9p-7
+0x1.80d715fa80a02p-10, 0x1.7f28ea057f5fep+9
+0x1.d463f9ed9fff4p+4, 0x1.2b9c06126000cp-5
+0x1.6cfe3112c1b2ap-7, 0x1.9301ceed3e4d6p+6
+0x1.8772f8386ececp+9, 0x1.788d07c791314p-10
+0x1.7eaf5193d50dp+3, 0x1.8150ae6c2af3p-4
+0x1.17776a7346f62p-9, 0x1.e888958cb909ep+8
+0x1.0713835e96f8ap-5, 0x1.f8ec7ca169076p+4
+0x1.da2c5cbec42dp-5, 0x1.25d3a3413bd3p+4
+0x1.78b1b0f3c51d6p-4, 0x1.874e4f0c3ae2ap+3
+0x1.0c1e312f126e8p-7, 0x1.f3e1ced0ed918p+6
+0x1.920e401657232p-10, 0x1.6df1bfe9a8dcep+9
+0x1.e99108f6f1182p-4, 0x1.166ef7090ee7ep+3
+0x1.066862b4fca48p+7, 0x1.f9979d4b035b8p-8
+0x1.560d5c4f6567ep-4, 0x1.a9f2a3b09a982p+3
+0x1.cfadc94c8c4dep-6, 0x1.305236b373b22p+5
+0x1.bc02c11698622p-1, 0x1.43fd3ee9679dep+0
+0x1.eb6de1a75e80ep-5, 0x1.14921e58a17f2p+4
+0x1.30e539590bd06p-7, 0x1.cf1ac6a6f42fap+6
+0x1.6165bb78ee60cp+4, 0x1.9e9a4487119f4p-5
+0x1.212b8b673cb84p+3, 0x1.ded47498c347cp-4
+0x1.5ce43355ae57ap-1, 0x1.a31bccaa51a86p+0
+0x1.e254b4bee829ap-1, 0x1.1dab4b4117d66p+0
+0x1.199dc2c8feb2p-5, 0x1.e6623d37014ep+4
+0x1.ffbc24df2a4a6p+3, 0x1.0043db20d5b5ap-4
+0x1.8a893f9d74d96p+2, 0x1.7576c0628b26ap-3
+0x1.95a1793d8b2bp-2, 0x1.6a5e86c274d5p+1
+0x1.fc636606ed5c4p-8, 0x1.039c99f912a3cp+7
+0x1.fa644d90c13dep-1, 0x1.059bb26f3ec22p+0
+0x1.765b1c9670438p-8, 0x1.89a4e3698fbc8p+7
+0x1.2448c6dc41628p-5, 0x1.dbb73923be9d8p+4
+0x1.2b868a800df96p-7, 0x1.d479757ff206ap+6
+0x1.1008ddda1a2ccp-3, 0x1.eff72225e5d34p+2
+0x1.9a7946e737986p-1, 0x1.6586b918c867ap+0
+0x1.de911c54a63eap-8, 0x1.216ee3ab59c16p+7
+0x1.a3c767cce8562p-5, 0x1.5c38983317a9ep+4
+0x1.9296ff6c1011ap+4, 0x1.6d690093efee6p-5
+0x1.6981d2225e5bap-2, 0x1.967e2ddda1a46p+1
+0x1.8889bf22abce8p-9, 0x1.777640dd54318p+8
+0x1.7933509ab9a2p-3, 0x1.86ccaf65465ep+2
+0x1.0863537e5206ep-6, 0x1.f79cac81adf92p+5
+0x1.38c6cefd7dc18p-6, 0x1.c7393102823e8p+5
+0x1.440643749a7cap+4, 0x1.bbf9bc8b65836p-5
+0x1.feb44f299301cp+1, 0x1.014bb0d66cfe4p-2
+0x1.601c9fa85757ep+2, 0x1.9fe36057a8a82p-3
+0x1.3444fb5ad6fa2p-6, 0x1.cbbb04a52905ep+5
+0x1.9aca73293d10cp-7, 0x1.65358cd6c2ef4p+6
+0x1.7eb877ad2a9bcp+7, 0x1.81478852d5644p-8
+0x1.1ea0b9ebe8418p-10, 0x1.e15f461417be8p+9
+0x1.2d3de69f6f306p-8, 0x1.d2c2196090cfap+7
+0x1.e4b707966bffap-9, 0x1.1b48f86994006p+8
+0x1.50cd84d1df594p-10, 0x1.af327b2e20a6cp+9
+0x1.ca5e466055ed6p-1, 0x1.35a1b99faa12ap+0
+0x1.f800f3524a52ep+4, 0x1.07ff0cadb5ad2p-5
+0x1.10162d4dc8338p+6, 0x1.efe9d2b237cc8p-7
+0x1.6a117b773f28ap-3, 0x1.95ee8488c0d76p+2
+0x1.e5d61f87a48c8p+4, 0x1.1a29e0785b738p-5
+0x1.03e4e9f373e8cp-7, 0x1.fc1b160c8c174p+6
+0x1.98ee225e0d888p-7, 0x1.6711dda1f2778p+6
+0x1.968fbfd60e804p+0, 0x1.69704029f17fcp-1
+0x1.4acdf1e91f6dep+0, 0x1.b5320e16e0922p-1
+0x1.b659f335fa0f8p+9, 0x1.49a60cca05f08p-10
+0x1.b943b0cf8eebap-2, 0x1.46bc4f3071146p+1
+0x1.e83170e31be2ep+5, 0x1.17ce8f1ce41d2p-6
+0x1.c0527c38889bcp+3, 0x1.3fad83c777644p-4
+0x1.64b0fbe3b405ep-6, 0x1.9b4f041c4bfa2p+5
+0x1.1846410436f16p-10, 0x1.e7b9befbc90eap+9
+0x1.e455da5578b6p-1, 0x1.1baa25aa874ap+0
+0x1.aaae681615104p-8, 0x1.555197e9eaefcp+7
+0x1.ae5e39235c116p-3, 0x1.51a1c6dca3eeap+2
+0x1.1bdec0bc4d124p-7, 0x1.e4213f43b2edcp+6
+0x1.aa1600ac7ba1p+7, 0x1.55e9ff53845fp-8
+0x1.3cb3b467e35eep-1, 0x1.c34c4b981ca12p+0
+0x1.d63177b749086p+6, 0x1.29ce8848b6f7ap-7
+0x1.e5ed8d623f41ep+9, 0x1.1a12729dc0be2p-10
+0x1.dabbfa5518d6p+1, 0x1.254405aae72ap-2
+0x1.1c54d290913fep-3, 0x1.e3ab2d6f6ec02p+2
+0x1.5e97a42e0ff4ep-4, 0x1.a1685bd1f00b2p+3
+0x1.0d7f18ce0a582p+4, 0x1.f280e731f5a7ep-5
+0x1.1d00b7850cefep+8, 0x1.e2ff487af3102p-9
+0x1.abfa87a725ebp-6, 0x1.54057858da15p+5
+0x1.aac94008786eep-4, 0x1.5536bff787912p+3
+0x1.4f5ef4d39123cp+3, 0x1.b0a10b2c6edc4p-4
+0x1.8a189af08701ep-10, 0x1.75e7650f78fe2p+9
+0x1.e1d32ae7568a2p+5, 0x1.1e2cd518a975ep-6
+0x1.aa2c00c90810ep-10, 0x1.55d3ff36f7ef2p+9
+0x1.03e63e874f78p-10, 0x1.fc19c178b088p+9
+0x1.5131b4259711ep+3, 0x1.aece4bda68ee2p-4
+0x1.c5500cea22c52p+2, 0x1.3aaff315dd3aep-3
+0x1.3a5562a6f5aeap-4, 0x1.c5aa9d590a516p+3
+0x1.9b6b44c46c112p-6, 0x1.6494bb3b93eeep+5
+0x1.3664c952e265cp-4, 0x1.c99b36ad1d9a4p+3
+0x1.2b4c04728abbap+3, 0x1.d4b3fb8d75446p-4
+0x1.5815256e08a1ap+3, 0x1.a7eada91f75e6p-4
+0x1.92d80773b6f3ap+1, 0x1.6d27f88c490c6p-2
+0x1.3fcb6e93b089ep-9, 0x1.c034916c4f762p+8
+0x1.86fb98865601ep+4, 0x1.79046779a9fe2p-5
+0x1.c22fac26e8e6cp-10, 0x1.3dd053d917194p+9
+0x1.c1d98d36f0bfap-9, 0x1.3e2672c90f406p+8
+0x1.77c71433e50bap-5, 0x1.8838ebcc1af46p+4
+0x1.4fed7a3c1506ap-4, 0x1.b01285c3eaf96p+3
+0x1.14f508320d448p-9, 0x1.eb0af7cdf2bb8p+8
+0x1.2a832649326fp-7, 0x1.d57cd9b6cd91p+6
+0x1.4775b9486afd6p+9, 0x1.b88a46b79502ap-10
+0x1.84159deffe6d4p+1, 0x1.7bea62100192cp-2
+0x1.0dd22336aafc4p-7, 0x1.f22ddcc95503cp+6
+0x1.6bfad036e9a04p-9, 0x1.94052fc9165fcp+8
+0x1.cfb268178f926p+9, 0x1.304d97e8706dap-10
+0x1.302303c017be4p+7, 0x1.cfdcfc3fe841cp-8
+0x1.dc6220c21df9ap+6, 0x1.239ddf3de2066p-7
+0x1.a6276c1577c1p-1, 0x1.59d893ea883fp+0
+0x1.5e48d741dc98cp+0, 0x1.a1b728be23674p-1
+0x1.9534a351ff714p+5, 0x1.6acb5cae008ecp-6
+0x1.405c047768abep+9, 0x1.bfa3fb8897542p-10
+0x1.5770cb882566ep+1, 0x1.a88f3477da992p-2
+0x1.2b4d52505f5aep+4, 0x1.d4b2adafa0a52p-5
+0x1.81c2d8543f58p-4, 0x1.7e3d27abc0a8p+3
+0x1.1565acdefb1cp+3, 0x1.ea9a532104e4p-4
+0x1.8af7e6438ddeep-2, 0x1.750819bc72212p+1
+0x1.d27a514b39c44p+0, 0x1.2d85aeb4c63bcp-1
+0x1.2a74ea4645c58p+5, 0x1.d58b15b9ba3a8p-6
+0x1.3917049f6dd6p-5, 0x1.c6e8fb60922ap+4
+0x1.916d788bfee3ep+3, 0x1.6e928774011c2p-4
+0x1.aca4e257f5d98p+0, 0x1.535b1da80a268p-1
+0x1.3b9dd1a95c55ep+1, 0x1.c4622e56a3aa2p-2
+0x1.28be30e40a882p+9, 0x1.d741cf1bf577ep-10
+0x1.bfada2d0f02c8p-3, 0x1.40525d2f0fd38p+2
+0x1.67b5d7e65a24p+5, 0x1.984a2819a5dcp-6
+0x1.ee351e0ca4aa4p+9, 0x1.11cae1f35b55cp-10
+0x1.5c75d9dc7dcc6p-3, 0x1.a38a26238233ap+2
+0x1.0f4f8488ca4ep-1, 0x1.f0b07b7735b2p+0
+0x1.078efeff2e046p-7, 0x1.f8710100d1fbap+6
+0x1.0cfc3c10528c4p-8, 0x1.f303c3efad73cp+7
+0x1.e40feeb93b1a6p+8, 0x1.1bf01146c4e5ap-9
+0x1.b17c464f4ff78p+4, 0x1.4e83b9b0b0088p-5
+0x1.75cab759cf78ep+5, 0x1.8a3548a630872p-6
+0x1.30599cd919a64p-4, 0x1.cfa66326e659cp+3
+0x1.7b7b627e73efp-5, 0x1.84849d818c11p+4
+0x1.11b7edfa9dbcep+2, 0x1.ee48120562432p-3
+0x1.a538ba1d20606p+1, 0x1.5ac745e2df9fap-2
+0x1.82f95c72c4852p-5, 0x1.7d06a38d3b7aep+4
+0x1.beca0e42efe38p+3, 0x1.4135f1bd101c8p-4
+0x1.2f2a7b856a9c2p-10, 0x1.d0d5847a9563ep+9
+0x1.733873fa15432p+8, 0x1.8cc78c05eabcep-9
+0x1.a871eabade636p+7, 0x1.578e1545219cap-8
+0x1.83faeae68d8fcp-5, 0x1.7c05151972704p+4
+0x1.1fe91b824108cp+3, 0x1.e016e47dbef74p-4
+0x1.3da953ba326f2p+0, 0x1.c256ac45cd90ep-1
+0x1.9896bfa117834p+7, 0x1.6769405ee87ccp-8
+0x1.15b652e9446fep-3, 0x1.ea49ad16bb902p+2
+0x1.c948e176025cep+6, 0x1.36b71e89fda32p-7
+0x1.c79cfbac6cdbcp-2, 0x1.3863045393244p+1
+0x1.ba2f31baf14d4p+3, 0x1.45d0ce450eb2cp-4
+0x1.080bd5e973e88p+4, 0x1.f7f42a168c178p-5
+0x1.b38ee9bc9fdd8p-5, 0x1.4c71164360228p+4
+0x1.ab0a53ce77cep+6, 0x1.54f5ac318832p-7
+0x1.c55945780b67ep-5, 0x1.3aa6ba87f4982p+4
+0x1.c89511d172a96p+3, 0x1.376aee2e8d56ap-4
+0x1.2de4687d9ef24p+5, 0x1.d21b9782610dcp-6
+0x1.92bdfddd72ffcp-6, 0x1.6d4202228d004p+5
+0x1.f30de256667b8p+3, 0x1.0cf21da999848p-4
+0x1.cc41d8686c8f8p-8, 0x1.33be279793708p+7
+0x1.481368f0349acp+8, 0x1.b7ec970fcb654p-9
+0x1.35f4158c64f24p-7, 0x1.ca0bea739b0dcp+6
+0x1.d3a7af506962ap-5, 0x1.2c5850af969d6p+4
+0x1.c28bd44522c6cp+8, 0x1.3d742bbadd394p-9
+0x1.49d826f7d6ec8p+5, 0x1.b627d90829138p-6
+0x1.26f7c8b84f27cp+6, 0x1.d9083747b0d84p-7
+0x1.d2c8cf5d02ea2p+3, 0x1.2d3730a2fd15ep-4
+0x1.07be8930158ccp-1, 0x1.f84176cfea734p+0
+0x1.5ddae41ffae4ep-3, 0x1.a2251be0051b2p+2
+0x1.aefff24510d9ap+0, 0x1.51000dbaef266p-1
+0x1.92ac1b5ce68acp+3, 0x1.6d53e4a319754p-4
+0x1.c611a4ce426acp+2, 0x1.39ee5b31bd954p-3
+0x1.7b6b1e63a80b8p-3, 0x1.8494e19c57f48p+2
+0x1.311dad3d71c54p-1, 0x1.cee252c28e3acp+0
+0x1.3bd573d6d30eep-8, 0x1.c42a8c292cf12p+7
+0x1.05866fe7c065p+4, 0x1.fa7990183f9bp-5
+0x1.9d07dd134b12ap-3, 0x1.62f822ecb4ed6p+2
+0x1.1c555dd0d2986p-6, 0x1.e3aaa22f2d67ap+5
+0x1.a462389d2aa2cp-8, 0x1.5b9dc762d55d4p+7
+0x1.d0a1f0cf8f09cp-1, 0x1.2f5e0f3070f64p+0
+0x1.a9ab7caae7ca6p+0, 0x1.565483551835ap-1
+0x1.f06d44c107b2p-4, 0x1.0f92bb3ef84ep+3
+0x1.f3f2d3db9758ep+9, 0x1.0c0d2c2468a72p-10
+0x1.032f371fc3d58p-2, 0x1.fcd0c8e03c2a8p+1
+0x1.3d2162c065448p+3, 0x1.c2de9d3f9abb8p-4
+0x1.144737aae888cp-7, 0x1.ebb8c85517774p+6
+0x1.eb2c1f65795d4p+9, 0x1.14d3e09a86a2cp-10
+0x1.fd1b36c1df8eap+4, 0x1.02e4c93e20716p-5
+0x1.43fd0fef370dep+8, 0x1.bc02f010c8f22p-9
+0x1.65dca7610e42cp+8, 0x1.9a23589ef1bd4p-9
+0x1.4724f002e48b4p-4, 0x1.b8db0ffd1b74cp+3
+0x1.27dac49a33df2p-9, 0x1.d8253b65cc20ep+8
+0x1.43344e4b48966p+1, 0x1.bccbb1b4b769ap-2
+0x1.bc02e45209274p-2, 0x1.43fd1badf6d8cp+1
+0x1.b2090bc4243fcp+4, 0x1.4df6f43bdbc04p-5
+0x1.2829694271422p-9, 0x1.d7d696bd8ebdep+8
+0x1.d590f6a405fa4p-3, 0x1.2a6f095bfa05cp+2
+0x1.ee6858cc6a0dp-8, 0x1.1197a73395f3p+7
+0x1.387a2a0996ec8p+9, 0x1.c785d5f669138p-10
+0x1.3c7be4ee251fap-5, 0x1.c3841b11dae06p+4
+0x1.1f5a804a5a40cp+3, 0x1.e0a57fb5a5bf4p-4
+0x1.092ae3c9d5b44p+3, 0x1.f6d51c362a4bcp-4
+0x1.c883e98b2476p+1, 0x1.377c1674db8ap-2
+0x1.3afd7c34df12p+6, 0x1.c50283cb20eep-7
+0x1.5d041c29239dp-10, 0x1.a2fbe3d6dc63p+9
+0x1.fe6a04832cbbep-3, 0x1.0195fb7cd3442p+2
+0x1.9300c27d925d8p+6, 0x1.6cff3d826da28p-7
+0x1.d7cad18d58d1cp+4, 0x1.28352e72a72e4p-5
+0x1.90ce88726e874p-5, 0x1.6f31778d9178cp+4
+0x1.d48d95c82de7ep-5, 0x1.2b726a37d2182p+4
+0x1.a5cf52797a99p+2, 0x1.5a30ad868567p-3
+0x1.77042105e2e6cp+2, 0x1.88fbdefa1d194p-3
+0x1.4f491ea8b00fep-5, 0x1.b0b6e1574ff02p+4
+0x1.70985438e9f22p+6, 0x1.8f67abc7160dep-7
+0x1.27bf50a07ddp+0, 0x1.d840af5f823p-1
+0x1.94d300a0615b2p+3, 0x1.6b2cff5f9ea4ep-4
+0x1.f44df6409386cp+3, 0x1.0bb209bf6c794p-4
+0x1.263527bfbab12p+4, 0x1.d9cad840454eep-5
+0x1.b2a3ffcfd7518p+0, 0x1.4d5c003028ae8p-1
+0x1.4a9f8eff9847ap-2, 0x1.b560710067b86p+1
+0x1.4868e375850c4p+5, 0x1.b7971c8a7af3cp-6
+0x1.3f5987c746904p-9, 0x1.c0a67838b96fcp+8
+0x1.64785757cf6bep-3, 0x1.9b87a8a830942p+2
+0x1.ab54b296f2e3ep-2, 0x1.54ab4d690d1c2p+1
+0x1.09d4ae3212bd2p-5, 0x1.f62b51cded42ep+4
+0x1.b21e40df6116p+8, 0x1.4de1bf209eeap-9
+0x1.750de9dfe02fcp-6, 0x1.8af216201fd04p+5
+0x1.5ae09a476a85ep-7, 0x1.a51f65b8957a2p+6
+0x1.1e164660d8358p-4, 0x1.e1e9b99f27ca8p+3
+0x1.8cd5b59410ab8p-10, 0x1.732a4a6bef548p+9
+0x1.332c31613ff46p-1, 0x1.ccd3ce9ec00bap+0
+0x1.c63e76be16df8p+3, 0x1.39c18941e9208p-4
+0x1.69b49fd49a502p+6, 0x1.964b602b65afep-7
+0x1.2dfc4a1b965fp+1, 0x1.d203b5e469a1p-2
+0x1.6796068ffd26ap+0, 0x1.9869f97002d96p-1
+0x1.a690ea5d9a3eap+2, 0x1.596f15a265c16p-3
+0x1.70a062246ebacp-3, 0x1.8f5f9ddb91454p+2
+0x1.5c1f6c121b6fp+5, 0x1.a3e093ede491p-6
+0x1.6f5ce92afe3a4p-5, 0x1.90a316d501c5cp+4
+0x1.c81a75540c606p-8, 0x1.37e58aabf39fap+7
+0x1.7a6bd9761a912p+8, 0x1.85942689e56eep-9
+0x1.30ccd68bdd732p-6, 0x1.cf332974228cep+5
+0x1.09506a6bec4ep-3, 0x1.f6af959413b2p+2
+0x1.52bc5e3591214p+2, 0x1.ad43a1ca6edecp-3
+0x1.fc193e9bc434ap+7, 0x1.03e6c1643bcb6p-8
+0x1.75679b2b63526p+8, 0x1.8a9864d49cadap-9
+0x1.72a64666a37fap-7, 0x1.8d59b9995c806p+6
+0x1.f7deee4514aa6p-5, 0x1.082111baeb55ap+4
+0x1.94cc4092e4d8ap-7, 0x1.6b33bf6d1b276p+6
+0x1.23f278f24c524p+4, 0x1.dc0d870db3adcp-5
+0x1.720015102c092p-8, 0x1.8dffeaefd3f6ep+7
+0x1.b424089c2c05cp+1, 0x1.4bdbf763d3fa4p-2
+0x1.4ca461c9cf8f8p-3, 0x1.b35b9e3630708p+2
+0x1.7e63c4ce264bep-9, 0x1.819c3b31d9b42p+8
+0x1.bc5dd2b48338p+3, 0x1.43a22d4b7cc8p-4
+0x1.533c0eef0cc9p-2, 0x1.acc3f110f337p+1
+0x1.e870e2e88adf6p+4, 0x1.178f1d177520ap-5
+0x1.d57f431d766e6p-2, 0x1.2a80bce28991ap+1
+0x1.42d8918caf1aep-1, 0x1.bd276e7350e52p+0
+0x1.5a846817f297p+1, 0x1.a57b97e80d69p-2
+0x1.5ab4030feb776p-3, 0x1.a54bfcf01488ap+2
+0x1.060e4b122aaa8p-6, 0x1.f9f1b4edd5558p+5
+0x1.7811490ae86c6p-8, 0x1.87eeb6f51793ap+7
+0x1.b3b90a213487cp+7, 0x1.4c46f5decb784p-8
+0x1.0ff1105e03e92p+9, 0x1.f00eefa1fc16ep-10
+0x1.3b904c85aa76p+4, 0x1.c46fb37a558ap-5
+0x1.7704733b5095p-7, 0x1.88fb8cc4af6bp+6
+0x1.b3ef9420a6d3cp+5, 0x1.4c106bdf592c4p-6
+0x1.0ee7618a56a8cp+9, 0x1.f1189e75a9574p-10
+0x1.5a46f7748f8b6p-4, 0x1.a5b9088b7074ap+3
+0x1.7f5132f97fce6p+2, 0x1.80aecd068031ap-3
+0x1.6288c05edbea4p-2, 0x1.9d773fa12415cp+1
+0x1.34689817c6442p+0, 0x1.cb9767e839bbep-1
+0x1.3cf9e8285099ep+7, 0x1.c30617d7af662p-8
+0x1.86387ec21346cp-6, 0x1.79c7813decb94p+5
+0x1.9bf2010acaf9ap-5, 0x1.640dfef535066p+4
+0x1.d89c59a988978p-8, 0x1.2763a65677688p+7
+0x1.de4682d3d5c28p-5, 0x1.21b97d2c2a3d8p+4
+0x1.9ecfc216d7fb6p-7, 0x1.61303de92804ap+6
+0x1.6cd69191ba86ep-1, 0x1.93296e6e45792p+0
+0x1.ec9c8526da128p-4, 0x1.13637ad925ed8p+3
+0x1.5ec36eb6f154ap-6, 0x1.a13c91490eab6p+5
+0x1.16a15cb67a49p-7, 0x1.e95ea34985b7p+6
+0x1.b08e5399bc0c8p-8, 0x1.4f71ac6643f38p+7
+0x1.b1156067d3406p+5, 0x1.4eea9f982cbfap-6
+0x1.2bd23a812d7fap+4, 0x1.d42dc57ed2806p-5
+0x1.41891f60ba38p+4, 0x1.be76e09f45c8p-5
+0x1.2e0b05a0383dp-7, 0x1.d1f4fa5fc7c3p+6
+0x1.d2a918de8e05ep+2, 0x1.2d56e72171fa2p-3
+0x1.014eea46835b8p+6, 0x1.feb115b97ca48p-7
+0x1.dca8181ce7b94p-10, 0x1.2357e7e31846cp+9
+0x1.206e63545714ep+6, 0x1.df919caba8eb2p-7
+0x1.f3383f2105eeep-1, 0x1.0cc7c0defa112p+0
+0x1.456fbd8951976p+7, 0x1.ba904276ae68ap-8
+0x1.0c2041aa7a548p-2, 0x1.f3dfbe5585ab8p+1
+0x1.52a65fc6ba144p-2, 0x1.ad59a03945ebcp+1
+0x1.a76a53189ff9p+8, 0x1.5895ace76007p-9
+0x1.92cbc1147dbdep-6, 0x1.6d343eeb82422p+5
+0x1.32bea2e92b5bep-4, 0x1.cd415d16d4a42p+3
+0x1.b6182a3e41a2cp+7, 0x1.49e7d5c1be5d4p-8
+0x1.44e47d4fd7838p-5, 0x1.bb1b82b0287c8p+4
+0x1.59f913bc63b32p+1, 0x1.a606ec439c4cep-2
+0x1.4ef558588315p-2, 0x1.b10aa7a77cebp+1
+0x1.bb53720a2062p+9, 0x1.44ac8df5df9ep-10
+0x1.0ec71e1e5256ep-8, 0x1.f138e1e1ada92p+7
+0x1.f2cd16b4ca62ap-10, 0x1.0d32e94b359d6p+9
+0x1.a41d46fc05e3p-8, 0x1.5be2b903fa1dp+7
+0x1.2b52fd8b0e8f4p-1, 0x1.d4ad0274f170cp+0
+0x1.95ca3e5870fcep-3, 0x1.6a35c1a78f032p+2
+0x1.f4a9de9e26736p-1, 0x1.0b562161d98cap+0
+0x1.b1731e8878accp+1, 0x1.4e8ce17787534p-2
+0x1.5155360a9e42cp+5, 0x1.aeaac9f561bd4p-6
+0x1.d39d34a33844ap-6, 0x1.2c62cb5cc7bb6p+5
+0x1.7942ff6439c5p+4, 0x1.86bd009bc63bp-5
+0x1.94f581d47c67p-2, 0x1.6b0a7e2b8399p+1
+0x1.57f704f1cba2ep+0, 0x1.a808fb0e345d2p-1
+0x1.c39b675e52e5cp+9, 0x1.3c6498a1ad1a4p-10
+0x1.5070edf89a4fp-2, 0x1.af8f120765b1p+1
+0x1.a3c692bac1fb6p+2, 0x1.5c396d453e04ap-3
+0x1.365f5575851fap+8, 0x1.c9a0aa8a7ae06p-9
+0x1.1d9b255903dd2p+4, 0x1.e264daa6fc22ep-5
+0x1.f2003e2aaf396p+7, 0x1.0dffc1d550c6ap-8
+0x1.faaf8ed73ce7ap-4, 0x1.05507128c3186p+3
+0x1.697ecb06e111cp+0, 0x1.968134f91eee4p-1
+0x1.c385db0556d42p-3, 0x1.3c7a24faa92bep+2
+0x1.5169804451d92p+9, 0x1.ae967fbbae26ep-10
+0x1.f8c4f9a5cbb0cp-7, 0x1.073b065a344f4p+6
+0x1.4c038cd39d172p-2, 0x1.b3fc732c62e8ep+1
+0x1.5decabc86b99ep+4, 0x1.a213543794662p-5
+0x1.2917a7776beb6p-2, 0x1.d6e858889414ap+1
+0x1.f5285240ab2dp+4, 0x1.0ad7adbf54d3p-5
+0x1.5d3549c81d44p+6, 0x1.a2cab637e2bcp-7
+0x1.533fd04494adap+5, 0x1.acc02fbb6b526p-6
+0x1.43fc9dd98fb96p-4, 0x1.bc0362267046ap+3
+0x1.675510fce958ap-8, 0x1.98aaef0316a76p+7
+0x1.9a49aa41bcfcp+4, 0x1.65b655be4304p-5
+0x1.b6e5c8c0f38acp-8, 0x1.491a373f0c754p+7
+0x1.6e25a41c67826p-9, 0x1.91da5be3987dap+8
+0x1.5522ba8700222p-2, 0x1.aadd4578ffddep+1
+0x1.ce582ab6b1462p+1, 0x1.31a7d5494eb9ep-2
+0x1.828edd79823bap+5, 0x1.7d7122867dc46p-6
+0x1.87f9fca330fd8p+7, 0x1.7806035ccf028p-8
+0x1.f9b890e007e02p+4, 0x1.06476f1ff81fep-5
+0x1.8f1f104d1a63cp-8, 0x1.70e0efb2e59c4p+7
+0x1.ae9bf398a41f4p-2, 0x1.51640c675be0cp+1
+0x1.b71fcbf18a752p+0, 0x1.48e0340e758aep-1
+0x1.d68d52a901bbep-10, 0x1.2972ad56fe442p+9
+0x1.8da5e76eaf7f2p+2, 0x1.725a18915080ep-3
-- 
2.34.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v4 2/5] benchtests: Add fmodf benchmark
  2023-03-20 16:01 [PATCH v4 0/5] Improve fmod and fmodf Adhemerval Zanella
  2023-03-20 16:01 ` [PATCH v4 1/5] benchtests: Add fmod benchmark Adhemerval Zanella
@ 2023-03-20 16:01 ` Adhemerval Zanella
  2023-04-03 13:16   ` Wilco Dijkstra
  2023-03-20 16:01 ` [PATCH v4 3/5] math: Improve fmod Adhemerval Zanella
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Adhemerval Zanella @ 2023-03-20 16:01 UTC (permalink / raw)
  To: libc-alpha, Wilco Dijkstra, H . J . Lu

1. Subnormals: 128 inputs.
2. Normal numbers with large exponent difference (|x/y| > 2^8):
   1024 inputs between FLT_MIN and FLT_MAX;
3. Close exponents (ey >= -103 and |x/y| < 2^8): 1024 inputs with
   exponents between -10 and 10.
---
 benchtests/Makefile     |    1 +
 benchtests/fmodf-inputs | 2182 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 2183 insertions(+)
 create mode 100644 benchtests/fmodf-inputs

diff --git a/benchtests/Makefile b/benchtests/Makefile
index 7427010117..5bd763a19d 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -49,6 +49,7 @@ bench-math := \
   fmin \
   fminf \
   fmod \
+  fmodf \
   hypot \
   hypotf \
   ilogb \
diff --git a/benchtests/fmodf-inputs b/benchtests/fmodf-inputs
new file mode 100644
index 0000000000..be16a88ea5
--- /dev/null
+++ b/benchtests/fmodf-inputs
@@ -0,0 +1,2182 @@
+## args: float:float
+## ret: float
+## includes: math.h
+## name: subnormals
+0x1.3a3e6p-127, 0x1.8b8338p-128
+0x1.03a6cp-127, 0x1.f8b278p-128
+0x1.b8faap-127, 0x1.1c157p-129
+0x1.ba19ap-127, 0x1.17997p-129
+0x1.db4dep-127, 0x1.2590ep-130
+0x1.11814p-128, 0x1.773f5cp-127
+0x1.22abp-130, 0x1.dbaa9cp-127
+0x1.a0cap-127, 0x1.7cd7fp-129
+0x1.eb7b8p-127, 0x1.4847cp-131
+0x1.4865p-128, 0x1.5bcd7cp-127
+0x1.4bbaap-127, 0x1.688ab8p-128
+0x1.97dc4p-128, 0x1.3411dcp-127
+0x1.ff1b4p-127, 0x1.c978p-136
+0x1.beb3ep-127, 0x1.05307p-129
+0x1.8718p-131, 0x1.e78e7cp-127
+0x1.cd51p-129, 0x1.8cabbcp-127
+0x1.0393cp-127, 0x1.f8d878p-128
+0x1.69f5p-129, 0x1.a582bcp-127
+0x1.50c96p-127, 0x1.5e6d38p-128
+0x1.641dcp-127, 0x1.37c478p-128
+0x1.a161ap-127, 0x1.7a797p-129
+0x1.ea6ep-131, 0x1.e1591cp-127
+0x1.fd0e4p-128, 0x1.0178dcp-127
+0x1.fcb54p-127, 0x1.a55ep-134
+0x1.073fp-127, 0x1.f181f8p-128
+0x1.f4142p-127, 0x1.7d7b8p-132
+0x1.92fp-128, 0x1.3687fcp-127
+0x1.27f34p-127, 0x1.b01978p-128
+0x1.b0d4p-127, 0x1.3caffp-129
+0x1.8baf2p-127, 0x1.d1437p-129
+0x1.81c88p-127, 0x1.f8ddfp-129
+0x1.3a608p-128, 0x1.62cfbcp-127
+0x1.a63cep-127, 0x1.670c7p-129
+0x1.d35a6p-127, 0x1.652cep-130
+0x1.39d5p-127, 0x1.8c55f8p-128
+0x1.4cdfp-129, 0x1.acc83cp-127
+0x1.9acdcp-127, 0x1.94c8fp-129
+0x1.bbbp-131, 0x1.e444fcp-127
+0x1.d14f8p-129, 0x1.8bac1cp-127
+0x1.67bfp-130, 0x1.d3081cp-127
+0x1.cc0ecp-128, 0x1.19f89cp-127
+0x1.6c81p-127, 0x1.26fdf8p-128
+0x1.e5824p-127, 0x1.a7dbcp-131
+0x1.60b68p-129, 0x1.a7d25cp-127
+0x1.7d32p-131, 0x1.e82cdcp-127
+0x1.9949p-129, 0x1.99adbcp-127
+0x1.9bfaep-127, 0x1.90147p-129
+0x1.0162p-131, 0x1.efe9dcp-127
+0x1.5d17cp-127, 0x1.45d078p-128
+0x1.7d10cp-128, 0x1.41779cp-127
+0x1.9a36p-129, 0x1.99727cp-127
+0x1.0d434p-128, 0x1.795e5cp-127
+0x1.702ep-128, 0x1.47e8fcp-127
+0x1.1e8aap-127, 0x1.c2eab8p-128
+0x1.ceb8ap-127, 0x1.8a3aep-130
+0x1.aee2ap-127, 0x1.44757p-129
+0x1.1b264p-127, 0x1.c9b378p-128
+0x1.8b358p-129, 0x1.9d329cp-127
+0x1.31434p-127, 0x1.9d7978p-128
+0x1.e48b2p-127, 0x1.b74dcp-131
+0x1.2c3ccp-127, 0x1.a78678p-128
+0x1.c12a4p-127, 0x1.f6adep-130
+0x1.3p-131, 0x1.ecfffcp-127
+0x1.ccd4p-129, 0x1.8ccafcp-127
+0x1.2241p-128, 0x1.6edf7cp-127
+0x1.ead6cp-128, 0x1.0a949cp-127
+0x1.76ed6p-127, 0x1.122538p-128
+0x1.880a8p-129, 0x1.9dfd5cp-127
+0x1.6635p-127, 0x1.3395f8p-128
+0x1.7a69p-129, 0x1.a165bcp-127
+0x1.5ed28p-129, 0x1.a84b5cp-127
+0x1.a54c8p-128, 0x1.2d59bcp-127
+0x1.08444p-127, 0x1.ef7778p-128
+0x1.d1f66p-127, 0x1.704cep-130
+0x1.2a4bep-127, 0x1.ab6838p-128
+0x1.27464p-127, 0x1.b17378p-128
+0x1.9b1fcp-127, 0x1.9380fp-129
+0x1.f484p-129, 0x1.82defcp-127
+0x1.950cp-128, 0x1.3579fcp-127
+0x1.39e7ep-127, 0x1.8c3038p-128
+0x1.daf68p-129, 0x1.89425cp-127
+0x1.b36b4p-128, 0x1.264a5cp-127
+0x1.6d834p-128, 0x1.493e5cp-127
+0x1.3313cp-128, 0x1.66761cp-127
+0x1.284bap-127, 0x1.af68b8p-128
+0x1.3e35cp-127, 0x1.839478p-128
+0x1.02512p-127, 0x1.fb5db8p-128
+0x1.f66p-130, 0x1.c133fcp-127
+0x1.3e0ccp-128, 0x1.60f99cp-127
+0x1.a8bacp-128, 0x1.2ba29cp-127
+0x1.05082p-127, 0x1.f5efb8p-128
+0x1.e9c32p-127, 0x1.63cdcp-131
+0x1.41fep-127, 0x1.7c03f8p-128
+0x1.b50e4p-127, 0x1.2bc6fp-129
+0x1.da56p-131, 0x1.e25a9cp-127
+0x1.e5488p-127, 0x1.ab77cp-131
+0x1.3f5fcp-128, 0x1.60501cp-127
+0x1.c9128p-129, 0x1.8dbb5cp-127
+0x1.e0c58p-128, 0x1.0f9d3cp-127
+0x1.dcf28p-127, 0x1.186bep-130
+0x1.9f16p-127, 0x1.83a7fp-129
+0x1.8f3acp-127, 0x1.c314fp-129
+0x1.38454p-127, 0x1.8f7578p-128
+0x1.1c5f8p-127, 0x1.c740f8p-128
+0x1.718p-137, 0x1.ffa39cp-127
+0x1.f9324p-127, 0x1.b36fp-133
+0x1.9a0bcp-127, 0x1.97d0fp-129
+0x1.0bf3cp-128, 0x1.7a061cp-127
+0x1.9233p-129, 0x1.9b733cp-127
+0x1.1876p-131, 0x1.ee789cp-127
+0x1.2f264p-128, 0x1.686cdcp-127
+0x1.4a7a8p-127, 0x1.6b0af8p-128
+0x1.2e3e6p-127, 0x1.a38338p-128
+0x1.a222cp-127, 0x1.7774fp-129
+0x1.6fc18p-127, 0x1.207cf8p-128
+0x1.dd05p-130, 0x1.c45f5cp-127
+0x1.978b6p-127, 0x1.a1d27p-129
+0x1.5f858p-127, 0x1.40f4f8p-128
+0x1.3ca7p-129, 0x1.b0d63cp-127
+0x1.e6648p-127, 0x1.99b7cp-131
+0x1.bf278p-127, 0x1.0361fp-129
+0x1.11ccep-127, 0x1.dc6638p-128
+0x1.69248p-128, 0x1.4b6dbcp-127
+0x1.538f4p-127, 0x1.58e178p-128
+0x1.80538p-129, 0x1.9feb1cp-127
+0x1.b4274p-128, 0x1.25ec5cp-127
+0x1.7c2bp-128, 0x1.41ea7cp-127
+0x1.90c28p-128, 0x1.379ebcp-127
+## name: normal
+0x1.c423f2p-11, 0x1.3bdc0cp+12
+0x1.c78066p+108, 0x1.387f98p-107
+0x1.454806p+93, 0x1.bab7f8p-92
+0x1.9db13ep+120, 0x1.624ecp-119
+0x1.dd1df2p-30, 0x1.22e20cp+31
+0x1.13b03ep-83, 0x1.ec4fcp+84
+0x1.e4aa32p+11, 0x1.1b55ccp-10
+0x1.a0dd2p+73, 0x1.5f22dep-72
+0x1.070118p+49, 0x1.f8fee6p-48
+0x1.2e476ep-38, 0x1.d1b89p+39
+0x1.e3db36p-5, 0x1.1c24c8p+6
+0x1.f86e02p-84, 0x1.0791fcp+85
+0x1.0564e4p+111, 0x1.fa9b1ap-110
+0x1.af22bp+101, 0x1.50dd4ep-100
+0x1.1d2f1ap+15, 0x1.e2d0e4p-14
+0x1.780e5ep+30, 0x1.87f1ap-29
+0x1.85399p+20, 0x1.7ac66ep-19
+0x1.4c8c9ap-61, 0x1.b37364p+62
+0x1.7d2d74p+98, 0x1.82d28ap-97
+0x1.4f715ep-46, 0x1.b08eap+47
+0x1.fe9de8p+11, 0x1.016216p-10
+0x1.0c0744p+90, 0x1.f3f8bap-89
+0x1.255c6ep-20, 0x1.daa39p+21
+0x1.78dd5ep-21, 0x1.8722ap+22
+0x1.cc67f6p-100, 0x1.339808p+101
+0x1.2c6a92p+112, 0x1.d3956cp-111
+0x1.1dfeccp+38, 0x1.e20132p-37
+0x1.afca72p-89, 0x1.50358cp+90
+0x1.ce9fc4p+30, 0x1.31603ap-29
+0x1.0ce2d4p+57, 0x1.f31d2ap-56
+0x1.e80554p-78, 0x1.17faaap+79
+0x1.865c44p-81, 0x1.79a3bap+82
+0x1.fc0c9cp-99, 0x1.03f362p+100
+0x1.6b62fp+71, 0x1.949d0ep-70
+0x1.f10b88p+80, 0x1.0ef476p-79
+0x1.2d8a9p-114, 0x1.d2756ep+115
+0x1.c28fdap-51, 0x1.3d7024p+52
+0x1.ac64fcp+40, 0x1.539b02p-39
+0x1.93c6f4p-112, 0x1.6c390ap+113
+0x1.accc7p+121, 0x1.53338ep-120
+0x1.4d32aep+95, 0x1.b2cd5p-94
+0x1.b1dc9ap+61, 0x1.4e2364p-60
+0x1.440b0ap+13, 0x1.bbf4f4p-12
+0x1.6dba36p+20, 0x1.9245c8p-19
+0x1.184daep+100, 0x1.e7b25p-99
+0x1.52111p-10, 0x1.adeeeep+11
+0x1.d70574p-69, 0x1.28fa8ap+70
+0x1.ae04c6p+26, 0x1.51fb38p-25
+0x1.eed74cp+44, 0x1.1128b2p-43
+0x1.235abp+59, 0x1.dca54ep-58
+0x1.31ede4p-70, 0x1.ce121ap+71
+0x1.14df72p+123, 0x1.eb208cp-122
+0x1.2dc224p+127, 0x1.d23ddap-126
+0x1.d2e366p+103, 0x1.2d1c98p-102
+0x1.c0a472p-83, 0x1.3f5b8cp+84
+0x1.0f9ee4p+76, 0x1.f0611ap-75
+0x1.074dacp+59, 0x1.f8b252p-58
+0x1.8b4d9ap-124, 0x1.74b264p+125
+0x1.4dddp-79, 0x1.b222fep+80
+0x1.10636ap-2, 0x1.ef9c94p+3
+0x1.362158p+50, 0x1.c9dea6p-49
+0x1.499802p-98, 0x1.b667fcp+99
+0x1.a5597ep-56, 0x1.5aa68p+57
+0x1.ff2676p-87, 0x1.00d988p+88
+0x1.16e7f8p-75, 0x1.e91806p+76
+0x1.bd82c2p+63, 0x1.427d3cp-62
+0x1.fc73bep+106, 0x1.038c4p-105
+0x1.fd10ecp+104, 0x1.02ef12p-103
+0x1.26e4c2p+113, 0x1.d91b3cp-112
+0x1.5a30bap-75, 0x1.a5cf44p+76
+0x1.8c4df8p+123, 0x1.73b206p-122
+0x1.e276cp-80, 0x1.1d893ep+81
+0x1.3ecf98p-61, 0x1.c13066p+62
+0x1.b93b8ap+47, 0x1.46c474p-46
+0x1.e8441cp-22, 0x1.17bbe2p+23
+0x1.349d2ap+10, 0x1.cb62d4p-9
+0x1.7072c6p-73, 0x1.8f8d38p+74
+0x1.36582ep+82, 0x1.c9a7dp-81
+0x1.d77ed6p-84, 0x1.288128p+85
+0x1.ff67d4p-63, 0x1.00982ap+64
+0x1.4462d6p-119, 0x1.bb9d28p+120
+0x1.9261b4p-69, 0x1.6d9e4ap+70
+0x1.3c1b6p+33, 0x1.c3e49ep-32
+0x1.bd8a7p+8, 0x1.42758ep-7
+0x1.5cd9aep+111, 0x1.a3265p-110
+0x1.7b1de4p+82, 0x1.84e21ap-81
+0x1.44155p+113, 0x1.bbeaaep-112
+0x1.e4af4ap+93, 0x1.1b50b4p-92
+0x1.62a09ap+53, 0x1.9d5f64p-52
+0x1.e20e92p+67, 0x1.1df16cp-66
+0x1.d59c2ap+21, 0x1.2a63d4p-20
+0x1.18004p-112, 0x1.e7ffbep+113
+0x1.a97792p+13, 0x1.56886cp-12
+0x1.1f618p+59, 0x1.e09e7ep-58
+0x1.4c9038p-84, 0x1.b36fc6p+85
+0x1.9565ecp-126, 0x1.6a9a12p+127
+0x1.5ca374p-98, 0x1.a35c8ap+99
+0x1.7c72c2p-9, 0x1.838d3cp+10
+0x1.b5d948p+7, 0x1.4a26b6p-6
+0x1.d00eaap-68, 0x1.2ff154p+69
+0x1.25bf26p+34, 0x1.da40d8p-33
+0x1.0bb00cp+95, 0x1.f44ff2p-94
+0x1.89bc1ap-72, 0x1.7643e4p+73
+0x1.75f46cp-16, 0x1.8a0b92p+17
+0x1.aca52p+21, 0x1.535adep-20
+0x1.2c9bbcp+84, 0x1.d36442p-83
+0x1.83f19ap+62, 0x1.7c0e64p-61
+0x1.9a27ep-9, 0x1.65d81ep+10
+0x1.d9ea92p-102, 0x1.26156cp+103
+0x1.35e8dap+127, 0x1.ca1724p-126
+0x1.e6d646p-112, 0x1.1929b8p+113
+0x1.cf8106p-54, 0x1.307ef8p+55
+0x1.49b732p-18, 0x1.b648ccp+19
+0x1.a95202p+11, 0x1.56adfcp-10
+0x1.3468b4p+63, 0x1.cb974ap-62
+0x1.378c8ep-91, 0x1.c8737p+92
+0x1.b509bep-119, 0x1.4af64p+120
+0x1.6a4ab6p+94, 0x1.95b548p-93
+0x1.4f67p+67, 0x1.b098fep-66
+0x1.32eff2p-24, 0x1.cd100cp+25
+0x1.1b3e86p+68, 0x1.e4c178p-67
+0x1.dcebdap+47, 0x1.231424p-46
+0x1.b75552p+52, 0x1.48aaacp-51
+0x1.6ed538p+62, 0x1.912ac6p-61
+0x1.f77ad4p+73, 0x1.08852ap-72
+0x1.aa4e6ap-30, 0x1.55b194p+31
+0x1.01acc2p-100, 0x1.fe533cp+101
+0x1.0364p+119, 0x1.fc9bfep-118
+0x1.8a946ap-29, 0x1.756b94p+30
+0x1.b3c91ap+44, 0x1.4c36e4p-43
+0x1.009de4p+26, 0x1.ff621ap-25
+0x1.88d4bcp+85, 0x1.772b42p-84
+0x1.39b452p-76, 0x1.c64bacp+77
+0x1.f9d9a2p-121, 0x1.06265cp+122
+0x1.8968f8p-84, 0x1.769706p+85
+0x1.8ead9cp+72, 0x1.715262p-71
+0x1.2cbcd6p+94, 0x1.d34328p-93
+0x1.4346dp-6, 0x1.bcb92ep+7
+0x1.547fe2p-125, 0x1.ab801cp+126
+0x1.9d6416p+27, 0x1.629be8p-26
+0x1.2df2ccp+19, 0x1.d20d32p-18
+0x1.9635dcp-18, 0x1.69ca22p+19
+0x1.41b3e4p-73, 0x1.be4c1ap+74
+0x1.e214d4p-107, 0x1.1deb2ap+108
+0x1.6245cep-34, 0x1.9dba3p+35
+0x1.0d1406p+63, 0x1.f2ebf8p-62
+0x1.33adp-38, 0x1.cc52fep+39
+0x1.8bfde6p+20, 0x1.740218p-19
+0x1.10e4dap+0, 0x1.ef1b24p+1
+0x1.cc2d52p+23, 0x1.33d2acp-22
+0x1.e3e076p-110, 0x1.1c1f88p+111
+0x1.af59eep-118, 0x1.50a61p+119
+0x1.80d62p+4, 0x1.7f29dep-3
+0x1.658176p+102, 0x1.9a7e88p-101
+0x1.8c8fap+94, 0x1.73705ep-93
+0x1.197a98p-74, 0x1.e68566p+75
+0x1.540eccp+55, 0x1.abf132p-54
+0x1.e3e7ap+114, 0x1.1c185ep-113
+0x1.d7adf2p-48, 0x1.28520cp+49
+0x1.334c5cp-15, 0x1.ccb3a2p+16
+0x1.14cb9ap+79, 0x1.eb3464p-78
+0x1.03f732p+69, 0x1.fc08ccp-68
+0x1.8d3b0cp-5, 0x1.72c4f2p+6
+0x1.ef39fap+24, 0x1.10c604p-23
+0x1.c8b7dap+92, 0x1.374824p-91
+0x1.b0ef12p+53, 0x1.4f10ecp-52
+0x1.7d3156p+91, 0x1.82cea8p-90
+0x1.f78804p+36, 0x1.0877fap-35
+0x1.c105d2p+126, 0x1.3efa2cp-125
+0x1.40444ep-30, 0x1.bfbbbp+31
+0x1.393772p-112, 0x1.c6c88cp+113
+0x1.890cb6p+35, 0x1.76f348p-34
+0x1.7db77cp+0, 0x1.824882p+1
+0x1.97440ep+112, 0x1.68bbfp-111
+0x1.509304p+81, 0x1.af6cfap-80
+0x1.d41c34p+77, 0x1.2be3cap-76
+0x1.b63efcp+53, 0x1.49c102p-52
+0x1.077656p-61, 0x1.f889a8p+62
+0x1.e8c546p+92, 0x1.173ab8p-91
+0x1.8ee376p+41, 0x1.711c88p-40
+0x1.3e5e04p-70, 0x1.c1a1fap+71
+0x1.37e952p+38, 0x1.c816acp-37
+0x1.dc4cd4p+122, 0x1.23b32ap-121
+0x1.f36df6p+29, 0x1.0c9208p-28
+0x1.4f1314p-121, 0x1.b0eceap+122
+0x1.4dcaa2p+3, 0x1.b2355cp-2
+0x1.99dc5p+78, 0x1.6623aep-77
+0x1.4833e8p-76, 0x1.b7cc16p+77
+0x1.dd575p-121, 0x1.22a8aep+122
+0x1.72a37cp-101, 0x1.8d5c82p+102
+0x1.605cf8p-115, 0x1.9fa306p+116
+0x1.812506p+8, 0x1.7edaf8p-7
+0x1.4cba28p+58, 0x1.b345d6p-57
+0x1.f8815ep+84, 0x1.077eap-83
+0x1.36dcd4p-3, 0x1.c9232ap+4
+0x1.5f8ad6p+108, 0x1.a07528p-107
+0x1.61c8ecp-47, 0x1.9e3712p+48
+0x1.f04474p+35, 0x1.0fbb8ap-34
+0x1.7fa0b2p-36, 0x1.805f4cp+37
+0x1.5964dap+100, 0x1.a69b24p-99
+0x1.3022b6p-78, 0x1.cfdd48p+79
+0x1.76fb16p-37, 0x1.8904e8p+38
+0x1.81e4aap-38, 0x1.7e1b54p+39
+0x1.3250dap-78, 0x1.cdaf24p+79
+0x1.c26172p+111, 0x1.3d9e8cp-110
+0x1.4ebdcp+93, 0x1.b1423ep-92
+0x1.70f5p+0, 0x1.8f0afep+1
+0x1.60cd8ap+89, 0x1.9f3274p-88
+0x1.e7a21cp-88, 0x1.185de2p+89
+0x1.416702p-110, 0x1.be98fcp+111
+0x1.4ce6c6p+60, 0x1.b31938p-59
+0x1.186ba6p-96, 0x1.e79458p+97
+0x1.a928f4p-42, 0x1.56d70ap+43
+0x1.07a28cp+3, 0x1.f85d72p-2
+0x1.4478f8p+32, 0x1.bb8706p-31
+0x1.bb910ep+26, 0x1.446efp-25
+0x1.d64f0ap-117, 0x1.29b0f4p+118
+0x1.aa05eep+4, 0x1.55fa1p-3
+0x1.0e39cep+14, 0x1.f1c63p-13
+0x1.325032p-78, 0x1.cdafccp+79
+0x1.38c202p-57, 0x1.c73dfcp+58
+0x1.e1a4fp+103, 0x1.1e5b0ep-102
+0x1.1d8ab4p-20, 0x1.e2754ap+21
+0x1.dc2176p+52, 0x1.23de88p-51
+0x1.c589d8p-31, 0x1.3a7626p+32
+0x1.9c5f6p+73, 0x1.63a09ep-72
+0x1.6f718ap+91, 0x1.908e74p-90
+0x1.87e724p+30, 0x1.7818dap-29
+0x1.76894ep-15, 0x1.8976bp+16
+0x1.eea9b2p-105, 0x1.11564cp+106
+0x1.d860dep-114, 0x1.279f2p+115
+0x1.5ed516p+37, 0x1.a12ae8p-36
+0x1.129d26p-9, 0x1.ed62d8p+10
+0x1.0586fap-110, 0x1.fa7904p+111
+0x1.71d9fcp+33, 0x1.8e2602p-32
+0x1.2bc6ecp+48, 0x1.d43912p-47
+0x1.775794p-48, 0x1.88a86ap+49
+0x1.3d7938p+101, 0x1.c286c6p-100
+0x1.df5fd2p+84, 0x1.20a02cp-83
+0x1.397a86p+41, 0x1.c68578p-40
+0x1.bdc868p-106, 0x1.423796p+107
+0x1.9a524ap+11, 0x1.65adb4p-10
+0x1.97466ap+33, 0x1.68b994p-32
+0x1.f1099cp+26, 0x1.0ef662p-25
+0x1.a59414p+108, 0x1.5a6beap-107
+0x1.04a7bcp-38, 0x1.fb5842p+39
+0x1.fd8c42p-75, 0x1.0273bcp+76
+0x1.bfc5d4p-3, 0x1.403a2ap+4
+0x1.e33d74p+82, 0x1.1cc28ap-81
+0x1.db7ebap-15, 0x1.248144p+16
+0x1.028bbep-43, 0x1.fd744p+44
+0x1.c442eep+58, 0x1.3bbd1p-57
+0x1.7417bp-87, 0x1.8be84ep+88
+0x1.bfe5ccp+66, 0x1.401a32p-65
+0x1.2a04fap-77, 0x1.d5fb04p+78
+0x1.27fddcp-8, 0x1.d80222p+9
+0x1.a4c524p+80, 0x1.5b3adap-79
+0x1.0482bep-102, 0x1.fb7d4p+103
+0x1.38ee64p-79, 0x1.c7119ap+80
+0x1.4afba4p+21, 0x1.b5045ap-20
+0x1.e6f334p+105, 0x1.190ccap-104
+0x1.401de4p-87, 0x1.bfe21ap+88
+0x1.598844p+43, 0x1.a677bap-42
+0x1.f7b3b2p+26, 0x1.084c4cp-25
+0x1.b88bc8p-46, 0x1.477436p+47
+0x1.5f115ap-19, 0x1.a0eea4p+20
+0x1.b1ca16p-8, 0x1.4e35e8p+9
+0x1.d113acp-106, 0x1.2eec52p+107
+0x1.8ff8aep-52, 0x1.70075p+53
+0x1.afc30ap-104, 0x1.503cf4p+105
+0x1.c1b018p+90, 0x1.3e4fe6p-89
+0x1.db37a6p+58, 0x1.24c858p-57
+0x1.ee2bep-109, 0x1.11d41ep+110
+0x1.f430dep+8, 0x1.0bcf2p-7
+0x1.cd3b6ep+49, 0x1.32c49p-48
+0x1.6644f4p-69, 0x1.99bb0ap+70
+0x1.dbf87ap-61, 0x1.240784p+62
+0x1.c4ab1p+91, 0x1.3b54eep-90
+0x1.27c14ap+0, 0x1.d83eb4p+1
+0x1.1a7606p+51, 0x1.e589f8p-50
+0x1.ad317p+74, 0x1.52ce8ep-73
+0x1.efefbep+49, 0x1.10104p-48
+0x1.952a86p+86, 0x1.6ad578p-85
+0x1.7c9962p+57, 0x1.83669cp-56
+0x1.a8376cp+8, 0x1.57c892p-7
+0x1.eebc66p+42, 0x1.114398p-41
+0x1.f6406ep+24, 0x1.09bf9p-23
+0x1.890b3p+26, 0x1.76f4cep-25
+0x1.8931ep+97, 0x1.76ce1ep-96
+0x1.0f9988p-64, 0x1.f06676p+65
+0x1.322528p-1, 0x1.cddad6p+2
+0x1.eb969ap-20, 0x1.146964p+21
+0x1.aef2aap-79, 0x1.510d54p+80
+0x1.217d62p+50, 0x1.de829cp-49
+0x1.7d1f82p+77, 0x1.82e07cp-76
+0x1.9d24c2p+6, 0x1.62db3cp-5
+0x1.1723a8p+38, 0x1.e8dc56p-37
+0x1.798774p+117, 0x1.86788ap-116
+0x1.7dc388p+66, 0x1.823c76p-65
+0x1.9b7dep-117, 0x1.64821ep+118
+0x1.2cf70ep+37, 0x1.d308fp-36
+0x1.629a5ep+53, 0x1.9d65ap-52
+0x1.bd01f6p-82, 0x1.42fe08p+83
+0x1.9f5eeap-46, 0x1.60a114p+47
+0x1.d493ecp-16, 0x1.2b6c12p+17
+0x1.c1e3b4p-123, 0x1.3e1c4ap+124
+0x1.76bc6cp-39, 0x1.894392p+40
+0x1.5562cep+58, 0x1.aa9d3p-57
+0x1.4a6dd2p-45, 0x1.b5922cp+46
+0x1.9614d2p-44, 0x1.69eb2cp+45
+0x1.7780b6p-15, 0x1.887f48p+16
+0x1.aca5cep-69, 0x1.535a3p+70
+0x1.8a5e72p-31, 0x1.75a18cp+32
+0x1.97a13cp+51, 0x1.685ec2p-50
+0x1.860102p-113, 0x1.79fefcp+114
+0x1.f23ad2p+96, 0x1.0dc52cp-95
+0x1.a5eee2p-101, 0x1.5a111cp+102
+0x1.bdd65p+9, 0x1.4229aep-8
+0x1.d29d74p+54, 0x1.2d628ap-53
+0x1.31ea26p-78, 0x1.ce15d8p+79
+0x1.d92becp-16, 0x1.26d412p+17
+0x1.0a8a08p-27, 0x1.f575f6p+28
+0x1.d9454ap+42, 0x1.26bab4p-41
+0x1.1f22bcp-64, 0x1.e0dd42p+65
+0x1.658d2ap-80, 0x1.9a72d4p+81
+0x1.115eccp-75, 0x1.eea132p+76
+0x1.f7bcdp-40, 0x1.08432ep+41
+0x1.df5cb8p-4, 0x1.20a346p+5
+0x1.db34c2p-84, 0x1.24cb3cp+85
+0x1.8b6c9ap+25, 0x1.749364p-24
+0x1.75ccfap+2, 0x1.8a3304p-1
+0x1.46e8fep-76, 0x1.b917p+77
+0x1.85d8fcp+74, 0x1.7a2702p-73
+0x1.919a54p+67, 0x1.6e65aap-66
+0x1.f9ba04p+119, 0x1.0645fap-118
+0x1.2e12fap-29, 0x1.d1ed04p+30
+0x1.b95fbp+33, 0x1.46a04ep-32
+0x1.22470ap-40, 0x1.ddb8f4p+41
+0x1.3911a6p+9, 0x1.c6ee58p-8
+0x1.b58252p-96, 0x1.4a7dacp+97
+0x1.6ef9fap-66, 0x1.910604p+67
+0x1.36caaap+48, 0x1.c93554p-47
+0x1.f89192p-53, 0x1.076e6cp+54
+0x1.72d004p-119, 0x1.8d2ffap+120
+0x1.cd1524p+44, 0x1.32eadap-43
+0x1.2cbb4ap-119, 0x1.d344b4p+120
+0x1.8bb922p+110, 0x1.7446dcp-109
+0x1.3bb64p+28, 0x1.c449bep-27
+0x1.a5a386p+60, 0x1.5a5c78p-59
+0x1.ec5c34p-101, 0x1.13a3cap+102
+0x1.90a844p-83, 0x1.6f57bap+84
+0x1.22915ap-80, 0x1.dd6ea4p+81
+0x1.c218fp+4, 0x1.3de70ep-3
+0x1.c404dp-63, 0x1.3bfb2ep+64
+0x1.3ff956p+52, 0x1.c006a8p-51
+0x1.9cbddep-9, 0x1.63422p+10
+0x1.8c73ep-47, 0x1.738c1ep+48
+0x1.ae2fcep-91, 0x1.51d03p+92
+0x1.08a1d8p+20, 0x1.f75e26p-19
+0x1.42486cp-45, 0x1.bdb792p+46
+0x1.d07fcap-69, 0x1.2f8034p+70
+0x1.16b122p-2, 0x1.e94edcp+3
+0x1.f055f8p-123, 0x1.0faa06p+124
+0x1.cdb668p-80, 0x1.324996p+81
+0x1.111c0cp+3, 0x1.eee3f2p-2
+0x1.54cd7cp+127, 0x1.ab3282p-126
+0x1.0481ep-111, 0x1.fb7e1ep+112
+0x1.3f8426p-83, 0x1.c07bd8p+84
+0x1.1a5cb6p-105, 0x1.e5a348p+106
+0x1.8052e8p+38, 0x1.7fad16p-37
+0x1.82d44ap+85, 0x1.7d2bb4p-84
+0x1.a82cfcp+76, 0x1.57d302p-75
+0x1.11f7ap+92, 0x1.ee085ep-91
+0x1.56da8cp+90, 0x1.a92572p-89
+0x1.bdd2e2p-37, 0x1.422d1cp+38
+0x1.64ba5cp+0, 0x1.9b45a2p+1
+0x1.cccaecp-45, 0x1.333512p+46
+0x1.d0aee6p+93, 0x1.2f5118p-92
+0x1.7af9d8p-14, 0x1.850626p+15
+0x1.c3b934p-27, 0x1.3c46cap+28
+0x1.15a82ep+59, 0x1.ea57dp-58
+0x1.d29d9ap+121, 0x1.2d6264p-120
+0x1.281818p-109, 0x1.d7e7e6p+110
+0x1.a397e4p+4, 0x1.5c681ap-3
+0x1.c5696ep+35, 0x1.3a969p-34
+0x1.9e5b5ap+0, 0x1.61a4a4p+1
+0x1.f3a0aap+90, 0x1.0c5f54p-89
+0x1.0240ep-50, 0x1.fdbf1ep+51
+0x1.d3664cp+25, 0x1.2c99b2p-24
+0x1.8ee242p+118, 0x1.711dbcp-117
+0x1.735032p-68, 0x1.8cafccp+69
+0x1.9806dap-49, 0x1.67f924p+50
+0x1.d6147ap-56, 0x1.29eb84p+57
+0x1.67033ep-42, 0x1.98fccp+43
+0x1.88ed9cp+101, 0x1.771262p-100
+0x1.7a939p+109, 0x1.856c6ep-108
+0x1.e9a282p-33, 0x1.165d7cp+34
+0x1.4f979p+46, 0x1.b0686ep-45
+0x1.f02388p-63, 0x1.0fdc76p+64
+0x1.9dfc84p-103, 0x1.62037ap+104
+0x1.955fdp+10, 0x1.6aa02ep-9
+0x1.e88ec4p+81, 0x1.17713ap-80
+0x1.caec06p-3, 0x1.3513f8p+4
+0x1.7d14f8p-102, 0x1.82eb06p+103
+0x1.17adc2p+69, 0x1.e8523cp-68
+0x1.460b06p-15, 0x1.b9f4f8p+16
+0x1.380fb4p-86, 0x1.c7f04ap+87
+0x1.22d9f6p-41, 0x1.dd2608p+42
+0x1.3a2a32p-75, 0x1.c5d5ccp+76
+0x1.9481b4p-103, 0x1.6b7e4ap+104
+0x1.15e0c2p-40, 0x1.ea1f3cp+41
+0x1.17a27ep+13, 0x1.e85d8p-12
+0x1.e6b82p-17, 0x1.1947dep+18
+0x1.0968e4p+52, 0x1.f6971ap-51
+0x1.0432d4p+70, 0x1.fbcd2ap-69
+0x1.c72ddcp-98, 0x1.38d222p+99
+0x1.9ebb76p+8, 0x1.614488p-7
+0x1.4c1d82p-55, 0x1.b3e27cp+56
+0x1.a7813ap+51, 0x1.587ec4p-50
+0x1.4fb006p+84, 0x1.b04ff8p-83
+0x1.70aacap-7, 0x1.8f5534p+8
+0x1.cfaafap-63, 0x1.305504p+64
+0x1.944d0ep+103, 0x1.6bb2fp-102
+0x1.5cdae8p-119, 0x1.a32516p+120
+0x1.38adf6p+14, 0x1.c75208p-13
+0x1.e0956p+8, 0x1.1f6a9ep-7
+0x1.4c8a56p+15, 0x1.b375a8p-14
+0x1.16318ep+87, 0x1.e9ce7p-86
+0x1.9b6c78p-50, 0x1.649386p+51
+0x1.62e414p+62, 0x1.9d1beap-61
+0x1.c914c8p-94, 0x1.36eb36p+95
+0x1.f9ab9ep+88, 0x1.06546p-87
+0x1.826546p+8, 0x1.7d9ab8p-7
+0x1.17ea4ap+113, 0x1.e815b4p-112
+0x1.e285fp-104, 0x1.1d7a0ep+105
+0x1.00e8dep+110, 0x1.ff172p-109
+0x1.fe6262p+87, 0x1.019d9cp-86
+0x1.b6ec2ap-13, 0x1.4913d4p+14
+0x1.bc7966p-87, 0x1.438698p+88
+0x1.2b62acp+29, 0x1.d49d52p-28
+0x1.dd5f0ap+64, 0x1.22a0f4p-63
+0x1.240aaap-51, 0x1.dbf554p+52
+0x1.656882p-41, 0x1.9a977cp+42
+0x1.ecd60ep-47, 0x1.1329fp+48
+0x1.51913cp+80, 0x1.ae6ec2p-79
+0x1.aef1eap-13, 0x1.510e14p+14
+0x1.917e3ep-30, 0x1.6e81cp+31
+0x1.81beb4p-85, 0x1.7e414ap+86
+0x1.414258p-6, 0x1.bebda6p+7
+0x1.90e814p+108, 0x1.6f17eap-107
+0x1.e1eb0ap+70, 0x1.1e14f4p-69
+0x1.dc1f2ap+31, 0x1.23e0d4p-30
+0x1.054174p+48, 0x1.fabe8ap-47
+0x1.d4e82ap-120, 0x1.2b17d4p+121
+0x1.279eecp+41, 0x1.d86112p-40
+0x1.93d8f2p+70, 0x1.6c270cp-69
+0x1.24ed42p+6, 0x1.db12bcp-5
+0x1.4b9406p-34, 0x1.b46bf8p+35
+0x1.78c0fcp+21, 0x1.873f02p-20
+0x1.9f1b92p-89, 0x1.60e46cp+90
+0x1.9fc25ep+114, 0x1.603dap-113
+0x1.19b01ap+67, 0x1.e64fe4p-66
+0x1.de2ef8p-36, 0x1.21d106p+37
+0x1.a41c6ep+115, 0x1.5be39p-114
+0x1.e84796p-93, 0x1.17b868p+94
+0x1.8ae998p+110, 0x1.751666p-109
+0x1.9c61bp+48, 0x1.639e4ep-47
+0x1.0c8506p+5, 0x1.f37af8p-4
+0x1.5793e2p+62, 0x1.a86c1cp-61
+0x1.2e2f68p-125, 0x1.d1d096p+126
+0x1.32e52p-89, 0x1.cd1adep+90
+0x1.fa0034p-125, 0x1.05ffcap+126
+0x1.62a642p+33, 0x1.9d59bcp-32
+0x1.42d33p+5, 0x1.bd2ccep-4
+0x1.fb961cp-45, 0x1.0469e2p+46
+0x1.dd9826p+39, 0x1.2267d8p-38
+0x1.0d06a4p-18, 0x1.f2f95ap+19
+0x1.8202d2p-72, 0x1.7dfd2cp+73
+0x1.17b5bp-50, 0x1.e84a4ep+51
+0x1.2cc5a2p-100, 0x1.d33a5cp+101
+0x1.606d7ap-15, 0x1.9f9284p+16
+0x1.f2d44p+88, 0x1.0d2bbep-87
+0x1.6fbe86p+102, 0x1.904178p-101
+0x1.eb981p-79, 0x1.1467eep+80
+0x1.2b938ap+35, 0x1.d46c74p-34
+0x1.26faaap+49, 0x1.d90554p-48
+0x1.c473e2p+84, 0x1.3b8c1cp-83
+0x1.cacef2p+70, 0x1.35310cp-69
+0x1.26d82p+29, 0x1.d927dep-28
+0x1.53e968p-117, 0x1.ac1696p+118
+0x1.40413ep-86, 0x1.bfbecp+87
+0x1.eb3c0ap-104, 0x1.14c3f4p+105
+0x1.a94daap+94, 0x1.56b254p-93
+0x1.24efcp-2, 0x1.db103ep+3
+0x1.22f862p+67, 0x1.dd079cp-66
+0x1.b2cb7p-97, 0x1.4d348ep+98
+0x1.f3f1c6p+32, 0x1.0c0e38p-31
+0x1.ad5edp-76, 0x1.52a12ep+77
+0x1.1c8e2p-82, 0x1.e371dep+83
+0x1.1f84bap-13, 0x1.e07b44p+14
+0x1.a15692p-21, 0x1.5ea96cp+22
+0x1.a601aap+26, 0x1.59fe54p-25
+0x1.947ccep-25, 0x1.6b833p+26
+0x1.d71a52p+7, 0x1.28e5acp-6
+0x1.f84216p+114, 0x1.07bde8p-113
+0x1.8c5ceep+31, 0x1.73a31p-30
+0x1.8a3c8ap-108, 0x1.75c374p+109
+0x1.427b88p+59, 0x1.bd8476p-58
+0x1.923b24p+59, 0x1.6dc4dap-58
+0x1.9922d2p-1, 0x1.66dd2cp+2
+0x1.b10728p+103, 0x1.4ef8d6p-102
+0x1.e6455ep+66, 0x1.19baap-65
+0x1.d43a7ep+72, 0x1.2bc58p-71
+0x1.2e4d6cp-39, 0x1.d1b292p+40
+0x1.60393ap+26, 0x1.9fc6c4p-25
+0x1.f5c7fep-98, 0x1.0a38p+99
+0x1.2ac998p-74, 0x1.d53666p+75
+0x1.3fb746p+38, 0x1.c048b8p-37
+0x1.65c05p+119, 0x1.9a3faep-118
+0x1.a46094p+57, 0x1.5b9f6ap-56
+0x1.4a3f5ep+66, 0x1.b5c0ap-65
+0x1.101f04p+57, 0x1.efe0fap-56
+0x1.304a1p-72, 0x1.cfb5eep+73
+0x1.20351ep-19, 0x1.dfcaep+20
+0x1.7d264cp+124, 0x1.82d9b2p-123
+0x1.40a79ap-124, 0x1.bf5864p+125
+0x1.023358p+75, 0x1.fdcca6p-74
+0x1.d1c8dcp+25, 0x1.2e3722p-24
+0x1.c1f5d2p-36, 0x1.3e0a2cp+37
+0x1.992c26p-121, 0x1.66d3d8p+122
+0x1.02f886p-24, 0x1.fd0778p+25
+0x1.b56958p+61, 0x1.4a96a6p-60
+0x1.3ac298p+118, 0x1.c53d66p-117
+0x1.d1e678p+47, 0x1.2e1986p-46
+0x1.7e5d08p-107, 0x1.81a2f6p+108
+0x1.6d646ep-91, 0x1.929b9p+92
+0x1.f4efbcp+13, 0x1.0b1042p-12
+0x1.bfefd6p-26, 0x1.401028p+27
+0x1.c6326ep-34, 0x1.39cd9p+35
+0x1.5d719ap+6, 0x1.a28e64p-5
+0x1.75c8a6p-66, 0x1.8a3758p+67
+0x1.74fc64p+60, 0x1.8b039ap-59
+0x1.a08074p-59, 0x1.5f7f8ap+60
+0x1.a93bd4p-107, 0x1.56c42ap+108
+0x1.b4d86ep-116, 0x1.4b279p+117
+0x1.43ae4cp-38, 0x1.bc51b2p+39
+0x1.454876p+107, 0x1.bab788p-106
+0x1.f47dacp-124, 0x1.0b8252p+125
+0x1.ae331cp-118, 0x1.51cce2p+119
+0x1.f455fcp+82, 0x1.0baa02p-81
+0x1.83ec98p+105, 0x1.7c1366p-104
+0x1.b3e9b2p-110, 0x1.4c164cp+111
+0x1.507518p+34, 0x1.af8ae6p-33
+0x1.dc0f76p+82, 0x1.23f088p-81
+0x1.566114p-41, 0x1.a99eeap+42
+0x1.800622p-69, 0x1.7ff9dcp+70
+0x1.a6ad18p-96, 0x1.5952e6p+97
+0x1.033e38p+110, 0x1.fcc1c6p-109
+0x1.f7dc52p+42, 0x1.0823acp-41
+0x1.d980eap+108, 0x1.267f14p-107
+0x1.4f8d0ap-32, 0x1.b072f4p+33
+0x1.e6df4p-121, 0x1.1920bep+122
+0x1.66bdcep-116, 0x1.99423p+117
+0x1.4f0fap-35, 0x1.b0f05ep+36
+0x1.39e1e8p+98, 0x1.c61e16p-97
+0x1.8f778p-15, 0x1.70887ep+16
+0x1.217e62p+4, 0x1.de819cp-3
+0x1.db889p-55, 0x1.24776ep+56
+0x1.9aa4c6p+105, 0x1.655b38p-104
+0x1.e4ddeap-62, 0x1.1b2214p+63
+0x1.87d856p-2, 0x1.7827a8p+3
+0x1.5fc8bap-70, 0x1.a03744p+71
+0x1.b0938cp-37, 0x1.4f6c72p+38
+0x1.b4cb7cp+27, 0x1.4b3482p-26
+0x1.f120bep-16, 0x1.0edf4p+17
+0x1.1bf26ep+23, 0x1.e40d9p-22
+0x1.dfd9d6p+117, 0x1.202628p-116
+0x1.7e88b4p+53, 0x1.81774ap-52
+0x1.d2efaep+88, 0x1.2d105p-87
+0x1.1f5444p+3, 0x1.e0abbap-2
+0x1.8e4c5p-31, 0x1.71b3aep+32
+0x1.39bb7p+76, 0x1.c6448ep-75
+0x1.219d22p-77, 0x1.de62dcp+78
+0x1.590fb6p+98, 0x1.a6f048p-97
+0x1.94bfe2p-103, 0x1.6b401cp+104
+0x1.26abb2p-126, 0x1.d9544cp+127
+0x1.ee12f2p+15, 0x1.11ed0cp-14
+0x1.2a9082p-118, 0x1.d56f7cp+119
+0x1.e31f6p+54, 0x1.1ce09ep-53
+0x1.f06f6cp+39, 0x1.0f9092p-38
+0x1.ff8652p-15, 0x1.0079acp+16
+0x1.ebeb9ep+14, 0x1.14146p-13
+0x1.5923eap-55, 0x1.a6dc14p+56
+0x1.667334p+124, 0x1.998ccap-123
+0x1.3f5428p-103, 0x1.c0abd6p+104
+0x1.9d274ep+5, 0x1.62d8bp-4
+0x1.a6d554p+104, 0x1.592aaap-103
+0x1.36d8f2p-101, 0x1.c9270cp+102
+0x1.029b1ep+116, 0x1.fd64ep-115
+0x1.d331fep+59, 0x1.2ccep-58
+0x1.c774d6p-40, 0x1.388b28p+41
+0x1.60d28p-47, 0x1.9f2d7ep+48
+0x1.950294p+64, 0x1.6afd6ap-63
+0x1.f2c1eap+15, 0x1.0d3e14p-14
+0x1.0ffd2p+123, 0x1.f002dep-122
+0x1.1bca14p-84, 0x1.e435eap+85
+0x1.e482d6p-56, 0x1.1b7d28p+57
+0x1.932fdp-81, 0x1.6cd02ep+82
+0x1.794d74p+97, 0x1.86b28ap-96
+0x1.001c68p-6, 0x1.ffe396p+7
+0x1.0429bep-82, 0x1.fbd64p+83
+0x1.bb3dcp-68, 0x1.44c23ep+69
+0x1.6f9d08p+66, 0x1.9062f6p-65
+0x1.be4a1p+29, 0x1.41b5eep-28
+0x1.5b1a2ap+78, 0x1.a4e5d4p-77
+0x1.ba00dp-118, 0x1.45ff2ep+119
+0x1.b7acd2p-67, 0x1.48532cp+68
+0x1.512b22p-116, 0x1.aed4dcp+117
+0x1.90e9a4p-40, 0x1.6f165ap+41
+0x1.ad22b6p-20, 0x1.52dd48p+21
+0x1.aa0c7ep-59, 0x1.55f38p+60
+0x1.9a465cp+20, 0x1.65b9a2p-19
+0x1.4e9998p+88, 0x1.b16666p-87
+0x1.e59d48p-38, 0x1.1a62b6p+39
+0x1.92b2e4p+84, 0x1.6d4d1ap-83
+0x1.854e08p+93, 0x1.7ab1f6p-92
+0x1.bb456ap-77, 0x1.44ba94p+78
+0x1.306daep-118, 0x1.cf925p+119
+0x1.d2f0b2p-4, 0x1.2d0f4cp+5
+0x1.777d62p+102, 0x1.88829cp-101
+0x1.d62e14p+26, 0x1.29d1eap-25
+0x1.082474p+116, 0x1.f7db8ap-115
+0x1.1605a2p-93, 0x1.e9fa5cp+94
+0x1.9ce85ep+94, 0x1.6317ap-93
+0x1.6a11a6p+2, 0x1.95ee58p-1
+0x1.dc7e24p+56, 0x1.2381dap-55
+0x1.dc5804p+72, 0x1.23a7fap-71
+0x1.810356p-41, 0x1.7efca8p+42
+0x1.e40954p+117, 0x1.1bf6aap-116
+0x1.7e53eep+18, 0x1.81ac1p-17
+0x1.e4c704p-59, 0x1.1b38fap+60
+0x1.e98316p-32, 0x1.167ce8p+33
+0x1.b1aa7ap+20, 0x1.4e5584p-19
+0x1.bc3d3p-108, 0x1.43c2cep+109
+0x1.1e594cp-30, 0x1.e1a6b2p+31
+0x1.68e29cp+90, 0x1.971d62p-89
+0x1.8893ep-6, 0x1.776c1ep+7
+0x1.51775p-109, 0x1.ae88aep+110
+0x1.59596ap-122, 0x1.a6a694p+123
+0x1.91508ap-48, 0x1.6eaf74p+49
+0x1.3053aap+95, 0x1.cfac54p-94
+0x1.7d66e6p-118, 0x1.829918p+119
+0x1.429baep+40, 0x1.bd645p-39
+0x1.f2b6c4p+76, 0x1.0d493ap-75
+0x1.a657fcp+104, 0x1.59a802p-103
+0x1.5a9586p+14, 0x1.a56a78p-13
+0x1.8f260ep-123, 0x1.70d9fp+124
+0x1.c660e8p-4, 0x1.399f16p+5
+0x1.36ba6cp+111, 0x1.c94592p-110
+0x1.fa7a32p-23, 0x1.0585ccp+24
+0x1.b42b6ep-33, 0x1.4bd49p+34
+0x1.7461f8p-35, 0x1.8b9e06p+36
+0x1.e4dd92p-79, 0x1.1b226cp+80
+0x1.e947f4p+112, 0x1.16b80ap-111
+0x1.aad54p+60, 0x1.552abep-59
+0x1.20fc96p-74, 0x1.df0368p+75
+0x1.e6d2cep+125, 0x1.192d3p-124
+0x1.8597bep-87, 0x1.7a684p+88
+0x1.fa0a0ep+62, 0x1.05f5fp-61
+0x1.ed51c8p+115, 0x1.12ae36p-114
+0x1.e36a08p+52, 0x1.1c95f6p-51
+0x1.eb8e72p+31, 0x1.14718cp-30
+0x1.b5d40ap+110, 0x1.4a2bf4p-109
+0x1.9785f4p-63, 0x1.687a0ap+64
+0x1.52d5e6p-105, 0x1.ad2a18p+106
+0x1.08ca16p+50, 0x1.f735e8p-49
+0x1.e6f94p-15, 0x1.1906bep+16
+0x1.680b22p-83, 0x1.97f4dcp+84
+0x1.7e3be2p-42, 0x1.81c41cp+43
+0x1.846b96p-107, 0x1.7b9468p+108
+0x1.d98136p+32, 0x1.267ec8p-31
+0x1.00b036p-86, 0x1.ff4fc8p+87
+0x1.7d3412p-63, 0x1.82cbecp+64
+0x1.75d098p+105, 0x1.8a2f66p-104
+0x1.5e476cp-90, 0x1.a1b892p+91
+0x1.a553ep-88, 0x1.5aac1ep+89
+0x1.966c4p-19, 0x1.6993bep+20
+0x1.9a3512p+78, 0x1.65caecp-77
+0x1.9f0daap-120, 0x1.60f254p+121
+0x1.e3acb4p+99, 0x1.1c534ap-98
+0x1.b2909ep+9, 0x1.4d6f6p-8
+0x1.5da1dap+86, 0x1.a25e24p-85
+0x1.9870f4p-37, 0x1.678f0ap+38
+0x1.160f48p-85, 0x1.e9f0b6p+86
+0x1.1f667ep+41, 0x1.e0998p-40
+0x1.aa233ep-87, 0x1.55dccp+88
+0x1.57b1f4p-97, 0x1.a84e0ap+98
+0x1.375d9ep-24, 0x1.c8a26p+25
+0x1.56e386p+123, 0x1.a91c78p-122
+0x1.6c0aa2p-40, 0x1.93f55cp+41
+0x1.22be82p+57, 0x1.dd417cp-56
+0x1.4c3d96p-119, 0x1.b3c268p+120
+0x1.83bca6p+73, 0x1.7c4358p-72
+0x1.ab9eap-21, 0x1.54615ep+22
+0x1.e9c6c4p+72, 0x1.16393ap-71
+0x1.7e00dcp-73, 0x1.81ff22p+74
+0x1.0597c8p-107, 0x1.fa6836p+108
+0x1.b25f62p-113, 0x1.4da09cp+114
+0x1.a88076p+42, 0x1.577f88p-41
+0x1.80fbdep-82, 0x1.7f042p+83
+0x1.9a274ep+11, 0x1.65d8bp-10
+0x1.fee746p-60, 0x1.0118b8p+61
+0x1.f6bbfcp+104, 0x1.094402p-103
+0x1.025a6p-26, 0x1.fda59ep+27
+0x1.c5a9f2p-80, 0x1.3a560cp+81
+0x1.a5fd1p-98, 0x1.5a02eep+99
+0x1.7e8496p-90, 0x1.817b68p+91
+0x1.ebfc08p-72, 0x1.1403f6p+73
+0x1.29813cp-77, 0x1.d67ec2p+78
+0x1.09271ap-74, 0x1.f6d8e4p+75
+0x1.2ae492p+118, 0x1.d51b6cp-117
+0x1.2f8fc8p-117, 0x1.d07036p+118
+0x1.95a666p+63, 0x1.6a5998p-62
+0x1.426f0ep-44, 0x1.bd90fp+45
+0x1.10783cp-61, 0x1.ef87c2p+62
+0x1.612eb6p+56, 0x1.9ed148p-55
+0x1.fdc84ep-33, 0x1.0237bp+34
+0x1.fc9afcp-70, 0x1.036502p+71
+0x1.27798ap+56, 0x1.d88674p-55
+0x1.0e1a98p-123, 0x1.f1e566p+124
+0x1.194662p-22, 0x1.e6b99cp+23
+0x1.773f6ap+111, 0x1.88c094p-110
+0x1.6ba2c6p-59, 0x1.945d38p+60
+0x1.d7b412p+22, 0x1.284becp-21
+0x1.2b3578p-12, 0x1.d4ca86p+13
+0x1.7684acp+121, 0x1.897b52p-120
+0x1.4788p-21, 0x1.b877fep+22
+0x1.6ad0fp+25, 0x1.952f0ep-24
+0x1.e06cbp-34, 0x1.1f934ep+35
+0x1.db458ep+110, 0x1.24ba7p-109
+0x1.13b734p-122, 0x1.ec48cap+123
+0x1.9d55eap-125, 0x1.62aa14p+126
+0x1.6818bep+66, 0x1.97e74p-65
+0x1.e1a4b2p+60, 0x1.1e5b4cp-59
+0x1.b1fb1cp-84, 0x1.4e04e2p+85
+0x1.f89feep+72, 0x1.07601p-71
+0x1.8f1094p+104, 0x1.70ef6ap-103
+0x1.3a96aep-22, 0x1.c5695p+23
+0x1.909c68p-71, 0x1.6f6396p+72
+0x1.f9148ap-107, 0x1.06eb74p+108
+0x1.8b6a5ap-50, 0x1.7495a4p+51
+0x1.6ee394p+82, 0x1.911c6ap-81
+0x1.263a3ap+26, 0x1.d9c5c4p-25
+0x1.3f9f64p+20, 0x1.c0609ap-19
+0x1.28e8fcp+28, 0x1.d71702p-27
+0x1.6390f6p-96, 0x1.9c6f08p+97
+0x1.b2cea8p-102, 0x1.4d3156p+103
+0x1.0a69bep+7, 0x1.f5964p-6
+0x1.98616cp-9, 0x1.679e92p+10
+0x1.10ef6ap-121, 0x1.ef1094p+122
+0x1.5f6626p+29, 0x1.a099d8p-28
+0x1.1456dep-4, 0x1.eba92p+5
+0x1.cd06a2p-106, 0x1.32f95cp+107
+0x1.32519ap-18, 0x1.cdae64p+19
+0x1.8603ecp-40, 0x1.79fc12p+41
+0x1.e92de8p+39, 0x1.16d216p-38
+0x1.8b36cap-101, 0x1.74c934p+102
+0x1.8677bcp-57, 0x1.798842p+58
+0x1.e3ef42p+92, 0x1.1c10bcp-91
+0x1.fffefp-65, 0x1.00010ep+66
+0x1.6eb2dcp+38, 0x1.914d22p-37
+0x1.43b81ap+119, 0x1.bc47e4p-118
+0x1.811d9cp-47, 0x1.7ee262p+48
+0x1.3424fcp-10, 0x1.cbdb02p+11
+0x1.849368p+31, 0x1.7b6c96p-30
+0x1.a7ba6cp-59, 0x1.584592p+60
+0x1.73cbep-20, 0x1.8c341ep+21
+0x1.47a744p-108, 0x1.b858bap+109
+0x1.495c74p+28, 0x1.b6a38ap-27
+0x1.be5bf6p-38, 0x1.41a408p+39
+0x1.a2f6aep+9, 0x1.5d095p-8
+0x1.f6531p+21, 0x1.09aceep-20
+0x1.785068p+92, 0x1.87af96p-91
+0x1.62d3a2p+114, 0x1.9d2c5cp-113
+0x1.61117cp-85, 0x1.9eee82p+86
+0x1.6a0272p-96, 0x1.95fd8cp+97
+0x1.bf973p+72, 0x1.4068cep-71
+0x1.806d62p+1, 0x1.7f929cp+0
+0x1.bbf4e6p-40, 0x1.440b18p+41
+0x1.49eacep-126, 0x1.b6153p+127
+0x1.9cee4ap-36, 0x1.6311b4p+37
+0x1.11eab2p+42, 0x1.ee154cp-41
+0x1.dc42cap-80, 0x1.23bd34p+81
+0x1.37a654p+10, 0x1.c859aap-9
+0x1.d9a2aep-31, 0x1.265d5p+32
+0x1.f544bcp+72, 0x1.0abb42p-71
+0x1.747ebap-26, 0x1.8b8144p+27
+0x1.97672p+59, 0x1.6898dep-58
+0x1.ab11a8p-32, 0x1.54ee56p+33
+0x1.e0c58p+57, 0x1.1f3a7ep-56
+0x1.97dbd2p-16, 0x1.68242cp+17
+0x1.e7e7e6p-83, 0x1.181818p+84
+0x1.c5f0dcp+120, 0x1.3a0f22p-119
+0x1.9ad7fp-36, 0x1.65280ep+37
+0x1.f54b5cp+77, 0x1.0ab4a2p-76
+0x1.7f7938p-31, 0x1.8086c6p+32
+0x1.e4670ap-101, 0x1.1b98f4p+102
+0x1.91e566p+127, 0x1.6e1a98p-126
+0x1.93e6acp+0, 0x1.6c1952p+1
+0x1.99f876p-93, 0x1.660788p+94
+0x1.0a96aap+99, 0x1.f56954p-98
+0x1.be05ep-92, 0x1.41fa1ep+93
+0x1.14fe78p+56, 0x1.eb0186p-55
+0x1.2b91bap+121, 0x1.d46e44p-120
+0x1.0732a8p+45, 0x1.f8cd56p-44
+0x1.6f4fa8p+113, 0x1.90b056p-112
+0x1.bb811cp+55, 0x1.447ee2p-54
+0x1.0c886p-55, 0x1.f3779ep+56
+0x1.cc942p+18, 0x1.336bdep-17
+0x1.7383cap-4, 0x1.8c7c34p+5
+0x1.7fed5ap+38, 0x1.8012a4p-37
+0x1.d1ff58p+84, 0x1.2e00a6p-83
+0x1.b6bf12p-19, 0x1.4940ecp+20
+0x1.6428eap-62, 0x1.9bd714p+63
+0x1.7052aep-5, 0x1.8fad5p+6
+0x1.65c2f6p+8, 0x1.9a3d08p-7
+0x1.5b5d58p+100, 0x1.a4a2a6p-99
+0x1.d1d642p+60, 0x1.2e29bcp-59
+0x1.6206ep-94, 0x1.9df91ep+95
+0x1.a0c2b8p+8, 0x1.5f3d46p-7
+0x1.d52bd4p-54, 0x1.2ad42ap+55
+0x1.aeea02p-68, 0x1.5115fcp+69
+0x1.43ab2cp-36, 0x1.bc54d2p+37
+0x1.30b63ap-21, 0x1.cf49c4p+22
+0x1.99c0dap-53, 0x1.663f24p+54
+0x1.243f7cp+35, 0x1.dbc082p-34
+0x1.993b76p-93, 0x1.66c488p+94
+0x1.57aadp-96, 0x1.a8552ep+97
+0x1.f9573ap-22, 0x1.06a8c4p+23
+0x1.8cd808p+17, 0x1.7327f6p-16
+0x1.6be9aap-105, 0x1.941654p+106
+0x1.20f13cp-66, 0x1.df0ec2p+67
+0x1.9616c2p+48, 0x1.69e93cp-47
+0x1.b61cfap-82, 0x1.49e304p+83
+0x1.7b6aeap-22, 0x1.849514p+23
+0x1.35b1b8p+108, 0x1.ca4e46p-107
+0x1.1b481p-64, 0x1.e4b7eep+65
+0x1.adb43ap+108, 0x1.524bc4p-107
+0x1.f8a086p-17, 0x1.075f78p+18
+0x1.723f82p-22, 0x1.8dc07cp+23
+0x1.7d2036p+65, 0x1.82dfc8p-64
+0x1.9395f8p+17, 0x1.6c6a06p-16
+0x1.a94e68p-96, 0x1.56b196p+97
+0x1.efda8cp+36, 0x1.102572p-35
+0x1.8e1afap+20, 0x1.71e504p-19
+0x1.7cc948p-4, 0x1.8336b6p+5
+0x1.d89f2cp+1, 0x1.2760d2p+0
+0x1.8ddcd2p+98, 0x1.72232cp-97
+0x1.5d1a28p+27, 0x1.a2e5d6p-26
+0x1.72f73p-109, 0x1.8d08cep+110
+0x1.d5e88p-12, 0x1.2a177ep+13
+0x1.6fb246p+88, 0x1.904db8p-87
+0x1.4538cap-18, 0x1.bac734p+19
+0x1.2fb016p-29, 0x1.d04fe8p+30
+0x1.757448p-35, 0x1.8a8bb6p+36
+0x1.3fbf5ep+3, 0x1.c040ap-2
+0x1.26018p+79, 0x1.d9fe7ep-78
+0x1.3e0676p+0, 0x1.c1f988p+1
+0x1.ad31f6p-39, 0x1.52ce08p+40
+0x1.8c9cc4p+48, 0x1.73633ap-47
+0x1.9ef8fap-32, 0x1.610704p+33
+0x1.3a8bf6p+34, 0x1.c57408p-33
+0x1.f671d6p+39, 0x1.098e28p-38
+0x1.e739aap+127, 0x1.18c654p-126
+0x1.69c222p+72, 0x1.963ddcp-71
+0x1.f21d78p+29, 0x1.0de286p-28
+0x1.9d2282p-27, 0x1.62dd7cp+28
+0x1.207acp-79, 0x1.df853ep+80
+0x1.159a14p+99, 0x1.ea65eap-98
+0x1.60e2dap-117, 0x1.9f1d24p+118
+0x1.dc3b8ep+8, 0x1.23c47p-7
+0x1.285c08p-29, 0x1.d7a3f6p+30
+0x1.f23d02p-44, 0x1.0dc2fcp+45
+0x1.dec172p-49, 0x1.213e8cp+50
+0x1.ab42cep-119, 0x1.54bd3p+120
+0x1.7681fcp+116, 0x1.897e02p-115
+0x1.ee0cecp+66, 0x1.11f312p-65
+0x1.c2651p-59, 0x1.3d9aeep+60
+0x1.cb3ecep+78, 0x1.34c13p-77
+0x1.0f206ap+51, 0x1.f0df94p-50
+0x1.45af9ep-9, 0x1.ba506p+10
+0x1.302f6ap+93, 0x1.cfd094p-92
+0x1.01b3cp-21, 0x1.fe4c3ep+22
+0x1.901dfap+102, 0x1.6fe204p-101
+0x1.3830c2p-22, 0x1.c7cf3cp+23
+0x1.dacb16p+4, 0x1.2534e8p-3
+0x1.f24018p-78, 0x1.0dbfe6p+79
+0x1.2e76f2p+20, 0x1.d1890cp-19
+0x1.c52962p-12, 0x1.3ad69cp+13
+0x1.ecca78p+0, 0x1.133586p+1
+0x1.d724p-35, 0x1.28dbfep+36
+0x1.544dbcp+8, 0x1.abb242p-7
+0x1.74a702p+36, 0x1.8b58fcp-35
+0x1.ee854cp+36, 0x1.117ab2p-35
+0x1.9628a8p+23, 0x1.69d756p-22
+0x1.828be4p+118, 0x1.7d741ap-117
+0x1.4fec4cp-16, 0x1.b013b2p+17
+0x1.a609b6p-39, 0x1.59f648p+40
+0x1.c0fd64p+121, 0x1.3f029ap-120
+0x1.140d66p+114, 0x1.ebf298p-113
+0x1.8d6a08p-84, 0x1.7295f6p+85
+0x1.8c442p-24, 0x1.73bbdep+25
+0x1.4e441ap+29, 0x1.b1bbe4p-28
+0x1.302c82p+60, 0x1.cfd37cp-59
+0x1.b69996p+85, 0x1.496668p-84
+0x1.e9acd6p+11, 0x1.165328p-10
+0x1.b9745p+87, 0x1.468baep-86
+0x1.f8a5dp-6, 0x1.075a2ep+7
+0x1.3f7f3ep-24, 0x1.c080cp+25
+0x1.56ab62p+68, 0x1.a9549cp-67
+0x1.35cf48p+58, 0x1.ca30b6p-57
+0x1.bf6828p-26, 0x1.4097d6p+27
+0x1.6da242p+41, 0x1.925dbcp-40
+0x1.c04746p-24, 0x1.3fb8b8p+25
+0x1.a042c8p+126, 0x1.5fbd36p-125
+0x1.9328d2p-13, 0x1.6cd72cp+14
+0x1.936acep-84, 0x1.6c953p+85
+0x1.02efe2p-59, 0x1.fd101cp+60
+0x1.37e59cp-83, 0x1.c81a62p+84
+0x1.409df6p+34, 0x1.bf6208p-33
+0x1.2d0d22p-92, 0x1.d2f2dcp+93
+0x1.d75cf2p-81, 0x1.28a30cp+82
+0x1.a69fa2p-52, 0x1.59605cp+53
+0x1.2b39f8p+75, 0x1.d4c606p-74
+0x1.498bfap+21, 0x1.b67404p-20
+0x1.ff2a22p+44, 0x1.00d5dcp-43
+0x1.2fde0cp-77, 0x1.d021f2p+78
+0x1.5708bcp-79, 0x1.a8f742p+80
+0x1.0a56b2p-115, 0x1.f5a94cp+116
+0x1.aaa42p-48, 0x1.555bdep+49
+0x1.17a526p-100, 0x1.e85ad8p+101
+0x1.639df2p+87, 0x1.9c620cp-86
+0x1.806dbp+91, 0x1.7f924ep-90
+0x1.e070aep+78, 0x1.1f8f5p-77
+0x1.a826dep+46, 0x1.57d92p-45
+0x1.4c36cp-70, 0x1.b3c93ep+71
+0x1.a2ca94p+1, 0x1.5d356ap+0
+0x1.d25226p+54, 0x1.2dadd8p-53
+0x1.a1ebdp+56, 0x1.5e142ep-55
+0x1.4823b4p+82, 0x1.b7dc4ap-81
+0x1.caf588p-85, 0x1.350a76p+86
+0x1.5b1a0cp+24, 0x1.a4e5f2p-23
+0x1.a249e8p-8, 0x1.5db616p+9
+0x1.783e3p-11, 0x1.87c1cep+12
+0x1.5d7854p+69, 0x1.a287aap-68
+0x1.81effep-82, 0x1.7e1p+83
+0x1.f41d7p-79, 0x1.0be28ep+80
+0x1.711252p+12, 0x1.8eedacp-11
+0x1.118748p+19, 0x1.ee78b6p-18
+0x1.8b3faap-63, 0x1.74c054p+64
+0x1.9ef964p+114, 0x1.61069ap-113
+0x1.04d04ap+38, 0x1.fb2fb4p-37
+0x1.b76624p+30, 0x1.4899dap-29
+0x1.830206p+53, 0x1.7cfdf8p-52
+0x1.b0084ep-112, 0x1.4ff7bp+113
+0x1.4831cep-126, 0x1.b7ce3p+127
+0x1.c2b1p+52, 0x1.3d4efep-51
+0x1.3b72b8p+33, 0x1.c48d46p-32
+0x1.d954fep+12, 0x1.26abp-11
+0x1.8cb10ap+66, 0x1.734ef4p-65
+0x1.417df6p-1, 0x1.be8208p+2
+0x1.8f514cp+84, 0x1.70aeb2p-83
+0x1.71d5dcp-66, 0x1.8e2a22p+67
+0x1.6f90acp-88, 0x1.906f52p+89
+0x1.305f16p+27, 0x1.cfa0e8p-26
+0x1.ddfe3ep-120, 0x1.2201cp+121
+0x1.bc42e6p-100, 0x1.43bd18p+101
+0x1.8c1ab2p-65, 0x1.73e54cp+66
+0x1.246106p+80, 0x1.db9ef8p-79
+0x1.d9e86cp-56, 0x1.261792p+57
+0x1.bce34ap+0, 0x1.431cb4p+1
+0x1.1d3c18p+112, 0x1.e2c3e6p-111
+0x1.c9912ap-100, 0x1.366ed4p+101
+0x1.bc9928p+57, 0x1.4366d6p-56
+0x1.eb4624p+61, 0x1.14b9dap-60
+0x1.afd7b4p-102, 0x1.50284ap+103
+0x1.542388p-87, 0x1.abdc76p+88
+0x1.8da56cp+126, 0x1.725a92p-125
+0x1.1002bep+92, 0x1.effd4p-91
+0x1.eca38ap-93, 0x1.135c74p+94
+0x1.98ab6p-83, 0x1.67549ep+84
+0x1.1400ecp-115, 0x1.ebff12p+116
+0x1.3cf934p+92, 0x1.c306cap-91
+0x1.472d04p-60, 0x1.b8d2fap+61
+0x1.f9664p+122, 0x1.0699bep-121
+0x1.19896ap-25, 0x1.e67694p+26
+0x1.9b48d6p-63, 0x1.64b728p+64
+0x1.3d1e3cp+62, 0x1.c2e1c2p-61
+0x1.040b04p+98, 0x1.fbf4fap-97
+0x1.f43f66p-16, 0x1.0bc098p+17
+0x1.1af37ep+40, 0x1.e50c8p-39
+0x1.20a1dp+85, 0x1.df5e2ep-84
+0x1.f3c1fp+56, 0x1.0c3e0ep-55
+0x1.ee0b58p-13, 0x1.11f4a6p+14
+0x1.14fbacp-68, 0x1.eb0452p+69
+0x1.864578p+22, 0x1.79ba86p-21
+0x1.e10752p-35, 0x1.1ef8acp+36
+0x1.e6f41ap+106, 0x1.190be4p-105
+0x1.8c92b2p-125, 0x1.736d4cp+126
+0x1.4831b6p-81, 0x1.b7ce48p+82
+0x1.79ebf2p+116, 0x1.86140cp-115
+0x1.365138p-5, 0x1.c9aec6p+6
+0x1.b6dd42p-61, 0x1.4922bcp+62
+0x1.beb89ep+98, 0x1.41476p-97
+0x1.a6f1d2p+34, 0x1.590e2cp-33
+0x1.60ea68p+70, 0x1.9f1596p-69
+0x1.3f1198p-10, 0x1.c0ee66p+11
+0x1.1bddacp+45, 0x1.e42252p-44
+0x1.ab231ap+38, 0x1.54dce4p-37
+0x1.7976c4p+126, 0x1.86893ap-125
+0x1.81dac8p-70, 0x1.7e2536p+71
+0x1.a6a72ep+32, 0x1.5958dp-31
+0x1.8cf0fcp-113, 0x1.730f02p+114
+0x1.dcbf66p-102, 0x1.234098p+103
+## name: close-exponents
+0x1.956f8p-6, 0x1.6a908p+5
+0x1.6f04cp+2, 0x1.90fb4p-3
+0x1.1e4bcp+2, 0x1.e1b44p-3
+0x1.70c54p-4, 0x1.8f3acp+3
+0x1.05f44p-9, 0x1.fa0bcp+8
+0x1.5cc9ap-9, 0x1.a3366p+8
+0x1.54a96p-2, 0x1.ab56ap+1
+0x1.52ddp-7, 0x1.ad23p+6
+0x1.60e0cp+5, 0x1.9f1f4p-6
+0x1.e5f6ep-6, 0x1.1a092p+5
+0x1.f19b6p-3, 0x1.0e64ap+2
+0x1.2c97cp-9, 0x1.d3684p+8
+0x1.d7dcap-10, 0x1.28236p+9
+0x1.1ab3ep+0, 0x1.e54c2p-1
+0x1.a8f68p-5, 0x1.57098p+4
+0x1.8c0aap+8, 0x1.73f56p-9
+0x1.81ca2p-5, 0x1.7e35ep+4
+0x1.56f88p-4, 0x1.a9078p+3
+0x1.0dd2ep+5, 0x1.f22d2p-6
+0x1.3a702p-2, 0x1.c58fep+1
+0x1.3731ep+8, 0x1.c8ce2p-9
+0x1.33818p-8, 0x1.cc7e8p+7
+0x1.dae3p+8, 0x1.251dp-9
+0x1.e0916p+7, 0x1.1f6eap-8
+0x1.e6e5cp-8, 0x1.191a4p+7
+0x1.722eep-3, 0x1.8dd12p+2
+0x1.b141ep+3, 0x1.4ebe2p-4
+0x1.0acd4p+1, 0x1.f532cp-2
+0x1.355bap-10, 0x1.caa46p+9
+0x1.0125ep+9, 0x1.feda2p-10
+0x1.968bp-9, 0x1.6975p+8
+0x1.6bd88p+6, 0x1.94278p-7
+0x1.b47c2p+9, 0x1.4b83ep-10
+0x1.cf49ap-6, 0x1.30b66p+5
+0x1.3542ep-4, 0x1.cabd2p+3
+0x1.71272p+8, 0x1.8ed8ep-9
+0x1.0254p+2, 0x1.fdacp-3
+0x1.e444ap+3, 0x1.1bbb6p-4
+0x1.2988cp-4, 0x1.d6774p+3
+0x1.1a958p-8, 0x1.e56a8p+7
+0x1.4bee6p-1, 0x1.b411ap+0
+0x1.b417ep+1, 0x1.4be82p-2
+0x1.78214p+7, 0x1.87decp-8
+0x1.93d34p-10, 0x1.6c2ccp+9
+0x1.5bc08p-3, 0x1.a43f8p+2
+0x1.985d6p+2, 0x1.67a2ap-3
+0x1.77cc2p-10, 0x1.8833ep+9
+0x1.f8d74p-8, 0x1.0728cp+7
+0x1.e535ap-7, 0x1.1aca6p+6
+0x1.9c332p-8, 0x1.63ccep+7
+0x1.cac06p-3, 0x1.353fap+2
+0x1.feb32p-1, 0x1.014cep+0
+0x1.c1878p+1, 0x1.3e788p-2
+0x1.1b534p-2, 0x1.e4accp+1
+0x1.68a0cp-9, 0x1.975f4p+8
+0x1.1f6dap-3, 0x1.e0926p+2
+0x1.a9ddap+7, 0x1.56226p-8
+0x1.8a998p-1, 0x1.75668p+0
+0x1.2579p+5, 0x1.da87p-6
+0x1.bab8ep-5, 0x1.45472p+4
+0x1.5ca34p+0, 0x1.a35ccp-1
+0x1.b0644p-3, 0x1.4f9bcp+2
+0x1.46066p+6, 0x1.b9f9ap-7
+0x1.af374p+4, 0x1.50c8cp-5
+0x1.e62f2p+7, 0x1.19d0ep-8
+0x1.725f8p-8, 0x1.8da08p+7
+0x1.6fb66p-2, 0x1.9049ap+1
+0x1.d2ed2p-7, 0x1.2d12ep+6
+0x1.0d768p+8, 0x1.f2898p-9
+0x1.eb63p-1, 0x1.149dp+0
+0x1.66814p+5, 0x1.997ecp-6
+0x1.b637ap+3, 0x1.49c86p-4
+0x1.e33aep+9, 0x1.1cc52p-10
+0x1.95214p+5, 0x1.6adecp-6
+0x1.8a11ep+0, 0x1.75ee2p-1
+0x1.e079ep-5, 0x1.1f862p+4
+0x1.757eep+6, 0x1.8a812p-7
+0x1.28b66p+2, 0x1.d749ap-3
+0x1.14926p+5, 0x1.eb6dap-6
+0x1.69034p-4, 0x1.96fccp+3
+0x1.e21a8p+5, 0x1.1de58p-6
+0x1.8102ap-4, 0x1.7efd6p+3
+0x1.8fac8p+3, 0x1.70538p-4
+0x1.a4f72p-4, 0x1.5b08ep+3
+0x1.d6736p-9, 0x1.298cap+8
+0x1.4116ep-1, 0x1.bee92p+0
+0x1.cbea2p+3, 0x1.3415ep-4
+0x1.cc6aap+6, 0x1.33956p-7
+0x1.14c12p-3, 0x1.eb3eep+2
+0x1.adec6p-7, 0x1.5213ap+6
+0x1.7f82ap-8, 0x1.807d6p+7
+0x1.af7d4p-6, 0x1.5082cp+5
+0x1.a60b6p+6, 0x1.59f4ap-7
+0x1.b8e4ep+4, 0x1.471b2p-5
+0x1.67da4p+4, 0x1.9825cp-5
+0x1.c6eeep-6, 0x1.39112p+5
+0x1.16152p+8, 0x1.e9eaep-9
+0x1.ba8e8p+5, 0x1.45718p-6
+0x1.19f5p-2, 0x1.e60bp+1
+0x1.de9e4p+6, 0x1.2161cp-7
+0x1.17e46p+1, 0x1.e81bap-2
+0x1.1b198p-10, 0x1.e4e68p+9
+0x1.e9ecep-5, 0x1.16132p+4
+0x1.0aa0ep+6, 0x1.f55f2p-7
+0x1.6c9b6p-1, 0x1.9364ap+0
+0x1.f9a4ap+1, 0x1.065b6p-2
+0x1.dd32cp-8, 0x1.22cd4p+7
+0x1.3edc4p-9, 0x1.c123cp+8
+0x1.48456p+3, 0x1.b7baap-4
+0x1.2f38p-10, 0x1.d0c8p+9
+0x1.1b316p-6, 0x1.e4ceap+5
+0x1.6df7p-3, 0x1.9209p+2
+0x1.73668p-7, 0x1.8c998p+6
+0x1.01dacp+3, 0x1.fe254p-4
+0x1.301e8p-4, 0x1.cfe18p+3
+0x1.06cfap+4, 0x1.f9306p-5
+0x1.28f26p-7, 0x1.d70dap+6
+0x1.f181cp+3, 0x1.0e7e4p-4
+0x1.b81a6p-2, 0x1.47e5ap+1
+0x1.7aa4ap+8, 0x1.855b6p-9
+0x1.afbfap-10, 0x1.50406p+9
+0x1.b0752p-7, 0x1.4f8aep+6
+0x1.3b4a2p+8, 0x1.c4b5ep-9
+0x1.60ccep-6, 0x1.9f332p+5
+0x1.63fecp+0, 0x1.9c014p-1
+0x1.e73aep-3, 0x1.18c52p+2
+0x1.a5acep-6, 0x1.5a532p+5
+0x1.5c00ep+2, 0x1.a3ff2p-3
+0x1.10096p-5, 0x1.eff6ap+4
+0x1.56f68p+9, 0x1.a9098p-10
+0x1.7c44ep+6, 0x1.83bb2p-7
+0x1.7a846p-2, 0x1.857bap+1
+0x1.21c92p+5, 0x1.de36ep-6
+0x1.ae6f4p+2, 0x1.5190cp-3
+0x1.3ef12p-5, 0x1.c10eep+4
+0x1.0242ep+1, 0x1.fdbd2p-2
+0x1.3abap-5, 0x1.c546p+4
+0x1.b1578p-10, 0x1.4ea88p+9
+0x1.933f2p+3, 0x1.6cc0ep-4
+0x1.75f98p-5, 0x1.8a068p+4
+0x1.2db1cp-1, 0x1.d24e4p+0
+0x1.87116p+7, 0x1.78eeap-8
+0x1.2ef66p-10, 0x1.d109ap+9
+0x1.a2354p+6, 0x1.5dcacp-7
+0x1.6339ep+3, 0x1.9cc62p-4
+0x1.523aap-8, 0x1.adc56p+7
+0x1.ec9fcp-6, 0x1.13604p+5
+0x1.4b0c6p+4, 0x1.b4f3ap-5
+0x1.999aap-7, 0x1.66656p+6
+0x1.304fcp-3, 0x1.cfb04p+2
+0x1.2a1ecp+9, 0x1.d5e14p-10
+0x1.a2632p-5, 0x1.5d9cep+4
+0x1.6b24p-3, 0x1.94dcp+2
+0x1.21712p-4, 0x1.de8eep+3
+0x1.cba38p+4, 0x1.345c8p-5
+0x1.3d566p-9, 0x1.c2a9ap+8
+0x1.16f9ep-10, 0x1.e9062p+9
+0x1.c037cp+4, 0x1.3fc84p-5
+0x1.e01bcp-10, 0x1.1fe44p+9
+0x1.c1a3ap-7, 0x1.3e5c6p+6
+0x1.66026p+3, 0x1.99fdap-4
+0x1.c1e9ep+1, 0x1.3e162p-2
+0x1.24c6cp+9, 0x1.db394p-10
+0x1.20dbcp+4, 0x1.df244p-5
+0x1.ca362p+8, 0x1.35c9ep-9
+0x1.427cep+9, 0x1.bd832p-10
+0x1.76d56p-6, 0x1.892aap+5
+0x1.e70e4p+1, 0x1.18f1cp-2
+0x1.cd06ap+7, 0x1.32f96p-8
+0x1.33b16p+4, 0x1.cc4eap-5
+0x1.ffca6p+3, 0x1.0035ap-4
+0x1.2313ap-10, 0x1.dcec6p+9
+0x1.15f56p-1, 0x1.ea0aap+0
+0x1.cf482p+5, 0x1.30b7ep-6
+0x1.534acp+1, 0x1.acb54p-2
+0x1.a1d5cp-2, 0x1.5e2a4p+1
+0x1.86a42p+6, 0x1.795bep-7
+0x1.0b1c2p+0, 0x1.f4e3ep-1
+0x1.643e4p+3, 0x1.9bc1cp-4
+0x1.3d36ep-4, 0x1.c2c92p+3
+0x1.1145ap-3, 0x1.eeba6p+2
+0x1.c0856p-10, 0x1.3f7aap+9
+0x1.a2966p+9, 0x1.5d69ap-10
+0x1.8f2p-8, 0x1.70ep+7
+0x1.b77p-5, 0x1.489p+4
+0x1.5f85ap-2, 0x1.a07a6p+1
+0x1.03c38p-7, 0x1.fc3c8p+6
+0x1.149ecp+5, 0x1.eb614p-6
+0x1.bd75cp+1, 0x1.428a4p-2
+0x1.ad602p-2, 0x1.529fep+1
+0x1.f8032p-8, 0x1.07fcep+7
+0x1.f87ep-7, 0x1.0782p+6
+0x1.2a15cp+2, 0x1.d5ea4p-3
+0x1.b331ep-6, 0x1.4cce2p+5
+0x1.f4c22p-10, 0x1.0b3dep+9
+0x1.a2c42p-9, 0x1.5d3bep+8
+0x1.45442p+6, 0x1.babbep-7
+0x1.b7f4ap-2, 0x1.480b6p+1
+0x1.a082ap+2, 0x1.5f7d6p-3
+0x1.e8582p+7, 0x1.17a7ep-8
+0x1.6573ap+6, 0x1.9a8c6p-7
+0x1.f2138p-10, 0x1.0dec8p+9
+0x1.5fe02p-6, 0x1.a01fep+5
+0x1.23b92p+0, 0x1.dc46ep-1
+0x1.ac45ep-5, 0x1.53ba2p+4
+0x1.8379ap-4, 0x1.7c866p+3
+0x1.e101cp-7, 0x1.1efe4p+6
+0x1.76848p-1, 0x1.897b8p+0
+0x1.360a8p+5, 0x1.c9f58p-6
+0x1.f4ecap-10, 0x1.0b136p+9
+0x1.69ca4p+5, 0x1.9635cp-6
+0x1.de358p-4, 0x1.21ca8p+3
+0x1.ced1ap+7, 0x1.312e6p-8
+0x1.40a84p+8, 0x1.bf57cp-9
+0x1.3991ep+9, 0x1.c66e2p-10
+0x1.b0224p-2, 0x1.4fddcp+1
+0x1.9e764p+4, 0x1.6189cp-5
+0x1.4babep-2, 0x1.b4542p+1
+0x1.6838p-9, 0x1.97c8p+8
+0x1.5a3f2p+8, 0x1.a5c0ep-9
+0x1.c3a18p-4, 0x1.3c5e8p+3
+0x1.70864p+8, 0x1.8f79cp-9
+0x1.84608p-4, 0x1.7b9f8p+3
+0x1.520cep-4, 0x1.adf32p+3
+0x1.b0022p-8, 0x1.4ffdep+7
+0x1.6b3ecp-3, 0x1.94c14p+2
+0x1.785dcp-2, 0x1.87a24p+1
+0x1.39056p+6, 0x1.c6faap-7
+0x1.abab6p+4, 0x1.5454ap-5
+0x1.9ea56p-10, 0x1.615aap+9
+0x1.a34bp-1, 0x1.5cb5p+0
+0x1.3f3acp+1, 0x1.c0c54p-2
+0x1.e4196p-6, 0x1.1be6ap+5
+0x1.e2432p+6, 0x1.1dbcep-7
+0x1.3b77p+1, 0x1.c489p-2
+0x1.26996p+7, 0x1.d966ap-8
+0x1.6786ap-2, 0x1.98796p+1
+0x1.bb22ap-9, 0x1.44dd6p+8
+0x1.39e9ap+1, 0x1.c6166p-2
+0x1.c49f4p-1, 0x1.3b60cp+0
+0x1.92706p+5, 0x1.6d8fap-6
+0x1.04df4p+4, 0x1.fb20cp-5
+0x1.9c2eep-9, 0x1.63d12p+8
+0x1.c6d3ep+4, 0x1.392c2p-5
+0x1.7dcfep-5, 0x1.82302p+4
+0x1.8a486p-8, 0x1.75b7ap+7
+0x1.292c8p-2, 0x1.d6d38p+1
+0x1.8d6d6p+2, 0x1.7292ap-3
+0x1.daf26p+9, 0x1.250dap-10
+0x1.a411p-2, 0x1.5befp+1
+0x1.154fep-10, 0x1.eab02p+9
+0x1.a6b74p-8, 0x1.5948cp+7
+0x1.ed6cap-1, 0x1.12936p+0
+0x1.7aa72p-1, 0x1.8558ep+0
+0x1.eab4p+5, 0x1.154cp-6
+0x1.67f2ep+6, 0x1.980d2p-7
+0x1.a5cfap-8, 0x1.5a306p+7
+0x1.0fcd4p+6, 0x1.f032cp-7
+0x1.8a42cp+9, 0x1.75bd4p-10
+0x1.4d204p+1, 0x1.b2dfcp-2
+0x1.16cbcp-8, 0x1.e9344p+7
+0x1.72ccp-6, 0x1.8d34p+5
+0x1.a930ep-9, 0x1.56cf2p+8
+0x1.9b86cp-5, 0x1.64794p+4
+0x1.930bp+0, 0x1.6cf5p-1
+0x1.56e5p-6, 0x1.a91bp+5
+0x1.6161ep-1, 0x1.9e9e2p+0
+0x1.9c0aap-10, 0x1.63f56p+9
+0x1.fdf4ep-1, 0x1.020b2p+0
+0x1.9bf1p+9, 0x1.640fp-10
+0x1.57bdap-7, 0x1.a8426p+6
+0x1.b5578p+9, 0x1.4aa88p-10
+0x1.54a36p+8, 0x1.ab5cap-9
+0x1.62b88p+5, 0x1.9d478p-6
+0x1.674cep-2, 0x1.98b32p+1
+0x1.0c85cp-8, 0x1.f37a4p+7
+0x1.f96acp+7, 0x1.06954p-8
+0x1.2ea7p-7, 0x1.d159p+6
+0x1.6b62ap-7, 0x1.949d6p+6
+0x1.0fd7cp+4, 0x1.f0284p-5
+0x1.aa498p+8, 0x1.55b68p-9
+0x1.e2ebp-4, 0x1.1d15p+3
+0x1.67256p+1, 0x1.98daap-2
+0x1.48838p+2, 0x1.b77c8p-3
+0x1.70918p-3, 0x1.8f6e8p+2
+0x1.656dep+6, 0x1.9a922p-7
+0x1.aca22p+6, 0x1.535dep-7
+0x1.6d39ap+8, 0x1.92c66p-9
+0x1.46dp+1, 0x1.b93p-2
+0x1.d2a0ep+5, 0x1.2d5f2p-6
+0x1.b4de2p+4, 0x1.4b21ep-5
+0x1.23d06p-6, 0x1.dc2fap+5
+0x1.2539p+7, 0x1.dac7p-8
+0x1.903a8p-5, 0x1.6fc58p+4
+0x1.bbef2p-2, 0x1.4410ep+1
+0x1.245c2p-7, 0x1.dba3ep+6
+0x1.a77d8p-4, 0x1.58828p+3
+0x1.6a37cp-7, 0x1.95c84p+6
+0x1.5c838p-8, 0x1.a37c8p+7
+0x1.a605p-9, 0x1.59fbp+8
+0x1.570eap-6, 0x1.a8f16p+5
+0x1.61c44p-6, 0x1.9e3bcp+5
+0x1.e95e4p-4, 0x1.16a1cp+3
+0x1.ceb14p+7, 0x1.314ecp-8
+0x1.bd2ep+8, 0x1.42d2p-9
+0x1.b5278p+5, 0x1.4ad88p-6
+0x1.ebb0cp+5, 0x1.144f4p-6
+0x1.e7294p-4, 0x1.18d6cp+3
+0x1.f4f1cp+9, 0x1.0b0e4p-10
+0x1.ef11ap+6, 0x1.10ee6p-7
+0x1.c0068p+4, 0x1.3ff98p-5
+0x1.99026p+3, 0x1.66fdap-4
+0x1.fc056p+0, 0x1.03faap-1
+0x1.25472p-3, 0x1.dab8ep+2
+0x1.e6b22p+0, 0x1.194dep-1
+0x1.dc0acp+7, 0x1.23f54p-8
+0x1.bdae4p-1, 0x1.4251cp+0
+0x1.a048ep-9, 0x1.5fb72p+8
+0x1.30164p+3, 0x1.cfe9cp-4
+0x1.947eap-5, 0x1.6b816p+4
+0x1.c0412p-7, 0x1.3fbeep+6
+0x1.99ebcp-4, 0x1.66144p+3
+0x1.abc5p+1, 0x1.543bp-2
+0x1.e60a4p+5, 0x1.19f5cp-6
+0x1.1cb86p+9, 0x1.e347ap-10
+0x1.b8be8p+5, 0x1.47418p-6
+0x1.7c084p+6, 0x1.83f7cp-7
+0x1.c5dccp+8, 0x1.3a234p-9
+0x1.acd6p+5, 0x1.532ap-6
+0x1.4b04cp+6, 0x1.b4fb4p-7
+0x1.375e2p-8, 0x1.c8a1ep+7
+0x1.6ee02p-3, 0x1.911fep+2
+0x1.9d382p+0, 0x1.62c7ep-1
+0x1.30e8cp+5, 0x1.cf174p-6
+0x1.1b878p-9, 0x1.e4788p+8
+0x1.73d72p-2, 0x1.8c28ep+1
+0x1.fc42ep-9, 0x1.03bd2p+8
+0x1.307fcp+9, 0x1.cf804p-10
+0x1.77bbp+8, 0x1.8845p-9
+0x1.072a4p+5, 0x1.f8d5cp-6
+0x1.7f206p+5, 0x1.80dfap-6
+0x1.9fe74p-10, 0x1.6018cp+9
+0x1.68aacp-4, 0x1.97554p+3
+0x1.2053cp-7, 0x1.dfac4p+6
+0x1.bb0c4p+0, 0x1.44f3cp-1
+0x1.f2308p+7, 0x1.0dcf8p-8
+0x1.00012p-3, 0x1.fffeep+2
+0x1.1545p-2, 0x1.eabbp+1
+0x1.b7c92p+5, 0x1.4836ep-6
+0x1.ddb9p+4, 0x1.2247p-5
+0x1.0a326p+3, 0x1.f5cdap-4
+0x1.58c0ep-6, 0x1.a73f2p+5
+0x1.c2698p+7, 0x1.3d968p-8
+0x1.4693p-5, 0x1.b96dp+4
+0x1.66864p-9, 0x1.9979cp+8
+0x1.e29e8p-4, 0x1.1d618p+3
+0x1.eb0fp+0, 0x1.14f1p-1
+0x1.1a0cep-5, 0x1.e5f32p+4
+0x1.c0b5cp+1, 0x1.3f4a4p-2
+0x1.6d09cp-3, 0x1.92f64p+2
+0x1.9ca3cp+8, 0x1.635c4p-9
+0x1.be60ap+6, 0x1.419f6p-7
+0x1.3c9bcp-1, 0x1.c3644p+0
+0x1.644f6p+3, 0x1.9bb0ap-4
+0x1.833ap-7, 0x1.7cc6p+6
+0x1.64c2p-5, 0x1.9b3ep+4
+0x1.0af9ep-6, 0x1.f5062p+5
+0x1.75072p-4, 0x1.8af8ep+3
+0x1.82ecap-4, 0x1.7d136p+3
+0x1.6aa66p+4, 0x1.9559ap-5
+0x1.3ab34p+7, 0x1.c54ccp-8
+0x1.ee896p-5, 0x1.1176ap+4
+0x1.1e72p+6, 0x1.e18ep-7
+0x1.28784p-4, 0x1.d787cp+3
+0x1.8062p-2, 0x1.7f9ep+1
+0x1.d2772p-3, 0x1.2d88ep+2
+0x1.793dep+6, 0x1.86c22p-7
+0x1.27366p-3, 0x1.d8c9ap+2
+0x1.e48f4p-2, 0x1.1b70cp+1
+0x1.689f4p-5, 0x1.9760cp+4
+0x1.cd74p-7, 0x1.328cp+6
+0x1.c901p+8, 0x1.36ffp-9
+0x1.f4a5ep+9, 0x1.0b5a2p-10
+0x1.b2b46p-6, 0x1.4d4bap+5
+0x1.b0344p-8, 0x1.4fcbcp+7
+0x1.575a4p-6, 0x1.a8a5cp+5
+0x1.98f26p+9, 0x1.670dap-10
+0x1.31408p+8, 0x1.cebf8p-9
+0x1.f9fc4p-2, 0x1.0603cp+1
+0x1.96a64p+1, 0x1.6959cp-2
+0x1.66a8ap+8, 0x1.99576p-9
+0x1.de8bep+9, 0x1.21742p-10
+0x1.cfacp+5, 0x1.3054p-6
+0x1.70ee8p-3, 0x1.8f118p+2
+0x1.5ac28p-6, 0x1.a53d8p+5
+0x1.f6006p+8, 0x1.09ffap-9
+0x1.208b8p-3, 0x1.df748p+2
+0x1.e2932p-3, 0x1.1d6cep+2
+0x1.f3ed6p-3, 0x1.0c12ap+2
+0x1.10bcap+1, 0x1.ef436p-2
+0x1.2828ap-5, 0x1.d7d76p+4
+0x1.5e502p-5, 0x1.a1afep+4
+0x1.c2152p+5, 0x1.3deaep-6
+0x1.aa80ep+3, 0x1.557f2p-4
+0x1.0b76ep+2, 0x1.f4892p-3
+0x1.1a018p+5, 0x1.e5fe8p-6
+0x1.19164p+0, 0x1.e6e9cp-1
+0x1.5c234p-10, 0x1.a3dccp+9
+0x1.e5488p-3, 0x1.1ab78p+2
+0x1.ebde4p+3, 0x1.1421cp-4
+0x1.433b8p-1, 0x1.bcc48p+0
+0x1.87d92p+7, 0x1.7826ep-8
+0x1.1aee8p+7, 0x1.e5118p-8
+0x1.31a08p+4, 0x1.ce5f8p-5
+0x1.fe62ap+9, 0x1.019d6p-10
+0x1.72f34p-10, 0x1.8d0ccp+9
+0x1.27e6cp+6, 0x1.d8194p-7
+0x1.07452p+0, 0x1.f8baep-1
+0x1.3b0fp+3, 0x1.c4f1p-4
+0x1.92982p+9, 0x1.6d67ep-10
+0x1.c332ap-1, 0x1.3ccd6p+0
+0x1.f61a8p+8, 0x1.09e58p-9
+0x1.aa624p+0, 0x1.559dcp-1
+0x1.eb10cp+4, 0x1.14ef4p-5
+0x1.7d46p+5, 0x1.82bap-6
+0x1.52be4p-2, 0x1.ad41cp+1
+0x1.822e8p-9, 0x1.7dd18p+8
+0x1.f01b8p+9, 0x1.0fe48p-10
+0x1.93ebep+8, 0x1.6c142p-9
+0x1.3c29cp-10, 0x1.c3d64p+9
+0x1.d1edp+8, 0x1.2e13p-9
+0x1.d6328p-3, 0x1.29cd8p+2
+0x1.6bb44p-5, 0x1.944bcp+4
+0x1.4458cp-2, 0x1.bba74p+1
+0x1.c4042p+1, 0x1.3bfbep-2
+0x1.f4148p-3, 0x1.0beb8p+2
+0x1.46cb2p+5, 0x1.b934ep-6
+0x1.d654p+6, 0x1.29acp-7
+0x1.525eep-3, 0x1.ada12p+2
+0x1.df81ep-10, 0x1.207e2p+9
+0x1.32882p+5, 0x1.cd77ep-6
+0x1.745fep-8, 0x1.8ba02p+7
+0x1.d4c3ap+2, 0x1.2b3c6p-3
+0x1.d8348p-2, 0x1.27cb8p+1
+0x1.6c742p+9, 0x1.938bep-10
+0x1.8679p+0, 0x1.7987p-1
+0x1.fe6p+3, 0x1.01ap-4
+0x1.ecbbp-3, 0x1.1345p+2
+0x1.e2f9ep+5, 0x1.1d062p-6
+0x1.795fap-5, 0x1.86a06p+4
+0x1.ae5d6p-3, 0x1.51a2ap+2
+0x1.a27d2p-8, 0x1.5d82ep+7
+0x1.45632p-6, 0x1.ba9cep+5
+0x1.3cf6ap+3, 0x1.c3096p-4
+0x1.22abp-2, 0x1.dd55p+1
+0x1.3e942p+8, 0x1.c16bep-9
+0x1.5cc24p+1, 0x1.a33dcp-2
+0x1.32ba4p+4, 0x1.cd45cp-5
+0x1.29ea8p-2, 0x1.d6158p+1
+0x1.d6056p-10, 0x1.29faap+9
+0x1.64518p+7, 0x1.9bae8p-8
+0x1.ec486p-9, 0x1.13b7ap+8
+0x1.17af4p+3, 0x1.e850cp-4
+0x1.6b14cp-7, 0x1.94eb4p+6
+0x1.b9306p+5, 0x1.46cfap-6
+0x1.93aecp-8, 0x1.6c514p+7
+0x1.fa092p-4, 0x1.05f6ep+3
+0x1.38d2ep-9, 0x1.c72d2p+8
+0x1.530bap+3, 0x1.acf46p-4
+0x1.7cb9ep+3, 0x1.83462p-4
+0x1.712a6p+7, 0x1.8ed5ap-8
+0x1.d8dd6p+8, 0x1.2722ap-9
+0x1.c7ed8p+2, 0x1.38128p-3
+0x1.1362ap-5, 0x1.ec9d6p+4
+0x1.09ed6p+1, 0x1.f612ap-2
+0x1.757a4p+0, 0x1.8a85cp-1
+0x1.3507p-2, 0x1.caf9p+1
+0x1.14a68p+4, 0x1.eb598p-5
+0x1.7649ap+2, 0x1.89b66p-3
+0x1.17e4ep+3, 0x1.e81b2p-4
+0x1.184fcp+7, 0x1.e7b04p-8
+0x1.4efdep-10, 0x1.b1022p+9
+0x1.1b912p+4, 0x1.e46eep-5
+0x1.99bp-8, 0x1.665p+7
+0x1.96d1p+3, 0x1.692fp-4
+0x1.ba5cep-9, 0x1.45a32p+8
+0x1.ee7a4p-10, 0x1.1185cp+9
+0x1.b4c86p-7, 0x1.4b37ap+6
+0x1.6bbb2p-3, 0x1.9444ep+2
+0x1.d1166p-9, 0x1.2ee9ap+8
+0x1.4808cp+3, 0x1.b7f74p-4
+0x1.049e8p+8, 0x1.fb618p-9
+0x1.3f794p-5, 0x1.c086cp+4
+0x1.cd71p-6, 0x1.328fp+5
+0x1.49d0ep+9, 0x1.b62f2p-10
+0x1.c5c3p-2, 0x1.3a3dp+1
+0x1.1cceap-3, 0x1.e3316p+2
+0x1.4b7bcp-7, 0x1.b4844p+6
+0x1.2383p-2, 0x1.dc7dp+1
+0x1.36e78p+2, 0x1.c9188p-3
+0x1.ee77cp+2, 0x1.11884p-3
+0x1.8501ep-7, 0x1.7afe2p+6
+0x1.6805p-4, 0x1.97fbp+3
+0x1.91c84p-5, 0x1.6e37cp+4
+0x1.34aecp+5, 0x1.cb514p-6
+0x1.2e68p+5, 0x1.d198p-6
+0x1.1c038p-10, 0x1.e3fc8p+9
+0x1.93268p-10, 0x1.6cd98p+9
+0x1.785b4p-5, 0x1.87a4cp+4
+0x1.0ad72p-8, 0x1.f528ep+7
+0x1.9f91ep-7, 0x1.606e2p+6
+0x1.04c24p-7, 0x1.fb3dcp+6
+0x1.07d64p-6, 0x1.f829cp+5
+0x1.1f844p-6, 0x1.e07bcp+5
+0x1.613a6p-2, 0x1.9ec5ap+1
+0x1.d2fdcp+1, 0x1.2d024p-2
+0x1.fb61p-5, 0x1.049fp+4
+0x1.ccff8p+9, 0x1.33008p-10
+0x1.37c6ap+1, 0x1.c8396p-2
+0x1.c980ep-10, 0x1.367f2p+9
+0x1.a6b32p-4, 0x1.594cep+3
+0x1.7cf4ap-6, 0x1.830b6p+5
+0x1.9bf92p+6, 0x1.6406ep-7
+0x1.4edaep-4, 0x1.b1252p+3
+0x1.dcec6p-6, 0x1.2313ap+5
+0x1.8c3acp-2, 0x1.73c54p+1
+0x1.0c0b6p+6, 0x1.f3f4ap-7
+0x1.d509ap-8, 0x1.2af66p+7
+0x1.ecc78p+4, 0x1.13388p-5
+0x1.4c19ep+7, 0x1.b3e62p-8
+0x1.96e44p-8, 0x1.691bcp+7
+0x1.14a04p-3, 0x1.eb5fcp+2
+0x1.bdec6p+2, 0x1.4213ap-3
+0x1.30806p+6, 0x1.cf7fap-7
+0x1.2cc48p+0, 0x1.d33b8p-1
+0x1.498cp-2, 0x1.b674p+1
+0x1.ef0bcp-2, 0x1.10f44p+1
+0x1.5cf5cp+2, 0x1.a30a4p-3
+0x1.7925ap-5, 0x1.86da6p+4
+0x1.d6776p+5, 0x1.2988ap-6
+0x1.865c2p-2, 0x1.79a3ep+1
+0x1.f0fdcp+9, 0x1.0f024p-10
+0x1.3870ep-6, 0x1.c78f2p+5
+0x1.464ap-3, 0x1.b9b6p+2
+0x1.a2484p+5, 0x1.5db7cp-6
+0x1.5be2cp+9, 0x1.a41d4p-10
+0x1.ad7e4p+2, 0x1.5281cp-3
+0x1.194bp+3, 0x1.e6b5p-4
+0x1.04506p-3, 0x1.fbafap+2
+0x1.6337ep+3, 0x1.9cc82p-4
+0x1.55ce6p+6, 0x1.aa31ap-7
+0x1.19e66p+9, 0x1.e619ap-10
+0x1.0304p-1, 0x1.fcfcp+0
+0x1.e733ep-5, 0x1.18cc2p+4
+0x1.7388ap+1, 0x1.8c776p-2
+0x1.c3762p-3, 0x1.3c89ep+2
+0x1.62912p+4, 0x1.9d6eep-5
+0x1.531ecp+6, 0x1.ace14p-7
+0x1.b8574p-9, 0x1.47a8cp+8
+0x1.198bp+4, 0x1.e675p-5
+0x1.4152ep-4, 0x1.bead2p+3
+0x1.dd966p+8, 0x1.2269ap-9
+0x1.3b0c4p-6, 0x1.c4f3cp+5
+0x1.8d074p-1, 0x1.72f8cp+0
+0x1.497ap+3, 0x1.b686p-4
+0x1.349cap+4, 0x1.cb636p-5
+0x1.c2cd8p+1, 0x1.3d328p-2
+0x1.dcdaap-7, 0x1.23256p+6
+0x1.c061cp-4, 0x1.3f9e4p+3
+0x1.4da2ep+6, 0x1.b25d2p-7
+0x1.28f14p+6, 0x1.d70ecp-7
+0x1.5fd4cp+9, 0x1.a02b4p-10
+0x1.65a5cp+2, 0x1.9a5a4p-3
+0x1.e1adcp+6, 0x1.1e524p-7
+0x1.aea44p+0, 0x1.515bcp-1
+0x1.de4eap-7, 0x1.21b16p+6
+0x1.caea2p+6, 0x1.3515ep-7
+0x1.d0ab2p+1, 0x1.2f54ep-2
+0x1.5b11cp-4, 0x1.a4ee4p+3
+0x1.cf4c6p-8, 0x1.30b3ap+7
+0x1.f78d8p+2, 0x1.08728p-3
+0x1.0711cp+6, 0x1.f8ee4p-7
+0x1.a89dp-8, 0x1.5763p+7
+0x1.063e2p+6, 0x1.f9c1ep-7
+0x1.ffdaep-4, 0x1.00252p+3
+0x1.3cfcep+8, 0x1.c3032p-9
+0x1.f2036p+1, 0x1.0dfcap-2
+0x1.edd38p-3, 0x1.122c8p+2
+0x1.b89aap-5, 0x1.47656p+4
+0x1.f110cp+6, 0x1.0eef4p-7
+0x1.a3c3cp+5, 0x1.5c3c4p-6
+0x1.b1016p+1, 0x1.4efeap-2
+0x1.8aa8cp+3, 0x1.75574p-4
+0x1.25ac6p+7, 0x1.da53ap-8
+0x1.ffbfep+5, 0x1.00402p-6
+0x1.ad3eap-1, 0x1.52c16p+0
+0x1.092e4p-1, 0x1.f6d1cp+0
+0x1.f0dacp+9, 0x1.0f254p-10
+0x1.145ap-4, 0x1.eba6p+3
+0x1.995aap-7, 0x1.66a56p+6
+0x1.3851ap+5, 0x1.c7ae6p-6
+0x1.03eacp+3, 0x1.fc154p-4
+0x1.3d846p+0, 0x1.c27bap-1
+0x1.51c0ap+4, 0x1.ae3f6p-5
+0x1.b66b6p+0, 0x1.4994ap-1
+0x1.5d2f4p+7, 0x1.a2d0cp-8
+0x1.32edep+4, 0x1.cd122p-5
+0x1.69c28p-9, 0x1.963d8p+8
+0x1.4c57ap-8, 0x1.b3a86p+7
+0x1.49774p+5, 0x1.b688cp-6
+0x1.a9c7cp+2, 0x1.56384p-3
+0x1.25738p+1, 0x1.da8c8p-2
+0x1.a6c3ap-8, 0x1.593c6p+7
+0x1.16c8cp+6, 0x1.e9374p-7
+0x1.d4e9ep+1, 0x1.2b162p-2
+0x1.0ff06p+6, 0x1.f00fap-7
+0x1.6e106p-2, 0x1.91efap+1
+0x1.c22eap-1, 0x1.3dd16p+0
+0x1.19dd2p-1, 0x1.e622ep+0
+0x1.ec0bp-9, 0x1.13f5p+8
+0x1.e8968p-4, 0x1.17698p+3
+0x1.c8f8ep+3, 0x1.37072p-4
+0x1.bde08p-10, 0x1.421f8p+9
+0x1.09ddap-3, 0x1.f6226p+2
+0x1.757cep-8, 0x1.8a832p+7
+0x1.c0ad2p-2, 0x1.3f52ep+1
+0x1.666e8p+2, 0x1.99918p-3
+0x1.2b5b8p+1, 0x1.d4a48p-2
+0x1.e2dd2p+2, 0x1.1d22ep-3
+0x1.4ecc8p-2, 0x1.b1338p+1
+0x1.ae35cp+1, 0x1.51ca4p-2
+0x1.78396p-9, 0x1.87c6ap+8
+0x1.afa0cp-8, 0x1.505f4p+7
+0x1.7b7f8p+6, 0x1.84808p-7
+0x1.77722p+5, 0x1.888dep-6
+0x1.04eecp+2, 0x1.fb114p-3
+0x1.b50d4p+6, 0x1.4af2cp-7
+0x1.f19fcp+2, 0x1.0e604p-3
+0x1.5ca1p+2, 0x1.a35fp-3
+0x1.d53b6p+6, 0x1.2ac4ap-7
+0x1.f28aep-6, 0x1.0d752p+5
+0x1.f0e16p+2, 0x1.0f1eap-3
+0x1.f89d8p+2, 0x1.07628p-3
+0x1.5b8dep-3, 0x1.a4722p+2
+0x1.7e2bap+7, 0x1.81d46p-8
+0x1.477a4p-4, 0x1.b885cp+3
+0x1.a5d36p+1, 0x1.5a2cap-2
+0x1.0bdf2p-2, 0x1.f420ep+1
+0x1.798f6p+4, 0x1.8670ap-5
+0x1.63206p-8, 0x1.9cdfap+7
+0x1.7fb26p-1, 0x1.804dap+0
+0x1.6acd4p-2, 0x1.9532cp+1
+0x1.14366p+1, 0x1.ebc9ap-2
+0x1.8ad3cp+2, 0x1.752c4p-3
+0x1.d358ap-9, 0x1.2ca76p+8
+0x1.21ecep-2, 0x1.de132p+1
+0x1.1f3ap-6, 0x1.e0c6p+5
+0x1.37e9ap+7, 0x1.c8166p-8
+0x1.93d2p+3, 0x1.6c2ep-4
+0x1.fc492p-10, 0x1.03b6ep+9
+0x1.19a1ep+0, 0x1.e65e2p-1
+0x1.61154p+4, 0x1.9eeacp-5
+0x1.42e5ep+4, 0x1.bd1a2p-5
+0x1.ca984p+0, 0x1.3567cp-1
+0x1.e9942p-4, 0x1.166bep+3
+0x1.6e466p-2, 0x1.91b9ap+1
+0x1.a07d4p-4, 0x1.5f82cp+3
+0x1.a2966p-2, 0x1.5d69ap+1
+0x1.4084ep+9, 0x1.bf7b2p-10
+0x1.3590ap+5, 0x1.ca6f6p-6
+0x1.6f43ap+6, 0x1.90bc6p-7
+0x1.8076cp+7, 0x1.7f894p-8
+0x1.e87d8p+2, 0x1.17828p-3
+0x1.5e1a8p+1, 0x1.a1e58p-2
+0x1.c99f2p-7, 0x1.3660ep+6
+0x1.cfdfep+5, 0x1.30202p-6
+0x1.4700cp-2, 0x1.b8ff4p+1
+0x1.a1d66p-3, 0x1.5e29ap+2
+0x1.b1638p+3, 0x1.4e9c8p-4
+0x1.a03bp-6, 0x1.5fc5p+5
+0x1.95bd8p+2, 0x1.6a428p-3
+0x1.d6724p-7, 0x1.298dcp+6
+0x1.c0048p-2, 0x1.3ffb8p+1
+0x1.51cf4p+1, 0x1.ae30cp-2
+0x1.3f1acp+8, 0x1.c0e54p-9
+0x1.4ac8ep-7, 0x1.b5372p+6
+0x1.a8806p-1, 0x1.577fap+0
+0x1.eca74p+5, 0x1.1358cp-6
+0x1.8ca78p-7, 0x1.73588p+6
+0x1.54448p-7, 0x1.abbb8p+6
+0x1.34504p-6, 0x1.cbafcp+5
+0x1.70fa2p-2, 0x1.8f05ep+1
+0x1.f90a8p+7, 0x1.06f58p-8
+0x1.a1c8p-3, 0x1.5e38p+2
+0x1.694d2p+6, 0x1.96b2ep-7
+0x1.d69ecp-4, 0x1.29614p+3
+0x1.f3d18p+1, 0x1.0c2e8p-2
+0x1.938d6p-2, 0x1.6c72ap+1
+0x1.fdd9p+6, 0x1.0227p-7
+0x1.4a1dp-5, 0x1.b5e3p+4
+0x1.254c4p-1, 0x1.dab3cp+0
+0x1.cf3eap-10, 0x1.30c16p+9
+0x1.0a834p-3, 0x1.f57ccp+2
+0x1.055p-1, 0x1.fabp+0
+0x1.61a72p-10, 0x1.9e58ep+9
+0x1.6729cp-4, 0x1.98d64p+3
+0x1.633dap+6, 0x1.9cc26p-7
+0x1.eba92p-6, 0x1.1456ep+5
+0x1.8b6dep+1, 0x1.74922p-2
+0x1.8babap+2, 0x1.74546p-3
+0x1.6c61p-9, 0x1.939fp+8
+0x1.ed92p-7, 0x1.126ep+6
+0x1.5ccf8p-2, 0x1.a3308p+1
+0x1.8fd0ep-6, 0x1.702f2p+5
+0x1.8e198p-7, 0x1.71e68p+6
+0x1.fb59ep+7, 0x1.04a62p-8
+0x1.a8b26p+2, 0x1.574dap-3
+0x1.7acbap-4, 0x1.85346p+3
+0x1.539dcp-1, 0x1.ac624p+0
+0x1.1debp-9, 0x1.e215p+8
+0x1.5f926p-1, 0x1.a06dap+0
+0x1.21be4p+4, 0x1.de41cp-5
+0x1.bf04cp-4, 0x1.40fb4p+3
+0x1.19d86p-7, 0x1.e627ap+6
+0x1.d6758p-2, 0x1.298a8p+1
+0x1.f61b4p-2, 0x1.09e4cp+1
+0x1.36256p-8, 0x1.c9daap+7
+0x1.faaf6p+0, 0x1.0550ap-1
+0x1.543acp-10, 0x1.abc54p+9
+0x1.d24b8p-3, 0x1.2db48p+2
+0x1.f648ap-2, 0x1.09b76p+1
+0x1.6b216p+1, 0x1.94deap-2
+0x1.7c172p+5, 0x1.83e8ep-6
+0x1.225bp-7, 0x1.dda5p+6
+0x1.ccca6p+2, 0x1.3335ap-3
+0x1.9e4d2p-6, 0x1.61b2ep+5
+0x1.066c6p-1, 0x1.f993ap+0
+0x1.0b188p-6, 0x1.f4e78p+5
+0x1.2b05cp-5, 0x1.d4fa4p+4
+0x1.75ff6p-8, 0x1.8a00ap+7
+0x1.2eaep-6, 0x1.d152p+5
+0x1.da4a2p+5, 0x1.25b5ep-6
+0x1.3ff36p-10, 0x1.c00cap+9
+0x1.a035ep+9, 0x1.5fca2p-10
+0x1.5364ep-3, 0x1.ac9b2p+2
+0x1.94e42p+6, 0x1.6b1bep-7
+0x1.59f04p+6, 0x1.a60fcp-7
+0x1.792e6p+7, 0x1.86d1ap-8
+0x1.645a2p+7, 0x1.9ba5ep-8
+0x1.fbd0ep-5, 0x1.042f2p+4
+0x1.295bp-2, 0x1.d6a5p+1
+0x1.08dccp+5, 0x1.f7234p-6
+0x1.a0298p-1, 0x1.5fd68p+0
+0x1.1330ap+1, 0x1.eccf6p-2
+0x1.4f9cap+9, 0x1.b0636p-10
+0x1.f1276p+7, 0x1.0ed8ap-8
+0x1.c49fp+6, 0x1.3b61p-7
+0x1.c2fap+1, 0x1.3d06p-2
+0x1.4775ep+4, 0x1.b88a2p-5
+0x1.04b18p+8, 0x1.fb4e8p-9
+0x1.383dp-9, 0x1.c7c3p+8
+0x1.8c49cp-2, 0x1.73b64p+1
+0x1.f7786p+0, 0x1.0887ap-1
+0x1.19b48p-4, 0x1.e64b8p+3
+0x1.04da2p+9, 0x1.fb25ep-10
+0x1.c3472p+3, 0x1.3cb8ep-4
+0x1.45762p-1, 0x1.ba89ep+0
+0x1.07b44p-5, 0x1.f84bcp+4
+0x1.95ff2p+4, 0x1.6a00ep-5
+0x1.b49d8p+0, 0x1.4b628p-1
+0x1.7a938p+0, 0x1.856c8p-1
+0x1.7f3ecp+1, 0x1.80c14p-2
+0x1.64216p-3, 0x1.9bdeap+2
+0x1.3fd7cp+0, 0x1.c0284p-1
+0x1.9ebfp-4, 0x1.6141p+3
+0x1.dfd66p+4, 0x1.2029ap-5
+0x1.3d374p-5, 0x1.c2c8cp+4
+0x1.4f24ep-1, 0x1.b0db2p+0
+0x1.670f2p+9, 0x1.98f0ep-10
+0x1.6440ap+1, 0x1.9bbf6p-2
+0x1.b9a0ap-10, 0x1.465f6p+9
+0x1.acd44p+8, 0x1.532bcp-9
+0x1.59274p+5, 0x1.a6d8cp-6
+0x1.1565ep-9, 0x1.ea9a2p+8
+0x1.8c51cp-6, 0x1.73ae4p+5
+0x1.90688p-8, 0x1.6f978p+7
+0x1.f7a82p-2, 0x1.0857ep+1
+0x1.9e568p-5, 0x1.61a98p+4
+0x1.90f86p-2, 0x1.6f07ap+1
+0x1.9ddc4p+8, 0x1.6223cp-9
+0x1.35102p+1, 0x1.caefep-2
+0x1.c01b4p-5, 0x1.3fe4cp+4
+0x1.6e3dp+0, 0x1.91c3p-1
+0x1.08a6p+9, 0x1.f75ap-10
+0x1.e93d2p-7, 0x1.16c2ep+6
+0x1.4547cp+0, 0x1.bab84p-1
+0x1.5e1fp-1, 0x1.a1e1p+0
+0x1.dfd4p-10, 0x1.202cp+9
+0x1.da5eep+4, 0x1.25a12p-5
+0x1.7ff24p+7, 0x1.800dcp-8
+0x1.f370ap-5, 0x1.0c8f6p+4
+0x1.3a4a4p-10, 0x1.c5b5cp+9
+0x1.0df7p+6, 0x1.f209p-7
+0x1.8d9c8p+2, 0x1.72638p-3
+0x1.df27ap+0, 0x1.20d86p-1
+0x1.a7a2cp+6, 0x1.585d4p-7
+0x1.dd9f8p+4, 0x1.22608p-5
+0x1.8967ep-6, 0x1.76982p+5
+0x1.ace22p-5, 0x1.531dep+4
+0x1.d77b4p-3, 0x1.2884cp+2
+0x1.54b98p+7, 0x1.ab468p-8
+0x1.98f02p-2, 0x1.670fep+1
+0x1.3823ep-3, 0x1.c7dc2p+2
+0x1.077aep-5, 0x1.f8852p+4
+0x1.5605p-2, 0x1.a9fbp+1
+0x1.dba7cp+1, 0x1.24584p-2
+0x1.fe1fep-9, 0x1.01e02p+8
+0x1.35864p+6, 0x1.ca79cp-7
+0x1.c96a4p-7, 0x1.3695cp+6
+0x1.a1e14p+3, 0x1.5e1ecp-4
+0x1.d8a0ep+5, 0x1.275f2p-6
+0x1.05984p+7, 0x1.fa67cp-8
+0x1.5c472p+8, 0x1.a3b8ep-9
+0x1.9deb4p-8, 0x1.6214cp+7
+0x1.c2ccp+5, 0x1.3d34p-6
+0x1.af558p+9, 0x1.50aa8p-10
+0x1.dd586p-10, 0x1.22a7ap+9
+0x1.711cap+3, 0x1.8ee36p-4
+0x1.421b2p-9, 0x1.bde4ep+8
+0x1.1057p+1, 0x1.efa9p-2
+0x1.95a52p+8, 0x1.6a5aep-9
+0x1.3c67p-5, 0x1.c399p+4
+0x1.9eae8p-9, 0x1.61518p+8
+0x1.71e76p-8, 0x1.8e18ap+7
+0x1.f4338p+9, 0x1.0bcc8p-10
+0x1.77cccp-1, 0x1.88334p+0
+0x1.35a9cp-3, 0x1.ca564p+2
+0x1.332f8p-8, 0x1.ccd08p+7
+0x1.45c0ep-9, 0x1.ba3f2p+8
+0x1.7ac9ep-3, 0x1.85362p+2
+0x1.65adp-10, 0x1.9a53p+9
+0x1.47d06p+2, 0x1.b82fap-3
+0x1.7a4eep-7, 0x1.85b12p+6
+0x1.15ecp-1, 0x1.ea14p+0
+0x1.2c44p-3, 0x1.d3bcp+2
+0x1.6d378p+2, 0x1.92c88p-3
+0x1.75aa6p+6, 0x1.8a55ap-7
+0x1.f53e2p+2, 0x1.0ac1ep-3
+0x1.d50fep-6, 0x1.2af02p+5
+0x1.02fe8p+1, 0x1.fd018p-2
+0x1.80f0cp+7, 0x1.7f0f4p-8
+0x1.a931ap+9, 0x1.56ce6p-10
+0x1.430ccp+1, 0x1.bcf34p-2
+0x1.a24f2p+0, 0x1.5db0ep-1
+0x1.20074p-10, 0x1.dff8cp+9
+0x1.b907ep+1, 0x1.46f82p-2
+0x1.9e82p+8, 0x1.617ep-9
+0x1.2ea5cp-8, 0x1.d15a4p+7
+0x1.6ff8cp-6, 0x1.90074p+5
+0x1.8a992p-5, 0x1.7566ep+4
+0x1.29754p+0, 0x1.d68acp-1
+0x1.eee2cp+4, 0x1.111d4p-5
+0x1.29d86p+1, 0x1.d627ap-2
+0x1.8f0f4p+9, 0x1.70f0cp-10
+0x1.2906ep-5, 0x1.d6f92p+4
+0x1.301dcp+8, 0x1.cfe24p-9
+0x1.91d12p-5, 0x1.6e2eep+4
+0x1.c544ep+0, 0x1.3abb2p-1
+0x1.e44aap+9, 0x1.1bb56p-10
+0x1.61f94p+8, 0x1.9e06cp-9
+0x1.5163cp+4, 0x1.ae9c4p-5
+0x1.2d852p+8, 0x1.d27aep-9
+0x1.dec58p-2, 0x1.213a8p+1
+0x1.0d108p+4, 0x1.f2ef8p-5
+0x1.7ad34p-2, 0x1.852ccp+1
+0x1.47174p-1, 0x1.b8e8cp+0
+0x1.8be16p+4, 0x1.741eap-5
+0x1.8eb6ep+5, 0x1.71492p-6
+0x1.97abp-9, 0x1.6855p+8
+0x1.54796p+4, 0x1.ab86ap-5
+0x1.70b7ep+2, 0x1.8f482p-3
+0x1.128a6p-1, 0x1.ed75ap+0
+0x1.15c14p-1, 0x1.ea3ecp+0
+0x1.d5a4ap+6, 0x1.2a5b6p-7
+0x1.1596ap+3, 0x1.ea696p-4
+0x1.f4daap+6, 0x1.0b256p-7
+0x1.44b52p+4, 0x1.bb4aep-5
+0x1.9471cp-3, 0x1.6b8e4p+2
+0x1.95ddp-1, 0x1.6a23p+0
+0x1.02f48p+6, 0x1.fd0b8p-7
+0x1.315aep-2, 0x1.cea52p+1
+0x1.a8bdep-4, 0x1.57422p+3
+0x1.6ep-8, 0x1.92p+7
+0x1.ec18p+4, 0x1.13e8p-5
+0x1.599c4p-2, 0x1.a663cp+1
+0x1.633fep+3, 0x1.9cc02p-4
+0x1.04d4p+6, 0x1.fb2cp-7
+0x1.f64dep-10, 0x1.09b22p+9
+0x1.4f71p-8, 0x1.b08fp+7
+0x1.5b6bcp-5, 0x1.a4944p+4
+0x1.bf46ep+1, 0x1.40b92p-2
+0x1.a64fap+6, 0x1.59b06p-7
+0x1.612dep-4, 0x1.9ed22p+3
+0x1.06a62p-4, 0x1.f959ep+3
+0x1.a5bf4p+4, 0x1.5a40cp-5
+0x1.d6c34p+7, 0x1.293ccp-8
+0x1.2557cp-4, 0x1.daa84p+3
+0x1.cfe8ap-3, 0x1.30176p+2
+0x1.505fp+3, 0x1.afa1p-4
+0x1.f3032p-4, 0x1.0cfcep+3
+0x1.0a95cp+2, 0x1.f56a4p-3
+0x1.25958p-5, 0x1.da6a8p+4
+0x1.5f7ap+8, 0x1.a086p-9
+0x1.1ac74p+2, 0x1.e538cp-3
+0x1.36032p-7, 0x1.c9fcep+6
+0x1.772dcp+7, 0x1.88d24p-8
+0x1.0b18p+5, 0x1.f4e8p-6
+0x1.fea32p+1, 0x1.015cep-2
+0x1.c869p+2, 0x1.3797p-3
+0x1.3e024p+2, 0x1.c1fdcp-3
+0x1.d486p+0, 0x1.2b7ap-1
+0x1.f1cbap-8, 0x1.0e346p+7
+0x1.57136p+2, 0x1.a8ecap-3
+0x1.f4fbcp-7, 0x1.0b044p+6
+0x1.f452cp+4, 0x1.0bad4p-5
+0x1.0e564p-4, 0x1.f1a9cp+3
+0x1.1915ap-5, 0x1.e6ea6p+4
+0x1.30c0cp+3, 0x1.cf3f4p-4
+0x1.ec83ap+6, 0x1.137c6p-7
+0x1.0f57ep+4, 0x1.f0a82p-5
+0x1.a532p+4, 0x1.5acep-5
+0x1.48994p-10, 0x1.b766cp+9
+0x1.c7e18p-3, 0x1.381e8p+2
+0x1.a6178p-2, 0x1.59e88p+1
+0x1.e84bep+6, 0x1.17b42p-7
+0x1.8eab4p-3, 0x1.7154cp+2
+0x1.53d42p+2, 0x1.ac2bep-3
+0x1.ac8e8p+8, 0x1.53718p-9
+0x1.4cbccp+8, 0x1.b3434p-9
+0x1.2f128p-6, 0x1.d0ed8p+5
+0x1.c5792p-2, 0x1.3a86ep+1
+0x1.08fc4p+1, 0x1.f703cp-2
+0x1.721ep-5, 0x1.8de2p+4
+0x1.e3758p-8, 0x1.1c8a8p+7
+0x1.4c6cep-6, 0x1.b3932p+5
+0x1.9201p+3, 0x1.6dffp-4
+0x1.f7552p+3, 0x1.08aaep-4
+0x1.ac826p-10, 0x1.537dap+9
+0x1.05b5ep+1, 0x1.fa4a2p-2
+0x1.d26c8p+4, 0x1.2d938p-5
+0x1.a559ep+0, 0x1.5aa62p-1
+0x1.0f202p+5, 0x1.f0dfep-6
+0x1.73668p-2, 0x1.8c998p+1
+0x1.c295ap-2, 0x1.3d6a6p+1
+0x1.c9458p-3, 0x1.36ba8p+2
+0x1.550aap+1, 0x1.aaf56p-2
+0x1.b7498p-4, 0x1.48b68p+3
+0x1.ce2ap-7, 0x1.31d6p+6
+0x1.db0b8p-9, 0x1.24f48p+8
+0x1.4909cp+6, 0x1.b6f64p-7
+0x1.4e3bap+0, 0x1.b1c46p-1
+0x1.4ec7cp-7, 0x1.b1384p+6
+0x1.b6f98p+8, 0x1.49068p-9
+0x1.a3c54p-5, 0x1.5c3acp+4
+0x1.6287cp-1, 0x1.9d784p+0
+0x1.dbbf8p+6, 0x1.24408p-7
+0x1.101d8p+8, 0x1.efe28p-9
+0x1.08326p+9, 0x1.f7cdap-10
+0x1.cd7b4p+3, 0x1.3284cp-4
+0x1.edcdp+5, 0x1.1233p-6
+0x1.7abc4p-9, 0x1.8543cp+8
+0x1.09a0ep+1, 0x1.f65f2p-2
+0x1.66b8cp+6, 0x1.99474p-7
+0x1.90464p+1, 0x1.6fb9cp-2
+0x1.f431p-4, 0x1.0bcfp+3
+0x1.10bd2p-7, 0x1.ef42ep+6
+0x1.b3d2p+8, 0x1.4c2ep-9
+0x1.abfcep-3, 0x1.54032p+2
+0x1.d0c8ap-1, 0x1.2f376p+0
+0x1.06488p-3, 0x1.f9b78p+2
+0x1.2af8cp-1, 0x1.d5074p+0
+0x1.99c36p-6, 0x1.663cap+5
+0x1.05dd2p+4, 0x1.fa22ep-5
+0x1.482f6p+8, 0x1.b7d0ap-9
+0x1.bad64p+7, 0x1.4529cp-8
+0x1.f9e36p-2, 0x1.061cap+1
+0x1.d182p-9, 0x1.2e7ep+8
+0x1.41a8ap+0, 0x1.be576p-1
+0x1.d8ba2p+7, 0x1.2745ep-8
+0x1.7da94p-7, 0x1.8256cp+6
+0x1.4225p+6, 0x1.bddbp-7
+0x1.14254p-4, 0x1.ebdacp+3
+0x1.40166p+3, 0x1.bfe9ap-4
+0x1.4f1c2p-3, 0x1.b0e3ep+2
+0x1.20c3cp+1, 0x1.df3c4p-2
+0x1.41ad6p+4, 0x1.be52ap-5
+0x1.7984p-1, 0x1.867cp+0
+0x1.1ded8p+9, 0x1.e2128p-10
+0x1.ac9d6p+7, 0x1.5362ap-8
+0x1.46148p+7, 0x1.b9eb8p-8
+0x1.ca7bp-7, 0x1.3585p+6
+0x1.d7042p-6, 0x1.28fbep+5
+0x1.823cp+8, 0x1.7dc4p-9
+0x1.9fea8p+9, 0x1.60158p-10
+0x1.8421ap+4, 0x1.7bde6p-5
+0x1.e2636p+9, 0x1.1d9cap-10
+0x1.0667cp-8, 0x1.f9984p+7
+0x1.5c602p-4, 0x1.a39fep+3
+0x1.9e878p-6, 0x1.61788p+5
+0x1.ebf6ap-6, 0x1.14096p+5
+0x1.ecb52p-5, 0x1.134aep+4
+0x1.d303ep+4, 0x1.2cfc2p-5
+0x1.d4286p-8, 0x1.2bd7ap+7
+0x1.b7246p-10, 0x1.48dbap+9
+0x1.caf86p-9, 0x1.3507ap+8
+0x1.72f26p-7, 0x1.8d0dap+6
+0x1.c3ef4p+1, 0x1.3c10cp-2
+0x1.faebcp+2, 0x1.05144p-3
+0x1.57ddp-6, 0x1.a823p+5
+0x1.226c8p+3, 0x1.dd938p-4
+0x1.06fcp-6, 0x1.f904p+5
+0x1.c03fcp+1, 0x1.3fc04p-2
+0x1.64b92p-9, 0x1.9b46ep+8
+0x1.be1d6p-7, 0x1.41e2ap+6
-- 
2.34.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v4 3/5] math: Improve fmod
  2023-03-20 16:01 [PATCH v4 0/5] Improve fmod and fmodf Adhemerval Zanella
  2023-03-20 16:01 ` [PATCH v4 1/5] benchtests: Add fmod benchmark Adhemerval Zanella
  2023-03-20 16:01 ` [PATCH v4 2/5] benchtests: Add fmodf benchmark Adhemerval Zanella
@ 2023-03-20 16:01 ` Adhemerval Zanella
  2023-04-03 13:29   ` Wilco Dijkstra
  2023-03-20 16:01 ` [PATCH v4 4/5] math: Improve fmodf Adhemerval Zanella
  2023-03-20 16:01 ` [PATCH v4 5/5] math: Remove the error handling wrapper from fmod and fmodf Adhemerval Zanella
  4 siblings, 1 reply; 12+ messages in thread
From: Adhemerval Zanella @ 2023-03-20 16:01 UTC (permalink / raw)
  To: libc-alpha, Wilco Dijkstra, H . J . Lu; +Cc: kirill

This uses a new algorithm similar to already proposed earlier [1].
With x = mx * 2^ex and y = my * 2^ey (mx, my, ex, ey being integers),
the simplest implementation is:

   mx * 2^ex == 2 * mx * 2^(ex - 1)

   while (ex > ey)
     {
       mx *= 2;
       --ex;
       mx %= my;
     }

With mx/my being mantissa of double floating pointer, on each step the
argument reduction can be improved 11 (which is sizeo of uint64_t minus
MANTISSA_WIDTH plus the signal bit):

   while (ex > ey)
     {
       mx << 11;
       ex -= 11;
       mx %= my;
     }  */

The implementation uses builtin clz and ctz, along with shifts to
convert hx/hy back to doubles.  Different than the original patch,
this path assume modulo/divide operation is slow, so use multiplication
with invert values.

I see the following performance improvements using fmod benchtests
(result only show the 'mean' result):

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  x86_64 (Ryzen 9) | subnormals      | 19.1584  | 12.5049
  x86_64 (Ryzen 9) | normal          | 1016.51  | 296.939
  x86_64 (Ryzen 9) | close-exponents | 18.4428  | 16.0244
  aarch64 (N1)     | subnormal       | 11.153   | 6.81778
  aarch64 (N1)     | normal          | 528.649  | 155.62
  aarch64 (N1)     | close-exponents | 11.4517  | 8.21306

I also see similar improvements on arm-linux-gnueabihf when running on
the N1 aarch64 chips, where it a lot of soft-fp implementation (for
modulo, clz, ctz, and multiplication):

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  armhf (N1)       | subnormal       | 15.908   | 15.1083
  armhf (N1)       | normal          | 837.525  | 244.833
  armhf (N1)       | close-exponents | 16.2111  | 21.8182

Instead of using the math_private.h definitions, I used the
math_config.h instead which is used on newer math implementations.

Co-authored-by: kirill <kirill.okhotnikov@gmail.com>

[1] https://sourceware.org/pipermail/libc-alpha/2020-November/119794.html
---
 math/libm-test-fmod.inc              |  14 ++
 sysdeps/ieee754/dbl-64/e_fmod.c      | 232 ++++++++++++++++-----------
 sysdeps/ieee754/dbl-64/math_config.h |  61 +++++++
 3 files changed, 211 insertions(+), 96 deletions(-)

diff --git a/math/libm-test-fmod.inc b/math/libm-test-fmod.inc
index 39fd02f9ef..8841c1332c 100644
--- a/math/libm-test-fmod.inc
+++ b/math/libm-test-fmod.inc
@@ -152,6 +152,16 @@ static const struct test_ff_f_data fmod_test_data[] =
     TEST_ff_f (fmod, 6.5, -2.25L, 2.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, -6.5, -2.25L, -2.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
 
+    TEST_ff_f (fmod, 0x1.e848p+18, 0x1.6p+3, 0x1.8p+2, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, 0x1.e848p+18, -0x1.6p+3, 0x1.8p+2, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x1.e848p+18, 0x1.6p+3, -0x1.8p+2, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x1.e848p+18, -0x1.6p+3, -0x1.8p+2, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmod, 0x1.4p+2, 0x1p+0, 0x0p+0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, 0x1.4p+2, -0x1p+0, 0x0p+0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x1.4p+2, 0x1p+0, -0x0p+0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x1.4p+2, -0x1p+0, -0x0p+0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
     TEST_ff_f (fmod, max_value, max_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, max_value, -max_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, max_value, min_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@@ -216,6 +226,10 @@ static const struct test_ff_f_data fmod_test_data[] =
     TEST_ff_f (fmod, -0x1p1023L, -0x3p-1073L, -0x1p-1073L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, -0x1p1023L, 0x3p-1022L, -0x1p-1021L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, -0x1p1023L, -0x3p-1022L, -0x1p-1021L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, 0x0.cded0a47373e9p-1022, 0x0.3212f5b8c8c16p-1022, 0x0.05a1336414391p-1022, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, 0x0.cded0a47373e9p-1022, -0x0.3212f5b8c8c16p-1022, 0x0.05a1336414391p-1022, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x0.cded0a47373e9p-1022, 0x0.3212f5b8c8c16p-1022, -0x0.05a1336414391p-1022, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x0.cded0a47373e9p-1022, -0x0.3212f5b8c8c16p-1022, -0x0.05a1336414391p-1022, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
 #endif
 #if MIN_EXP <= -16381
     TEST_ff_f (fmod, 0x1p16383L, 0x3p-16445L, 0x1p-16445L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
diff --git a/sysdeps/ieee754/dbl-64/e_fmod.c b/sysdeps/ieee754/dbl-64/e_fmod.c
index 60b8bbb9d2..d20466fd5d 100644
--- a/sysdeps/ieee754/dbl-64/e_fmod.c
+++ b/sysdeps/ieee754/dbl-64/e_fmod.c
@@ -1,105 +1,145 @@
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-/*
- * __ieee754_fmod(x,y)
- * Return x mod y in exact arithmetic
- * Method: shift and subtract
- */
+/* Floating-point remainder function.
+   Copyright (C) 2023 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for 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.h>
-#include <math_private.h>
-#include <stdint.h>
 #include <libm-alias-finite.h>
+#include <math.h>
+#include "math_config.h"
+
+/* With x = mx * 2^ex and y = my * 2^ey (mx, my, ex, ey being integers), the
+   simplest implementation is:
+
+   mx * 2^ex == 2 * mx * 2^(ex - 1)
 
-static const double one = 1.0, Zero[] = {0.0, -0.0,};
+   while (ex > ey)
+     {
+       mx *= 2;
+       --ex;
+       mx %= my;
+     }
+
+   With mx/my being mantissa of double floating pointer, on each step the
+   argument reduction can be improved 11 (which is sizeo of uint64_t minus
+   MANTISSA_WIDTH plus the signal bit):
+
+   while (ex > ey)
+     {
+       mx << 11;
+       ex -= 11;
+       mx %= my;
+     }  */
 
 double
 __ieee754_fmod (double x, double y)
 {
-	int32_t n,ix,iy;
-	int64_t hx,hy,hz,sx,i;
-
-	EXTRACT_WORDS64(hx,x);
-	EXTRACT_WORDS64(hy,y);
-	sx = hx&UINT64_C(0x8000000000000000);	/* sign of x */
-	hx ^=sx;				/* |x| */
-	hy &= UINT64_C(0x7fffffffffffffff);	/* |y| */
-
-    /* purge off exception values */
-	if(__builtin_expect(hy==0
-			    || hx >= UINT64_C(0x7ff0000000000000)
-			    || hy > UINT64_C(0x7ff0000000000000), 0))
-	  /* y=0,or x not finite or y is NaN */
-	    return (x*y)/(x*y);
-	if(__builtin_expect(hx<=hy, 0)) {
-	    if(hx<hy) return x;	/* |x|<|y| return x */
-	    return Zero[(uint64_t)sx>>63];	/* |x|=|y| return x*0*/
-	}
-
-    /* determine ix = ilogb(x) */
-	if(__builtin_expect(hx<UINT64_C(0x0010000000000000), 0)) {
-	  /* subnormal x */
-	  for (ix = -1022,i=(hx<<11); i>0; i<<=1) ix -=1;
-	} else ix = (hx>>52)-1023;
-
-    /* determine iy = ilogb(y) */
-	if(__builtin_expect(hy<UINT64_C(0x0010000000000000), 0)) {	/* subnormal y */
-	  for (iy = -1022,i=(hy<<11); i>0; i<<=1) iy -=1;
-	} else iy = (hy>>52)-1023;
-
-    /* set up hx, hy and align y to x */
-	if(__builtin_expect(ix >= -1022, 1))
-	    hx = UINT64_C(0x0010000000000000)|(UINT64_C(0x000fffffffffffff)&hx);
-	else {		/* subnormal x, shift x to normal */
-	    n = -1022-ix;
-	    hx<<=n;
-	}
-	if(__builtin_expect(iy >= -1022, 1))
-	    hy = UINT64_C(0x0010000000000000)|(UINT64_C(0x000fffffffffffff)&hy);
-	else {		/* subnormal y, shift y to normal */
-	    n = -1022-iy;
-	    hy<<=n;
-	}
-
-    /* fix point fmod */
-	n = ix - iy;
-	while(n--) {
-	    hz=hx-hy;
-	    if(hz<0){hx = hx+hx;}
-	    else {
-		if(hz==0)		/* return sign(x)*0 */
-		    return Zero[(uint64_t)sx>>63];
-		hx = hz+hz;
-	    }
-	}
-	hz=hx-hy;
-	if(hz>=0) {hx=hz;}
-
-    /* convert back to floating value and restore the sign */
-	if(hx==0)			/* return sign(x)*0 */
-	    return Zero[(uint64_t)sx>>63];
-	while(hx<UINT64_C(0x0010000000000000)) {	/* normalize x */
-	    hx = hx+hx;
-	    iy -= 1;
-	}
-	if(__builtin_expect(iy>= -1022, 1)) {	/* normalize output */
-	  hx = ((hx-UINT64_C(0x0010000000000000))|((uint64_t)(iy+1023)<<52));
-	    INSERT_WORDS64(x,hx|sx);
-	} else {		/* subnormal output */
-	    n = -1022 - iy;
-	    hx>>=n;
-	    INSERT_WORDS64(x,hx|sx);
-	    x *= one;		/* create necessary signal */
-	}
-	return x;		/* exact output */
+  uint64_t hx = asuint64 (x);
+  uint64_t hy = asuint64 (y);
+
+  uint64_t sx = hx & SIGN_MASK;
+  /* Get |x| and |y|.  */
+  hx ^= sx;
+  hy &= ~SIGN_MASK;
+
+  /* Special cases:
+     - If x or y is a Nan, NaN is returned.
+     - If x is an inifinity, a NaN is returned.
+     - If y is zero, Nan is returned.
+     - If x is +0/-0, and y is not zero, +0/-0 is returned.  */
+  if (__glibc_unlikely (hy == 0	|| hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
+    return (x * y) / (x * y);
+
+  if (__glibc_unlikely (hx <= hy))
+    {
+      if (hx < hy)
+	return x;
+      return asdouble (sx);
+    }
+
+  int ex = hx >> MANTISSA_WIDTH;
+  int ey = hy >> MANTISSA_WIDTH;
+
+  /* Common case where exponents are close: ey >= -907 and |x/y| < 2^52,  */
+  if (__glibc_likely (ey > MANTISSA_WIDTH && ex - ey <= EXPONENT_WIDTH))
+    {
+      uint64_t mx = (hx & MANTISSA_MASK) | (MANTISSA_MASK + 1);
+      uint64_t my = (hy & MANTISSA_MASK) | (MANTISSA_MASK + 1);
+
+      uint64_t d = (ex == ey) ? (mx - my) : (mx << (ex - ey)) % my;
+      return make_double (d, ey - 1, sx);
+    }
+
+  /* Special case, both x and y are subnormal.  */
+  if (__glibc_unlikely (ex == 0 && ey == 0))
+    return asdouble (sx | hx % hy);
+
+  /* Convert |x| and |y| to 'mx + 2^ex' and 'my + 2^ey'.  Assume that hx is
+     not subnormal by conditions above.  */
+  uint64_t mx = get_mantissa (hx) | (MANTISSA_MASK + 1);
+  ex--;
+  uint64_t my = get_mantissa (hy) | (MANTISSA_MASK + 1);
+
+  int lead_zeros_my = EXPONENT_WIDTH;
+  if (__glibc_likely (ey > 0))
+    ey--;
+  else
+    {
+      my = hy;
+      lead_zeros_my = clz_uint64 (my);
+    }
+
+  /* Assume hy != 0  */
+  int tail_zeros_my = ctz_uint64 (my);
+  int sides_zeroes = lead_zeros_my + tail_zeros_my;
+  int exp_diff = ex - ey;
+
+  int right_shift = exp_diff < tail_zeros_my ? exp_diff : tail_zeros_my;
+  my >>= right_shift;
+  exp_diff -= right_shift;
+  ey += right_shift;
+
+  int left_shift = exp_diff < EXPONENT_WIDTH ? exp_diff : EXPONENT_WIDTH;
+  mx <<= left_shift;
+  exp_diff -= left_shift;
+
+  mx %= my;
+
+  if (__glibc_unlikely (mx == 0))
+    return asdouble (sx);
+
+  if (exp_diff == 0)
+    return make_double (mx, ey, sx);
+
+  /* Assume modulo/divide operation is slow, so use multiplication with invert
+     values.  */
+  uint64_t inv_hy = UINT64_MAX / my;
+  while (exp_diff > sides_zeroes) {
+    exp_diff -= sides_zeroes;
+    uint64_t hd = (mx * inv_hy) >> (BIT_WIDTH - sides_zeroes);
+    mx <<= sides_zeroes;
+    mx -= hd * my;
+    while (__glibc_unlikely (mx > my))
+      mx -= my;
+  }
+  uint64_t hd = (mx * inv_hy) >> (BIT_WIDTH - exp_diff);
+  mx <<= exp_diff;
+  mx -= hd * my;
+  while (__glibc_unlikely (mx > my))
+    mx -= my;
+
+  return make_double (mx, ey, sx);
 }
 libm_alias_finite (__ieee754_fmod, __fmod)
diff --git a/sysdeps/ieee754/dbl-64/math_config.h b/sysdeps/ieee754/dbl-64/math_config.h
index 3cbaeede64..2049cea3f7 100644
--- a/sysdeps/ieee754/dbl-64/math_config.h
+++ b/sysdeps/ieee754/dbl-64/math_config.h
@@ -43,6 +43,24 @@
 # define TOINT_INTRINSICS 0
 #endif
 
+static inline int
+clz_uint64 (uint64_t x)
+{
+  if (sizeof (uint64_t) == sizeof (unsigned long))
+    return __builtin_clzl (x);
+  else
+    return __builtin_clzll (x);
+}
+
+static inline int
+ctz_uint64 (uint64_t x)
+{
+  if (sizeof (uint64_t) == sizeof (unsigned long))
+    return __builtin_ctzl (x);
+  else
+    return __builtin_ctzll (x);
+}
+
 #if TOINT_INTRINSICS
 /* Round x to nearest int in all rounding modes, ties have to be rounded
    consistently with converttoint so the results match.  If the result
@@ -88,6 +106,49 @@ issignaling_inline (double x)
   return 2 * (ix ^ 0x0008000000000000) > 2 * 0x7ff8000000000000ULL;
 }
 
+#define BIT_WIDTH       64
+#define MANTISSA_WIDTH  52
+#define EXPONENT_WIDTH  11
+#define MANTISSA_MASK   UINT64_C(0x000fffffffffffff)
+#define EXPONENT_MASK   UINT64_C(0x7ff0000000000000)
+#define EXP_MANT_MASK   UINT64_C(0x7fffffffffffffff)
+#define QUIET_NAN_MASK  UINT64_C(0x0008000000000000)
+#define SIGN_MASK	UINT64_C(0x8000000000000000)
+
+static inline bool
+is_nan (uint64_t x)
+{
+  return (x & EXP_MANT_MASK) > EXPONENT_MASK;
+}
+
+static inline uint64_t
+get_mantissa (uint64_t x)
+{
+  return x & MANTISSA_MASK;
+}
+
+/* Convert integer number X, unbiased exponent EP, and sign S to double:
+
+   result = X * 2^(EP+1 - exponent_bias)
+
+   NB: zero is not supported.  */
+static inline double
+make_double (uint64_t x, int64_t ep, uint64_t s)
+{
+  int lz = clz_uint64 (x) - EXPONENT_WIDTH;
+  x <<= lz;
+  ep -= lz;
+
+  if (__glibc_unlikely (ep < 0 || x == 0))
+    {
+      x >>= -ep;
+      ep = 0;
+    }
+
+  return asdouble (s + x + (ep << MANTISSA_WIDTH));
+}
+
+
 #define NOINLINE __attribute__ ((noinline))
 
 /* Error handling tail calls for special cases, with a sign argument.
-- 
2.34.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v4 4/5] math: Improve fmodf
  2023-03-20 16:01 [PATCH v4 0/5] Improve fmod and fmodf Adhemerval Zanella
                   ` (2 preceding siblings ...)
  2023-03-20 16:01 ` [PATCH v4 3/5] math: Improve fmod Adhemerval Zanella
@ 2023-03-20 16:01 ` Adhemerval Zanella
  2023-04-03 13:33   ` Wilco Dijkstra
  2023-03-20 16:01 ` [PATCH v4 5/5] math: Remove the error handling wrapper from fmod and fmodf Adhemerval Zanella
  4 siblings, 1 reply; 12+ messages in thread
From: Adhemerval Zanella @ 2023-03-20 16:01 UTC (permalink / raw)
  To: libc-alpha, Wilco Dijkstra, H . J . Lu; +Cc: kirill

This uses a new algorithm similar to already proposed earlier [1].
With x = mx * 2^ex and y = my * 2^ey (mx, my, ex, ey being integers),
the simplest implementation is:

   mx * 2^ex == 2 * mx * 2^(ex - 1)

   while (ex > ey)
     {
       mx *= 2;
       --ex;
       mx %= my;
     }

With mx/my being mantissa of double floating pointer, on each step the
argument reduction can be improved 8 (which is sizeof of uint32_t minus
MANTISSA_WIDTH plus the signal bit):

   while (ex > ey)
     {
       mx << 8;
       ex -= 8;
       mx %= my;
     }  */

The implementation uses builtin clz and ctz, along with shifts to
convert hx/hy back to doubles.  Different than the original patch,
this path assume modulo/divide operation is slow, so use multiplication
with invert values.

I see the following performance improvements using fmod benchtests
(result only show the 'mean' result):

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  x86_64 (Ryzen 9) | subnormals      | 17.2549  | 12.0318
  x86_64 (Ryzen 9) | normal          | 85.4096  | 49.9641
  x86_64 (Ryzen 9) | close-exponents | 19.1072  | 15.8224
  aarch64 (N1)     | subnormal       | 10.2182  | 6.81778
  aarch64 (N1)     | normal          | 60.0616  | 20.3667
  aarch64 (N1)     | close-exponents | 11.5256  | 8.39685

I also see similar improvements on arm-linux-gnueabihf when running on
the N1 aarch64 chips, where it a lot of soft-fp implementation (for
modulo, and multiplication):

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  armhf (N1)       | subnormal       | 11.6662  | 10.8955
  armhf (N1)       | normal          | 69.2759  | 34.1524
  armhf (N1)       | close-exponents | 13.6472  | 18.2131

Instead of using the math_private.h definitions, I used the
math_config.h instead which is used on newer math implementations.

Co-authored-by: kirill <kirill.okhotnikov@gmail.com>

[1] https://sourceware.org/pipermail/libc-alpha/2020-November/119794.html
---
 math/libm-test-fmod.inc              |   4 +
 sysdeps/ieee754/flt-32/e_fmodf.c     | 228 ++++++++++++++++-----------
 sysdeps/ieee754/flt-32/math_config.h |  41 +++++
 3 files changed, 180 insertions(+), 93 deletions(-)

diff --git a/math/libm-test-fmod.inc b/math/libm-test-fmod.inc
index 8841c1332c..43376c3df2 100644
--- a/math/libm-test-fmod.inc
+++ b/math/libm-test-fmod.inc
@@ -213,6 +213,10 @@ static const struct test_ff_f_data fmod_test_data[] =
     TEST_ff_f (fmod, -0x1p127L, -0x3p-148L, -0x1p-147L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, -0x1p127L, 0x3p-126L, -0x1p-125L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, -0x1p127L, -0x3p-126L, -0x1p-125L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, 0x1.3a3e6p-127, 0x1.8b8338p-128, 0x1.d1f31p-129, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, 0x1.3a3e6p-127, -0x1.8b8338p-128, 0x1.d1f31p-129, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x1.3a3e6p-127, 0x1.8b8338p-128, -0x1.d1f31p-129, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x1.3a3e6p-127, -0x1.8b8338p-128, -0x1.d1f31p-129, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
 #if !TEST_COND_binary32
     TEST_ff_f (fmod, 0x1p1023L, 0x3p-1074L, 0x1p-1073L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, 0x1p1023L, -0x3p-1074L, 0x1p-1073L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
diff --git a/sysdeps/ieee754/flt-32/e_fmodf.c b/sysdeps/ieee754/flt-32/e_fmodf.c
index b71c4f754f..53db32cbe2 100644
--- a/sysdeps/ieee754/flt-32/e_fmodf.c
+++ b/sysdeps/ieee754/flt-32/e_fmodf.c
@@ -1,102 +1,144 @@
-/* e_fmodf.c -- float version of e_fmod.c.
- */
-
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-/*
- * __ieee754_fmodf(x,y)
- * Return x mod y in exact arithmetic
- * Method: shift and subtract
- */
+/* Floating-point remainder function.
+   Copyright (C) 2023 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for 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.h>
-#include <math_private.h>
 #include <libm-alias-finite.h>
+#include <math.h>
+#include "math_config.h"
+
+/* With x = mx * 2^ex and y = my * 2^ey (mx, my, ex, ey being integers), the
+   simplest implementation is:
+
+   mx * 2^ex == 2 * mx * 2^(ex - 1)
 
-static const float one = 1.0, Zero[] = {0.0, -0.0,};
+   while (ex > ey)
+     {
+       mx *= 2;
+       --ex;
+       mx %= my;
+     }
+
+   With mx/my being mantissa of double floating pointer, on each step the
+   argument reduction can be improved 11 (which is sizeo of uint64_t minus
+   MANTISSA_WIDTH plus the signal bit):
+
+   while (ex > ey)
+     {
+       mx << 11;
+       ex -= 11;
+       mx %= my;
+     }  */
 
 float
 __ieee754_fmodf (float x, float y)
 {
-	int32_t n,hx,hy,hz,ix,iy,sx,i;
-
-	GET_FLOAT_WORD(hx,x);
-	GET_FLOAT_WORD(hy,y);
-	sx = hx&0x80000000;		/* sign of x */
-	hx ^=sx;		/* |x| */
-	hy &= 0x7fffffff;	/* |y| */
-
-    /* purge off exception values */
-	if(hy==0||(hx>=0x7f800000)||		/* y=0,or x not finite */
-	   (hy>0x7f800000))			/* or y is NaN */
-	    return (x*y)/(x*y);
-	if(hx<hy) return x;			/* |x|<|y| return x */
-	if(hx==hy)
-	    return Zero[(uint32_t)sx>>31];	/* |x|=|y| return x*0*/
-
-    /* determine ix = ilogb(x) */
-	if(hx<0x00800000) {	/* subnormal x */
-	    for (ix = -126,i=(hx<<8); i>0; i<<=1) ix -=1;
-	} else ix = (hx>>23)-127;
-
-    /* determine iy = ilogb(y) */
-	if(hy<0x00800000) {	/* subnormal y */
-	    for (iy = -126,i=(hy<<8); i>=0; i<<=1) iy -=1;
-	} else iy = (hy>>23)-127;
-
-    /* set up {hx,lx}, {hy,ly} and align y to x */
-	if(ix >= -126)
-	    hx = 0x00800000|(0x007fffff&hx);
-	else {		/* subnormal x, shift x to normal */
-	    n = -126-ix;
-	    hx = hx<<n;
-	}
-	if(iy >= -126)
-	    hy = 0x00800000|(0x007fffff&hy);
-	else {		/* subnormal y, shift y to normal */
-	    n = -126-iy;
-	    hy = hy<<n;
-	}
-
-    /* fix point fmod */
-	n = ix - iy;
-	while(n--) {
-	    hz=hx-hy;
-	    if(hz<0){hx = hx+hx;}
-	    else {
-		if(hz==0)		/* return sign(x)*0 */
-		    return Zero[(uint32_t)sx>>31];
-		hx = hz+hz;
-	    }
-	}
-	hz=hx-hy;
-	if(hz>=0) {hx=hz;}
-
-    /* convert back to floating value and restore the sign */
-	if(hx==0)			/* return sign(x)*0 */
-	    return Zero[(uint32_t)sx>>31];
-	while(hx<0x00800000) {		/* normalize x */
-	    hx = hx+hx;
-	    iy -= 1;
-	}
-	if(iy>= -126) {		/* normalize output */
-	    hx = ((hx-0x00800000)|((iy+127)<<23));
-	    SET_FLOAT_WORD(x,hx|sx);
-	} else {		/* subnormal output */
-	    n = -126 - iy;
-	    hx >>= n;
-	    SET_FLOAT_WORD(x,hx|sx);
-	    x *= one;		/* create necessary signal */
-	}
-	return x;		/* exact output */
+  uint32_t hx = asuint (x);
+  uint32_t hy = asuint (y);
+
+  uint32_t sx = hx & SIGN_MASK;
+  /* Get |x| and |y|.  */
+  hx ^= sx;
+  hy &= ~SIGN_MASK;
+
+  /* Special cases:
+     - If x or y is a Nan, NaN is returned.
+     - If x is an inifinity, a NaN is returned.
+     - If y is zero, Nan is returned.
+     - If x is +0/-0, and y is not zero, +0/-0 is returned.  */
+  if (__glibc_unlikely (hy == 0	|| hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
+    return (x * y) / (x * y);
+
+  if (__glibc_unlikely (hx <= hy))
+    {
+      if (hx < hy)
+	return x;
+      return asfloat (sx);
+    }
+
+  int ex = hx >> MANTISSA_WIDTH;
+  int ey = hy >> MANTISSA_WIDTH;
+
+  /* Common case where exponents are close: ey >= -103 and |x/y| < 2^8,  */
+  if (__glibc_likely (ey > MANTISSA_WIDTH && ex - ey <= EXPONENT_WIDTH))
+    {
+      uint64_t mx = (hx & MANTISSA_MASK) | (MANTISSA_MASK + 1);
+      uint64_t my = (hy & MANTISSA_MASK) | (MANTISSA_MASK + 1);
+
+      uint32_t d = (ex == ey) ? (mx - my) : (mx << (ex - ey)) % my;
+      return make_float (d, ey - 1, sx);
+    }
+
+  /* Special case, both x and y are subnormal.  */
+  if (__glibc_unlikely (ex == 0 && ey == 0))
+    return asfloat (sx | hx % hy);
+
+  /* Convert |x| and |y| to 'mx + 2^ex' and 'my + 2^ey'.  Assume that hx is
+     not subnormal by conditions above.  */
+  uint32_t mx = get_mantissa (hx) | (MANTISSA_MASK + 1);
+  ex--;
+
+  uint32_t my = get_mantissa (hy) | (MANTISSA_MASK + 1);
+  int lead_zeros_my = EXPONENT_WIDTH;
+  if (__glibc_likely (ey > 0))
+    ey--;
+  else
+    {
+      my = hy;
+      lead_zeros_my = __builtin_clz (my);
+    }
+
+  int tail_zeros_my = __builtin_ctz (my);
+  int sides_zeroes = lead_zeros_my + tail_zeros_my;
+  int exp_diff = ex - ey;
+
+  int right_shift = exp_diff < tail_zeros_my ? exp_diff : tail_zeros_my;
+  my >>= right_shift;
+  exp_diff -= right_shift;
+  ey += right_shift;
+
+  int left_shift = exp_diff < EXPONENT_WIDTH ? exp_diff : EXPONENT_WIDTH;
+  mx <<= left_shift;
+  exp_diff -= left_shift;
+
+  mx %= my;
+
+  if (__glibc_unlikely (mx == 0))
+    return asfloat (sx);
+
+  if (exp_diff == 0)
+    return make_float (mx, ey, sx);
+
+  /* Assume modulo/divide operation is slow, so use multiplication with invert
+     values.  */
+  uint32_t inv_hy = UINT32_MAX / my;
+  while (exp_diff > sides_zeroes) {
+    exp_diff -= sides_zeroes;
+    uint32_t hd = (mx * inv_hy) >> (BIT_WIDTH - sides_zeroes);
+    mx <<= sides_zeroes;
+    mx -= hd * my;
+    while (__glibc_unlikely (mx > my))
+      mx -= my;
+  }
+  uint32_t hd = (mx * inv_hy) >> (BIT_WIDTH - exp_diff);
+  mx <<= exp_diff;
+  mx -= hd * my;
+  while (__glibc_unlikely (mx > my))
+    mx -= my;
+
+  return make_float (mx, ey, sx);
 }
 libm_alias_finite (__ieee754_fmodf, __fmodf)
diff --git a/sysdeps/ieee754/flt-32/math_config.h b/sysdeps/ieee754/flt-32/math_config.h
index 23045f59d6..829430ea28 100644
--- a/sysdeps/ieee754/flt-32/math_config.h
+++ b/sysdeps/ieee754/flt-32/math_config.h
@@ -110,6 +110,47 @@ issignalingf_inline (float x)
   return 2 * (ix ^ 0x00400000) > 2 * 0x7fc00000UL;
 }
 
+#define BIT_WIDTH       32
+#define MANTISSA_WIDTH  23
+#define EXPONENT_WIDTH  8
+#define MANTISSA_MASK   0x007fffff
+#define EXPONENT_MASK   0x7f800000
+#define EXP_MANT_MASK   0x7fffffff
+#define QUIET_NAN_MASK  0x00400000
+#define SIGN_MASK       0x80000000
+
+static inline bool
+is_nan (uint32_t x)
+{
+  return (x & EXP_MANT_MASK) > EXPONENT_MASK;
+}
+
+static inline uint32_t
+get_mantissa (uint32_t x)
+{
+  return x & MANTISSA_MASK;
+}
+
+/* Convert integer number X, unbiased exponent EP, and sign S to double:
+
+   result = X * 2^(EP+1 - exponent_bias)
+
+   NB: zero is not supported.  */
+static inline double
+make_float (uint32_t x, int ep, uint32_t s)
+{
+  int lz = __builtin_clz (x) - EXPONENT_WIDTH;
+  x <<= lz;
+  ep -= lz;
+
+  if (__glibc_unlikely (ep < 0 || x == 0))
+    {
+      x >>= -ep;
+      ep = 0;
+    }
+  return asfloat (s + x + (ep << MANTISSA_WIDTH));
+}
+
 #define NOINLINE __attribute__ ((noinline))
 
 attribute_hidden float __math_oflowf (uint32_t);
-- 
2.34.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v4 5/5] math: Remove the error handling wrapper from fmod and fmodf
  2023-03-20 16:01 [PATCH v4 0/5] Improve fmod and fmodf Adhemerval Zanella
                   ` (3 preceding siblings ...)
  2023-03-20 16:01 ` [PATCH v4 4/5] math: Improve fmodf Adhemerval Zanella
@ 2023-03-20 16:01 ` Adhemerval Zanella
  2023-04-03 13:43   ` Wilco Dijkstra
  4 siblings, 1 reply; 12+ messages in thread
From: Adhemerval Zanella @ 2023-03-20 16:01 UTC (permalink / raw)
  To: libc-alpha, Wilco Dijkstra, H . J . Lu

The error handling is moved to sysdeps/ieee754 version with no SVID
support.  The compatibility symbol versions still use the wrapper
with SVID error handling around the new code.  There is no new symbol
version nor compatibility code on !LIBM_SVID_COMPAT targets
(e.g. riscv).

The ia64 is unchanged, since it still uses the arch specific
__libm_error_region on its implementation.  For both i686 and m68k,
which provive arch specific implementation, wrappers are added so
no new symbol are added (which would require to change the
implementations).

It shows an small improvement, the results for fmod:

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  x86_64 (Ryzen 9) | subnormals      | 12.5049  | 9.40992
  x86_64 (Ryzen 9) | normal          | 296.939  | 296.738
  x86_64 (Ryzen 9) | close-exponents | 16.0244  | 13.119
  aarch64 (N1)     | subnormal       | 6.81778  | 4.33313
  aarch64 (N1)     | normal          | 155.620  | 152.915
  aarch64 (N1)     | close-exponents | 8.21306  | 5.76138
  armhf (N1)       | subnormal       | 15.1083  | 14.5746
  armhf (N1)       | normal          | 244.833  | 241.738
  armhf (N1)       | close-exponents | 21.8182  | 22.457

Checked on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu.
---
 math/Versions                                 |  4 ++++
 math/w_fmod_compat.c                          | 13 ++++++++---
 math/w_fmodf_compat.c                         |  6 ++---
 sysdeps/i386/fpu/w_fmod_compat.c              | 14 ++++++++++++
 sysdeps/i386/fpu/w_fmodf_compat.c             | 14 ++++++++++++
 sysdeps/ieee754/dbl-64/e_fmod.c               | 22 +++++++++++++++----
 sysdeps/ieee754/dbl-64/math_config.h          |  9 ++++++++
 sysdeps/ieee754/dbl-64/math_err.c             |  6 +++++
 sysdeps/ieee754/dbl-64/w_fmod.c               |  1 +
 sysdeps/ieee754/flt-32/e_fmodf.c              | 20 ++++++++++++++---
 sysdeps/ieee754/flt-32/math_config.h          |  7 ++++++
 sysdeps/ieee754/flt-32/math_errf.c            |  6 +++++
 sysdeps/ieee754/flt-32/w_fmodf.c              |  1 +
 sysdeps/m68k/m680x0/fpu/w_fmod_compat.c       | 14 ++++++++++++
 sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c      | 14 ++++++++++++
 sysdeps/unix/sysv/linux/aarch64/libm.abilist  |  2 ++
 sysdeps/unix/sysv/linux/alpha/libm.abilist    |  2 ++
 sysdeps/unix/sysv/linux/arm/be/libm.abilist   |  2 ++
 sysdeps/unix/sysv/linux/arm/le/libm.abilist   |  2 ++
 sysdeps/unix/sysv/linux/hppa/libm.abilist     |  2 ++
 .../sysv/linux/m68k/coldfire/libm.abilist     |  2 ++
 .../sysv/linux/microblaze/be/libm.abilist     |  2 ++
 .../sysv/linux/microblaze/le/libm.abilist     |  2 ++
 .../unix/sysv/linux/mips/mips32/libm.abilist  |  2 ++
 .../unix/sysv/linux/mips/mips64/libm.abilist  |  2 ++
 sysdeps/unix/sysv/linux/nios2/libm.abilist    |  2 ++
 .../linux/powerpc/powerpc32/fpu/libm.abilist  |  2 ++
 .../powerpc/powerpc32/nofpu/libm.abilist      |  2 ++
 .../linux/powerpc/powerpc64/be/libm.abilist   |  2 ++
 .../linux/powerpc/powerpc64/le/libm.abilist   |  2 ++
 .../unix/sysv/linux/s390/s390-32/libm.abilist |  2 ++
 .../unix/sysv/linux/s390/s390-64/libm.abilist |  2 ++
 sysdeps/unix/sysv/linux/sh/be/libm.abilist    |  2 ++
 sysdeps/unix/sysv/linux/sh/le/libm.abilist    |  2 ++
 .../sysv/linux/sparc/sparc32/libm.abilist     |  2 ++
 .../sysv/linux/sparc/sparc64/libm.abilist     |  2 ++
 .../unix/sysv/linux/x86_64/64/libm.abilist    |  2 ++
 .../unix/sysv/linux/x86_64/x32/libm.abilist   |  2 ++
 38 files changed, 184 insertions(+), 13 deletions(-)
 create mode 100644 sysdeps/i386/fpu/w_fmod_compat.c
 create mode 100644 sysdeps/i386/fpu/w_fmodf_compat.c
 create mode 100644 sysdeps/ieee754/dbl-64/w_fmod.c
 create mode 100644 sysdeps/ieee754/flt-32/w_fmodf.c
 create mode 100644 sysdeps/m68k/m680x0/fpu/w_fmod_compat.c
 create mode 100644 sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c

diff --git a/math/Versions b/math/Versions
index fef7a08c3b..759b5fac7f 100644
--- a/math/Versions
+++ b/math/Versions
@@ -631,4 +631,8 @@ libm {
     # No SVID compatible error handling.
     hypotf; hypot;
   }
+  GLIBC_2.38 {
+    # No SVID compatible error handling.
+    fmod; fmodf;
+  }
 }
diff --git a/math/w_fmod_compat.c b/math/w_fmod_compat.c
index c6947f3042..aef98885a3 100644
--- a/math/w_fmod_compat.c
+++ b/math/w_fmod_compat.c
@@ -20,10 +20,10 @@
 #include <math-svid-compat.h>
 #include <libm-alias-double.h>
 
-#if LIBM_SVID_COMPAT
+#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_38)
 /* wrapper fmod */
 double
-__fmod (double x, double y)
+__fmod_compat (double x, double y)
 {
   if (__builtin_expect (isinf (x) || y == 0.0, 0)
       && _LIB_VERSION != _IEEE_ && !isnan (y) && !isnan (x))
@@ -32,5 +32,12 @@ __fmod (double x, double y)
 
   return __ieee754_fmod (x, y);
 }
-libm_alias_double (__fmod, fmod)
+compat_symbol (libm, __fmod_compat, fmod, GLIBC_2_0);
+# ifdef NO_LONG_DOUBLE
+weak_alias (__fmod_compat, fmodl)
+# endif
+# ifdef LONG_DOUBLE_COMPAT
+LONG_DOUBLE_COMPAT_CHOOSE_libm_fmodl (
+  compat_symbol (libm, __fmod_compat, fmodl, FIRST_VERSION_libm_fmodl), );
+# endif
 #endif
diff --git a/math/w_fmodf_compat.c b/math/w_fmodf_compat.c
index 5025b06684..55823961f4 100644
--- a/math/w_fmodf_compat.c
+++ b/math/w_fmodf_compat.c
@@ -20,10 +20,10 @@
 #include <math-svid-compat.h>
 #include <libm-alias-float.h>
 
-#if LIBM_SVID_COMPAT
+#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_38)
 /* wrapper fmodf */
 float
-__fmodf (float x, float y)
+__fmod_compatf (float x, float y)
 {
   if (__builtin_expect (isinf (x) || y == 0.0f, 0)
       && _LIB_VERSION != _IEEE_ && !isnan (y) && !isnan (x))
@@ -32,5 +32,5 @@ __fmodf (float x, float y)
 
   return __ieee754_fmodf (x, y);
 }
-libm_alias_float (__fmod, fmod)
+compat_symbol (libm, __fmod_compatf, fmodf, GLIBC_2_0);
 #endif
diff --git a/sysdeps/i386/fpu/w_fmod_compat.c b/sysdeps/i386/fpu/w_fmod_compat.c
new file mode 100644
index 0000000000..5ac9995ffd
--- /dev/null
+++ b/sysdeps/i386/fpu/w_fmod_compat.c
@@ -0,0 +1,14 @@
+/* i386 provides an optimized __ieee752_fmod.  */
+#include <math-svid-compat.h>
+#ifdef SHARED
+# undef SHLIB_COMPAT
+# define SHLIB_COMPAT(a, b, c) 1
+# undef LIBM_SVID_COMPAT
+# 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)
+#endif
diff --git a/sysdeps/i386/fpu/w_fmodf_compat.c b/sysdeps/i386/fpu/w_fmodf_compat.c
new file mode 100644
index 0000000000..cc417e07d3
--- /dev/null
+++ b/sysdeps/i386/fpu/w_fmodf_compat.c
@@ -0,0 +1,14 @@
+/* i386 provides an optimized __ieee752_fmodf.  */
+#include <math-svid-compat.h>
+#ifdef SHARED
+# undef SHLIB_COMPAT
+# define SHLIB_COMPAT(a, b, c) 1
+# undef LIBM_SVID_COMPAT
+# define LIBM_SVID_COMPAT 1
+# undef compat_symbol
+# define compat_symbol(a, b, c, d)
+#endif
+#include <math/w_fmodf_compat.c>
+#ifdef SHARED
+libm_alias_float (__fmod_compat, fmod)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/e_fmod.c b/sysdeps/ieee754/dbl-64/e_fmod.c
index d20466fd5d..ff506c40b4 100644
--- a/sysdeps/ieee754/dbl-64/e_fmod.c
+++ b/sysdeps/ieee754/dbl-64/e_fmod.c
@@ -16,7 +16,9 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#include <libm-alias-double.h>
 #include <libm-alias-finite.h>
+#include <math-svid-compat.h>
 #include <math.h>
 #include "math_config.h"
 
@@ -44,7 +46,7 @@
      }  */
 
 double
-__ieee754_fmod (double x, double y)
+__fmod (double x, double y)
 {
   uint64_t hx = asuint64 (x);
   uint64_t hy = asuint64 (y);
@@ -56,11 +58,16 @@ __ieee754_fmod (double x, double y)
 
   /* Special cases:
      - If x or y is a Nan, NaN is returned.
-     - If x is an inifinity, a NaN is returned.
+     - If x is an inifinity, a NaN is returned and EDOM is set.
      - If y is zero, Nan is returned.
      - If x is +0/-0, and y is not zero, +0/-0 is returned.  */
-  if (__glibc_unlikely (hy == 0	|| hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
-    return (x * y) / (x * y);
+  if (__glibc_unlikely (hy == 0
+			|| hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
+    {
+      if (is_nan (hx) || is_nan (hy))
+	return (x * y) / (x * y);
+      return __math_edom ((x * y) / (x * y));
+    }
 
   if (__glibc_unlikely (hx <= hy))
     {
@@ -142,4 +149,11 @@ __ieee754_fmod (double x, double y)
 
   return make_double (mx, ey, sx);
 }
+strong_alias (__fmod, __ieee754_fmod)
 libm_alias_finite (__ieee754_fmod, __fmod)
+#if LIBM_SVID_COMPAT
+versioned_symbol (libm, __fmod, fmod, GLIBC_2_38);
+libm_alias_double_other (__fmod, fmod)
+#else
+libm_alias_double (__fmod, fmod)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/math_config.h b/sysdeps/ieee754/dbl-64/math_config.h
index 2049cea3f7..5173b99e4a 100644
--- a/sysdeps/ieee754/dbl-64/math_config.h
+++ b/sysdeps/ieee754/dbl-64/math_config.h
@@ -121,6 +121,12 @@ is_nan (uint64_t x)
   return (x & EXP_MANT_MASK) > EXPONENT_MASK;
 }
 
+static inline bool
+is_inf (uint64_t x)
+{
+  return (x & EXP_MANT_MASK) == EXPONENT_MASK;
+}
+
 static inline uint64_t
 get_mantissa (uint64_t x)
 {
@@ -170,6 +176,9 @@ attribute_hidden double __math_invalid (double);
 
 /* Error handling using output checking, only for errno setting.  */
 
+/* Check if the result generated a demain error.  */
+attribute_hidden double __math_edom (double x);
+
 /* Check if the result overflowed to infinity.  */
 attribute_hidden double __math_check_oflow (double);
 /* Check if the result underflowed to 0.  */
diff --git a/sysdeps/ieee754/dbl-64/math_err.c b/sysdeps/ieee754/dbl-64/math_err.c
index 5f5f965d3e..377a4caad2 100644
--- a/sysdeps/ieee754/dbl-64/math_err.c
+++ b/sysdeps/ieee754/dbl-64/math_err.c
@@ -33,6 +33,12 @@ with_errno (double y, int e)
 #define with_errno(x, e) (x)
 #endif
 
+attribute_hidden double
+__math_edom (double y)
+{
+  return with_errno (y, EDOM);
+}
+
 /* NOINLINE reduces code size.  */
 NOINLINE static double
 xflow (uint32_t sign, double y)
diff --git a/sysdeps/ieee754/dbl-64/w_fmod.c b/sysdeps/ieee754/dbl-64/w_fmod.c
new file mode 100644
index 0000000000..1cc8931700
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/w_fmod.c
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/ieee754/flt-32/e_fmodf.c b/sysdeps/ieee754/flt-32/e_fmodf.c
index 53db32cbe2..c0b5dccc23 100644
--- a/sysdeps/ieee754/flt-32/e_fmodf.c
+++ b/sysdeps/ieee754/flt-32/e_fmodf.c
@@ -17,6 +17,8 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <libm-alias-finite.h>
+#include <libm-alias-float.h>
+#include <math-svid-compat.h>
 #include <math.h>
 #include "math_config.h"
 
@@ -44,7 +46,7 @@
      }  */
 
 float
-__ieee754_fmodf (float x, float y)
+__fmodf (float x, float y)
 {
   uint32_t hx = asuint (x);
   uint32_t hy = asuint (y);
@@ -59,8 +61,13 @@ __ieee754_fmodf (float x, float y)
      - If x is an inifinity, a NaN is returned.
      - If y is zero, Nan is returned.
      - If x is +0/-0, and y is not zero, +0/-0 is returned.  */
-  if (__glibc_unlikely (hy == 0	|| hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
-    return (x * y) / (x * y);
+  if (__glibc_unlikely (hy == 0
+			|| hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
+    {
+      if (is_nan (hx) || is_nan (hy))
+	return (x * y) / (x * y);
+      return __math_edomf ((x * y) / (x * y));
+    }
 
   if (__glibc_unlikely (hx <= hy))
     {
@@ -141,4 +148,11 @@ __ieee754_fmodf (float x, float y)
 
   return make_float (mx, ey, sx);
 }
+strong_alias (__fmodf, __ieee754_fmodf)
+#if LIBM_SVID_COMPAT
+versioned_symbol (libm, __fmodf, fmodf, GLIBC_2_38);
+libm_alias_float_other (__fmod, fmod)
+#else
+libm_alias_float (__fmod, fmod)
+#endif
 libm_alias_finite (__ieee754_fmodf, __fmodf)
diff --git a/sysdeps/ieee754/flt-32/math_config.h b/sysdeps/ieee754/flt-32/math_config.h
index 829430ea28..f97cd39df1 100644
--- a/sysdeps/ieee754/flt-32/math_config.h
+++ b/sysdeps/ieee754/flt-32/math_config.h
@@ -125,6 +125,12 @@ is_nan (uint32_t x)
   return (x & EXP_MANT_MASK) > EXPONENT_MASK;
 }
 
+static inline bool
+is_inf (uint32_t x)
+{
+  return (x & EXP_MANT_MASK) == EXPONENT_MASK;
+}
+
 static inline uint32_t
 get_mantissa (uint32_t x)
 {
@@ -158,6 +164,7 @@ attribute_hidden float __math_uflowf (uint32_t);
 attribute_hidden float __math_may_uflowf (uint32_t);
 attribute_hidden float __math_divzerof (uint32_t);
 attribute_hidden float __math_invalidf (float);
+attribute_hidden float __math_edomf (float x);
 
 /* Shared between expf, exp2f, exp10f, and powf.  */
 #define EXP2F_TABLE_BITS 5
diff --git a/sysdeps/ieee754/flt-32/math_errf.c b/sysdeps/ieee754/flt-32/math_errf.c
index 0389ce0a81..7245ab8d96 100644
--- a/sysdeps/ieee754/flt-32/math_errf.c
+++ b/sysdeps/ieee754/flt-32/math_errf.c
@@ -31,6 +31,12 @@ with_errnof (float y, int e)
 # define with_errnof(x, e) (x)
 #endif
 
+attribute_hidden float
+__math_edomf (float y)
+{
+  return with_errnof (y, EDOM);
+}
+
 /* NOINLINE prevents fenv semantics breaking optimizations.  */
 NOINLINE static float
 xflowf (uint32_t sign, float y)
diff --git a/sysdeps/ieee754/flt-32/w_fmodf.c b/sysdeps/ieee754/flt-32/w_fmodf.c
new file mode 100644
index 0000000000..1cc8931700
--- /dev/null
+++ b/sysdeps/ieee754/flt-32/w_fmodf.c
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/m68k/m680x0/fpu/w_fmod_compat.c b/sysdeps/m68k/m680x0/fpu/w_fmod_compat.c
new file mode 100644
index 0000000000..527d4fbed2
--- /dev/null
+++ b/sysdeps/m68k/m680x0/fpu/w_fmod_compat.c
@@ -0,0 +1,14 @@
+/* m68k provides an optimized __ieee752_fmod.  */
+#include <math-svid-compat.h>
+#ifdef SHARED
+# undef SHLIB_COMPAT
+# define SHLIB_COMPAT(a, b, c) 1
+# undef LIBM_SVID_COMPAT
+# 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)
+#endif
diff --git a/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c b/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c
new file mode 100644
index 0000000000..5043586b91
--- /dev/null
+++ b/sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c
@@ -0,0 +1,14 @@
+/* m68k provides an optimized __ieee752_fmodf.  */
+#include <math-svid-compat.h>
+#ifdef SHARED
+# undef SHLIB_COMPAT
+# define SHLIB_COMPAT(a, b, c) 1
+# undef LIBM_SVID_COMPAT
+# define LIBM_SVID_COMPAT 1
+# undef compat_symbol
+# define compat_symbol(a, b, c, d)
+#endif
+#include <math/w_fmodf_compat.c>
+#ifdef SHARED
+libm_alias_float (__fmod_compat, fmod)
+#endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index c2e3c6453e..e3924c3499 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1146,3 +1146,5 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index 4f85b6180f..066dd1a6b3 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1203,6 +1203,8 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 __clog10l F
 GLIBC_2.4 __finitel F
 GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index 36190add84..4adfed072b 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -533,6 +533,8 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 _LIB_VERSION D 0x4
 GLIBC_2.4 __clog10 F
 GLIBC_2.4 __clog10f F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index 36190add84..4adfed072b 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -533,6 +533,8 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 _LIB_VERSION D 0x4
 GLIBC_2.4 __clog10 F
 GLIBC_2.4 __clog10f F
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index b5dd4e851f..5c3f47caef 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -844,4 +844,6 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index 36190add84..4adfed072b 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -533,6 +533,8 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 _LIB_VERSION D 0x4
 GLIBC_2.4 __clog10 F
 GLIBC_2.4 __clog10f F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index 274ecff630..ea0dbd4b72 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -845,3 +845,5 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index 274ecff630..ea0dbd4b72 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -845,3 +845,5 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index 08b902118d..7c94a8db70 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -844,4 +844,6 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index 09bb3bd75b..0d08245adf 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1146,3 +1146,5 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
index 11abbb5668..a3b776fece 100644
--- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
@@ -845,3 +845,5 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index 1688809c36..c696215739 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -890,6 +890,8 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 __clog10l F
 GLIBC_2.4 __finitel F
 GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index e880cebd78..a5ce9b1997 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -889,6 +889,8 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 __clog10l F
 GLIBC_2.4 __finitel F
 GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
index 033385dfc1..8e41056d0d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -883,6 +883,8 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 __clog10l F
 GLIBC_2.4 __finitel F
 GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index 7923d428bc..939f29a0f2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1318,3 +1318,5 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index 9a84163089..4baefb1217 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1147,6 +1147,8 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 __clog10l F
 GLIBC_2.4 __finitel F
 GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index 174bde4fa0..debb767575 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1147,6 +1147,8 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 __clog10l F
 GLIBC_2.4 __finitel F
 GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
index 1e1324d667..fb94386fff 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -844,4 +844,6 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
index 1e1324d667..fb94386fff 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -844,4 +844,6 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 exp2l F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index 217e6eff7f..2fdb5ff145 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1154,6 +1154,8 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
 GLIBC_2.4 __clog10l F
 GLIBC_2.4 __finitel F
 GLIBC_2.4 __fpclassifyl F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index 6b53b0c59f..02d4c3a754 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1146,3 +1146,5 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index dbefbc3a1a..cc8be5b510 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1179,3 +1179,5 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index 8001d0f219..fda4df2653 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1179,3 +1179,5 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
-- 
2.34.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 1/5] benchtests: Add fmod benchmark
  2023-03-20 16:01 ` [PATCH v4 1/5] benchtests: Add fmod benchmark Adhemerval Zanella
@ 2023-04-03 13:13   ` Wilco Dijkstra
  0 siblings, 0 replies; 12+ messages in thread
From: Wilco Dijkstra @ 2023-04-03 13:13 UTC (permalink / raw)
  To: Adhemerval Zanella, libc-alpha, H . J . Lu

Hi Adhemerval,

LGTM (in the future we should aim to add traces when we can
get them)

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>

Cheers,
Wilco

> Add three different dataset, from random floating point numbers:
>
> 1. Subnormals: 128 inputs.
> 2. Normal numbers with large exponent difference (|x/y| > 2^52):
>    1024 inputs between DBL_MIN and DBL_MAX;
> 3. Close exponents (ey >= -907 and |x/y| < 2^52): 1024 inputs with
>   exponents between -10 and 10.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 2/5] benchtests: Add fmodf benchmark
  2023-03-20 16:01 ` [PATCH v4 2/5] benchtests: Add fmodf benchmark Adhemerval Zanella
@ 2023-04-03 13:16   ` Wilco Dijkstra
  0 siblings, 0 replies; 12+ messages in thread
From: Wilco Dijkstra @ 2023-04-03 13:16 UTC (permalink / raw)
  To: Adhemerval Zanella, libc-alpha, H . J . Lu

Hi Adhemerval,

LGTM

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>

Cheers,
Wilco

> 1. Subnormals: 128 inputs.
> 2. Normal numbers with large exponent difference (|x/y| > 2^8):
>    1024 inputs between FLT_MIN and FLT_MAX;
> 3. Close exponents (ey >= -103 and |x/y| < 2^8): 1024 inputs with
>    exponents between -10 and 10.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 3/5] math: Improve fmod
  2023-03-20 16:01 ` [PATCH v4 3/5] math: Improve fmod Adhemerval Zanella
@ 2023-04-03 13:29   ` Wilco Dijkstra
  0 siblings, 0 replies; 12+ messages in thread
From: Wilco Dijkstra @ 2023-04-03 13:29 UTC (permalink / raw)
  To: Adhemerval Zanella, libc-alpha, H . J . Lu; +Cc: kirill

Hi Adhemerval,

LGTM

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>

Cheers,
Wilco


diff --git a/math/libm-test-fmod.inc b/math/libm-test-fmod.inc
index 39fd02f9ef..8841c1332c 100644
--- a/math/libm-test-fmod.inc
+++ b/math/libm-test-fmod.inc
@@ -152,6 +152,16 @@ static const struct test_ff_f_data fmod_test_data[] =
     TEST_ff_f (fmod, 6.5, -2.25L, 2.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, -6.5, -2.25L, -2.0L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
 
+    TEST_ff_f (fmod, 0x1.e848p+18, 0x1.6p+3, 0x1.8p+2, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, 0x1.e848p+18, -0x1.6p+3, 0x1.8p+2, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x1.e848p+18, 0x1.6p+3, -0x1.8p+2, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x1.e848p+18, -0x1.6p+3, -0x1.8p+2, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
+    TEST_ff_f (fmod, 0x1.4p+2, 0x1p+0, 0x0p+0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, 0x1.4p+2, -0x1p+0, 0x0p+0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x1.4p+2, 0x1p+0, -0x0p+0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x1.4p+2, -0x1p+0, -0x0p+0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+
     TEST_ff_f (fmod, max_value, max_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, max_value, -max_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, max_value, min_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@@ -216,6 +226,10 @@ static const struct test_ff_f_data fmod_test_data[] =
     TEST_ff_f (fmod, -0x1p1023L, -0x3p-1073L, -0x1p-1073L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, -0x1p1023L, 0x3p-1022L, -0x1p-1021L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, -0x1p1023L, -0x3p-1022L, -0x1p-1021L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, 0x0.cded0a47373e9p-1022, 0x0.3212f5b8c8c16p-1022, 0x0.05a1336414391p-1022, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, 0x0.cded0a47373e9p-1022, -0x0.3212f5b8c8c16p-1022, 0x0.05a1336414391p-1022, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x0.cded0a47373e9p-1022, 0x0.3212f5b8c8c16p-1022, -0x0.05a1336414391p-1022, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x0.cded0a47373e9p-1022, -0x0.3212f5b8c8c16p-1022, -0x0.05a1336414391p-1022, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
 #endif
 #if MIN_EXP <= -16381
     TEST_ff_f (fmod, 0x1p16383L, 0x3p-16445L, 0x1p-16445L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),

OK

diff --git a/sysdeps/ieee754/dbl-64/e_fmod.c b/sysdeps/ieee754/dbl-64/e_fmod.c
index 60b8bbb9d2..d20466fd5d 100644
--- a/sysdeps/ieee754/dbl-64/e_fmod.c
+++ b/sysdeps/ieee754/dbl-64/e_fmod.c
@@ -1,105 +1,145 @@
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-/*
- * __ieee754_fmod(x,y)
- * Return x mod y in exact arithmetic
- * Method: shift and subtract
- */
+/* Floating-point remainder function.
+   Copyright (C) 2023 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for 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.h>
-#include <math_private.h>
-#include <stdint.h>
 #include <libm-alias-finite.h>
+#include <math.h>
+#include "math_config.h"
+
+/* With x = mx * 2^ex and y = my * 2^ey (mx, my, ex, ey being integers), the
+   simplest implementation is:
+
+   mx * 2^ex == 2 * mx * 2^(ex - 1)
 
-static const double one = 1.0, Zero[] = {0.0, -0.0,};
+   while (ex > ey)
+     {
+       mx *= 2;
+       --ex;
+       mx %= my;
+     }
+
+   With mx/my being mantissa of double floating pointer, on each step the
+   argument reduction can be improved 11 (which is sizeo of uint64_t minus
+   MANTISSA_WIDTH plus the signal bit):
+
+   while (ex > ey)
+     {
+       mx << 11;
+       ex -= 11;
+       mx %= my;
+     }  */
 
 double
 __ieee754_fmod (double x, double y)
 {
-       int32_t n,ix,iy;
-       int64_t hx,hy,hz,sx,i;
-
-       EXTRACT_WORDS64(hx,x);
-       EXTRACT_WORDS64(hy,y);
-       sx = hx&UINT64_C(0x8000000000000000);   /* sign of x */
-       hx ^=sx;                                /* |x| */
-       hy &= UINT64_C(0x7fffffffffffffff);     /* |y| */
-
-    /* purge off exception values */
-       if(__builtin_expect(hy==0
-                           || hx >= UINT64_C(0x7ff0000000000000)
-                           || hy > UINT64_C(0x7ff0000000000000), 0))
-         /* y=0,or x not finite or y is NaN */
-           return (x*y)/(x*y);
-       if(__builtin_expect(hx<=hy, 0)) {
-           if(hx<hy) return x;  /* |x|<|y| return x */
-           return Zero[(uint64_t)sx>>63];       /* |x|=|y| return x*0*/
-       }
-
-    /* determine ix = ilogb(x) */
-       if(__builtin_expect(hx<UINT64_C(0x0010000000000000), 0)) {
-         /* subnormal x */
-         for (ix = -1022,i=(hx<<11); i>0; i<<=1) ix -=1;
-       } else ix = (hx>>52)-1023;
-
-    /* determine iy = ilogb(y) */
-       if(__builtin_expect(hy<UINT64_C(0x0010000000000000), 0)) {      /* subnormal y */
-         for (iy = -1022,i=(hy<<11); i>0; i<<=1) iy -=1;
-       } else iy = (hy>>52)-1023;
-
-    /* set up hx, hy and align y to x */
-       if(__builtin_expect(ix >= -1022, 1))
-           hx = UINT64_C(0x0010000000000000)|(UINT64_C(0x000fffffffffffff)&hx);
-       else {          /* subnormal x, shift x to normal */
-           n = -1022-ix;
-           hx<<=n;
-       }
-       if(__builtin_expect(iy >= -1022, 1))
-           hy = UINT64_C(0x0010000000000000)|(UINT64_C(0x000fffffffffffff)&hy);
-       else {          /* subnormal y, shift y to normal */
-           n = -1022-iy;
-           hy<<=n;
-       }
-
-    /* fix point fmod */
-       n = ix - iy;
-       while(n--) {
-           hz=hx-hy;
-           if(hz<0){hx = hx+hx;}
-           else {
-               if(hz==0)               /* return sign(x)*0 */
-                   return Zero[(uint64_t)sx>>63];
-               hx = hz+hz;
-           }
-       }
-       hz=hx-hy;
-       if(hz>=0) {hx=hz;}
-
-    /* convert back to floating value and restore the sign */
-       if(hx==0)                       /* return sign(x)*0 */
-           return Zero[(uint64_t)sx>>63];
-       while(hx<UINT64_C(0x0010000000000000)) {        /* normalize x */
-           hx = hx+hx;
-           iy -= 1;
-       }
-       if(__builtin_expect(iy>= -1022, 1)) {   /* normalize output */
-         hx = ((hx-UINT64_C(0x0010000000000000))|((uint64_t)(iy+1023)<<52));
-           INSERT_WORDS64(x,hx|sx);
-       } else {                /* subnormal output */
-           n = -1022 - iy;
-           hx>>=n;
-           INSERT_WORDS64(x,hx|sx);
-           x *= one;            /* create necessary signal */
-       }
-       return x;               /* exact output */
+  uint64_t hx = asuint64 (x);
+  uint64_t hy = asuint64 (y);
+
+  uint64_t sx = hx & SIGN_MASK;
+  /* Get |x| and |y|.  */
+  hx ^= sx;
+  hy &= ~SIGN_MASK;
+
+  /* Special cases:
+     - If x or y is a Nan, NaN is returned.
+     - If x is an inifinity, a NaN is returned.
+     - If y is zero, Nan is returned.
+     - If x is +0/-0, and y is not zero, +0/-0 is returned.  */
+  if (__glibc_unlikely (hy == 0        || hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
+    return (x * y) / (x * y);
+
+  if (__glibc_unlikely (hx <= hy))
+    {
+      if (hx < hy)
+       return x;
+      return asdouble (sx);
+    }
+
+  int ex = hx >> MANTISSA_WIDTH;
+  int ey = hy >> MANTISSA_WIDTH;
+
+  /* Common case where exponents are close: ey >= -907 and |x/y| < 2^52,  */
+  if (__glibc_likely (ey > MANTISSA_WIDTH && ex - ey <= EXPONENT_WIDTH))
+    {
+      uint64_t mx = (hx & MANTISSA_MASK) | (MANTISSA_MASK + 1);
+      uint64_t my = (hy & MANTISSA_MASK) | (MANTISSA_MASK + 1);
+
+      uint64_t d = (ex == ey) ? (mx - my) : (mx << (ex - ey)) % my;
+      return make_double (d, ey - 1, sx);
+    }
+
+  /* Special case, both x and y are subnormal.  */
+  if (__glibc_unlikely (ex == 0 && ey == 0))
+    return asdouble (sx | hx % hy);


OK

+  /* Convert |x| and |y| to 'mx + 2^ex' and 'my + 2^ey'.  Assume that hx is
+     not subnormal by conditions above.  */
+  uint64_t mx = get_mantissa (hx) | (MANTISSA_MASK + 1);
+  ex--;
+  uint64_t my = get_mantissa (hy) | (MANTISSA_MASK + 1);
+
+  int lead_zeros_my = EXPONENT_WIDTH;
+  if (__glibc_likely (ey > 0))
+    ey--;
+  else
+    {
+      my = hy;
+      lead_zeros_my = clz_uint64 (my);
+    }

OK

+  /* Assume hy != 0  */
+  int tail_zeros_my = ctz_uint64 (my);
+  int sides_zeroes = lead_zeros_my + tail_zeros_my;
+  int exp_diff = ex - ey;
+
+  int right_shift = exp_diff < tail_zeros_my ? exp_diff : tail_zeros_my;
+  my >>= right_shift;
+  exp_diff -= right_shift;
+  ey += right_shift;
+
+  int left_shift = exp_diff < EXPONENT_WIDTH ? exp_diff : EXPONENT_WIDTH;
+  mx <<= left_shift;
+  exp_diff -= left_shift;
+
+  mx %= my;
+
+  if (__glibc_unlikely (mx == 0))
+    return asdouble (sx);


OK

+  if (exp_diff == 0)
+    return make_double (mx, ey, sx);
+
+  /* Assume modulo/divide operation is slow, so use multiplication with invert
+     values.  */
+  uint64_t inv_hy = UINT64_MAX / my;
+  while (exp_diff > sides_zeroes) {
+    exp_diff -= sides_zeroes;
+    uint64_t hd = (mx * inv_hy) >> (BIT_WIDTH - sides_zeroes);
+    mx <<= sides_zeroes;
+    mx -= hd * my;
+    while (__glibc_unlikely (mx > my))
+      mx -= my;
+  }
+  uint64_t hd = (mx * inv_hy) >> (BIT_WIDTH - exp_diff);
+  mx <<= exp_diff;
+  mx -= hd * my;
+  while (__glibc_unlikely (mx > my))
+    mx -= my;
+
+  return make_double (mx, ey, sx);
 }
 libm_alias_finite (__ieee754_fmod, __fmod)
diff --git a/sysdeps/ieee754/dbl-64/math_config.h b/sysdeps/ieee754/dbl-64/math_config.h
index 3cbaeede64..2049cea3f7 100644
--- a/sysdeps/ieee754/dbl-64/math_config.h
+++ b/sysdeps/ieee754/dbl-64/math_config.h
@@ -43,6 +43,24 @@
 # define TOINT_INTRINSICS 0
 #endif
 
+static inline int
+clz_uint64 (uint64_t x)
+{
+  if (sizeof (uint64_t) == sizeof (unsigned long))
+    return __builtin_clzl (x);
+  else
+    return __builtin_clzll (x);
+}
+
+static inline int
+ctz_uint64 (uint64_t x)
+{
+  if (sizeof (uint64_t) == sizeof (unsigned long))
+    return __builtin_ctzl (x);
+  else
+    return __builtin_ctzll (x);
+}
+
 #if TOINT_INTRINSICS
 /* Round x to nearest int in all rounding modes, ties have to be rounded
    consistently with converttoint so the results match.  If the result
@@ -88,6 +106,49 @@ issignaling_inline (double x)
   return 2 * (ix ^ 0x0008000000000000) > 2 * 0x7ff8000000000000ULL;
 }
 
+#define BIT_WIDTH       64
+#define MANTISSA_WIDTH  52
+#define EXPONENT_WIDTH  11
+#define MANTISSA_MASK   UINT64_C(0x000fffffffffffff)
+#define EXPONENT_MASK   UINT64_C(0x7ff0000000000000)
+#define EXP_MANT_MASK   UINT64_C(0x7fffffffffffffff)
+#define QUIET_NAN_MASK  UINT64_C(0x0008000000000000)
+#define SIGN_MASK      UINT64_C(0x8000000000000000)
+
+static inline bool
+is_nan (uint64_t x)
+{
+  return (x & EXP_MANT_MASK) > EXPONENT_MASK;
+}
+
+static inline uint64_t
+get_mantissa (uint64_t x)
+{
+  return x & MANTISSA_MASK;
+}
+
+/* Convert integer number X, unbiased exponent EP, and sign S to double:
+
+   result = X * 2^(EP+1 - exponent_bias)
+
+   NB: zero is not supported.  */
+static inline double
+make_double (uint64_t x, int64_t ep, uint64_t s)
+{
+  int lz = clz_uint64 (x) - EXPONENT_WIDTH;
+  x <<= lz;
+  ep -= lz;
+
+  if (__glibc_unlikely (ep < 0 || x == 0))
+    {
+      x >>= -ep;
+      ep = 0;
+    }
+
+  return asdouble (s + x + (ep << MANTISSA_WIDTH));
+}

OK

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 4/5] math: Improve fmodf
  2023-03-20 16:01 ` [PATCH v4 4/5] math: Improve fmodf Adhemerval Zanella
@ 2023-04-03 13:33   ` Wilco Dijkstra
  0 siblings, 0 replies; 12+ messages in thread
From: Wilco Dijkstra @ 2023-04-03 13:33 UTC (permalink / raw)
  To: Adhemerval Zanella, libc-alpha, H . J . Lu; +Cc: kirill

Hi Adhemerval,

LGTM

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>

Cheers,
Wilco

diff --git a/math/libm-test-fmod.inc b/math/libm-test-fmod.inc
index 8841c1332c..43376c3df2 100644
--- a/math/libm-test-fmod.inc
+++ b/math/libm-test-fmod.inc
@@ -213,6 +213,10 @@ static const struct test_ff_f_data fmod_test_data[] =
     TEST_ff_f (fmod, -0x1p127L, -0x3p-148L, -0x1p-147L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, -0x1p127L, 0x3p-126L, -0x1p-125L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, -0x1p127L, -0x3p-126L, -0x1p-125L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, 0x1.3a3e6p-127, 0x1.8b8338p-128, 0x1.d1f31p-129, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, 0x1.3a3e6p-127, -0x1.8b8338p-128, 0x1.d1f31p-129, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x1.3a3e6p-127, 0x1.8b8338p-128, -0x1.d1f31p-129, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fmod, -0x1.3a3e6p-127, -0x1.8b8338p-128, -0x1.d1f31p-129, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
 #if !TEST_COND_binary32
     TEST_ff_f (fmod, 0x1p1023L, 0x3p-1074L, 0x1p-1073L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fmod, 0x1p1023L, -0x3p-1074L, 0x1p-1073L, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),

OK

diff --git a/sysdeps/ieee754/flt-32/e_fmodf.c b/sysdeps/ieee754/flt-32/e_fmodf.c
index b71c4f754f..53db32cbe2 100644
--- a/sysdeps/ieee754/flt-32/e_fmodf.c
+++ b/sysdeps/ieee754/flt-32/e_fmodf.c
@@ -1,102 +1,144 @@
-/* e_fmodf.c -- float version of e_fmod.c.
- */
-
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-/*
- * __ieee754_fmodf(x,y)
- * Return x mod y in exact arithmetic
- * Method: shift and subtract
- */
+/* Floating-point remainder function.
+   Copyright (C) 2023 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for 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.h>
-#include <math_private.h>
 #include <libm-alias-finite.h>
+#include <math.h>
+#include "math_config.h"
+
+/* With x = mx * 2^ex and y = my * 2^ey (mx, my, ex, ey being integers), the
+   simplest implementation is:
+
+   mx * 2^ex == 2 * mx * 2^(ex - 1)
 
-static const float one = 1.0, Zero[] = {0.0, -0.0,};
+   while (ex > ey)
+     {
+       mx *= 2;
+       --ex;
+       mx %= my;
+     }
+
+   With mx/my being mantissa of double floating pointer, on each step the
+   argument reduction can be improved 11 (which is sizeo of uint64_t minus
+   MANTISSA_WIDTH plus the signal bit):
+
+   while (ex > ey)
+     {
+       mx << 11;
+       ex -= 11;
+       mx %= my;
+     }  */
 
 float
 __ieee754_fmodf (float x, float y)
 {
-       int32_t n,hx,hy,hz,ix,iy,sx,i;
-
-       GET_FLOAT_WORD(hx,x);
-       GET_FLOAT_WORD(hy,y);
-       sx = hx&0x80000000;             /* sign of x */
-       hx ^=sx;                /* |x| */
-       hy &= 0x7fffffff;       /* |y| */
-
-    /* purge off exception values */
-       if(hy==0||(hx>=0x7f800000)||            /* y=0,or x not finite */
-          (hy>0x7f800000))                      /* or y is NaN */
-           return (x*y)/(x*y);
-       if(hx<hy) return x;                     /* |x|<|y| return x */
-       if(hx==hy)
-           return Zero[(uint32_t)sx>>31];       /* |x|=|y| return x*0*/
-
-    /* determine ix = ilogb(x) */
-       if(hx<0x00800000) {     /* subnormal x */
-           for (ix = -126,i=(hx<<8); i>0; i<<=1) ix -=1;
-       } else ix = (hx>>23)-127;
-
-    /* determine iy = ilogb(y) */
-       if(hy<0x00800000) {     /* subnormal y */
-           for (iy = -126,i=(hy<<8); i>=0; i<<=1) iy -=1;
-       } else iy = (hy>>23)-127;
-
-    /* set up {hx,lx}, {hy,ly} and align y to x */
-       if(ix >= -126)
-           hx = 0x00800000|(0x007fffff&hx);
-       else {          /* subnormal x, shift x to normal */
-           n = -126-ix;
-           hx = hx<<n;
-       }
-       if(iy >= -126)
-           hy = 0x00800000|(0x007fffff&hy);
-       else {          /* subnormal y, shift y to normal */
-           n = -126-iy;
-           hy = hy<<n;
-       }
-
-    /* fix point fmod */
-       n = ix - iy;
-       while(n--) {
-           hz=hx-hy;
-           if(hz<0){hx = hx+hx;}
-           else {
-               if(hz==0)               /* return sign(x)*0 */
-                   return Zero[(uint32_t)sx>>31];
-               hx = hz+hz;
-           }
-       }
-       hz=hx-hy;
-       if(hz>=0) {hx=hz;}
-
-    /* convert back to floating value and restore the sign */
-       if(hx==0)                       /* return sign(x)*0 */
-           return Zero[(uint32_t)sx>>31];
-       while(hx<0x00800000) {          /* normalize x */
-           hx = hx+hx;
-           iy -= 1;
-       }
-       if(iy>= -126) {         /* normalize output */
-           hx = ((hx-0x00800000)|((iy+127)<<23));
-           SET_FLOAT_WORD(x,hx|sx);
-       } else {                /* subnormal output */
-           n = -126 - iy;
-           hx >>= n;
-           SET_FLOAT_WORD(x,hx|sx);
-           x *= one;            /* create necessary signal */
-       }
-       return x;               /* exact output */
+  uint32_t hx = asuint (x);
+  uint32_t hy = asuint (y);
+
+  uint32_t sx = hx & SIGN_MASK;
+  /* Get |x| and |y|.  */
+  hx ^= sx;
+  hy &= ~SIGN_MASK;
+
+  /* Special cases:
+     - If x or y is a Nan, NaN is returned.
+     - If x is an inifinity, a NaN is returned.
+     - If y is zero, Nan is returned.
+     - If x is +0/-0, and y is not zero, +0/-0 is returned.  */
+  if (__glibc_unlikely (hy == 0        || hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
+    return (x * y) / (x * y);
+
+  if (__glibc_unlikely (hx <= hy))
+    {
+      if (hx < hy)
+       return x;
+      return asfloat (sx);
+    }
+
+  int ex = hx >> MANTISSA_WIDTH;
+  int ey = hy >> MANTISSA_WIDTH;
+
+  /* Common case where exponents are close: ey >= -103 and |x/y| < 2^8,  */
+  if (__glibc_likely (ey > MANTISSA_WIDTH && ex - ey <= EXPONENT_WIDTH))
+    {
+      uint64_t mx = (hx & MANTISSA_MASK) | (MANTISSA_MASK + 1);
+      uint64_t my = (hy & MANTISSA_MASK) | (MANTISSA_MASK + 1);
+
+      uint32_t d = (ex == ey) ? (mx - my) : (mx << (ex - ey)) % my;
+      return make_float (d, ey - 1, sx);
+    }
+
+  /* Special case, both x and y are subnormal.  */
+  if (__glibc_unlikely (ex == 0 && ey == 0))
+    return asfloat (sx | hx % hy);

OK

+  /* Convert |x| and |y| to 'mx + 2^ex' and 'my + 2^ey'.  Assume that hx is
+     not subnormal by conditions above.  */
+  uint32_t mx = get_mantissa (hx) | (MANTISSA_MASK + 1);
+  ex--;
+
+  uint32_t my = get_mantissa (hy) | (MANTISSA_MASK + 1);
+  int lead_zeros_my = EXPONENT_WIDTH;
+  if (__glibc_likely (ey > 0))
+    ey--;
+  else
+    {
+      my = hy;
+      lead_zeros_my = __builtin_clz (my);
+    }

OK

+  int tail_zeros_my = __builtin_ctz (my);
+  int sides_zeroes = lead_zeros_my + tail_zeros_my;
+  int exp_diff = ex - ey;
+
+  int right_shift = exp_diff < tail_zeros_my ? exp_diff : tail_zeros_my;
+  my >>= right_shift;
+  exp_diff -= right_shift;
+  ey += right_shift;
+
+  int left_shift = exp_diff < EXPONENT_WIDTH ? exp_diff : EXPONENT_WIDTH;
+  mx <<= left_shift;
+  exp_diff -= left_shift;
+
+  mx %= my;
+
+  if (__glibc_unlikely (mx == 0))
+    return asfloat (sx);


OK

+  if (exp_diff == 0)
+    return make_float (mx, ey, sx);
+
+  /* Assume modulo/divide operation is slow, so use multiplication with invert
+     values.  */
+  uint32_t inv_hy = UINT32_MAX / my;
+  while (exp_diff > sides_zeroes) {
+    exp_diff -= sides_zeroes;
+    uint32_t hd = (mx * inv_hy) >> (BIT_WIDTH - sides_zeroes);
+    mx <<= sides_zeroes;
+    mx -= hd * my;
+    while (__glibc_unlikely (mx > my))
+      mx -= my;
+  }
+  uint32_t hd = (mx * inv_hy) >> (BIT_WIDTH - exp_diff);
+  mx <<= exp_diff;
+  mx -= hd * my;
+  while (__glibc_unlikely (mx > my))
+    mx -= my;
+
+  return make_float (mx, ey, sx);
 }
 libm_alias_finite (__ieee754_fmodf, __fmodf)

OK

diff --git a/sysdeps/ieee754/flt-32/math_config.h b/sysdeps/ieee754/flt-32/math_config.h
index 23045f59d6..829430ea28 100644
--- a/sysdeps/ieee754/flt-32/math_config.h
+++ b/sysdeps/ieee754/flt-32/math_config.h
@@ -110,6 +110,47 @@ issignalingf_inline (float x)
   return 2 * (ix ^ 0x00400000) > 2 * 0x7fc00000UL;
 }
 
+#define BIT_WIDTH       32
+#define MANTISSA_WIDTH  23
+#define EXPONENT_WIDTH  8
+#define MANTISSA_MASK   0x007fffff
+#define EXPONENT_MASK   0x7f800000
+#define EXP_MANT_MASK   0x7fffffff
+#define QUIET_NAN_MASK  0x00400000
+#define SIGN_MASK       0x80000000
+
+static inline bool
+is_nan (uint32_t x)
+{
+  return (x & EXP_MANT_MASK) > EXPONENT_MASK;
+}
+
+static inline uint32_t
+get_mantissa (uint32_t x)
+{
+  return x & MANTISSA_MASK;
+}
+
+/* Convert integer number X, unbiased exponent EP, and sign S to double:
+
+   result = X * 2^(EP+1 - exponent_bias)
+
+   NB: zero is not supported.  */
+static inline double
+make_float (uint32_t x, int ep, uint32_t s)
+{
+  int lz = __builtin_clz (x) - EXPONENT_WIDTH;
+  x <<= lz;
+  ep -= lz;
+
+  if (__glibc_unlikely (ep < 0 || x == 0))
+    {
+      x >>= -ep;
+      ep = 0;
+    }
+  return asfloat (s + x + (ep << MANTISSA_WIDTH));
+}

OK

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 5/5] math: Remove the error handling wrapper from fmod and fmodf
  2023-03-20 16:01 ` [PATCH v4 5/5] math: Remove the error handling wrapper from fmod and fmodf Adhemerval Zanella
@ 2023-04-03 13:43   ` Wilco Dijkstra
  2023-04-03 18:33     ` Adhemerval Zanella Netto
  0 siblings, 1 reply; 12+ messages in thread
From: Wilco Dijkstra @ 2023-04-03 13:43 UTC (permalink / raw)
  To: Adhemerval Zanella, libc-alpha, H . J . Lu

Hi Adhemerval,

LGTM - one minor nit about the is_inf functions, are they actually needed?
I'm happy for this to go in either way.

Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>

Cheers,
Wilco


diff --git a/sysdeps/ieee754/dbl-64/e_fmod.c b/sysdeps/ieee754/dbl-64/e_fmod.c
index d20466fd5d..ff506c40b4 100644
--- a/sysdeps/ieee754/dbl-64/e_fmod.c
+++ b/sysdeps/ieee754/dbl-64/e_fmod.c
@@ -16,7 +16,9 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#include <libm-alias-double.h>
 #include <libm-alias-finite.h>
+#include <math-svid-compat.h>
 #include <math.h>
 #include "math_config.h"
 
@@ -44,7 +46,7 @@
      }  */
 
 double
-__ieee754_fmod (double x, double y)
+__fmod (double x, double y)
 {
   uint64_t hx = asuint64 (x);
   uint64_t hy = asuint64 (y);
@@ -56,11 +58,16 @@ __ieee754_fmod (double x, double y)
 
   /* Special cases:
      - If x or y is a Nan, NaN is returned.
-     - If x is an inifinity, a NaN is returned.
+     - If x is an inifinity, a NaN is returned and EDOM is set.
      - If y is zero, Nan is returned.
      - If x is +0/-0, and y is not zero, +0/-0 is returned.  */
-  if (__glibc_unlikely (hy == 0        || hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
-    return (x * y) / (x * y);
+  if (__glibc_unlikely (hy == 0
+                       || hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
+    {
+      if (is_nan (hx) || is_nan (hy))
+       return (x * y) / (x * y);
+      return __math_edom ((x * y) / (x * y));
+    }

OK

   if (__glibc_unlikely (hx <= hy))
     {
@@ -142,4 +149,11 @@ __ieee754_fmod (double x, double y)
 
   return make_double (mx, ey, sx);
 }
+strong_alias (__fmod, __ieee754_fmod)
 libm_alias_finite (__ieee754_fmod, __fmod)
+#if LIBM_SVID_COMPAT
+versioned_symbol (libm, __fmod, fmod, GLIBC_2_38);
+libm_alias_double_other (__fmod, fmod)
+#else
+libm_alias_double (__fmod, fmod)
+#endif
diff --git a/sysdeps/ieee754/dbl-64/math_config.h b/sysdeps/ieee754/dbl-64/math_config.h
index 2049cea3f7..5173b99e4a 100644
--- a/sysdeps/ieee754/dbl-64/math_config.h
+++ b/sysdeps/ieee754/dbl-64/math_config.h
@@ -121,6 +121,12 @@ is_nan (uint64_t x)
   return (x & EXP_MANT_MASK) > EXPONENT_MASK;
 }
 
+static inline bool
+is_inf (uint64_t x)
+{
+  return (x & EXP_MANT_MASK) == EXPONENT_MASK;
+}

Is this used?

 static inline uint64_t
 get_mantissa (uint64_t x)
 {
@@ -170,6 +176,9 @@ attribute_hidden double __math_invalid (double);
 
 /* Error handling using output checking, only for errno setting.  */
 
+/* Check if the result generated a demain error.  */
+attribute_hidden double __math_edom (double x);
+
 /* Check if the result overflowed to infinity.  */
 attribute_hidden double __math_check_oflow (double);
 /* Check if the result underflowed to 0.  */
diff --git a/sysdeps/ieee754/dbl-64/math_err.c b/sysdeps/ieee754/dbl-64/math_err.c
index 5f5f965d3e..377a4caad2 100644
--- a/sysdeps/ieee754/dbl-64/math_err.c
+++ b/sysdeps/ieee754/dbl-64/math_err.c
@@ -33,6 +33,12 @@ with_errno (double y, int e)
 #define with_errno(x, e) (x)
 #endif
 
+attribute_hidden double
+__math_edom (double y)
+{
+  return with_errno (y, EDOM);
+}
+
 /* NOINLINE reduces code size.  */
 NOINLINE static double
 xflow (uint32_t sign, double y)
diff --git a/sysdeps/ieee754/dbl-64/w_fmod.c b/sysdeps/ieee754/dbl-64/w_fmod.c
new file mode 100644
index 0000000000..1cc8931700
--- /dev/null
+++ b/sysdeps/ieee754/dbl-64/w_fmod.c
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/ieee754/flt-32/e_fmodf.c b/sysdeps/ieee754/flt-32/e_fmodf.c
index 53db32cbe2..c0b5dccc23 100644
--- a/sysdeps/ieee754/flt-32/e_fmodf.c
+++ b/sysdeps/ieee754/flt-32/e_fmodf.c
@@ -17,6 +17,8 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <libm-alias-finite.h>
+#include <libm-alias-float.h>
+#include <math-svid-compat.h>
 #include <math.h>
 #include "math_config.h"
 
@@ -44,7 +46,7 @@
      }  */
 
 float
-__ieee754_fmodf (float x, float y)
+__fmodf (float x, float y)
 {
   uint32_t hx = asuint (x);
   uint32_t hy = asuint (y);
@@ -59,8 +61,13 @@ __ieee754_fmodf (float x, float y)
      - If x is an inifinity, a NaN is returned.
      - If y is zero, Nan is returned.
      - If x is +0/-0, and y is not zero, +0/-0 is returned.  */
-  if (__glibc_unlikely (hy == 0        || hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
-    return (x * y) / (x * y);
+  if (__glibc_unlikely (hy == 0
+                       || hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
+    {
+      if (is_nan (hx) || is_nan (hy))
+       return (x * y) / (x * y);
+      return __math_edomf ((x * y) / (x * y));
+    }

OK

   if (__glibc_unlikely (hx <= hy))
     {
@@ -141,4 +148,11 @@ __ieee754_fmodf (float x, float y)
 
   return make_float (mx, ey, sx);
 }
+strong_alias (__fmodf, __ieee754_fmodf)
+#if LIBM_SVID_COMPAT
+versioned_symbol (libm, __fmodf, fmodf, GLIBC_2_38);
+libm_alias_float_other (__fmod, fmod)
+#else
+libm_alias_float (__fmod, fmod)
+#endif
 libm_alias_finite (__ieee754_fmodf, __fmodf)
diff --git a/sysdeps/ieee754/flt-32/math_config.h b/sysdeps/ieee754/flt-32/math_config.h
index 829430ea28..f97cd39df1 100644
--- a/sysdeps/ieee754/flt-32/math_config.h
+++ b/sysdeps/ieee754/flt-32/math_config.h
@@ -125,6 +125,12 @@ is_nan (uint32_t x)
   return (x & EXP_MANT_MASK) > EXPONENT_MASK;
 }
 
+static inline bool
+is_inf (uint32_t x)
+{
+  return (x & EXP_MANT_MASK) == EXPONENT_MASK;
+}

Used?

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v4 5/5] math: Remove the error handling wrapper from fmod and fmodf
  2023-04-03 13:43   ` Wilco Dijkstra
@ 2023-04-03 18:33     ` Adhemerval Zanella Netto
  0 siblings, 0 replies; 12+ messages in thread
From: Adhemerval Zanella Netto @ 2023-04-03 18:33 UTC (permalink / raw)
  To: Wilco Dijkstra, libc-alpha, H . J . Lu



On 03/04/23 10:43, Wilco Dijkstra wrote:
> Hi Adhemerval,
> 
> LGTM - one minor nit about the is_inf functions, are they actually needed?
> I'm happy for this to go in either way.
> 
> Reviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>
> 
> Cheers,
> Wilco
> 

> diff --git a/sysdeps/ieee754/flt-32/math_config.h b/sysdeps/ieee754/flt-32/math_config.h
> index 829430ea28..f97cd39df1 100644
> --- a/sysdeps/ieee754/flt-32/math_config.h
> +++ b/sysdeps/ieee754/flt-32/math_config.h
> @@ -125,6 +125,12 @@ is_nan (uint32_t x)
>    return (x & EXP_MANT_MASK) > EXPONENT_MASK;
>  }
>  
> +static inline bool
> +is_inf (uint32_t x)
> +{
> +  return (x & EXP_MANT_MASK) == EXPONENT_MASK;
> +}
> 
> Used?

It is a left-over from previous version, I will remove it.

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-04-03 18:33 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-20 16:01 [PATCH v4 0/5] Improve fmod and fmodf Adhemerval Zanella
2023-03-20 16:01 ` [PATCH v4 1/5] benchtests: Add fmod benchmark Adhemerval Zanella
2023-04-03 13:13   ` Wilco Dijkstra
2023-03-20 16:01 ` [PATCH v4 2/5] benchtests: Add fmodf benchmark Adhemerval Zanella
2023-04-03 13:16   ` Wilco Dijkstra
2023-03-20 16:01 ` [PATCH v4 3/5] math: Improve fmod Adhemerval Zanella
2023-04-03 13:29   ` Wilco Dijkstra
2023-03-20 16:01 ` [PATCH v4 4/5] math: Improve fmodf Adhemerval Zanella
2023-04-03 13:33   ` Wilco Dijkstra
2023-03-20 16:01 ` [PATCH v4 5/5] math: Remove the error handling wrapper from fmod and fmodf Adhemerval Zanella
2023-04-03 13:43   ` Wilco Dijkstra
2023-04-03 18:33     ` Adhemerval Zanella Netto

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).