public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v2 0/5] Improve fmod and fmodf
@ 2023-03-15 20:59 Adhemerval Zanella
  2023-03-15 20:59 ` [PATCH v2 1/5] benchtests: Add fmod benchmark Adhemerval Zanella
                   ` (4 more replies)
  0 siblings, 5 replies; 18+ messages in thread
From: Adhemerval Zanella @ 2023-03-15 20:59 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 v1:
 * Remove SVID error handling wrapper.
 * Extend testing for subnormal with different signs.
 * Code cleanup.

[1] https://sourceware.org/pipermail/libc-alpha/2020-November/119794.html
[2] https://patchwork.sourceware.org/project/glibc/patch/20230309183312.205763-1-hjl.tools@gmail.com/
[3] https://sourceware.org/pipermail/libc-alpha/2023-March/146164.html

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                       |   11 +
 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               |  245 +-
 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              |  241 +-
 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, 4923 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] 18+ messages in thread

* [PATCH v2 1/5] benchtests: Add fmod benchmark
  2023-03-15 20:59 [PATCH v2 0/5] Improve fmod and fmodf Adhemerval Zanella
@ 2023-03-15 20:59 ` Adhemerval Zanella
  2023-03-15 20:59 ` [PATCH v2 2/5] benchtests: Add fmodf benchmark Adhemerval Zanella
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 18+ messages in thread
From: Adhemerval Zanella @ 2023-03-15 20:59 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] 18+ messages in thread

* [PATCH v2 2/5] benchtests: Add fmodf benchmark
  2023-03-15 20:59 [PATCH v2 0/5] Improve fmod and fmodf Adhemerval Zanella
  2023-03-15 20:59 ` [PATCH v2 1/5] benchtests: Add fmod benchmark Adhemerval Zanella
@ 2023-03-15 20:59 ` Adhemerval Zanella
  2023-03-15 20:59 ` [PATCH v2 3/5] math: Improve fmod Adhemerval Zanella
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 18+ messages in thread
From: Adhemerval Zanella @ 2023-03-15 20:59 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] 18+ messages in thread

* [PATCH v2 3/5] math: Improve fmod
  2023-03-15 20:59 [PATCH v2 0/5] Improve fmod and fmodf Adhemerval Zanella
  2023-03-15 20:59 ` [PATCH v2 1/5] benchtests: Add fmod benchmark Adhemerval Zanella
  2023-03-15 20:59 ` [PATCH v2 2/5] benchtests: Add fmodf benchmark Adhemerval Zanella
@ 2023-03-15 20:59 ` Adhemerval Zanella
  2023-03-16  0:58   ` H.J. Lu
  2023-03-15 20:59 ` [PATCH v2 4/5] math: Improve fmodf Adhemerval Zanella
  2023-03-15 20:59 ` [PATCH v2 5/5] math: Remove the error handling wrapper from fmod and fmodf Adhemerval Zanella
  4 siblings, 1 reply; 18+ messages in thread
From: Adhemerval Zanella @ 2023-03-15 20:59 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              |   6 +
 sysdeps/ieee754/dbl-64/e_fmod.c      | 232 ++++++++++++++++-----------
 sysdeps/ieee754/dbl-64/math_config.h |  61 +++++++
 3 files changed, 203 insertions(+), 96 deletions(-)

diff --git a/math/libm-test-fmod.inc b/math/libm-test-fmod.inc
index 39fd02f9ef..76c1e0cd45 100644
--- a/math/libm-test-fmod.inc
+++ b/math/libm-test-fmod.inc
@@ -217,6 +217,12 @@ static const struct test_ff_f_data fmod_test_data[] =
     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),
 #endif
+#if TEST_COND_binary64
+    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),
     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..d21143e0cf 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 (my, 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..d00f629531 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 >>= -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] 18+ messages in thread

* [PATCH v2 4/5] math: Improve fmodf
  2023-03-15 20:59 [PATCH v2 0/5] Improve fmod and fmodf Adhemerval Zanella
                   ` (2 preceding siblings ...)
  2023-03-15 20:59 ` [PATCH v2 3/5] math: Improve fmod Adhemerval Zanella
@ 2023-03-15 20:59 ` Adhemerval Zanella
  2023-03-16 18:11   ` Wilco Dijkstra
  2023-03-15 20:59 ` [PATCH v2 5/5] math: Remove the error handling wrapper from fmod and fmodf Adhemerval Zanella
  4 siblings, 1 reply; 18+ messages in thread
From: Adhemerval Zanella @ 2023-03-15 20:59 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              |   5 +
 sysdeps/ieee754/flt-32/e_fmodf.c     | 228 ++++++++++++++++-----------
 sysdeps/ieee754/flt-32/math_config.h |  41 +++++
 3 files changed, 181 insertions(+), 93 deletions(-)

diff --git a/math/libm-test-fmod.inc b/math/libm-test-fmod.inc
index 76c1e0cd45..21c6050053 100644
--- a/math/libm-test-fmod.inc
+++ b/math/libm-test-fmod.inc
@@ -216,6 +216,11 @@ 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),
+#else
+    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),
 #endif
 #if TEST_COND_binary64
     TEST_ff_f (fmod, 0x0.cded0a47373e9p-1022, 0x0.3212f5b8c8c16p-1022, 0x0.05a1336414391p-1022, 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..7d3726a449 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 (my, 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..d249292f58 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 >>= -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] 18+ messages in thread

* [PATCH v2 5/5] math: Remove the error handling wrapper from fmod and fmodf
  2023-03-15 20:59 [PATCH v2 0/5] Improve fmod and fmodf Adhemerval Zanella
                   ` (3 preceding siblings ...)
  2023-03-15 20:59 ` [PATCH v2 4/5] math: Improve fmodf Adhemerval Zanella
@ 2023-03-15 20:59 ` Adhemerval Zanella
  2023-03-16 17:21   ` Wilco Dijkstra
  4 siblings, 1 reply; 18+ messages in thread
From: Adhemerval Zanella @ 2023-03-15 20:59 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                 | 17 ++++++++++++++---
 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                | 15 +++++++++++++--
 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 ++
 .../unix/sysv/linux/m68k/coldfire/libm.abilist  |  2 ++
 .../unix/sysv/linux/microblaze/be/libm.abilist  |  2 ++
 .../unix/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 ++
 .../linux/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 ++
 .../unix/sysv/linux/sparc/sparc32/libm.abilist  |  2 ++
 .../unix/sysv/linux/sparc/sparc64/libm.abilist  |  2 ++
 sysdeps/unix/sysv/linux/x86_64/64/libm.abilist  |  2 ++
 sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist |  2 ++
 38 files changed, 176 insertions(+), 11 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 d21143e0cf..9a3b529f63 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,13 @@ __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))
+  if (__glibc_unlikely (is_nan (hx) || is_nan (hy)))
     return (x * y) / (x * y);
+  if (__glibc_unlikely (hy == 0 || is_inf (hx)))
+    return __math_edom ((x * y) / (x * y));
 
   if (__glibc_unlikely (hx <= hy))
     {
@@ -142,4 +146,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 d00f629531..334390b34c 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 7d3726a449..9f0e34a8f1 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,10 @@ __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))
+  if (__glibc_unlikely (is_nan (hx) || is_nan (hy)))
     return (x * y) / (x * y);
+  if (__glibc_unlikely (hy == 0 || is_inf (hx)))
+    return __math_edom ((x * y) / (x * y));
 
   if (__glibc_unlikely (hx <= hy))
     {
@@ -141,4 +145,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 d249292f58..4cc89a1f07 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_edom (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] 18+ messages in thread

* Re: [PATCH v2 3/5] math: Improve fmod
  2023-03-15 20:59 ` [PATCH v2 3/5] math: Improve fmod Adhemerval Zanella
@ 2023-03-16  0:58   ` H.J. Lu
  2023-03-16 14:28     ` Adhemerval Zanella Netto
  0 siblings, 1 reply; 18+ messages in thread
From: H.J. Lu @ 2023-03-16  0:58 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha, Wilco Dijkstra, kirill

On Wed, Mar 15, 2023 at 1:59 PM Adhemerval Zanella
<adhemerval.zanella@linaro.org> wrote:
>
> 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

I tried it with the test in

https://sourceware.org/bugzilla/show_bug.cgi?id=30179

On Intel i7-10710U, I got

time ./sse
3.13user 0.00system 0:03.13elapsed 99%CPU (0avgtext+0avgdata 512maxresident)k
0inputs+0outputs (0major+37minor)pagefaults 0swaps
time ./x87
0.24user 0.00system 0:00.24elapsed 100%CPU (0avgtext+0avgdata 512maxresident)k
0inputs+0outputs (0major+37minor)pagefaults 0swaps
time ./generic
0.55user 0.00system 0:00.55elapsed 99%CPU (0avgtext+0avgdata 512maxresident)k
0inputs+0outputs (0major+37minor)pagefaults 0swaps

The new generic is still slower than x87.

>   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              |   6 +
>  sysdeps/ieee754/dbl-64/e_fmod.c      | 232 ++++++++++++++++-----------
>  sysdeps/ieee754/dbl-64/math_config.h |  61 +++++++
>  3 files changed, 203 insertions(+), 96 deletions(-)
>
> diff --git a/math/libm-test-fmod.inc b/math/libm-test-fmod.inc
> index 39fd02f9ef..76c1e0cd45 100644
> --- a/math/libm-test-fmod.inc
> +++ b/math/libm-test-fmod.inc
> @@ -217,6 +217,12 @@ static const struct test_ff_f_data fmod_test_data[] =
>      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),
>  #endif
> +#if TEST_COND_binary64
> +    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),
>      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..d21143e0cf 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 (my, 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..d00f629531 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 >>= -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
>


-- 
H.J.

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

* Re: [PATCH v2 3/5] math: Improve fmod
  2023-03-16  0:58   ` H.J. Lu
@ 2023-03-16 14:28     ` Adhemerval Zanella Netto
  2023-03-16 16:13       ` Wilco Dijkstra
  0 siblings, 1 reply; 18+ messages in thread
From: Adhemerval Zanella Netto @ 2023-03-16 14:28 UTC (permalink / raw)
  To: H.J. Lu; +Cc: libc-alpha, Wilco Dijkstra, kirill



On 15/03/23 21:58, H.J. Lu wrote:
> On Wed, Mar 15, 2023 at 1:59 PM Adhemerval Zanella
> <adhemerval.zanella@linaro.org> wrote:
>>
>> 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
> 
> I tried it with the test in
> 
> https://sourceware.org/bugzilla/show_bug.cgi?id=30179
> 
> On Intel i7-10710U, I got
> 
> time ./sse
> 3.13user 0.00system 0:03.13elapsed 99%CPU (0avgtext+0avgdata 512maxresident)k
> 0inputs+0outputs (0major+37minor)pagefaults 0swaps
> time ./x87
> 0.24user 0.00system 0:00.24elapsed 100%CPU (0avgtext+0avgdata 512maxresident)k
> 0inputs+0outputs (0major+37minor)pagefaults 0swaps
> time ./generic
> 0.55user 0.00system 0:00.55elapsed 99%CPU (0avgtext+0avgdata 512maxresident)k
> 0inputs+0outputs (0major+37minor)pagefaults 0swaps
> 
> The new generic is still slower than x87.

I think it really depends of the underlying hardware and on the input range.
Using the benchmark from the patch set and patch 66182 [1], I see:

CPU              | Input           | patch    | 66182
-----------------|-----------------|----------|--------
Ryzen 9          | subnormals      | 12.5049  | 31.2822
Ryzen 9          | normal          | 296.939  | 592.489
Ryzen 9          | close-exponents | 16.0244  | 33.5172
E5-2640          | subnormals      | 34.5454  | 652.59
E5-2640          | normal          | 473.602  | 438.836
E5-2640          | close-exponents | 39.298   | 22.2742
i7-4510U         | subnormals      | 25.2624  | 666.964
i7-4510U         | normal          | 386.489  | 454.222
i7-4510U         | close-exponents | 29.463   | 22.8572

So it seems that fprem performance is not really consistent over x86 CPUs, and 
even for recent AMD is far from great.  So I still think the generic is better
for x86, and I think fprem should be used along with ifunc to select on CPUs
that really yields better numbers (and take in consideration that subnormals
numbers seems to be pretty bad).

You might get better x86 performance by remove the SVID wrapper as I did
on the last patch; but it will increase 66182 complexity (you will need to
check for NaN/INF/0.0 and set errno).  And I hardly think it will close the
gap on the AMD chip I use.

I am also checking a algorithm change to use simple loop for the normal inputs,
where integer modulo operation is used instead of inverse multiplication. 
But as far I am testing performance is really bad on all x86 Intel chips I 
tests (it is not as bad on AMD).

[1] https://patchwork.sourceware.org/project/glibc/patch/20230309183312.205763-1-hjl.tools@gmail.com/

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

* Re: [PATCH v2 3/5] math: Improve fmod
  2023-03-16 14:28     ` Adhemerval Zanella Netto
@ 2023-03-16 16:13       ` Wilco Dijkstra
  2023-03-16 20:39         ` Adhemerval Zanella Netto
  0 siblings, 1 reply; 18+ messages in thread
From: Wilco Dijkstra @ 2023-03-16 16:13 UTC (permalink / raw)
  To: Adhemerval Zanella Netto, H.J. Lu; +Cc: libc-alpha, kirill

Hi,

It's these cases where x87 is still faster than the generic version:

> E5-2640          | close-exponents | 39.298   | 22.2742
>
> i7-4510U         | close-exponents | 29.463   | 22.8572

Are these mostly x < y or cases where the exponent difference is just over 11 and
thus we do not use the fast path?

> I am also checking a algorithm change to use simple loop for the normal inputs,
> where integer modulo operation is used instead of inverse multiplication. 

Adding another fast path for a wider range of exponent difference could be faster
than the generic modulo loop. This could do 2 modulo steps and maybe handle
tail zeroes (which I think is what HJ's testcase will benefit from).

For really large exponent differences, the generic modulo code could process 30
or 60 bits per iteration instead of just 11. It's more complex (so would be a separate
patch) but it should help CPUs with relatively high latency multipliers.

Cheers,
Wilco

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

* Re: [PATCH v2 5/5] math: Remove the error handling wrapper from fmod and fmodf
  2023-03-15 20:59 ` [PATCH v2 5/5] math: Remove the error handling wrapper from fmod and fmodf Adhemerval Zanella
@ 2023-03-16 17:21   ` Wilco Dijkstra
  0 siblings, 0 replies; 18+ messages in thread
From: Wilco Dijkstra @ 2023-03-16 17:21 UTC (permalink / raw)
  To: Adhemerval Zanella, libc-alpha, H . J . Lu

Hi Adhemerval,

> It shows an small improvement, the results for fmod:

>  x86_64 (Ryzen 9) | close-exponents | 16.0244  | 13.119
>  aarch64 (N1)     | close-exponents | 8.21306  | 5.76138

I wouldn't call gains of 22% on Ryzen and 42% on N1 for the common case small!

> @@ -56,11 +58,13 @@ __ieee754_fmod (double x, double y)
>... 
> -  if (__glibc_unlikely (hy == 0        || hx >= EXPONENT_MASK || hy > EXPONENT_MASK))
> +  if (__glibc_unlikely (is_nan (hx) || is_nan (hy)))
>     return (x * y) / (x * y);
> +  if (__glibc_unlikely (hy == 0 || is_inf (hx)))
> +    return __math_edom ((x * y) / (x * y));
 
This now requires 4 compares rather than 2 of the previous if statement (as GCC is able
to merge the 2 tests on hy). It's better to keep that and then handle the special cases.

 
> @@ -59,8 +61,10 @@ __ieee754_fmodf (float x, float y)
>...
>+  if (__glibc_unlikely (hy == 0 || is_inf (hx)))
>+    return __math_edom ((x * y) / (x * y));

__math_edomf?


> diff --git a/sysdeps/ieee754/flt-32/math_config.h b/sysdeps/ieee754/flt-32/math_config.h
>...
>+attribute_hidden float __math_edom (float x);

__math_edomf?

Cheers,
Wilco

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

* Re: [PATCH v2 4/5] math: Improve fmodf
  2023-03-15 20:59 ` [PATCH v2 4/5] math: Improve fmodf Adhemerval Zanella
@ 2023-03-16 18:11   ` Wilco Dijkstra
  2023-03-16 18:38     ` Adhemerval Zanella Netto
  0 siblings, 1 reply; 18+ messages in thread
From: Wilco Dijkstra @ 2023-03-16 18:11 UTC (permalink / raw)
  To: Adhemerval Zanella, libc-alpha, H . J . Lu; +Cc: kirill

Hi Adhemerval,


+  /* 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);
+    }

So we do need to handle zero case here, I think fmodf (5, 1) will now
return 0.5... We could add support in make_float (see below).

+  /* Special case, both x and y are subnormal.  */
+  if (__glibc_unlikely (ex == 0 && ey == 0))
+    return asfloat (sx | hx % hy);

This will handle zero case correctly.

+  /* 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);

Odd uses of get_mantissa here but not in the fast path above... They are computing
the same value so can be shared.

+  mx %= my;
+
+  if (__glibc_unlikely (mx == 0))
+    return asfloat (sx);
+
+  if (exp_diff == 0)
+    return make_float (my, ey, sx);

That should be make_float (mx, ey, sx) - no testcase caught this?!?

(note both issues are in double version too)

--- a/sysdeps/ieee754/flt-32/math_config.h
+++ b/sysdeps/ieee754/flt-32/math_config.h

+   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))

We could do (ep < 0 || x == 0) to handle the zero case correctly (this works
eventhough clz (0) is not well defined).

+    {
+      x >>= -ep;
+      ep = 0;
+    }
+  return asfloat (s + x + (ep << MANTISSA_WIDTH));
+}
+
 
Cheers,
Wilco

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

* Re: [PATCH v2 4/5] math: Improve fmodf
  2023-03-16 18:11   ` Wilco Dijkstra
@ 2023-03-16 18:38     ` Adhemerval Zanella Netto
  2023-03-16 19:15       ` Wilco Dijkstra
  0 siblings, 1 reply; 18+ messages in thread
From: Adhemerval Zanella Netto @ 2023-03-16 18:38 UTC (permalink / raw)
  To: Wilco Dijkstra, libc-alpha, H . J . Lu; +Cc: kirill



On 16/03/23 15:11, Wilco Dijkstra wrote:
> Hi Adhemerval,
> 
> 
> +  /* 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);
> +    }
> 
> So we do need to handle zero case here, I think fmodf (5, 1) will now
> return 0.5... We could add support in make_float (see below).

Ok, although at least for fmodf (5, 1) current algorithm does return 0.

> 
> +  /* Special case, both x and y are subnormal.  */
> +  if (__glibc_unlikely (ex == 0 && ey == 0))
> +    return asfloat (sx | hx % hy);
> 
> This will handle zero case correctly.
> 
> +  /* 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);
> 
> Odd uses of get_mantissa here but not in the fast path above... They are computing
> the same value so can be shared.
> 
> +  mx %= my;
> +
> +  if (__glibc_unlikely (mx == 0))
> +    return asfloat (sx);
> +
> +  if (exp_diff == 0)
> +    return make_float (my, ey, sx);
> 
> That should be make_float (mx, ey, sx) - no testcase caught this?!?
> 
> (note both issues are in double version too)

Unfortunately no, I will add proper tests for this.

> 
> --- a/sysdeps/ieee754/flt-32/math_config.h
> +++ b/sysdeps/ieee754/flt-32/math_config.h
> 
> +   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))
> 
> We could do (ep < 0 || x == 0) to handle the zero case correctly (this works
> eventhough clz (0) is not well defined).

Ack.

> 
> +    {
> +      x >>= -ep;
> +      ep = 0;
> +    }
> +  return asfloat (s + x + (ep << MANTISSA_WIDTH));
> +}
> +
>  
> Cheers,
> Wilco

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

* Re: [PATCH v2 4/5] math: Improve fmodf
  2023-03-16 18:38     ` Adhemerval Zanella Netto
@ 2023-03-16 19:15       ` Wilco Dijkstra
  2023-03-16 19:45         ` Adhemerval Zanella Netto
  0 siblings, 1 reply; 18+ messages in thread
From: Wilco Dijkstra @ 2023-03-16 19:15 UTC (permalink / raw)
  To: Adhemerval Zanella Netto, libc-alpha, H . J . Lu; +Cc: kirill

Hi Adhemerval,

>> So we do need to handle zero case here, I think fmodf (5, 1) will now
>> return 0.5... We could add support in make_float (see below).
>
> Ok, although at least for fmodf (5, 1) current algorithm does return 0.

Try printing with %a, on AArch64 it shows 0x1p-25 (ie. 0.5 * 1p-24 from
passing ey-1 to make_float and CLZ (0) - 8 == 32 - 8).

Again odd no testcase caught it...

Cheers,
Wilco

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

* Re: [PATCH v2 4/5] math: Improve fmodf
  2023-03-16 19:15       ` Wilco Dijkstra
@ 2023-03-16 19:45         ` Adhemerval Zanella Netto
  0 siblings, 0 replies; 18+ messages in thread
From: Adhemerval Zanella Netto @ 2023-03-16 19:45 UTC (permalink / raw)
  To: Wilco Dijkstra, libc-alpha, H . J . Lu; +Cc: kirill



On 16/03/23 16:15, Wilco Dijkstra wrote:
> Hi Adhemerval,
> 
>>> So we do need to handle zero case here, I think fmodf (5, 1) will now
>>> return 0.5... We could add support in make_float (see below).
>>
>> Ok, although at least for fmodf (5, 1) current algorithm does return 0.
> 
> Try printing with %a, on AArch64 it shows 0x1p-25 (ie. 0.5 * 1p-24 from
> passing ey-1 to make_float and CLZ (0) - 8 == 32 - 8).
> 
> Again odd no testcase caught it...

Indeed, I will also add a testcase for this.

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

* Re: [PATCH v2 3/5] math: Improve fmod
  2023-03-16 16:13       ` Wilco Dijkstra
@ 2023-03-16 20:39         ` Adhemerval Zanella Netto
  2023-03-17 14:55           ` Wilco Dijkstra
  0 siblings, 1 reply; 18+ messages in thread
From: Adhemerval Zanella Netto @ 2023-03-16 20:39 UTC (permalink / raw)
  To: Wilco Dijkstra, H.J. Lu; +Cc: libc-alpha, kirill



On 16/03/23 13:13, Wilco Dijkstra wrote:
> Hi,
> 
> It's these cases where x87 is still faster than the generic version:
> 
>> E5-2640          | close-exponents | 39.298   | 22.2742
>>
>> i7-4510U         | close-exponents | 29.463   | 22.8572
> 
> Are these mostly x < y or cases where the exponent difference is just over 11 and
> thus we do not use the fast path?

In fact the fast path will be used on ~83% of the cases (849 from 1024 entries).
Profiling shows that the initial checks might be the culprit, since generic 
compat wrapper uses compiler builtins that might map to fp instructions. But even
trying to mimic did not improve much.  It seems that for some CPU the integer
operations to create the final floating number is what is costly.

> 
>> I am also checking a algorithm change to use simple loop for the normal inputs,
>> where integer modulo operation is used instead of inverse multiplication. 
> 
> Adding another fast path for a wider range of exponent difference could be faster
> than the generic modulo loop. This could do 2 modulo steps and maybe handle
> tail zeroes (which I think is what HJ's testcase will benefit from).
> 
> For really large exponent differences, the generic modulo code could process 30
> or 60 bits per iteration instead of just 11. It's more complex (so would be a separate
> patch) but it should help CPUs with relatively high latency multipliers.

Yes, it might be an improvement indeed.

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

* Re: [PATCH v2 3/5] math: Improve fmod
  2023-03-16 20:39         ` Adhemerval Zanella Netto
@ 2023-03-17 14:55           ` Wilco Dijkstra
  2023-03-17 16:07             ` H.J. Lu
  0 siblings, 1 reply; 18+ messages in thread
From: Wilco Dijkstra @ 2023-03-17 14:55 UTC (permalink / raw)
  To: Adhemerval Zanella Netto, H.J. Lu; +Cc: libc-alpha, kirill

Hi Adhemerval,

>> It's these cases where x87 is still faster than the generic version:
>> 
>>> E5-2640          | close-exponents | 39.298   | 22.2742
>>>
>>> i7-4510U         | close-exponents | 29.463   | 22.8572
>> 
>> Are these mostly x < y or cases where the exponent difference is just over 11 and
>> thus we do not use the fast path?
>
> In fact the fast path will be used on ~83% of the cases (849 from 1024 entries).
> Profiling shows that the initial checks might be the culprit, since generic 
> compat wrapper uses compiler builtins that might map to fp instructions. But even
> trying to mimic did not improve much.  It seems that for some CPU the integer
> operations to create the final floating number is what is costly.

If it is mostly the fast path we could further tune it and reduce instruction counts.
It takes 6 if statements to enter this fast path, we could reduce that to 3. There are
several large constants which could be simplified (older x86 cores might have
issues with multiple 10-byte MOVABS in the instruction stream).

Also I think your results for generic above use the wrapper, so we'd still get the
> 20% speedup which should make things closer.

Cheers,
Wilco

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

* Re: [PATCH v2 3/5] math: Improve fmod
  2023-03-17 14:55           ` Wilco Dijkstra
@ 2023-03-17 16:07             ` H.J. Lu
  2023-03-17 18:22               ` Wilco Dijkstra
  0 siblings, 1 reply; 18+ messages in thread
From: H.J. Lu @ 2023-03-17 16:07 UTC (permalink / raw)
  To: Wilco Dijkstra; +Cc: Adhemerval Zanella Netto, libc-alpha, kirill

On Fri, Mar 17, 2023 at 7:55 AM Wilco Dijkstra <Wilco.Dijkstra@arm.com> wrote:
>
> Hi Adhemerval,
>
> >> It's these cases where x87 is still faster than the generic version:
> >>
> >>> E5-2640          | close-exponents | 39.298   | 22.2742
> >>>
> >>> i7-4510U         | close-exponents | 29.463   | 22.8572
> >>
> >> Are these mostly x < y or cases where the exponent difference is just over 11 and
> >> thus we do not use the fast path?
> >
> > In fact the fast path will be used on ~83% of the cases (849 from 1024 entries).
> > Profiling shows that the initial checks might be the culprit, since generic
> > compat wrapper uses compiler builtins that might map to fp instructions. But even
> > trying to mimic did not improve much.  It seems that for some CPU the integer
> > operations to create the final floating number is what is costly.
>
> If it is mostly the fast path we could further tune it and reduce instruction counts.
> It takes 6 if statements to enter this fast path, we could reduce that to 3. There are
> several large constants which could be simplified (older x86 cores might have
> issues with multiple 10-byte MOVABS in the instruction stream).
>
> Also I think your results for generic above use the wrapper, so we'd still get the
> > 20% speedup which should make things closer.
>

The current __ieee754_fmod doesn't set errno nor does x87 __ieee754_fmod.
A wrapper will avoid setting errno.

-- 
H.J.

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

* Re: [PATCH v2 3/5] math: Improve fmod
  2023-03-17 16:07             ` H.J. Lu
@ 2023-03-17 18:22               ` Wilco Dijkstra
  0 siblings, 0 replies; 18+ messages in thread
From: Wilco Dijkstra @ 2023-03-17 18:22 UTC (permalink / raw)
  To: H.J. Lu; +Cc: Adhemerval Zanella Netto, libc-alpha, kirill

Hi HJ,

>> Also I think your results for generic above use the wrapper, so we'd still get the
>> > 20% speedup which should make things closer.
>
>
> The current __ieee754_fmod doesn't set errno nor does x87 __ieee754_fmod.
> A wrapper will avoid setting errno.

The new generic fmod removes the wrapper since it sets errno when needed -
ie. the wrapper is unnecessary overhead. We must keep using the wrapper in
implementations that don't set errno of course.

Applications never call __ieee754_fmod, so the right comparison is between
the generic fmod without the wrapper and the x87 fmod with the wrapper.

Cheers,
Wilco

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

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

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-15 20:59 [PATCH v2 0/5] Improve fmod and fmodf Adhemerval Zanella
2023-03-15 20:59 ` [PATCH v2 1/5] benchtests: Add fmod benchmark Adhemerval Zanella
2023-03-15 20:59 ` [PATCH v2 2/5] benchtests: Add fmodf benchmark Adhemerval Zanella
2023-03-15 20:59 ` [PATCH v2 3/5] math: Improve fmod Adhemerval Zanella
2023-03-16  0:58   ` H.J. Lu
2023-03-16 14:28     ` Adhemerval Zanella Netto
2023-03-16 16:13       ` Wilco Dijkstra
2023-03-16 20:39         ` Adhemerval Zanella Netto
2023-03-17 14:55           ` Wilco Dijkstra
2023-03-17 16:07             ` H.J. Lu
2023-03-17 18:22               ` Wilco Dijkstra
2023-03-15 20:59 ` [PATCH v2 4/5] math: Improve fmodf Adhemerval Zanella
2023-03-16 18:11   ` Wilco Dijkstra
2023-03-16 18:38     ` Adhemerval Zanella Netto
2023-03-16 19:15       ` Wilco Dijkstra
2023-03-16 19:45         ` Adhemerval Zanella Netto
2023-03-15 20:59 ` [PATCH v2 5/5] math: Remove the error handling wrapper from fmod and fmodf Adhemerval Zanella
2023-03-16 17:21   ` Wilco Dijkstra

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).