diff options
author | Joseph Myers <joseph@codesourcery.com> | 2012-08-27 16:01:27 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2012-08-27 16:02:07 +0000 |
commit | af92131a8eb7c2661a5bb0e31dc4cb028c85e0c6 (patch) | |
tree | 314e393e8358ea722cc43c6a6ac8660fa5e71e6b | |
parent | d6e70f4368533224e66d10b7f2126b899a3fd5e4 (diff) | |
download | glibc-af92131a8eb7c2661a5bb0e31dc4cb028c85e0c6.tar glibc-af92131a8eb7c2661a5bb0e31dc4cb028c85e0c6.tar.gz glibc-af92131a8eb7c2661a5bb0e31dc4cb028c85e0c6.tar.bz2 glibc-af92131a8eb7c2661a5bb0e31dc4cb028c85e0c6.zip |
Fix strtod rounding (bug 3479).
-rw-r--r-- | ChangeLog | 37 | ||||
-rw-r--r-- | NEWS | 6 | ||||
-rw-r--r-- | stdlib/Makefile | 2 | ||||
-rw-r--r-- | stdlib/fpioconst.c | 910 | ||||
-rw-r--r-- | stdlib/fpioconst.h | 12 | ||||
-rw-r--r-- | stdlib/gen-fpioconst.c | 107 | ||||
-rw-r--r-- | stdlib/gen-tst-strtod-round.c | 131 | ||||
-rw-r--r-- | stdlib/strtod_l.c | 66 | ||||
-rw-r--r-- | stdlib/tst-strtod-round-data | 107 | ||||
-rw-r--r-- | stdlib/tst-strtod-round.c | 6298 |
10 files changed, 7634 insertions, 42 deletions
@@ -1,5 +1,42 @@ 2012-08-27 Joseph Myers <joseph@codesourcery.com> + [BZ #3479] + * stdlib/strtod_l.c (NDIG): Remove. + (HEXNDIG): Likewise. + (MPNSIZE): Increase to represent 10^n where 2^-n is 1/4 ulp of the + smallest representable value. + (____STRTOF_INTERNAL): Use all fractional decimal digits that may + lie within an exact representation of 1/2 ulp of the result. + * stdlib/fpioconst.c (__tens): Include 10^2^9 and 10^2^10 + unconditionally. + (TENS_P9_IDX): Define unconditionally. + (TENS_P9_SIZE): Likewise. + (TENS_P10_IDX): Likewise. + (TENS_P10_SIZE): Likewise. + [BITS_PER_MP_LIMB == 32]: Change condition for larger powers of 10 + to !defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024. + [!__NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024] (__tens): Add + entries for 10^2^13 and 10^2^14. + [!__NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024] + (TENS_P13_IDX): Define. + (TENS_P13_SIZE): Likewise. + (TENS_P14_IDX): Likewise. + (TENS_P14_SIZE): Likewise. + (_fpioconst_pow10): Change array size to + FPIOCONST_POW10_ARRAY_SIZE. Make entries for 10^2^9 and 10^2^10 + unconditional. + (_fpioconst_pow10) [!__NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > + 1024]: Add entries for 10^2^13 and 10^2^14. + [LAST_POW10 > _LAST_POW10]: Remove #error. + * stdlib/fpioconst.h (FPIOCONST_POW10_ARRAY_SIZE): Define. + (_fpioconst_pow10): Change array size to + FPIOCONST_POW10_ARRAY_SIZE. + * stdlib/gen-fpioconst.c: New file. + * stdlib/gen-tst-strtod-round.c: Likewise. + * stdlib/tst-strtod-round-data: Likewise. + * stdlib/tst-strtod-round.c: Likewise. + * stdlib/Makefile (tests): Add tst-strtod-round. + [BZ #14459] * stdlib/strtod_l.c: Include <stdint.h>. (NDEBUG): Do not define. @@ -9,9 +9,9 @@ Version 2.17 * The following bugs are resolved with this release: - 6778, 6808, 9685, 11607, 13717, 13696, 13939, 14042, 14090, 14166, 14150, - 14151, 14154, 14157, 14166, 14173, 14195, 14252, 14283, 14298, 14303, - 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14459, 14505 + 3479, 6778, 6808, 9685, 11607, 13717, 13696, 13939, 14042, 14090, 14166, + 14150, 14151, 14154, 14157, 14166, 14173, 14195, 14252, 14283, 14298, + 14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14459, 14505 * Support for STT_GNU_IFUNC symbols added for s390 and s390x. Optimized versions of memcpy, memset, and memcmp added for System z10 and diff --git a/stdlib/Makefile b/stdlib/Makefile index e6804c9304..dfc5eaf97b 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -69,7 +69,7 @@ tests := tst-strtol tst-strtod testmb testrand testsort testdiv \ tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2 \ tst-makecontext2 tst-strtod6 tst-unsetenv1 \ tst-makecontext3 bug-getcontext bug-fmtmsg1 \ - tst-secure-getenv tst-strtod-overflow + tst-secure-getenv tst-strtod-overflow tst-strtod-round tests-static := tst-secure-getenv include ../Makeconfig diff --git a/stdlib/fpioconst.c b/stdlib/fpioconst.c index 4dd54a940b..6a0ef8b0ae 100644 --- a/stdlib/fpioconst.c +++ b/stdlib/fpioconst.c @@ -1,6 +1,5 @@ /* Table of MP integer constants 10^(2^i), used for floating point <-> decimal. - Copyright (C) 1995, 1996, 1997, 1998, 1999, 2002, 2003 - Free Software Foundation, Inc. + Copyright (C) 1995-2012 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 @@ -23,6 +22,9 @@ /* First page : 32-bit limbs Second page : 64-bit limbs Last page : table of pointers + + The tables (apart from internal #if conditions) may be generated + with gen-fpioconst.c. */ #if BITS_PER_MP_LIMB == 32 @@ -75,9 +77,8 @@ const mp_limb_t __tens[] = 0x26b2716e, 0xadc666b0, 0x1d153624, 0x3c42d35a, 0x63ff540e, 0xcc5573c0, 0x65f9ef17, 0x55bc28f2, 0x80dcc7f7, 0xf46eeddc, 0x5fdcefce, 0x000553f7, -#ifndef __NO_LONG_DOUBLE_MATH -# define TENS_P9_IDX (TENS_P8_IDX + TENS_P8_SIZE) -# define TENS_P9_SIZE 56 +#define TENS_P9_IDX (TENS_P8_IDX + TENS_P8_SIZE) +#define TENS_P9_SIZE 56 [TENS_P9_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, @@ -89,8 +90,8 @@ const mp_limb_t __tens[] = 0xb099bc81, 0x45a71d46, 0xa2699748, 0x8cb07303, 0x8a0b1f13, 0x8cab8a97, 0xc1d238d9, 0x633415d4, 0x0000001c, -# define TENS_P10_IDX (TENS_P9_IDX + TENS_P9_SIZE) -# define TENS_P10_SIZE 109 +#define TENS_P10_IDX (TENS_P9_IDX + TENS_P9_SIZE) +#define TENS_P10_SIZE 109 [TENS_P10_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, @@ -111,6 +112,7 @@ const mp_limb_t __tens[] = 0xd2db49ef, 0x926c3f5b, 0xae6209d4, 0x2d433949, 0x34f4a3c6, 0xd4305d94, 0xd9d61a05, 0x00000325, +#if !defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024 # define TENS_P11_IDX (TENS_P10_IDX + TENS_P10_SIZE) # define TENS_P11_SIZE 215 [TENS_P11_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, @@ -223,7 +225,440 @@ const mp_limb_t __tens[] = 0x35fcb457, 0x1bb6c6e4, 0xf74eb928, 0x3d5d0b54, 0x87cc1d21, 0x4964046f, 0x18ae4240, 0xd868b275, 0x8bd2b496, 0x1c5563f4, 0xc234d8f5, 0xf868e970, 0xf9151fff, 0xae7be4a2, 0x271133ee, 0xbb0fd922, 0x25254932, 0xa60a9fc0, - 0x104bcd64, 0x30290145, 0x00000062 + 0x104bcd64, 0x30290145, 0x00000062, + +# define TENS_P13_IDX (TENS_P12_IDX + TENS_P12_SIZE) +# define TENS_P13_SIZE 853 + [TENS_P13_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x64cf8001, 0x9f345226, 0x644963e5, 0x7b8d5053, 0x49f0aa29, + 0xb945c82f, 0x430ff478, 0x933b6bb8, 0x5ff82d0a, 0x64c501d4, 0x73bbf174, + 0x9ec1e1b3, 0x3bfbe803, 0xe9010689, 0xf7390d8e, 0x3fef8d80, 0xf31d1325, + 0x2c73446b, 0xf5ca7a92, 0x1c19e379, 0x270af2be, 0xf52d9d9c, 0xeb2bed48, + 0x3abf72e1, 0x4ac4ffc2, 0x7ecf3508, 0x22019a82, 0x38597a5a, 0xbe6a7b3c, + 0x9a51ff6e, 0xa2d28437, 0x0c0abe9d, 0x7c9ec6ea, 0xc79887ff, 0x5851c899, + 0x436420d0, 0xefead581, 0x72b5547f, 0x99b1d2b5, 0x077ad8f8, 0x5cddbf5b, + 0x3b4305ed, 0xe3861ac7, 0x2d88f3fd, 0x3d6b43be, 0x393220aa, 0xe5382405, + 0x1cd62095, 0x61a10c96, 0x87a0d1e1, 0xca95a55d, 0x68c933e6, 0x9ee082e2, + 0x778089bb, 0x41429ee9, 0xfbb6d8d4, 0xc529500d, 0x26cf5471, 0x68b9be29, + 0xd6c9b140, 0x07be635a, 0x84151852, 0xb5572182, 0x83730335, 0xeb2300b4, + 0xdd312d31, 0x05d6dd9b, 0x488da59c, 0x37784d25, 0xda2c2e40, 0x6a8d92fa, + 0x6a57d720, 0x950b41ac, 0xf07a8632, 0xcd55f062, 0x2ecad06a, 0xe6a3dfe7, + 0x34c98bb0, 0x9c767d8f, 0xb60521b1, 0x752aafd1, 0xe87d16be, 0x9de1d728, + 0xe58a8b0c, 0xc6013830, 0x2fa2c119, 0x3c4f9156, 0x519b40c8, 0x5058fc8f, + 0xab78701b, 0xadc59c47, 0xc502a554, 0x0fb3286f, 0x6647f04c, 0x9db4076e, + 0x5ea495c8, 0x9c74fab1, 0xb4f00f8b, 0x897c7a3c, 0xd092b4c6, 0x283e0340, + 0x32f31fa8, 0xeeb708cc, 0x67b63de2, 0x4f7b3c8b, 0xef2bc02b, 0xda14bfe3, + 0xc49344c0, 0xaabc85be, 0xb6c4e69e, 0x2ece8aa6, 0x63a11016, 0x19cfba4d, + 0x726ae4d9, 0x0fc90b42, 0xee6ae707, 0x4290b04a, 0x4d9aabc5, 0xfb2b070e, + 0xf34906cd, 0x1ff54b0a, 0x52ca9709, 0x0b42bfe1, 0x16431570, 0x980f3076, + 0x6b5565bb, 0xeb8c4c4a, 0x9ce63c76, 0xb9e4c771, 0x3da24c53, 0x6f0266fa, + 0xb50e3c66, 0x76e34f79, 0x01bb4b96, 0x9948cf3e, 0x0fbea124, 0x86bead12, + 0xa1fa4edc, 0xd11e901c, 0xc3b97bf9, 0x71730e03, 0x370ca58e, 0x48b19715, + 0x886467e2, 0xdb237497, 0x3c727e24, 0x2116ccd2, 0x8e67d76e, 0xf973aecf, + 0x34bdedd3, 0x31d680ec, 0xb042ab05, 0x770e96a0, 0xfc5c3c17, 0xab6f1874, + 0xb8204ece, 0x5843f3a5, 0x416c0ced, 0x11dd112f, 0x95780183, 0xb1c74bd8, + 0x7e0e8613, 0x96c6453b, 0xa79ffc10, 0xb2157651, 0xfcd6da0a, 0x836a34a7, + 0x3dd0ccac, 0x316e5a36, 0x496049ed, 0x0322bcb2, 0xdea1a97d, 0xcdf2aa5a, + 0x39578d53, 0x1d1aa931, 0x030565c9, 0xd198cbed, 0x324e0a27, 0x5db83e8a, + 0x28432534, 0x90bf23e8, 0x5cb134c0, 0xdd0adab6, 0x009e5051, 0xf8ad61da, + 0x7e36a6d7, 0x84c75e57, 0xbdffe6aa, 0xb5d5532e, 0x138d680e, 0xbd84ddac, + 0x4a5f74a1, 0xccff00d1, 0x55538cfa, 0xb0948b8c, 0x48528011, 0xe345f82e, + 0x9e047ad7, 0x6ee770ff, 0xea77bef0, 0x0fc13669, 0x2f162567, 0x869426ac, + 0x0614686c, 0x3a3ff464, 0x4263ed82, 0xb3589b47, 0x57205a7a, 0x213f24ad, + 0xae6fc46b, 0x3de03e4e, 0xd92b133f, 0x315a589b, 0x1b49c24a, 0x73381bcb, + 0x1641c138, 0x7bc99425, 0xbc680ada, 0xa5cfbc9a, 0x962e9884, 0x0a960d70, + 0xfc8d12f6, 0xed18ef4c, 0x60acc868, 0x9aea5d14, 0x13113036, 0xc747c87e, + 0x2d99a5b0, 0x3a369bb3, 0x006b3658, 0x118a5135, 0xe43fa6e6, 0xb4947190, + 0xa13dc05e, 0xd7733db8, 0x0dbd7170, 0xc3fb67d1, 0x117ed7e7, 0xe2d72a49, + 0xc05fe99e, 0x9638db40, 0xd971a25b, 0x4239d468, 0x1a159559, 0x850a223c, + 0xc1117392, 0x22d2dbd8, 0x567b5fc0, 0x92c5b4eb, 0xc051007a, 0x11cc0099, + 0xfb355720, 0x6907810d, 0x39848161, 0x5e8534f4, 0x61d19ef2, 0x2ee8c466, + 0x8a0ab03c, 0xc234af76, 0x879aa514, 0x9774a235, 0x59e5da57, 0x9bc466b3, + 0xf339bd5a, 0x44ab026d, 0xbbb5fd67, 0x2b977202, 0x3685c9f2, 0x03e5dc00, + 0x7054359e, 0x5239cfb0, 0x9ba11f08, 0xf8237562, 0x9c258687, 0xa3b510dd, + 0x52c7bf8f, 0xb31ed0cf, 0x3245e079, 0xff9ff8d3, 0xbaee38c7, 0xf17d5562, + 0xf702b3b9, 0xcc4c8563, 0xcbca275d, 0xe005d9d1, 0xe817dbac, 0x05c6920a, + 0x62cee350, 0x0f1deac0, 0x19e049b9, 0x59599f74, 0xb2a27a16, 0xf0911d5a, + 0x7dcef00d, 0x3603dd66, 0x37552251, 0x97813735, 0x5fa022da, 0x0d849416, + 0xefbe57c2, 0x30a0e592, 0x57619296, 0xc953cc47, 0x11735043, 0xa83526ad, + 0xc0444be0, 0xb5f8463c, 0x16ff5136, 0x2a0a6631, 0xf037572c, 0xd30464da, + 0xb1bf8daa, 0x7f5718f7, 0x0f3e9e7e, 0xe5a4cfe7, 0xc26f2624, 0x8c9b5ae4, + 0xdfe8f485, 0xf6fa82e3, 0xc64a1509, 0xacb24aea, 0x3024b220, 0xddb02ac0, + 0xddcdfedd, 0xd834c574, 0x384c86c3, 0xd904e099, 0xdd48a571, 0x4550a05f, + 0x77b35c74, 0x81e85f71, 0xaaebdc6d, 0x0f9bb0b1, 0xd4cdc054, 0x7af4df85, + 0x845786af, 0xe5e53887, 0xdf2a91ca, 0xf6a58211, 0x5689a3c4, 0x8cf6aa15, + 0xa705983a, 0x9fbf2f52, 0x2ce7fef0, 0x48e84a62, 0x4a3b5365, 0xf8281a47, + 0xd48a0872, 0x8423dcf6, 0xf0929c3e, 0x044a5049, 0xe9ec071b, 0x17decc36, + 0x20e30c1b, 0x45fc2813, 0x3342196a, 0x46afb7f9, 0x6601e337, 0x30754439, + 0xf18094d1, 0xd38b4112, 0x61410dd1, 0xd8796b36, 0xd97d4dd8, 0x47e9bc0b, + 0x80805191, 0x1584e2da, 0xcde438c1, 0x955d24f1, 0x409659a1, 0x1b0950b1, + 0x5a09635f, 0x65b1febe, 0x615472b9, 0x525dc00a, 0x6308e067, 0x4089e2d4, + 0xd4e705a4, 0x43fc9209, 0x32c18b26, 0x4447a5fa, 0xaf271153, 0x3617cadc, + 0x4dc4f0d2, 0x692eb386, 0x6aa116ef, 0x655991bc, 0x0641dc0b, 0x54469597, + 0xc6559664, 0x749c0fe8, 0x4bdc0d1a, 0xa7d3381e, 0xc5292a61, 0x4eb65fdc, + 0x42474cc2, 0xf2c6b173, 0x19dfc9ee, 0x0a19a199, 0xbece2ee3, 0xc68b778d, + 0xaa03aa7c, 0xc8db86f0, 0xae54d2be, 0xb92a01e0, 0xdee3f48f, 0x6023c0a9, + 0xf6ae2852, 0xa233763b, 0xa441cb9e, 0x3246dddd, 0x3a8bb4b7, 0x44faa3c3, + 0x308ef2c8, 0xfd1c8516, 0xd2862534, 0x3b25ebe7, 0x62336f6f, 0x0c336a45, + 0x0b8e2ce6, 0xe867f171, 0x11eea1f2, 0x523972ec, 0x68df4903, 0x50c05824, + 0x51ef4cb7, 0xcb4df2a8, 0x3ffae115, 0xb51aca2f, 0x3ed1635f, 0xd6ff1cc6, + 0x0a5ac09f, 0xde8ed9d6, 0x0a3dc76f, 0x5dc2d8dd, 0x37991dde, 0xf95bacb2, + 0x80ad6e13, 0x163005ee, 0xd4f8c7a6, 0x3225d180, 0xa4760f08, 0x5fff004d, + 0x9b2b1a87, 0xe7ea8576, 0x5cd00b66, 0xec478452, 0x285dd80d, 0x20112439, + 0x4301b3a1, 0xff879fc8, 0xfacbb68c, 0xaf6af6b8, 0xb17fdf84, 0xc208d9f1, + 0xf4489576, 0x8794a6e9, 0xadcc862c, 0x0e83e54c, 0x931685a4, 0xab01c580, + 0x1e40293b, 0xcad784fa, 0x1f1ddf7f, 0x6b856084, 0xcee722b2, 0x1c39938b, + 0x74254eb4, 0xc7ccebf4, 0xb9c26d9a, 0x6b08dfb9, 0x2e3ece24, 0x981455ec, + 0xdff60410, 0xbc804e2b, 0xe06fa38b, 0xb534540c, 0x72e53c52, 0x02dfb2ef, + 0xb2a5c05a, 0x5002a2a5, 0x97313338, 0x597c53ff, 0xd61df455, 0x34e5261a, + 0x39ac2ec5, 0xc6bc0cab, 0x388b7539, 0x3f732fc0, 0x00eac704, 0x92fb21d9, + 0xc089971e, 0xb4ffa503, 0x7af93f8f, 0x72e353b6, 0xa8311b23, 0x8266c9af, + 0x1de496ca, 0xdbdb16b0, 0xd6fa0b51, 0x9991a5ef, 0xbd563089, 0x168cbe0f, + 0x0954a1e3, 0x537b9245, 0x53d09723, 0x2867272d, 0x86558cb9, 0x0b83f026, + 0xfac85d10, 0xf8562951, 0x1e5ddb95, 0xad3668c8, 0x48d27b92, 0xc930b7e6, + 0x19b58a99, 0xa3de74e3, 0xa9cda917, 0xcb6e35ee, 0x7a4dd16e, 0x4c80e9d5, + 0x4d84073f, 0x74a95ba8, 0x9cffcfc0, 0xd28485eb, 0x15796372, 0x5717e9cd, + 0x77eda8df, 0xab473c4e, 0xadb965e1, 0xffad6959, 0x5bc05659, 0x6ed63880, + 0xfb240227, 0x2014850b, 0xd15fdddf, 0xfdd74592, 0xb538f37d, 0x3a8e2e82, + 0x1473396f, 0xf6a5edf8, 0x3ce41a21, 0x0cc4351a, 0x754e8264, 0xaab95e73, + 0xc7821b96, 0xf42ff463, 0xc242faaa, 0xdd00ac65, 0x087e260e, 0x17d193f5, + 0x0dbe0328, 0x844a63c9, 0xf9d10f96, 0x85aa91dd, 0xbaf127ec, 0x0ab6dabb, + 0xce85e6a5, 0x1af5d24f, 0xe7b56a16, 0xcd6c5a19, 0x57d1d79f, 0x5dfc2b28, + 0xec4dd2f0, 0x18fe64a1, 0x8d72216a, 0x5f222077, 0x72f14a08, 0xd8b09b11, + 0x3bf038ab, 0xc6cf1f44, 0xc4265d7c, 0xdab1b0e7, 0x46398d2c, 0x7dcfdc68, + 0xb6e705d3, 0x4aafd1e6, 0x362c1183, 0xd8701107, 0xf6ac98b7, 0xad114d7e, + 0xd6649424, 0xc40ab551, 0xddd1c6e4, 0xa132030f, 0xc9d284c8, 0xdb1f662a, + 0x824069ee, 0x4157904b, 0xc846b3ad, 0xd38481ca, 0x0a248c17, 0xc846831f, + 0xe8745feb, 0x000025a8, + +# define TENS_P14_IDX (TENS_P13_IDX + TENS_P13_SIZE) +# define TENS_P14_SIZE 1703 + [TENS_P14_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x099f0001, + 0x41b5687d, 0xcbfd1b6e, 0x8c75ee63, 0x4b191cea, 0xd75296ad, 0x2394d80a, + 0x1eb5da9b, 0x18a004ed, 0x5c79fed9, 0x37e3b01c, 0xed67a1b8, 0x78d9a714, + 0x2a1a34d5, 0x8fbe7f0d, 0x6b1d3516, 0xe57c43ea, 0xa7825681, 0xc81d32e8, + 0xd3e716e1, 0x58860b00, 0xa6d93d65, 0x83159c97, 0x0113232f, 0xd6122269, + 0x7321c3a0, 0xbe6a92f3, 0xca4ca9d3, 0xd1e276a5, 0xc0e55163, 0xb05915d6, + 0x7b7a78c1, 0x0fae0ca4, 0x62a3df4b, 0x08abec6f, 0x13030d11, 0xd446338a, + 0x60dcc8f2, 0x5f05d1d5, 0x25e1f9f6, 0x04a40bee, 0x7f8c7113, 0x88f47ec0, + 0x589ff59a, 0x308c3661, 0xea5068a1, 0x95fb108f, 0x06e87dff, 0x1559e741, + 0xd4d4abdc, 0x01e092e4, 0xee16907c, 0x5a7b78e6, 0xe73aabcb, 0x146bb7e0, + 0xad372889, 0x4f6b43c5, 0xfd49fc1d, 0x0f29f589, 0xd3739253, 0xc4745a56, + 0xe2acfcc2, 0xd75ccbc7, 0xedd016cd, 0xac5a63e0, 0xef82ccd3, 0xb352496e, + 0x2bdabfc4, 0x5b3d0401, 0x01b0197f, 0xade96d3c, 0x29d9253d, 0x19bebdba, + 0x73c56b1b, 0x255e7b25, 0x1f2b7f1e, 0xa56a457e, 0x6299c836, 0x5c63cc78, + 0xa2ca74c6, 0x5c85fe93, 0xee571bea, 0x508e2561, 0x2db5f1d0, 0xb1fde6a9, + 0xa9b87b99, 0x4fb90a37, 0xf7260f07, 0xff58c5fd, 0x56ee7e97, 0xbab9fa46, + 0x42e6f9ce, 0x78816f73, 0x1b76d267, 0xfdb2c728, 0x4566519c, 0xae17dd8d, + 0xb9f6a95f, 0x1cd533a1, 0x67160dea, 0x14534bac, 0xfcd8f8f9, 0xf3f2901d, + 0x708b1f0a, 0x8829063b, 0x9457a1df, 0x8f872aa1, 0x36bb9335, 0xb5672c0e, + 0xd889d109, 0x7ec63a6a, 0x93306672, 0x39b6d457, 0x8239ab68, 0xef2e2506, + 0xbe0d7a1f, 0x4251b635, 0x05f65522, 0x0ef0bd55, 0x03286891, 0x2c42b664, + 0x9815fbac, 0x471fd611, 0x814e379c, 0x7dd8349d, 0xa4a25bda, 0x9886b84c, + 0x01b9e39d, 0x5a7ce1a2, 0xae31cbc9, 0x86d07f32, 0x83ef8faf, 0xb66b5b76, + 0x58470fdf, 0x96d59b73, 0x51618889, 0xdc400cf7, 0xfc8e0fc6, 0xaf693670, + 0x09a08e56, 0x91737de6, 0x74f682e1, 0x0e03923f, 0x7f8ac56d, 0x7400cfd4, + 0x8e05e49a, 0x4cebea3c, 0x384e1164, 0xb2e43d8c, 0xb50ae05e, 0x0f0b3ed9, + 0xa4006123, 0x64137137, 0x4e9a1934, 0x05404100, 0xd9621be6, 0x9329a255, + 0x5c347ebb, 0x75cbeb1b, 0xe684346b, 0x840fee55, 0xba6a9753, 0xf43836f6, + 0x60505b7b, 0x334a9278, 0xfd6d475d, 0x5db94761, 0x267375aa, 0xc110e160, + 0x024f6d63, 0x2ec96610, 0xa99b4c19, 0xb915c9f4, 0x338cfd90, 0xf02ea846, + 0xb9e51a09, 0xae928fb1, 0xfae31d88, 0x1a3db721, 0x8475dd26, 0x5769489d, + 0x7ad4c407, 0x0a49e9f0, 0x34e275c8, 0x3d075d83, 0x1d63114a, 0x72a96415, + 0x6b98e947, 0x1d500b5f, 0xd50fdc36, 0x141e5085, 0x87751275, 0xe7843834, + 0x2278809e, 0xb15c52ee, 0x947aead2, 0xfedb7b02, 0x5197b744, 0x64e09ba8, + 0x8849d0a6, 0x23beaa85, 0x11ecb913, 0x0f7ed667, 0x5d984848, 0x9f6331ea, + 0x588290e9, 0xa24d64d1, 0x7e09e9e5, 0x32592033, 0x03a501df, 0x27c270a6, + 0xbb3df738, 0x3c7c5a70, 0x4190833c, 0x7d4bf9f4, 0x80e5d89b, 0xa7fc6194, + 0xfaefb663, 0x62e52b49, 0xd3b6adcd, 0x809646fc, 0x1f2cf73a, 0xb765ed4f, + 0x531e4bfb, 0x92cd05f2, 0xaf12d1a6, 0x22ee30f3, 0x38da1074, 0xed6447bb, + 0x1a725608, 0xaff222d3, 0x7a3c6f54, 0xbca79a56, 0x7b0e8d12, 0x1c4660c5, + 0x6e34d6fb, 0x6f481a9f, 0xfe9dc99c, 0xf888db82, 0xd8489ea0, 0x84b4c0fa, + 0xc0dea281, 0x977a8583, 0xae30e887, 0x8c1cbcec, 0x1d4848cb, 0x0ee0d137, + 0xd011b0fc, 0x94b5fd49, 0x478d7dd4, 0x3d67f2e7, 0xacab62ad, 0x0ab4e62a, + 0x1dfc7df5, 0xd22e4553, 0x870b0e75, 0x49b7b001, 0x1b73bf6d, 0x12807ffd, + 0xdc9f0737, 0x6f3e5852, 0xc0e2f250, 0x93e62e4a, 0x4d96a55a, 0xc1d0e185, + 0x83a126db, 0x190b917b, 0xefbfd043, 0xc7df1669, 0x8f25b6dd, 0x2062eac9, + 0x476c17a6, 0xcb60f278, 0x25460383, 0x0e85e996, 0xda8c05be, 0x6f678a34, + 0x69206234, 0xf59be929, 0x1947b69a, 0x0ebfa11b, 0x90fd8322, 0x15c1e9bf, + 0xd699b1ec, 0xb2f0343f, 0x7001d002, 0xcf76eaaa, 0xc0778ab5, 0x5173eda8, + 0xb7b008e2, 0x4e00e4c6, 0x505d3f4d, 0x99dd341a, 0x1c9d4e12, 0x4ffb6978, + 0x474c5e95, 0x6e9ca6dd, 0xda19f938, 0xe2dda6e0, 0x98dc318e, 0xda455e54, + 0x3f67b836, 0x21e4181c, 0xa97e9a64, 0x1e17f655, 0x527a08bb, 0x1712dc21, + 0x682972ad, 0x0042d256, 0xccbeadf1, 0xca497b96, 0x861e99e0, 0x0d8aa585, + 0xeeb0f650, 0xdcc3c3da, 0x506af77e, 0x5deb9768, 0x7c9d60be, 0xe9d978b7, + 0x37b37e95, 0x77ad0b94, 0x42747f75, 0x07be42c4, 0x6d5fd2fe, 0x4c8c5da9, + 0x0d8fc27d, 0x0f2fd50f, 0x0ccf6023, 0x5b56053f, 0x3b1101bd, 0x56d34906, + 0xc0feca27, 0x7602a150, 0xc4888da4, 0x419abe54, 0x56d10633, 0xc76120ed, + 0x8db14123, 0xb656e675, 0x741e8f76, 0xd297b94e, 0x96be6f21, 0x3662439d, + 0x9b409e27, 0x6626574d, 0x35fff92a, 0xbf558205, 0x69e02439, 0xbe6838b7, + 0x6400fd4c, 0xa00f64ca, 0x1f4b158a, 0x9e2052ae, 0x04cca558, 0xfb5ee69e, + 0x58da644c, 0x96f26e1f, 0x8ab19401, 0xbee1e16b, 0xed8bf908, 0x2f2809a4, + 0xd50babab, 0x6e57f7e6, 0x6b0a8929, 0xf7356431, 0xb54a4cfc, 0x9a1d0ac4, + 0x6f9fd6cb, 0x836bfbf8, 0x3b42f469, 0x8bd32129, 0x40111b6b, 0x7c278fb1, + 0xb345d955, 0xff1fd188, 0xd32cd13c, 0xf7ec3aa0, 0x3789f792, 0xab707fa4, + 0x4d79a4bf, 0xb3a28ceb, 0xd9c24d8e, 0x7134dadc, 0x06e2eb3e, 0xd7c04f76, + 0xb379d811, 0x2b3b0ebc, 0x8c94fc33, 0xa28b53ab, 0xc06c5d01, 0xd900432a, + 0x7fea91ca, 0x6d30b008, 0x64845f08, 0x796f5349, 0xfde4687d, 0xf888fe67, + 0xe0046c56, 0xae482177, 0xce98cb11, 0x84590c46, 0x1feb4400, 0x6e1ba29b, + 0xff2f1611, 0xf73f3e9c, 0x3159ca8c, 0x34845918, 0x56f0ed46, 0xb7d10c32, + 0xd9a16a01, 0x405b9e91, 0x3cee3e24, 0x8739e4a6, 0x2ab396b4, 0x3f1b7871, + 0x09835dfd, 0x8c7a489f, 0x1592b74a, 0x05df7c81, 0x0e8d3f37, 0xa61ff273, + 0x68b29622, 0x259cd337, 0x43ff84a6, 0x81cf8fe9, 0x566ed883, 0x48427fc6, + 0x35c79428, 0xcfd2fb59, 0xa97e8c8b, 0x750aaed8, 0x32ddca23, 0xaa8108ef, + 0x96fbfff9, 0xa1d039aa, 0xe3cdf588, 0x47e77e00, 0xcd6b3fdb, 0xe72a9a80, + 0x9a522152, 0xeda06283, 0xef175610, 0xa670cfa1, 0x339fe6c4, 0x2dfbf3ee, + 0xc2d7f53b, 0x92a44e27, 0xcc47e4b0, 0xdfa212bc, 0xd64f83c9, 0x997e5475, + 0xb51319bf, 0x9fffe599, 0x1fc2c7b6, 0xef5605e7, 0x832169dd, 0xfeb6be4e, + 0xbf921dc8, 0x60bdfb1d, 0x72759f8d, 0x3546efa0, 0x020eebed, 0xcaab3d64, + 0xdb20a2fe, 0xba1218f6, 0xb2b62bdd, 0x3101eff0, 0x8fde5cfa, 0x2e319213, + 0xa52114d2, 0x87eead3f, 0xdf08b1dd, 0xa5387642, 0x746f34d0, 0xd76c4844, + 0x4cc40317, 0xe4f689c9, 0xb7d76071, 0x5fe0b4a2, 0x6e1c7915, 0xc7d43f53, + 0x3efb7d71, 0x068dd906, 0x35a75f5f, 0x652d7770, 0x750f4607, 0x64a1656c, + 0x36c2cf8e, 0x214d758b, 0x9348ef93, 0xe4058978, 0x9674b7f3, 0x10570b0b, + 0xbdfaba8f, 0xcef09dd7, 0xa92b261f, 0x071c21b6, 0xcbebb81f, 0xf427ed6c, + 0x44228cd6, 0x65e56fcf, 0x5036c460, 0xad919def, 0xccfd848b, 0x61d158a6, + 0x7527dca3, 0x4cf30459, 0x50855075, 0xa70dfd09, 0x3540f5aa, 0x35577adb, + 0xb5ba3d4e, 0x35736c4f, 0xcdfb689f, 0xefe8fa82, 0x97ab0dca, 0x51bd2ff3, + 0x77a7fe9c, 0x3107846c, 0x3d618b81, 0xbca797a4, 0xfc5e9651, 0xe2e08fbc, + 0xf7e8791f, 0x772f1cc0, 0x7c426f9d, 0x08d56f88, 0x0080c3ab, 0x0deea663, + 0xe6d46ec6, 0x7dca4eb7, 0x6b681d9d, 0xda06730b, 0x4af0e0f2, 0x038bf468, + 0x52097463, 0xca19d302, 0xbc09bb9a, 0xaa55aeb1, 0x3ded4433, 0xf27938ba, + 0x3e4b7865, 0x28296be7, 0x7ef96314, 0x7a1d55cc, 0xdf0b6b47, 0xcde11852, + 0xcedda5bd, 0xf00a0eb3, 0x72ca1a8b, 0x5241b572, 0xb002fdcc, 0xff8898b3, + 0xc4878862, 0xb3e85372, 0xbf4bca29, 0x7e1fef45, 0xf2d83189, 0x0f5427af, + 0x3cdf9e05, 0x75bae885, 0xf65c06ac, 0x9c71a700, 0xa3145eac, 0xde63bab2, + 0x76255bbf, 0x6e817be6, 0x4c6ad3d0, 0x25ab9935, 0xe95ef2f8, 0x11cd095a, + 0xd54f78de, 0xa001ae7e, 0xb3829dcb, 0x5abd18bd, 0x18eb9c9e, 0xada3c504, + 0xe3e3556c, 0xd35479aa, 0x5191ac5f, 0x221821ac, 0xc8d1d9d3, 0x313a8c51, + 0x088c3fc8, 0xc146a264, 0xb154abed, 0x92755bc5, 0x349ec093, 0xf94aba57, + 0x41d5886c, 0x0a5ad8b2, 0x36aba94b, 0x883a6758, 0xa9ad229f, 0x5d64069a, + 0x0546172f, 0x0366da16, 0xc3808ea4, 0x0b172403, 0x70f0a235, 0xfa816e66, + 0x4fceb827, 0xa65fcfea, 0x167b56d5, 0xfe2b9fb2, 0xfec36bcd, 0xa84c4cc9, + 0xcd96320f, 0x3e128584, 0x09eda8b8, 0x91eca525, 0x7ec7e17b, 0xbc45bedc, + 0xc14032f4, 0x9be689a7, 0x2eb20bc0, 0xffdf1efc, 0x14ef835f, 0xc6966c59, + 0xcd778dd8, 0x5feb0f3b, 0x23d47715, 0xd64b87c8, 0x5722a550, 0x62883198, + 0x315a1a8b, 0x648e17e6, 0x4b7e9d7a, 0x2ba43d28, 0x67caca84, 0x741f0398, + 0x6e660159, 0x3e16e1a9, 0x3dde3c45, 0xa53e56ae, 0xc7eb0aef, 0x3f39f33e, + 0x78751d73, 0x45816df8, 0x626770f7, 0xcb17d28d, 0x909e87f4, 0x93a86aba, + 0xc1dcf328, 0x1a1e4ce2, 0xd895d042, 0xb9f6dd69, 0xbb00eaf5, 0xacc37687, + 0xca609578, 0x5b490d39, 0xf8b86d4c, 0xf2737ef0, 0x39419f6d, 0x69267bc0, + 0x72524a03, 0x6eb060c4, 0xdbc01e93, 0x291035b1, 0x83984d54, 0xf673ad85, + 0xe08cbc20, 0x1fb24915, 0x584803a6, 0xe15bbcd7, 0x4088ddb5, 0xd4c22542, + 0x2c18041a, 0xa51372d1, 0xb2ba69b4, 0x2299283f, 0xcd11c296, 0x25dcd6f3, + 0xac54df23, 0x24a3a55e, 0x77e16e1d, 0xb3cd415b, 0xb99d85c0, 0x497befc7, + 0xe91154e3, 0x7365cd8b, 0xb55100aa, 0x0ee699eb, 0xfc0927a6, 0xefb374de, + 0x8acaa910, 0x83b40e3d, 0xda3f0006, 0x8590a089, 0xc6ce1b75, 0x54f6ff20, + 0xfda2f7f3, 0xd2ab58f6, 0xd0763b6d, 0x6caf2515, 0x2519622d, 0xc3714057, + 0x9863638f, 0xea00bb4f, 0x09ea4a4d, 0xe69de96d, 0x6b01fe5f, 0x960161a5, + 0x529e32ec, 0xf8260ae9, 0x01a37eea, 0x69710577, 0x5aa0716f, 0xcb3fb1da, + 0x4260feda, 0xa33fb790, 0x76012f75, 0x24c0e5be, 0x130f09ae, 0x2e8323dc, + 0x5c8ecb76, 0x17cb8f12, 0x401b5f5c, 0x5f0a63e0, 0x47e1560a, 0xdc57a786, + 0xee1377d4, 0x228e7ee5, 0x0aa294b9, 0xaea6c534, 0x55b0fe2f, 0x922d318a, + 0xf108b772, 0xf15bddf6, 0xdfb69702, 0xcd438a4e, 0x90e1db66, 0x584ce4a1, + 0x568ef6cb, 0x69e55f9d, 0x6da376ba, 0x5ca6c109, 0x45c7e294, 0xc977b3e9, + 0xcf5b6c0c, 0x1d694499, 0x11b487ae, 0xcf8339ac, 0xbcb3cc6e, 0x50b828e0, + 0x046b1071, 0x5703ed0d, 0x2c615946, 0x720d1610, 0xa908dbd0, 0x742bbe33, + 0x22c076e2, 0x48966a66, 0x1d0cefa4, 0x1dde819f, 0x601352bf, 0xb9370c39, + 0xa585cc4a, 0xeb857f94, 0x5a2f7206, 0x3fae6b58, 0x49cd0f1f, 0x78e5fb3d, + 0x1b89d476, 0x74e9e65b, 0xed82945b, 0xb74e6483, 0x2941c4d9, 0x7e087acc, + 0x565c18dc, 0x1a09f2e5, 0xbf4ccd3d, 0xd304e977, 0xa522631d, 0x6123378e, + 0x4517109b, 0xb7e4285a, 0x4bf1a506, 0x625803c2, 0x683172f8, 0xc84e7354, + 0x3f8a2b11, 0x7dd12b89, 0xed420491, 0x8c698b0b, 0x9853fb97, 0x9631777b, + 0xb697e1c9, 0x5f028f05, 0x51038110, 0x9055f055, 0x30e255e3, 0xe2d0c1b6, + 0xb990321e, 0xa8fdf4d1, 0xff4dc144, 0x521a3056, 0x148999e0, 0xa8111c66, + 0xa9c96852, 0x8157f508, 0x4b394a94, 0xa0dc4df1, 0x94ec2e93, 0x6e6afa56, + 0x8fc28377, 0xf72ffa04, 0xc435186f, 0xf91488b7, 0x8d037f6f, 0xa899ec1e, + 0x48757727, 0x4101b612, 0xb8cf377d, 0xa5a54e68, 0xb4570569, 0x2ac5a0a0, + 0x063d9cfd, 0x7c504c74, 0xf1a5884c, 0x0a9b1955, 0x8d0b91bf, 0xe5f6862f, + 0x79ff5361, 0x0ed3d38f, 0xc6fd31fb, 0x9fe131c7, 0x85b9c648, 0x8febf2b4, + 0x8e77e86b, 0x992ba80e, 0x56429986, 0x6848879a, 0x608cdda5, 0x3e0d106e, + 0x754b300e, 0x25200576, 0xafd5195b, 0x5d37aad9, 0xe81f0939, 0xe00a390e, + 0xdeeea20a, 0xf5fef0be, 0xb5d51155, 0x6e27d173, 0x9e72ebcf, 0xb776e978, + 0xb966f7ba, 0x09520238, 0x726c8408, 0x3347ebc5, 0x65dce5a2, 0x3ec78337, + 0x8c92d740, 0x3cdde3fe, 0x32caec93, 0xd20379ae, 0x411be811, 0x41756580, + 0x72fa1bbd, 0xa92125b3, 0x84c42f04, 0xdd4ee5fe, 0x3a25922c, 0x96446853, + 0x49ad3be0, 0x2880366d, 0x1c841afe, 0xf1e09019, 0xfb905fe1, 0xa451ad59, + 0x3ba9d0c9, 0x56db2e9c, 0xa42419f2, 0xe921e7a0, 0x3c9a3ca5, 0xad8ea375, + 0xcec7d091, 0x99bdb940, 0x477ef58f, 0x8a4933c7, 0xb2598b8d, 0xf5659df7, + 0xcfac1e1c, 0x339f8748, 0xe2a04aab, 0xe122b03f, 0x45bc6f37, 0xc9feeb30, + 0x9c75aaa0, 0xc13c174e, 0x0ea0585d, 0xdc58bbb4, 0x3a96bd5a, 0x20251482, + 0x3c7a714d, 0x696897eb, 0x6cb83b6b, 0xa37de406, 0x3b496b5f, 0x37e75d6a, + 0x380dd382, 0x0e1a513c, 0xda26fac9, 0xf2458364, 0x12b5c6ea, 0x79ce9e47, + 0x1ff1fcbf, 0xbe7c6e86, 0x59a6a7ba, 0x8d70f515, 0x94761453, 0x6b04e425, + 0x8768ffb2, 0x1ca5f425, 0x3f9e8407, 0x3b641184, 0x5f8f6756, 0x62b1a5a5, + 0x56bc2120, 0xd1e5da68, 0x17f2fa18, 0x8cce5e2d, 0xa1bc9c06, 0x8e290fb1, + 0x892df1af, 0xad10b8c8, 0xb43e5517, 0xd0597409, 0x4407c38f, 0x4a020d81, + 0xfea9c9b6, 0xd8e0e7d6, 0xd5b2aaf9, 0xde5e9b40, 0xda44ed4a, 0x45d6bf41, + 0x87aa3ca0, 0xc62d12fc, 0x4708acc8, 0x10212e26, 0x0d1227ff, 0xfeeb5742, + 0x5da02550, 0xd66668e7, 0x1d56e5e1, 0x32c215ec, 0xae1e0bef, 0x7f048b7e, + 0x58c0e922, 0x2aea8619, 0x58251aac, 0xbbe10425, 0xa1fea536, 0x2e1d9667, + 0xd233eb7d, 0xcf435c0b, 0xb0693c67, 0x61d918ea, 0x903ec9f0, 0xd6c4e8ac, + 0x0efb1788, 0xb0098f5b, 0x1709d878, 0x3c12b35e, 0x3f6ce1b7, 0xa1b3ff54, + 0x8a8f7dbb, 0x37608d6a, 0x73e8563e, 0xa3330540, 0x64e00749, 0xebbfcab9, + 0x8d5caaf9, 0x3bc87c7e, 0xedb2bd94, 0x22f8f62d, 0xe656dec3, 0xc5683222, + 0x670c1626, 0x94089e7f, 0x4237542f, 0x47d29440, 0x2fc4e530, 0x8419441e, + 0x8b288dac, 0x7f9245f9, 0xa7afb4e9, 0x8a15650d, 0x082adef7, 0x3104ef19, + 0x043c62de, 0x0aff3dc5, 0x7ecd0635, 0xe7e80a8b, 0xe0600fad, 0x4d8e81cc, + 0x81ebf4e0, 0xf587e30f, 0x7b372af7, 0x2d8f8ca0, 0xdee11c6f, 0xd3624b1c, + 0xf8adc426, 0xca9debed, 0x5c22de4f, 0x3634f778, 0xfae3186b, 0xacf8b595, + 0xd7bfa75f, 0x003cd316, 0xbbfe3cf6, 0xb023cb50, 0xc51055a1, 0x0063cffd, + 0x93869a77, 0x51e022d4, 0xfbceeb10, 0x5187457e, 0x109defc9, 0x673892d8, + 0xe13cfde2, 0xd4aa3272, 0xc09c8134, 0xbf89ad5b, 0x0327181b, 0x09511ec7, + 0xaa21b632, 0xd7e72186, 0xe41885b5, 0x46713f9c, 0x493d2789, 0x1386c526, + 0xd5d22a5c, 0xcefddfc4, 0xcf59281c, 0x92973ea6, 0x4ebe43f6, 0xeac5c6ad, + 0x6cf4897d, 0xd95082a0, 0x82ce562a, 0x28e5e9bd, 0x28d8f0db, 0xddf06e81, + 0x707b0166, 0x7dae3f00, 0xfbf5756a, 0x035a4680, 0x4f114102, 0xe7ba4b33, + 0x5190fedf, 0x106a7594, 0xe5f1bc49, 0xaae3ad67, 0xd7a1a766, 0x040ee971, + 0x9120a214, 0xf415b374, 0x1edc87ea, 0x17aab43c, 0xc6ad637d, 0x885858c1, + 0xd90303c7, 0xbfd4b70b, 0x3ff4eb0e, 0x344a9a88, 0xd81eea30, 0x95925446, + 0x5adef0ec, 0xabb5f5e7, 0x20bbd8c3, 0xc1c22cce, 0xe6944262, 0xc5acdb23, + 0x80024021, 0x2232c635, 0x94b30c81, 0x55f07648, 0x78569acd, 0x9696ea39, + 0x4dd6b528, 0x1c3e1b40, 0xde5853b3, 0x8a2c3679, 0x6eb5a7d8, 0x56bda89a, + 0x8f9cf096, 0xfda86d5b, 0x6481c7e7, 0x50a6a7d5, 0x15bfb45d, 0x4f9a5381, + 0xc057d45d, 0x4fb10024, 0xa0009f00, 0x5e1ca0dd, 0xac420f74, 0xcfbb38bd, + 0xf0d4a615, 0x19bf0318, 0x0e3aef84, 0xcb3d7b20, 0x166c1e3e, 0x58272fdd, + 0x3bfacf9f, 0xc0f5ce46, 0x63a13528, 0xea59e333, 0xa020ca8c, 0xaadd116b, + 0x3dbb5a3d, 0xe5523f47, 0x747f55ea, 0x0922171e, 0x64d520fb, 0x6c709e84, + 0x07ce951b, 0x35fdc402, 0x7508eb6d, 0xc495a8fa, 0xb0d11c39, 0x81313d65, + 0x57447ef0, 0xa7b61e26, 0xf72301f3, 0xbb096315, 0x45a3a7c5, 0xa903a44b, + 0x00432f88, 0x19081987, 0xeb4e1b66, 0xbb7b66bd, 0x6d245171, 0xde4182f5, + 0x0d89bd0b, 0x87f4de6c, 0xf70d8a60, 0x9a87855b, 0x08a27449, 0x4ac7720a, + 0xd4964017, 0xb0d9ddac, 0x4db3488c, 0xfe397d44, 0xd07b745b, 0x197dcb7b, + 0x6e9d567d, 0xe3b90812, 0x9143fef1, 0xb9e002ac, 0x115ff96d, 0xf60a2201, + 0x5b61c9c8, 0x09abab2f, 0xb14a44a7, 0x0ca19c73, 0x843c7997, 0xe3a9bbe6, + 0x5e3fc18c, 0x0c0404ee, 0x764df59d, 0x990ec2c2, 0x4ad0ba3c, 0x05e8be0f, + 0xe599647d, 0xc19d365d, 0x4d0c2990, 0xe5a9d9ac, 0xb680a72d, 0x4ce2e5dd, + 0x6d6c0267, 0x06f9c25b, 0xbd6078e0, 0xb5fcdc81, 0xd742fa41, 0xcccc2399, + 0xc691adc0, 0x215ad82c, 0xea73b0c3, 0xa511e5b0, 0xf499e0a6, 0x53e27ab0, + 0xd94440a2, 0x47752521, 0x9a6e3644, 0xab113708, 0x8f8b301d, 0x058a42a3, #endif /* !__NO_LONG_DOUBLE_MATH */ }; @@ -277,9 +712,9 @@ const mp_limb_t __tens[] = 0x26b2716ed595d80full, 0x1d153624adc666b0ull, 0x63ff540e3c42d35aull, 0x65f9ef17cc5573c0ull, 0x80dcc7f755bc28f2ull, 0x5fdcefcef46eeddcull, 0x00000000000553f7ull, -#if !defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024 -# define TENS_P9_IDX (TENS_P8_IDX + TENS_P8_SIZE) -# define TENS_P9_SIZE 28 + +#define TENS_P9_IDX (TENS_P8_IDX + TENS_P8_SIZE) +#define TENS_P9_SIZE 28 [TENS_P9_IDX] = 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, @@ -291,8 +726,8 @@ const mp_limb_t __tens[] = 0xb099bc817343afacull, 0xa269974845a71d46ull, 0x8a0b1f138cb07303ull, 0xc1d238d98cab8a97ull, 0x0000001c633415d4ull, -# define TENS_P10_IDX (TENS_P9_IDX + TENS_P9_SIZE) -# define TENS_P10_SIZE 55 +#define TENS_P10_IDX (TENS_P9_IDX + TENS_P9_SIZE) +#define TENS_P10_SIZE 55 [TENS_P10_IDX] = 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, @@ -313,6 +748,7 @@ const mp_limb_t __tens[] = 0xd2db49ef47187094ull, 0xae6209d4926c3f5bull, 0x34f4a3c62d433949ull, 0xd9d61a05d4305d94ull, 0x0000000000000325ull, +#if !defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024 # define TENS_P11_IDX (TENS_P10_IDX + TENS_P10_SIZE) # define TENS_P11_SIZE 108 [TENS_P11_IDX] = 0x0000000000000000ull, 0x0000000000000000ull, @@ -426,7 +862,441 @@ const mp_limb_t __tens[] = 0x35fcb457200c03a5ull, 0xf74eb9281bb6c6e4ull, 0x87cc1d213d5d0b54ull, 0x18ae42404964046full, 0x8bd2b496d868b275ull, 0xc234d8f51c5563f4ull, 0xf9151ffff868e970ull, 0x271133eeae7be4a2ull, 0x25254932bb0fd922ull, - 0x104bcd64a60a9fc0ull, 0x0000006230290145ull + 0x104bcd64a60a9fc0ull, 0x0000006230290145ull, + +# define TENS_P13_IDX (TENS_P12_IDX + TENS_P12_SIZE) +# define TENS_P13_SIZE 427 + [TENS_P13_IDX] = 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x9f34522664cf8001ull, 0x7b8d5053644963e5ull, + 0xb945c82f49f0aa29ull, 0x933b6bb8430ff478ull, 0x64c501d45ff82d0aull, + 0x9ec1e1b373bbf174ull, 0xe90106893bfbe803ull, 0x3fef8d80f7390d8eull, + 0x2c73446bf31d1325ull, 0x1c19e379f5ca7a92ull, 0xf52d9d9c270af2beull, + 0x3abf72e1eb2bed48ull, 0x7ecf35084ac4ffc2ull, 0x38597a5a22019a82ull, + 0x9a51ff6ebe6a7b3cull, 0x0c0abe9da2d28437ull, 0xc79887ff7c9ec6eaull, + 0x436420d05851c899ull, 0x72b5547fefead581ull, 0x077ad8f899b1d2b5ull, + 0x3b4305ed5cddbf5bull, 0x2d88f3fde3861ac7ull, 0x393220aa3d6b43beull, + 0x1cd62095e5382405ull, 0x87a0d1e161a10c96ull, 0x68c933e6ca95a55dull, + 0x778089bb9ee082e2ull, 0xfbb6d8d441429ee9ull, 0x26cf5471c529500dull, + 0xd6c9b14068b9be29ull, 0x8415185207be635aull, 0x83730335b5572182ull, + 0xdd312d31eb2300b4ull, 0x488da59c05d6dd9bull, 0xda2c2e4037784d25ull, + 0x6a57d7206a8d92faull, 0xf07a8632950b41acull, 0x2ecad06acd55f062ull, + 0x34c98bb0e6a3dfe7ull, 0xb60521b19c767d8full, 0xe87d16be752aafd1ull, + 0xe58a8b0c9de1d728ull, 0x2fa2c119c6013830ull, 0x519b40c83c4f9156ull, + 0xab78701b5058fc8full, 0xc502a554adc59c47ull, 0x6647f04c0fb3286full, + 0x5ea495c89db4076eull, 0xb4f00f8b9c74fab1ull, 0xd092b4c6897c7a3cull, + 0x32f31fa8283e0340ull, 0x67b63de2eeb708ccull, 0xef2bc02b4f7b3c8bull, + 0xc49344c0da14bfe3ull, 0xb6c4e69eaabc85beull, 0x63a110162ece8aa6ull, + 0x726ae4d919cfba4dull, 0xee6ae7070fc90b42ull, 0x4d9aabc54290b04aull, + 0xf34906cdfb2b070eull, 0x52ca97091ff54b0aull, 0x164315700b42bfe1ull, + 0x6b5565bb980f3076ull, 0x9ce63c76eb8c4c4aull, 0x3da24c53b9e4c771ull, + 0xb50e3c666f0266faull, 0x01bb4b9676e34f79ull, 0x0fbea1249948cf3eull, + 0xa1fa4edc86bead12ull, 0xc3b97bf9d11e901cull, 0x370ca58e71730e03ull, + 0x886467e248b19715ull, 0x3c727e24db237497ull, 0x8e67d76e2116ccd2ull, + 0x34bdedd3f973aecfull, 0xb042ab0531d680ecull, 0xfc5c3c17770e96a0ull, + 0xb8204eceab6f1874ull, 0x416c0ced5843f3a5ull, 0x9578018311dd112full, + 0x7e0e8613b1c74bd8ull, 0xa79ffc1096c6453bull, 0xfcd6da0ab2157651ull, + 0x3dd0ccac836a34a7ull, 0x496049ed316e5a36ull, 0xdea1a97d0322bcb2ull, + 0x39578d53cdf2aa5aull, 0x030565c91d1aa931ull, 0x324e0a27d198cbedull, + 0x284325345db83e8aull, 0x5cb134c090bf23e8ull, 0x009e5051dd0adab6ull, + 0x7e36a6d7f8ad61daull, 0xbdffe6aa84c75e57ull, 0x138d680eb5d5532eull, + 0x4a5f74a1bd84ddacull, 0x55538cfaccff00d1ull, 0x48528011b0948b8cull, + 0x9e047ad7e345f82eull, 0xea77bef06ee770ffull, 0x2f1625670fc13669ull, + 0x0614686c869426acull, 0x4263ed823a3ff464ull, 0x57205a7ab3589b47ull, + 0xae6fc46b213f24adull, 0xd92b133f3de03e4eull, 0x1b49c24a315a589bull, + 0x1641c13873381bcbull, 0xbc680ada7bc99425ull, 0x962e9884a5cfbc9aull, + 0xfc8d12f60a960d70ull, 0x60acc868ed18ef4cull, 0x131130369aea5d14ull, + 0x2d99a5b0c747c87eull, 0x006b36583a369bb3ull, 0xe43fa6e6118a5135ull, + 0xa13dc05eb4947190ull, 0x0dbd7170d7733db8ull, 0x117ed7e7c3fb67d1ull, + 0xc05fe99ee2d72a49ull, 0xd971a25b9638db40ull, 0x1a1595594239d468ull, + 0xc1117392850a223cull, 0x567b5fc022d2dbd8ull, 0xc051007a92c5b4ebull, + 0xfb35572011cc0099ull, 0x398481616907810dull, 0x61d19ef25e8534f4ull, + 0x8a0ab03c2ee8c466ull, 0x879aa514c234af76ull, 0x59e5da579774a235ull, + 0xf339bd5a9bc466b3ull, 0xbbb5fd6744ab026dull, 0x3685c9f22b977202ull, + 0x7054359e03e5dc00ull, 0x9ba11f085239cfb0ull, 0x9c258687f8237562ull, + 0x52c7bf8fa3b510ddull, 0x3245e079b31ed0cfull, 0xbaee38c7ff9ff8d3ull, + 0xf702b3b9f17d5562ull, 0xcbca275dcc4c8563ull, 0xe817dbace005d9d1ull, + 0x62cee35005c6920aull, 0x19e049b90f1deac0ull, 0xb2a27a1659599f74ull, + 0x7dcef00df0911d5aull, 0x375522513603dd66ull, 0x5fa022da97813735ull, + 0xefbe57c20d849416ull, 0x5761929630a0e592ull, 0x11735043c953cc47ull, + 0xc0444be0a83526adull, 0x16ff5136b5f8463cull, 0xf037572c2a0a6631ull, + 0xb1bf8daad30464daull, 0x0f3e9e7e7f5718f7ull, 0xc26f2624e5a4cfe7ull, + 0xdfe8f4858c9b5ae4ull, 0xc64a1509f6fa82e3ull, 0x3024b220acb24aeaull, + 0xddcdfeddddb02ac0ull, 0x384c86c3d834c574ull, 0xdd48a571d904e099ull, + 0x77b35c744550a05full, 0xaaebdc6d81e85f71ull, 0xd4cdc0540f9bb0b1ull, + 0x845786af7af4df85ull, 0xdf2a91cae5e53887ull, 0x5689a3c4f6a58211ull, + 0xa705983a8cf6aa15ull, 0x2ce7fef09fbf2f52ull, 0x4a3b536548e84a62ull, + 0xd48a0872f8281a47ull, 0xf0929c3e8423dcf6ull, 0xe9ec071b044a5049ull, + 0x20e30c1b17decc36ull, 0x3342196a45fc2813ull, 0x6601e33746afb7f9ull, + 0xf18094d130754439ull, 0x61410dd1d38b4112ull, 0xd97d4dd8d8796b36ull, + 0x8080519147e9bc0bull, 0xcde438c11584e2daull, 0x409659a1955d24f1ull, + 0x5a09635f1b0950b1ull, 0x615472b965b1febeull, 0x6308e067525dc00aull, + 0xd4e705a44089e2d4ull, 0x32c18b2643fc9209ull, 0xaf2711534447a5faull, + 0x4dc4f0d23617cadcull, 0x6aa116ef692eb386ull, 0x0641dc0b655991bcull, + 0xc655966454469597ull, 0x4bdc0d1a749c0fe8ull, 0xc5292a61a7d3381eull, + 0x42474cc24eb65fdcull, 0x19dfc9eef2c6b173ull, 0xbece2ee30a19a199ull, + 0xaa03aa7cc68b778dull, 0xae54d2bec8db86f0ull, 0xdee3f48fb92a01e0ull, + 0xf6ae28526023c0a9ull, 0xa441cb9ea233763bull, 0x3a8bb4b73246ddddull, + 0x308ef2c844faa3c3ull, 0xd2862534fd1c8516ull, 0x62336f6f3b25ebe7ull, + 0x0b8e2ce60c336a45ull, 0x11eea1f2e867f171ull, 0x68df4903523972ecull, + 0x51ef4cb750c05824ull, 0x3ffae115cb4df2a8ull, 0x3ed1635fb51aca2full, + 0x0a5ac09fd6ff1cc6ull, 0x0a3dc76fde8ed9d6ull, 0x37991dde5dc2d8ddull, + 0x80ad6e13f95bacb2ull, 0xd4f8c7a6163005eeull, 0xa4760f083225d180ull, + 0x9b2b1a875fff004dull, 0x5cd00b66e7ea8576ull, 0x285dd80dec478452ull, + 0x4301b3a120112439ull, 0xfacbb68cff879fc8ull, 0xb17fdf84af6af6b8ull, + 0xf4489576c208d9f1ull, 0xadcc862c8794a6e9ull, 0x931685a40e83e54cull, + 0x1e40293bab01c580ull, 0x1f1ddf7fcad784faull, 0xcee722b26b856084ull, + 0x74254eb41c39938bull, 0xb9c26d9ac7ccebf4ull, 0x2e3ece246b08dfb9ull, + 0xdff60410981455ecull, 0xe06fa38bbc804e2bull, 0x72e53c52b534540cull, + 0xb2a5c05a02dfb2efull, 0x973133385002a2a5ull, 0xd61df455597c53ffull, + 0x39ac2ec534e5261aull, 0x388b7539c6bc0cabull, 0x00eac7043f732fc0ull, + 0xc089971e92fb21d9ull, 0x7af93f8fb4ffa503ull, 0xa8311b2372e353b6ull, + 0x1de496ca8266c9afull, 0xd6fa0b51dbdb16b0ull, 0xbd5630899991a5efull, + 0x0954a1e3168cbe0full, 0x53d09723537b9245ull, 0x86558cb92867272dull, + 0xfac85d100b83f026ull, 0x1e5ddb95f8562951ull, 0x48d27b92ad3668c8ull, + 0x19b58a99c930b7e6ull, 0xa9cda917a3de74e3ull, 0x7a4dd16ecb6e35eeull, + 0x4d84073f4c80e9d5ull, 0x9cffcfc074a95ba8ull, 0x15796372d28485ebull, + 0x77eda8df5717e9cdull, 0xadb965e1ab473c4eull, 0x5bc05659ffad6959ull, + 0xfb2402276ed63880ull, 0xd15fdddf2014850bull, 0xb538f37dfdd74592ull, + 0x1473396f3a8e2e82ull, 0x3ce41a21f6a5edf8ull, 0x754e82640cc4351aull, + 0xc7821b96aab95e73ull, 0xc242faaaf42ff463ull, 0x087e260edd00ac65ull, + 0x0dbe032817d193f5ull, 0xf9d10f96844a63c9ull, 0xbaf127ec85aa91ddull, + 0xce85e6a50ab6dabbull, 0xe7b56a161af5d24full, 0x57d1d79fcd6c5a19ull, + 0xec4dd2f05dfc2b28ull, 0x8d72216a18fe64a1ull, 0x72f14a085f222077ull, + 0x3bf038abd8b09b11ull, 0xc4265d7cc6cf1f44ull, 0x46398d2cdab1b0e7ull, + 0xb6e705d37dcfdc68ull, 0x362c11834aafd1e6ull, 0xf6ac98b7d8701107ull, + 0xd6649424ad114d7eull, 0xddd1c6e4c40ab551ull, 0xc9d284c8a132030full, + 0x824069eedb1f662aull, 0xc846b3ad4157904bull, 0x0a248c17d38481caull, + 0xe8745febc846831full, 0x00000000000025a8ull, + +# define TENS_P14_IDX (TENS_P13_IDX + TENS_P13_SIZE) +# define TENS_P14_SIZE 852 + [TENS_P14_IDX] = 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull, + 0x41b5687d099f0001ull, 0x8c75ee63cbfd1b6eull, 0xd75296ad4b191ceaull, + 0x1eb5da9b2394d80aull, 0x5c79fed918a004edull, 0xed67a1b837e3b01cull, + 0x2a1a34d578d9a714ull, 0x6b1d35168fbe7f0dull, 0xa7825681e57c43eaull, + 0xd3e716e1c81d32e8ull, 0xa6d93d6558860b00ull, 0x0113232f83159c97ull, + 0x7321c3a0d6122269ull, 0xca4ca9d3be6a92f3ull, 0xc0e55163d1e276a5ull, + 0x7b7a78c1b05915d6ull, 0x62a3df4b0fae0ca4ull, 0x13030d1108abec6full, + 0x60dcc8f2d446338aull, 0x25e1f9f65f05d1d5ull, 0x7f8c711304a40beeull, + 0x589ff59a88f47ec0ull, 0xea5068a1308c3661ull, 0x06e87dff95fb108full, + 0xd4d4abdc1559e741ull, 0xee16907c01e092e4ull, 0xe73aabcb5a7b78e6ull, + 0xad372889146bb7e0ull, 0xfd49fc1d4f6b43c5ull, 0xd37392530f29f589ull, + 0xe2acfcc2c4745a56ull, 0xedd016cdd75ccbc7ull, 0xef82ccd3ac5a63e0ull, + 0x2bdabfc4b352496eull, 0x01b0197f5b3d0401ull, 0x29d9253dade96d3cull, + 0x73c56b1b19bebdbaull, 0x1f2b7f1e255e7b25ull, 0x6299c836a56a457eull, + 0xa2ca74c65c63cc78ull, 0xee571bea5c85fe93ull, 0x2db5f1d0508e2561ull, + 0xa9b87b99b1fde6a9ull, 0xf7260f074fb90a37ull, 0x56ee7e97ff58c5fdull, + 0x42e6f9cebab9fa46ull, 0x1b76d26778816f73ull, 0x4566519cfdb2c728ull, + 0xb9f6a95fae17dd8dull, 0x67160dea1cd533a1ull, 0xfcd8f8f914534bacull, + 0x708b1f0af3f2901dull, 0x9457a1df8829063bull, 0x36bb93358f872aa1ull, + 0xd889d109b5672c0eull, 0x933066727ec63a6aull, 0x8239ab6839b6d457ull, + 0xbe0d7a1fef2e2506ull, 0x05f655224251b635ull, 0x032868910ef0bd55ull, + 0x9815fbac2c42b664ull, 0x814e379c471fd611ull, 0xa4a25bda7dd8349dull, + 0x01b9e39d9886b84cull, 0xae31cbc95a7ce1a2ull, 0x83ef8faf86d07f32ull, + 0x58470fdfb66b5b76ull, 0x5161888996d59b73ull, 0xfc8e0fc6dc400cf7ull, + 0x09a08e56af693670ull, 0x74f682e191737de6ull, 0x7f8ac56d0e03923full, + 0x8e05e49a7400cfd4ull, 0x384e11644cebea3cull, 0xb50ae05eb2e43d8cull, + 0xa40061230f0b3ed9ull, 0x4e9a193464137137ull, 0xd9621be605404100ull, + 0x5c347ebb9329a255ull, 0xe684346b75cbeb1bull, 0xba6a9753840fee55ull, + 0x60505b7bf43836f6ull, 0xfd6d475d334a9278ull, 0x267375aa5db94761ull, + 0x024f6d63c110e160ull, 0xa99b4c192ec96610ull, 0x338cfd90b915c9f4ull, + 0xb9e51a09f02ea846ull, 0xfae31d88ae928fb1ull, 0x8475dd261a3db721ull, + 0x7ad4c4075769489dull, 0x34e275c80a49e9f0ull, 0x1d63114a3d075d83ull, + 0x6b98e94772a96415ull, 0xd50fdc361d500b5full, 0x87751275141e5085ull, + 0x2278809ee7843834ull, 0x947aead2b15c52eeull, 0x5197b744fedb7b02ull, + 0x8849d0a664e09ba8ull, 0x11ecb91323beaa85ull, 0x5d9848480f7ed667ull, + 0x588290e99f6331eaull, 0x7e09e9e5a24d64d1ull, 0x03a501df32592033ull, + 0xbb3df73827c270a6ull, 0x4190833c3c7c5a70ull, 0x80e5d89b7d4bf9f4ull, + 0xfaefb663a7fc6194ull, 0xd3b6adcd62e52b49ull, 0x1f2cf73a809646fcull, + 0x531e4bfbb765ed4full, 0xaf12d1a692cd05f2ull, 0x38da107422ee30f3ull, + 0x1a725608ed6447bbull, 0x7a3c6f54aff222d3ull, 0x7b0e8d12bca79a56ull, + 0x6e34d6fb1c4660c5ull, 0xfe9dc99c6f481a9full, 0xd8489ea0f888db82ull, + 0xc0dea28184b4c0faull, 0xae30e887977a8583ull, 0x1d4848cb8c1cbcecull, + 0xd011b0fc0ee0d137ull, 0x478d7dd494b5fd49ull, 0xacab62ad3d67f2e7ull, + 0x1dfc7df50ab4e62aull, 0x870b0e75d22e4553ull, 0x1b73bf6d49b7b001ull, + 0xdc9f073712807ffdull, 0xc0e2f2506f3e5852ull, 0x4d96a55a93e62e4aull, + 0x83a126dbc1d0e185ull, 0xefbfd043190b917bull, 0x8f25b6ddc7df1669ull, + 0x476c17a62062eac9ull, 0x25460383cb60f278ull, 0xda8c05be0e85e996ull, + 0x692062346f678a34ull, 0x1947b69af59be929ull, 0x90fd83220ebfa11bull, + 0xd699b1ec15c1e9bfull, 0x7001d002b2f0343full, 0xc0778ab5cf76eaaaull, + 0xb7b008e25173eda8ull, 0x505d3f4d4e00e4c6ull, 0x1c9d4e1299dd341aull, + 0x474c5e954ffb6978ull, 0xda19f9386e9ca6ddull, 0x98dc318ee2dda6e0ull, + 0x3f67b836da455e54ull, 0xa97e9a6421e4181cull, 0x527a08bb1e17f655ull, + 0x682972ad1712dc21ull, 0xccbeadf10042d256ull, 0x861e99e0ca497b96ull, + 0xeeb0f6500d8aa585ull, 0x506af77edcc3c3daull, 0x7c9d60be5deb9768ull, + 0x37b37e95e9d978b7ull, 0x42747f7577ad0b94ull, 0x6d5fd2fe07be42c4ull, + 0x0d8fc27d4c8c5da9ull, 0x0ccf60230f2fd50full, 0x3b1101bd5b56053full, + 0xc0feca2756d34906ull, 0xc4888da47602a150ull, 0x56d10633419abe54ull, + 0x8db14123c76120edull, 0x741e8f76b656e675ull, 0x96be6f21d297b94eull, + 0x9b409e273662439dull, 0x35fff92a6626574dull, 0x69e02439bf558205ull, + 0x6400fd4cbe6838b7ull, 0x1f4b158aa00f64caull, 0x04cca5589e2052aeull, + 0x58da644cfb5ee69eull, 0x8ab1940196f26e1full, 0xed8bf908bee1e16bull, + 0xd50babab2f2809a4ull, 0x6b0a89296e57f7e6ull, 0xb54a4cfcf7356431ull, + 0x6f9fd6cb9a1d0ac4ull, 0x3b42f469836bfbf8ull, 0x40111b6b8bd32129ull, + 0xb345d9557c278fb1ull, 0xd32cd13cff1fd188ull, 0x3789f792f7ec3aa0ull, + 0x4d79a4bfab707fa4ull, 0xd9c24d8eb3a28cebull, 0x06e2eb3e7134dadcull, + 0xb379d811d7c04f76ull, 0x8c94fc332b3b0ebcull, 0xc06c5d01a28b53abull, + 0x7fea91cad900432aull, 0x64845f086d30b008ull, 0xfde4687d796f5349ull, + 0xe0046c56f888fe67ull, 0xce98cb11ae482177ull, 0x1feb440084590c46ull, + 0xff2f16116e1ba29bull, 0x3159ca8cf73f3e9cull, 0x56f0ed4634845918ull, + 0xd9a16a01b7d10c32ull, 0x3cee3e24405b9e91ull, 0x2ab396b48739e4a6ull, + 0x09835dfd3f1b7871ull, 0x1592b74a8c7a489full, 0x0e8d3f3705df7c81ull, + 0x68b29622a61ff273ull, 0x43ff84a6259cd337ull, 0x566ed88381cf8fe9ull, + 0x35c7942848427fc6ull, 0xa97e8c8bcfd2fb59ull, 0x32ddca23750aaed8ull, + 0x96fbfff9aa8108efull, 0xe3cdf588a1d039aaull, 0xcd6b3fdb47e77e00ull, + 0x9a522152e72a9a80ull, 0xef175610eda06283ull, 0x339fe6c4a670cfa1ull, + 0xc2d7f53b2dfbf3eeull, 0xcc47e4b092a44e27ull, 0xd64f83c9dfa212bcull, + 0xb51319bf997e5475ull, 0x1fc2c7b69fffe599ull, 0x832169ddef5605e7ull, + 0xbf921dc8feb6be4eull, 0x72759f8d60bdfb1dull, 0x020eebed3546efa0ull, + 0xdb20a2fecaab3d64ull, 0xb2b62bddba1218f6ull, 0x8fde5cfa3101eff0ull, + 0xa52114d22e319213ull, 0xdf08b1dd87eead3full, 0x746f34d0a5387642ull, + 0x4cc40317d76c4844ull, 0xb7d76071e4f689c9ull, 0x6e1c79155fe0b4a2ull, + 0x3efb7d71c7d43f53ull, 0x35a75f5f068dd906ull, 0x750f4607652d7770ull, + 0x36c2cf8e64a1656cull, 0x9348ef93214d758bull, 0x9674b7f3e4058978ull, + 0xbdfaba8f10570b0bull, 0xa92b261fcef09dd7ull, 0xcbebb81f071c21b6ull, + 0x44228cd6f427ed6cull, 0x5036c46065e56fcfull, 0xccfd848bad919defull, + 0x7527dca361d158a6ull, 0x508550754cf30459ull, 0x3540f5aaa70dfd09ull, + 0xb5ba3d4e35577adbull, 0xcdfb689f35736c4full, 0x97ab0dcaefe8fa82ull, + 0x77a7fe9c51bd2ff3ull, 0x3d618b813107846cull, 0xfc5e9651bca797a4ull, + 0xf7e8791fe2e08fbcull, 0x7c426f9d772f1cc0ull, 0x0080c3ab08d56f88ull, + 0xe6d46ec60deea663ull, 0x6b681d9d7dca4eb7ull, 0x4af0e0f2da06730bull, + 0x52097463038bf468ull, 0xbc09bb9aca19d302ull, 0x3ded4433aa55aeb1ull, + 0x3e4b7865f27938baull, 0x7ef9631428296be7ull, 0xdf0b6b477a1d55ccull, + 0xcedda5bdcde11852ull, 0x72ca1a8bf00a0eb3ull, 0xb002fdcc5241b572ull, + 0xc4878862ff8898b3ull, 0xbf4bca29b3e85372ull, 0xf2d831897e1fef45ull, + 0x3cdf9e050f5427afull, 0xf65c06ac75bae885ull, 0xa3145eac9c71a700ull, + 0x76255bbfde63bab2ull, 0x4c6ad3d06e817be6ull, 0xe95ef2f825ab9935ull, + 0xd54f78de11cd095aull, 0xb3829dcba001ae7eull, 0x18eb9c9e5abd18bdull, + 0xe3e3556cada3c504ull, 0x5191ac5fd35479aaull, 0xc8d1d9d3221821acull, + 0x088c3fc8313a8c51ull, 0xb154abedc146a264ull, 0x349ec09392755bc5ull, + 0x41d5886cf94aba57ull, 0x36aba94b0a5ad8b2ull, 0xa9ad229f883a6758ull, + 0x0546172f5d64069aull, 0xc3808ea40366da16ull, 0x70f0a2350b172403ull, + 0x4fceb827fa816e66ull, 0x167b56d5a65fcfeaull, 0xfec36bcdfe2b9fb2ull, + 0xcd96320fa84c4cc9ull, 0x09eda8b83e128584ull, 0x7ec7e17b91eca525ull, + 0xc14032f4bc45bedcull, 0x2eb20bc09be689a7ull, 0x14ef835fffdf1efcull, + 0xcd778dd8c6966c59ull, 0x23d477155feb0f3bull, 0x5722a550d64b87c8ull, + 0x315a1a8b62883198ull, 0x4b7e9d7a648e17e6ull, 0x67caca842ba43d28ull, + 0x6e660159741f0398ull, 0x3dde3c453e16e1a9ull, 0xc7eb0aefa53e56aeull, + 0x78751d733f39f33eull, 0x626770f745816df8ull, 0x909e87f4cb17d28dull, + 0xc1dcf32893a86abaull, 0xd895d0421a1e4ce2ull, 0xbb00eaf5b9f6dd69ull, + 0xca609578acc37687ull, 0xf8b86d4c5b490d39ull, 0x39419f6df2737ef0ull, + 0x72524a0369267bc0ull, 0xdbc01e936eb060c4ull, 0x83984d54291035b1ull, + 0xe08cbc20f673ad85ull, 0x584803a61fb24915ull, 0x4088ddb5e15bbcd7ull, + 0x2c18041ad4c22542ull, 0xb2ba69b4a51372d1ull, 0xcd11c2962299283full, + 0xac54df2325dcd6f3ull, 0x77e16e1d24a3a55eull, 0xb99d85c0b3cd415bull, + 0xe91154e3497befc7ull, 0xb55100aa7365cd8bull, 0xfc0927a60ee699ebull, + 0x8acaa910efb374deull, 0xda3f000683b40e3dull, 0xc6ce1b758590a089ull, + 0xfda2f7f354f6ff20ull, 0xd0763b6dd2ab58f6ull, 0x2519622d6caf2515ull, + 0x9863638fc3714057ull, 0x09ea4a4dea00bb4full, 0x6b01fe5fe69de96dull, + 0x529e32ec960161a5ull, 0x01a37eeaf8260ae9ull, 0x5aa0716f69710577ull, + 0x4260fedacb3fb1daull, 0x76012f75a33fb790ull, 0x130f09ae24c0e5beull, + 0x5c8ecb762e8323dcull, 0x401b5f5c17cb8f12ull, 0x47e1560a5f0a63e0ull, + 0xee1377d4dc57a786ull, 0x0aa294b9228e7ee5ull, 0x55b0fe2faea6c534ull, + 0xf108b772922d318aull, 0xdfb69702f15bddf6ull, 0x90e1db66cd438a4eull, + 0x568ef6cb584ce4a1ull, 0x6da376ba69e55f9dull, 0x45c7e2945ca6c109ull, + 0xcf5b6c0cc977b3e9ull, 0x11b487ae1d694499ull, 0xbcb3cc6ecf8339acull, + 0x046b107150b828e0ull, 0x2c6159465703ed0dull, 0xa908dbd0720d1610ull, + 0x22c076e2742bbe33ull, 0x1d0cefa448966a66ull, 0x601352bf1dde819full, + 0xa585cc4ab9370c39ull, 0x5a2f7206eb857f94ull, 0x49cd0f1f3fae6b58ull, + 0x1b89d47678e5fb3dull, 0xed82945b74e9e65bull, 0x2941c4d9b74e6483ull, + 0x565c18dc7e087accull, 0xbf4ccd3d1a09f2e5ull, 0xa522631dd304e977ull, + 0x4517109b6123378eull, 0x4bf1a506b7e4285aull, 0x683172f8625803c2ull, + 0x3f8a2b11c84e7354ull, 0xed4204917dd12b89ull, 0x9853fb978c698b0bull, + 0xb697e1c99631777bull, 0x510381105f028f05ull, 0x30e255e39055f055ull, + 0xb990321ee2d0c1b6ull, 0xff4dc144a8fdf4d1ull, 0x148999e0521a3056ull, + 0xa9c96852a8111c66ull, 0x4b394a948157f508ull, 0x94ec2e93a0dc4df1ull, + 0x8fc283776e6afa56ull, 0xc435186ff72ffa04ull, 0x8d037f6ff91488b7ull, + 0x48757727a899ec1eull, 0xb8cf377d4101b612ull, 0xb4570569a5a54e68ull, + 0x063d9cfd2ac5a0a0ull, 0xf1a5884c7c504c74ull, 0x8d0b91bf0a9b1955ull, + 0x79ff5361e5f6862full, 0xc6fd31fb0ed3d38full, 0x85b9c6489fe131c7ull, + 0x8e77e86b8febf2b4ull, 0x56429986992ba80eull, 0x608cdda56848879aull, + 0x754b300e3e0d106eull, 0xafd5195b25200576ull, 0xe81f09395d37aad9ull, + 0xdeeea20ae00a390eull, 0xb5d51155f5fef0beull, 0x9e72ebcf6e27d173ull, + 0xb966f7bab776e978ull, 0x726c840809520238ull, 0x65dce5a23347ebc5ull, + 0x8c92d7403ec78337ull, 0x32caec933cdde3feull, 0x411be811d20379aeull, + 0x72fa1bbd41756580ull, 0x84c42f04a92125b3ull, 0x3a25922cdd4ee5feull, + 0x49ad3be096446853ull, 0x1c841afe2880366dull, 0xfb905fe1f1e09019ull, + 0x3ba9d0c9a451ad59ull, 0xa42419f256db2e9cull, 0x3c9a3ca5e921e7a0ull, + 0xcec7d091ad8ea375ull, 0x477ef58f99bdb940ull, 0xb2598b8d8a4933c7ull, + 0xcfac1e1cf5659df7ull, 0xe2a04aab339f8748ull, 0x45bc6f37e122b03full, + 0x9c75aaa0c9feeb30ull, 0x0ea0585dc13c174eull, 0x3a96bd5adc58bbb4ull, + 0x3c7a714d20251482ull, 0x6cb83b6b696897ebull, 0x3b496b5fa37de406ull, + 0x380dd38237e75d6aull, 0xda26fac90e1a513cull, 0x12b5c6eaf2458364ull, + 0x1ff1fcbf79ce9e47ull, 0x59a6a7babe7c6e86ull, 0x947614538d70f515ull, + 0x8768ffb26b04e425ull, 0x3f9e84071ca5f425ull, 0x5f8f67563b641184ull, + 0x56bc212062b1a5a5ull, 0x17f2fa18d1e5da68ull, 0xa1bc9c068cce5e2dull, + 0x892df1af8e290fb1ull, 0xb43e5517ad10b8c8ull, 0x4407c38fd0597409ull, + 0xfea9c9b64a020d81ull, 0xd5b2aaf9d8e0e7d6ull, 0xda44ed4ade5e9b40ull, + 0x87aa3ca045d6bf41ull, 0x4708acc8c62d12fcull, 0x0d1227ff10212e26ull, + 0x5da02550feeb5742ull, 0x1d56e5e1d66668e7ull, 0xae1e0bef32c215ecull, + 0x58c0e9227f048b7eull, 0x58251aac2aea8619ull, 0xa1fea536bbe10425ull, + 0xd233eb7d2e1d9667ull, 0xb0693c67cf435c0bull, 0x903ec9f061d918eaull, + 0x0efb1788d6c4e8acull, 0x1709d878b0098f5bull, 0x3f6ce1b73c12b35eull, + 0x8a8f7dbba1b3ff54ull, 0x73e8563e37608d6aull, 0x64e00749a3330540ull, + 0x8d5caaf9ebbfcab9ull, 0xedb2bd943bc87c7eull, 0xe656dec322f8f62dull, + 0x670c1626c5683222ull, 0x4237542f94089e7full, 0x2fc4e53047d29440ull, + 0x8b288dac8419441eull, 0xa7afb4e97f9245f9ull, 0x082adef78a15650dull, + 0x043c62de3104ef19ull, 0x7ecd06350aff3dc5ull, 0xe0600fade7e80a8bull, + 0x81ebf4e04d8e81ccull, 0x7b372af7f587e30full, 0xdee11c6f2d8f8ca0ull, + 0xf8adc426d3624b1cull, 0x5c22de4fca9debedull, 0xfae3186b3634f778ull, + 0xd7bfa75facf8b595ull, 0xbbfe3cf6003cd316ull, 0xc51055a1b023cb50ull, + 0x93869a770063cffdull, 0xfbceeb1051e022d4ull, 0x109defc95187457eull, + 0xe13cfde2673892d8ull, 0xc09c8134d4aa3272ull, 0x0327181bbf89ad5bull, + 0xaa21b63209511ec7ull, 0xe41885b5d7e72186ull, 0x493d278946713f9cull, + 0xd5d22a5c1386c526ull, 0xcf59281ccefddfc4ull, 0x4ebe43f692973ea6ull, + 0x6cf4897deac5c6adull, 0x82ce562ad95082a0ull, 0x28d8f0db28e5e9bdull, + 0x707b0166ddf06e81ull, 0xfbf5756a7dae3f00ull, 0x4f114102035a4680ull, + 0x5190fedfe7ba4b33ull, 0xe5f1bc49106a7594ull, 0xd7a1a766aae3ad67ull, + 0x9120a214040ee971ull, 0x1edc87eaf415b374ull, 0xc6ad637d17aab43cull, + 0xd90303c7885858c1ull, 0x3ff4eb0ebfd4b70bull, 0xd81eea30344a9a88ull, + 0x5adef0ec95925446ull, 0x20bbd8c3abb5f5e7ull, 0xe6944262c1c22cceull, + 0x80024021c5acdb23ull, 0x94b30c812232c635ull, 0x78569acd55f07648ull, + 0x4dd6b5289696ea39ull, 0xde5853b31c3e1b40ull, 0x6eb5a7d88a2c3679ull, + 0x8f9cf09656bda89aull, 0x6481c7e7fda86d5bull, 0x15bfb45d50a6a7d5ull, + 0xc057d45d4f9a5381ull, 0xa0009f004fb10024ull, 0xac420f745e1ca0ddull, + 0xf0d4a615cfbb38bdull, 0x0e3aef8419bf0318ull, 0x166c1e3ecb3d7b20ull, + 0x3bfacf9f58272fddull, 0x63a13528c0f5ce46ull, 0xa020ca8cea59e333ull, + 0x3dbb5a3daadd116bull, 0x747f55eae5523f47ull, 0x64d520fb0922171eull, + 0x07ce951b6c709e84ull, 0x7508eb6d35fdc402ull, 0xb0d11c39c495a8faull, + 0x57447ef081313d65ull, 0xf72301f3a7b61e26ull, 0x45a3a7c5bb096315ull, + 0x00432f88a903a44bull, 0xeb4e1b6619081987ull, 0x6d245171bb7b66bdull, + 0x0d89bd0bde4182f5ull, 0xf70d8a6087f4de6cull, 0x08a274499a87855bull, + 0xd49640174ac7720aull, 0x4db3488cb0d9ddacull, 0xd07b745bfe397d44ull, + 0x6e9d567d197dcb7bull, 0x9143fef1e3b90812ull, 0x115ff96db9e002acull, + 0x5b61c9c8f60a2201ull, 0xb14a44a709abab2full, 0x843c79970ca19c73ull, + 0x5e3fc18ce3a9bbe6ull, 0x764df59d0c0404eeull, 0x4ad0ba3c990ec2c2ull, + 0xe599647d05e8be0full, 0x4d0c2990c19d365dull, 0xb680a72de5a9d9acull, + 0x6d6c02674ce2e5ddull, 0xbd6078e006f9c25bull, 0xd742fa41b5fcdc81ull, + 0xc691adc0cccc2399ull, 0xea73b0c3215ad82cull, 0xf499e0a6a511e5b0ull, + 0xd94440a253e27ab0ull, 0x9a6e364447752521ull, 0x8f8b301dab113708ull, + 0x00000000058a42a3ull, #endif }; @@ -437,7 +1307,7 @@ const mp_limb_t __tens[] = /* Each of array variable above defines one mpn integer which is a power of 10. This table points to those variables, indexed by the exponent. */ -const struct mp_power _fpioconst_pow10[LDBL_MAX_10_EXP_LOG + 1] = +const struct mp_power _fpioconst_pow10[FPIOCONST_POW10_ARRAY_SIZE] = { { TENS_P0_IDX, TENS_P0_SIZE, 4, }, { TENS_P1_IDX, TENS_P1_SIZE, 7, 4 }, @@ -448,14 +1318,12 @@ const struct mp_power _fpioconst_pow10[LDBL_MAX_10_EXP_LOG + 1] = { TENS_P6_IDX, TENS_P6_SIZE, 213, 210 }, { TENS_P7_IDX, TENS_P7_SIZE, 426, 422 }, { TENS_P8_IDX, TENS_P8_SIZE, 851, 848 }, -#if !defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024 { TENS_P9_IDX, TENS_P9_SIZE, 1701, 1698 }, { TENS_P10_IDX, TENS_P10_SIZE, 3402, 3399 }, +#if !defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024 { TENS_P11_IDX, TENS_P11_SIZE, 6804, 6800 }, - { TENS_P12_IDX, TENS_P12_SIZE, 13607, 13604 } + { TENS_P12_IDX, TENS_P12_SIZE, 13607, 13604 }, + { TENS_P13_IDX, TENS_P13_SIZE, 27214, 27210 }, + { TENS_P14_IDX, TENS_P14_SIZE, 54427, 54424 }, #endif }; - -#if LAST_POW10 > _LAST_POW10 -# error "Need to expand 10^(2^i) table for i up to" LAST_POW10 -#endif diff --git a/stdlib/fpioconst.h b/stdlib/fpioconst.h index 5ab19f5bf1..34478b71cf 100644 --- a/stdlib/fpioconst.h +++ b/stdlib/fpioconst.h @@ -1,6 +1,5 @@ /* Header file for constants used in floating point <-> decimal conversions. - Copyright (C) 1995, 1996, 1997, 1998, 1999, 2002, 2003 - Free Software Foundation, Inc. + Copyright (C) 1995-2012 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 @@ -41,6 +40,13 @@ #define DBL_MAX_10_EXP_LOG 8 /* = floor(log_2(DBL_MAX_10_EXP)) */ #define FLT_MAX_10_EXP_LOG 5 /* = floor(log_2(FLT_MAX_10_EXP)) */ +/* For strtold, we need powers of 10 up to floor (log_2 (LDBL_MANT_DIG + - LDBL_MIN_EXP + 2)). */ +#if !defined __NO_LONG_DOUBLE_MATH && __LDBL_MAX_EXP__ > 1024 +# define FPIOCONST_POW10_ARRAY_SIZE 15 +#else +# define FPIOCONST_POW10_ARRAY_SIZE 11 +#endif /* The array with the number representation. */ extern const mp_limb_t __tens[] attribute_hidden; @@ -54,7 +60,7 @@ struct mp_power int p_expo; /* Exponent of the number 10^(2^i). */ int m_expo; /* Exponent of the number 10^-(2^i-1). */ }; -extern const struct mp_power _fpioconst_pow10[LDBL_MAX_10_EXP_LOG + 1] +extern const struct mp_power _fpioconst_pow10[FPIOCONST_POW10_ARRAY_SIZE] attribute_hidden; /* The constants in the array `_fpioconst_pow10' have an offset. */ diff --git a/stdlib/gen-fpioconst.c b/stdlib/gen-fpioconst.c new file mode 100644 index 0000000000..0d26d8ef11 --- /dev/null +++ b/stdlib/gen-fpioconst.c @@ -0,0 +1,107 @@ +/* Generate data for fpioconst.c. + Copyright (C) 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <inttypes.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <gmp.h> + +int +main (void) +{ + FILE *out32 = fopen ("fpioconst-32", "w"); + if (out32 == NULL) + abort (); + FILE *out64 = fopen ("fpioconst-64", "w"); + if (out64 == NULL) + abort (); + FILE *outtable = fopen ("fpioconst-table", "w"); + if (outtable == NULL) + abort (); + mpz_t p; + mpz_init (p); + for (int i = 0; i <= 14; i++) + { + int j = 1 << i; + mpz_ui_pow_ui (p, 10, j - 1); + int exp_m = mpz_sizeinbase (p, 2); + mpz_ui_pow_ui (p, 10, j); + int exp_p = mpz_sizeinbase (p, 2); + int size32 = 2 + (exp_p + 31) / 32; + int size64 = 1 + (exp_p + 63) / 64; + uint32_t data32[size32]; + uint64_t data64[size64]; + memset (data32, 0, sizeof data32); + memset (data64, 0, sizeof data64); + mpz_export (data32 + 2, NULL, -1, 4, 0, 0, p); + mpz_export (data64 + 1, NULL, -1, 8, 0, 0, p); + if (i == 0) + { + fprintf (out32, "#define TENS_P%d_IDX\t0\n", i); + fprintf (out64, "#define TENS_P%d_IDX\t0\n", i); + } + else + { + fprintf (out32, "#define TENS_P%d_IDX\t" + "(TENS_P%d_IDX + TENS_P%d_SIZE)\n", + i, i - 1, i - 1); + fprintf (out64, "#define TENS_P%d_IDX\t" + "(TENS_P%d_IDX + TENS_P%d_SIZE)\n", + i, i - 1, i - 1); + } + fprintf (out32, "#define TENS_P%d_SIZE\t%d\n", i, size32); + fprintf (out64, "#define TENS_P%d_SIZE\t%d\n", i, size64); + for (int k = 0; k < size32; k++) + { + if (k == 0) + fprintf (out32, " [TENS_P%d_IDX] = ", i); + else if (k % 6 == 5) + fprintf (out32, "\n "); + else + fprintf (out32, " "); + fprintf (out32, "0x%08"PRIx32",", data32[k]); + } + for (int k = 0; k < size64; k++) + { + if (k == 0) + fprintf (out64, " [TENS_P%d_IDX] = ", i); + else if (k % 3 == 2) + fprintf (out64, "\n "); + else + fprintf (out64, " "); + fprintf (out64, "0x%016"PRIx64"ull,", data64[k]); + } + fprintf (out32, "\n\n"); + fprintf (out64, "\n\n"); + const char *t = (i >= 10 ? "\t" : "\t\t"); + if (i == 0) + fprintf (outtable, " { TENS_P%d_IDX, TENS_P%d_SIZE,%s%d,\t },\n", + i, i, t, exp_p); + else + fprintf (outtable, " { TENS_P%d_IDX, TENS_P%d_SIZE,%s%d,\t%5d },\n", + i, i, t, exp_p, exp_m); + } + if (fclose (out32) != 0) + abort (); + if (fclose (out64) != 0) + abort (); + if (fclose (outtable) != 0) + abort (); + return 0; +} diff --git a/stdlib/gen-tst-strtod-round.c b/stdlib/gen-tst-strtod-round.c new file mode 100644 index 0000000000..0a89ff71af --- /dev/null +++ b/stdlib/gen-tst-strtod-round.c @@ -0,0 +1,131 @@ +/* Generate table of tests in tst-strtod-round.c from + tst-strtod-round-data. + Copyright (C) 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#define _GNU_SOURCE +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <mpfr.h> + +/* Work around incorrect ternary value from mpfr_strtofr + <https://sympa.inria.fr/sympa/arc/mpfr/2012-08/msg00005.html>. */ +#define WORKAROUND + +static int +string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd) +{ +#ifdef WORKAROUND + mpfr_t f2; + mpfr_init2 (f2, 100000); + int r0 = mpfr_strtofr (f2, s, NULL, 0, rnd); + int r = mpfr_set (f, f2, rnd); + mpfr_subnormalize (f, r, rnd); + mpfr_clear (f2); + return r0 | r; +#else + int r = mpfr_strtofr (f, s, NULL, 0, rnd); + mpfr_subnormalize (f, r, rnd); + return r; +#endif +} + +static void +print_fp (mpfr_t f, const char *suffix, const char *suffix2) +{ + if (mpfr_inf_p (f)) + mpfr_printf ("\t%sINFINITY%s", mpfr_signbit (f) ? "-" : "", suffix2); + else + mpfr_printf ("\t%Ra%s%s", f, suffix, suffix2); +} + +static void +round_str (const char *s, const char *suffix, + int prec, int emin, int emax, bool need_exact) +{ + mpfr_t f; + mpfr_set_default_prec (prec); + mpfr_set_emin (emin); + mpfr_set_emax (emax); + mpfr_init (f); + int r = string_to_fp (f, s, MPFR_RNDD); + if (need_exact) + mpfr_printf ("\t%s,\n", r ? "false" : "true"); + print_fp (f, suffix, ",\n"); + string_to_fp (f, s, MPFR_RNDN); + print_fp (f, suffix, ",\n"); + string_to_fp (f, s, MPFR_RNDZ); + print_fp (f, suffix, ",\n"); + string_to_fp (f, s, MPFR_RNDU); + print_fp (f, suffix, ""); + mpfr_clear (f); +} + +static void +round_for_all (const char *s) +{ + static const struct fmt { + const char *suffix; + int prec; + int emin; + int emax; + bool need_exact; + } formats[6] = { + { "f", 24, -148, 128, false }, + { "", 53, -1073, 1024, false }, + { "L", 53, -1073, 1024, false }, + { "L", 64, -16444, 16384, false }, + { "L", 106, -1073, 1024, true }, + { "L", 113, -16493, 16384, false }, + }; + mpfr_printf (" TEST (\""); + const char *p; + for (p = s; *p; p++) + { + putchar (*p); + if ((p - s) % 60 == 59 && p[1]) + mpfr_printf ("\"\n\t\""); + } + mpfr_printf ("\",\n"); + int i; + for (i = 0; i < 6; i++) + { + round_str (s, formats[i].suffix, formats[i].prec, + formats[i].emin, formats[i].emax, formats[i].need_exact); + if (i < 5) + mpfr_printf (",\n"); + } + mpfr_printf ("),\n"); +} + +int +main (void) +{ + char *p = NULL; + size_t len; + ssize_t nbytes; + while ((nbytes = getline (&p, &len, stdin)) != -1) + { + if (p[nbytes - 1] == '\n') + p[nbytes - 1] = 0; + round_for_all (p); + free (p); + p = NULL; + } + return 0; +} diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c index a8a7ea8f23..a0cd4f1afe 100644 --- a/stdlib/strtod_l.c +++ b/stdlib/strtod_l.c @@ -153,17 +153,18 @@ extern const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1]; #endif #define SWAP(x, y) ({ typeof(x) _tmp = x; x = y; y = _tmp; }) -#define NDIG (MAX_10_EXP - MIN_10_EXP + 2 * MANT_DIG) -#define HEXNDIG ((MAX_EXP - MIN_EXP + 7) / 8 + 2 * MANT_DIG) #define RETURN_LIMB_SIZE howmany (MANT_DIG, BITS_PER_MP_LIMB) #define RETURN(val,end) \ do { if (endptr != NULL) *endptr = (STRING_TYPE *) (end); \ return val; } while (0) -/* Maximum size necessary for mpn integers to hold floating point numbers. */ -#define MPNSIZE (howmany (MAX_EXP + 2 * MANT_DIG, BITS_PER_MP_LIMB) \ - + 2) +/* Maximum size necessary for mpn integers to hold floating point + numbers. The largest number we need to hold is 10^n where 2^-n is + 1/4 ulp of the smallest representable value (that is, n = MANT_DIG + - MIN_EXP + 2). Approximate using 10^3 < 2^10. */ +#define MPNSIZE (howmany (1 + ((MANT_DIG - MIN_EXP + 2) * 10) / 3, \ + BITS_PER_MP_LIMB) + 2) /* Declare an mpn integer variable that big. */ #define MPN_VAR(name) mp_limb_t name[MPNSIZE]; mp_size_t name##size /* Copy an mpn integer value. */ @@ -1281,23 +1282,60 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc) int expbit; int neg_exp; int more_bits; + int need_frac_digits; mp_limb_t cy; mp_limb_t *psrc = den; mp_limb_t *pdest = num; const struct mp_power *ttab = &_fpioconst_pow10[0]; - assert (dig_no > int_no && exponent <= 0); + assert (dig_no > int_no + && exponent <= 0 + && exponent >= MIN_10_EXP - (DIG + 1)); + /* We need to compute MANT_DIG - BITS fractional bits that lie + within the mantissa of the result, the following bit for + rounding, and to know whether any subsequent bit is 0. + Computing a bit with value 2^-n means looking at n digits after + the decimal point. */ + if (bits > 0) + { + /* The bits required are those immediately after the point. */ + assert (int_no > 0 && exponent == 0); + need_frac_digits = 1 + MANT_DIG - bits; + } + else + { + /* The number is in the form .123eEXPONENT. */ + assert (int_no == 0 && *startp != L_('0')); + /* The number is at least 10^(EXPONENT-1), and 10^3 < + 2^10. */ + int neg_exp_2 = ((1 - exponent) * 10) / 3 + 1; + /* The number is at least 2^-NEG_EXP_2. We need up to + MANT_DIG bits following that bit. */ + need_frac_digits = neg_exp_2 + MANT_DIG; + /* However, we never need bits beyond 1/4 ulp of the smallest + representable value. (That 1/4 ulp bit is only needed to + determine tinyness on machines where tinyness is determined + after rounding.) */ + if (need_frac_digits > MANT_DIG - MIN_EXP + 2) + need_frac_digits = MANT_DIG - MIN_EXP + 2; + /* At this point, NEED_FRAC_DIGITS is the total number of + digits needed after the point, but some of those may be + leading 0s. */ + need_frac_digits += exponent; + /* Any cases underflowing enough that none of the fractional + digits are needed should have been caught earlier (such + cases are on the order of 10^-n or smaller where 2^-n is + the least subnormal). */ + assert (need_frac_digits > 0); + } + + if (need_frac_digits > (intmax_t) dig_no - (intmax_t) int_no) + need_frac_digits = (intmax_t) dig_no - (intmax_t) int_no; - /* For the fractional part we need not process too many digits. One - decimal digits gives us log_2(10) ~ 3.32 bits. If we now compute - ceil(BITS / 3) =: N - digits we should have enough bits for the result. The remaining - decimal digits give us the information that more bits are following. - This can be used while rounding. (Two added as a safety margin.) */ - if ((intmax_t) dig_no > (intmax_t) int_no + (MANT_DIG - bits + 2) / 3 + 2) + if ((intmax_t) dig_no > (intmax_t) int_no + need_frac_digits) { - dig_no = int_no + (MANT_DIG - bits + 2) / 3 + 2; + dig_no = int_no + need_frac_digits; more_bits = 1; } else diff --git a/stdlib/tst-strtod-round-data b/stdlib/tst-strtod-round-data new file mode 100644 index 0000000000..043341cba7 --- /dev/null +++ b/stdlib/tst-strtod-round-data @@ -0,0 +1,107 @@ +3.518437208883201171875E+013 +1.00000005960464477550 +1.0000000596046447755 +1.000000059604644776 +1.000000059604644775 +1.00000005960464478 +1.0000000596046448 +1.000000059604645 +1.00000005960464 +1.0000000596046 +1.000000059605 +1.00000005960 +1.0000000596 +1.000000060 +1.00000006 +1.0000001 +1.000000 +1.00000000000000011113 +1.00000000000000011103 +1.00000000000000011102 +1.00000000000000011101 +1.0000000000000001111 +1.000000000000000111 +1.00000000000000011 +1.0000000000000001 +3929201589819414e-25 +0.000000000000000000000000000000000000000000002101947696487225606385594374934874196920392912814773657635602425834686624028790902229957282543182373046875 +1.00000005960464477539062499 +1.000000059604644775390625 +1.00000005960464477539062501 +1.00000011920928955078125 +1.00000017881393432617187499 +1.000000178813934326171875 +1.00000017881393432617187501 +1.0000002384185791015625 +1.08420217248550443400745280086994171142578125e-19 +1.0842022371089897897127399001987457793916291848290711641311645507812499e-19 +1.08420223710898978971273990019874577939162918482907116413116455078125e-19 +1.0842022371089897897127399001987457793916291848290711641311645507812501e-19 +1.0842023017324751454180269995275498473574771196581423282623291015625e-19 +1.0842023663559605011233140988563539153233250544872134923934936523437499e-19 +1.08420236635596050112331409885635391532332505448721349239349365234375e-19 +1.0842023663559605011233140988563539153233250544872134923934936523437501e-19 +1.084202430979445856828601198185157983289172989316284656524658203125e-19 +7.52316384526264005099991383822237233803945956334136013765601092018187046051025390625e-37 +7.5231642936781486349413765338158389908126215730251815381410578824437213052434003657253924757242202758789062499e-37 +7.52316429367814863494137653381583899081262157302518153814105788244372130524340036572539247572422027587890625e-37 +7.5231642936781486349413765338158389908126215730251815381410578824437213052434003657253924757242202758789062501e-37 +7.5231647420936572188828392294093056435857835827090029386261048447055721499765468252007849514484405517578125e-37 +7.5231651905091658028243019250027722963589455923928243391111518069674229947096932846761774271726608276367187499e-37 +7.52316519050916580282430192500277229635894559239282433911115180696742299470969328467617742717266082763671875e-37 +7.5231651905091658028243019250027722963589455923928243391111518069674229947096932846761774271726608276367187501e-37 +7.523165638924674386765764620596238949132107602076645739596198769229273839442839744151569902896881103515625e-37 +340282356779733661637539395458142568447.999 +340282356779733661637539395458142568448 +340282356779733661637539395458142568448.001 +-340282356779733661637539395458142568447.999 +-340282356779733661637539395458142568448 +-340282356779733661637539395458142568448.001 +179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791.999 +179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792 +179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.001 +-179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791.999 +-179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792 +-179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.001 +1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918527.999 +1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528 +1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528.001 +-1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918527.999 +-1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528 +-1189731495357231765053511589829488667966254004695567218956499277562499181851727204760449442904570461384330567646167443286662555267489487930236325136097654342377232417536489080362029584951246485605740928178136611230674219048500381811805207877203107268812398885808170517032687767579195512604426112969939697309064970421357373593737548189791064578075396520278041564919877710332117871859964923206311175434753221226253534337199304629504137668677812103359730222935610071343425325633562626092674600633358193879055413937592435479934747155496913520748914500847834599706604816899916747713074435514585511372746030946789075371775796999312354227866587803370992862072730331502951338476357350089453460696354521572546926077765383044577075982892200047380230605947983926605074559374288887635146614087580689065065271437207231562037396763728185780908406142166217047877746112568232134313256340568095056911759884246066540728231159508276273778086735741815471986687141421432344475502062691975457742639931301197788106590436213127071090684338861628772228444915189303418963135612389885203608036075349871783050435209372998381734440835020273404521625820382960095748088096587424348978607559613437524195438026532392163371033702927429354975024746264545597290170945602348672367013792302348098432637396409095613884932277251719835310031547998505803752546406866843706502753183166325399209709698038388729144247605351114448647488475730429635692916794001788966968620265007002798266353024717022066273037990476329714600171995445673732316103762568799871343179341500144434361457105461379244904895252415230182712399067436456639767780598951274425173976825259444309519076481099524794546856555816525710213317614010389620491220471110091857573837438278112540147709446027133781874510952001326117006323864207925852079541370644269957126564493435341201207708574988136737425864785839645124060309307041974867276363338370018636105162869283008917743830711050229193144085029688094638483773246680141155923835213247853616763725824680857167751837090780487900840228387283614547346509044804890143691849792564977383927445249156165014494875205013001248617782698812613355440377357151258089863597284198597765215866830359241005748505543689358738031324284465243629136488333487686637331181039189590604124992017972343852392605049057443576119873279945400832860199527936922650062116335246759763699388664096895732875994904427617012292176896143437273923395471742216159840248646356256801083915667206811346470984128630513747606135060039717590702096972930814428759032404269759101709671790756463178143949787623821836792662477247624052842849718333550449622140658955581054081751312471819712726722479962465958577056952080928160441258225609897705262614494607339126216928069521406520619119688243287473394538225119027875465220992256233111477265049726174251028452120761620567236506258269287781320020740354052506311094266116406810709272834304862320539294205143454357131313879679493260017348668942730474494178249137387898297328336833589009038180169681270850774180709517707029996636939683240047817287633101083794404428541740415811916696232677498555197744273877942786661835044988438574758774422356087368185157228627335879058660154558309535912070401295584736621504268847267595223765835863174255756697267818931047523414328918687705134068360361363742640382966108545994545911705825697417989043286767551310728319742954355856116731710961138337957358885918445698641669559694166808074917226884181158917536699176609687522288426691820400183361523559409155799556283862329497478912575261457830579497761228960488413082611130636745385531466634515743840239035698486403517044157039226831085528805370810274043977756176084122952933117637894899009906118591255725255303492783199432613047841255537488113392259699564654048366964907825009036946741350368993216860237824660346368178183476516236016631293185747612693520285606412666148401080833153012602745585750872969103848152851344605317151546396041150523486651715472516090757848631964035419441554251667764234034722117421393132102998968842527073068624998951156916755512381404671428195378673434142765187038589280087599553911407299582781759652177398265112189244631130776935980062283655148992367895151475032666162688096176262281649169171506024644941424855074678761732513983988468070793092275675388024763356241941156378024394000502219343689759498466840264622527907455975633934878799543518206521383037618795439338086429200645002065120039545639315698201147683480515936292743251499063438531296922453863968872815997353125881179686462705170051219974666064694475306164653842558263043808428507798331085671416437696164008096171739721381877119714312306163210350382599226246553966125970240408129674442076735944784179006667645805896851048093638137596670696937010699212957919299380937222250509562807981779341384684146547286314982564181910419531236194060603634063907761401557097370591258981203660079555061603095538604465962028762337280258716255780315038694244061790279947528902264433516193654532433289688740976918528.001 +1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715391.999 +1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715392 +1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715392.001 +-1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715391.999 +-1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715392 +-1189731495357231765085759326628007073479956869869102141501186852722712468967898039614731304160537056720508735524794218059326466407441245944473611725143413248467166796545513080184004525512467970210316955903084154210995219628561620502745688412979158287475743437748747529021767100495257876251386789060100486382120270573746835428422826338960972409135720437886908785614210084478384078153933033666173528598766851519250363351426064628258395419088471393111667700918729834985086320676654241316634560118019882210119337445330955835919527132875094715720056355846555701747536986251959671182002652387533752686564043006387189322467736998297209841197138514624008092952665297074506030396759964773170346856327642777902149445005909504598179054586496247232351389508014081573398665168934777318775791837135956795815584276253258339396528978452820191499230693717636210145879266988271829694083738038077122921912824291024453524934340394022902439339419069066610906029009607658742583030029946393156561520787087964747197937630779342237465827257153805466210260228188924675519409775662832664987585685048138307557155853256492278248578919164433813909200793462409840728598763947896501274688614908225267667177701366807438669326623433058218213443062408099675370787076912329373870411405571681619566725953239506667420107865842757661716617919733022513948046643510651078865572997073260056512303946747105979292110003450407489924836142530065624248678935670746065899317880622000638073367400369402302158314033221251653687424468051520786824115060818437539740055831113916055471483034808874617739843143938172333284262271469979254217432808855959164876994617775909494325360213896498452140653220161981435472501438614603134083005358006470142761755484855437912983836446436796696188799077203473615780300012474195744483595979884254878292198513051622049258764225807542304782444925923341494613428285320468971377328625604051015673705708956626631746891317417396029708456942140863834024650370695696409569123851257481398138888752582030034869787470552028103940729085803240085987569938856671422005581372166650497556769407574429118602955596567887598719046627586511067969787887833869882951233268645804198215954308918671793783729688211286988794688142675294614947234254538088223560934361145676358046211831627683890340178210365154617001635372653348370422726598857026002477929177288289123739070353691365311645518715750245510770260801141976525982246774038853785442558514521428892111522375063439093517487315386834431958429128019507409290585031131279294212910898440219254009319059392162713475019891930586543895163777707714398600339409818266699397506309660607491889862314049922386749339985169589508248405389966372279472368480994566101598780613797426213113809272341186010030687520020604372850246235750477820866306072249009107891882044221153421572454947459745218327822086016027106392614825047067937041894741980478402880643992102437022027245971074555342753214011193822631471157489050501952568860820401920833804902096485703539056563038766617104309221550246208420803236102663918198532911605896456149452566847699113209434574026975730941194301255893892984954283771852399164279918441721650800291777296251806440774844416950920058440264116651186795378697819243783770608877693892976259074109340205317427395771831523271197915676367134269045536541349377669517895718456625645303642348316558188118515730182101737730372539888936801532474040601312554322979825347707786172180885839980406705981955978435796108903153166067253815216088254644383863063765964591075911345075411534030241991912223282597135304726831878735179556423807036390298160370960490420948364372810759652439684318393869597369898890279242300069046830503059657125858043553373113729594871087942860315948055593344147677932119321424028600190292509664619336217631490498027916950777163752425164438252351468600785554531423979834791445600150108890772427261831495874930509509679414887523661977405914784645916502014777727175798319834059621717421648892845862179131151362279648610789587662840109016397812560123410281881558369684764808427158589621053418154441646967665840185085136102607775409115734963155803833286789583501481573372226195484679719674349562964338708154613401347218002057551149833995233231065737207320566592164688912051242035274499618147339269167576074688060033124924140616954310412384530235227956908301847998406574780144353357884105883387959218296741020722854954100887277304947480547152700263711114665576920925961724019512061174430771918685854961160518537953685957360038825116204970615989239857746870933341859397441672382036764530524729808239765622931171203720639459438906663253650619610229282159290703571350858167568164860431176138378765549296218562697437528856056494473388171789278961444737763604387979003662127798027475934505640301147524790717395857232708656327584954348395562117135230986025734451614751913114005140624270977801178582308406486958461409022442175446835595658183592121309722334474915831657286355138025915434411459395393534709704525536550715392.001 +2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687499e-45 +2.101947696487225606385594374934874196920392912814773657635602425834686624028790902229957282543182373046875e-45 +2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687501e-45 +-2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687499e-45 +-2.101947696487225606385594374934874196920392912814773657635602425834686624028790902229957282543182373046875e-45 +-2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687501e-45 +3.50324616081204267730932395822479032820065485469128942939267070972447770671465150371659547090530395507812499e-45 +3.503246160812042677309323958224790328200654854691289429392670709724477706714651503716595470905303955078125e-45 +3.50324616081204267730932395822479032820065485469128942939267070972447770671465150371659547090530395507812501e-45 +-3.50324616081204267730932395822479032820065485469128942939267070972447770671465150371659547090530395507812499e-45 +-3.503246160812042677309323958224790328200654854691289429392670709724477706714651503716595470905303955078125e-45 +-3.50324616081204267730932395822479032820065485469128942939267070972447770671465150371659547090530395507812501e-45 +7.410984687618698162648531893023320585475897039214871466383785237510132609053131277979497545424539885696948470431685765963899850655339096945981621940161728171894510697854671067917687257517734731555330779540854980960845750095811137303474765809687100959097544227100475730780971111893578483867565399878350301522805593404659373979179073872386829939581848166016912201945649993128979841136206248449867871357218035220901702390328579173252022052897402080290685402160661237554998340267130003581248647904138574340187552090159017259254714629617513415977493871857473787096164563890871811984127167305601704549300470526959016576377688490826798697257336652176556794107250876433756084600398490497214911746308553955635418864151316847843631308023759629577398300170898437499e-324 +7.4109846876186981626485318930233205854758970392148714663837852375101326090531312779794975454245398856969484704316857659638998506553390969459816219401617281718945106978546710679176872575177347315553307795408549809608457500958111373034747658096871009590975442271004757307809711118935784838675653998783503015228055934046593739791790738723868299395818481660169122019456499931289798411362062484498678713572180352209017023903285791732520220528974020802906854021606612375549983402671300035812486479041385743401875520901590172592547146296175134159774938718574737870961645638908718119841271673056017045493004705269590165763776884908267986972573366521765567941072508764337560846003984904972149117463085539556354188641513168478436313080237596295773983001708984375e-324 +7.410984687618698162648531893023320585475897039214871466383785237510132609053131277979497545424539885696948470431685765963899850655339096945981621940161728171894510697854671067917687257517734731555330779540854980960845750095811137303474765809687100959097544227100475730780971111893578483867565399878350301522805593404659373979179073872386829939581848166016912201945649993128979841136206248449867871357218035220901702390328579173252022052897402080290685402160661237554998340267130003581248647904138574340187552090159017259254714629617513415977493871857473787096164563890871811984127167305601704549300470526959016576377688490826798697257336652176556794107250876433756084600398490497214911746308553955635418864151316847843631308023759629577398300170898437501e-324 +-7.410984687618698162648531893023320585475897039214871466383785237510132609053131277979497545424539885696948470431685765963899850655339096945981621940161728171894510697854671067917687257517734731555330779540854980960845750095811137303474765809687100959097544227100475730780971111893578483867565399878350301522805593404659373979179073872386829939581848166016912201945649993128979841136206248449867871357218035220901702390328579173252022052897402080290685402160661237554998340267130003581248647904138574340187552090159017259254714629617513415977493871857473787096164563890871811984127167305601704549300470526959016576377688490826798697257336652176556794107250876433756084600398490497214911746308553955635418864151316847843631308023759629577398300170898437499e-324 +-7.4109846876186981626485318930233205854758970392148714663837852375101326090531312779794975454245398856969484704316857659638998506553390969459816219401617281718945106978546710679176872575177347315553307795408549809608457500958111373034747658096871009590975442271004757307809711118935784838675653998783503015228055934046593739791790738723868299395818481660169122019456499931289798411362062484498678713572180352209017023903285791732520220528974020802906854021606612375549983402671300035812486479041385743401875520901590172592547146296175134159774938718574737870961645638908718119841271673056017045493004705269590165763776884908267986972573366521765567941072508764337560846003984904972149117463085539556354188641513168478436313080237596295773983001708984375e-324 +-7.410984687618698162648531893023320585475897039214871466383785237510132609053131277979497545424539885696948470431685765963899850655339096945981621940161728171894510697854671067917687257517734731555330779540854980960845750095811137303474765809687100959097544227100475730780971111893578483867565399878350301522805593404659373979179073872386829939581848166016912201945649993128979841136206248449867871357218035220901702390328579173252022052897402080290685402160661237554998340267130003581248647904138574340187552090159017259254714629617513415977493871857473787096164563890871811984127167305601704549300470526959016576377688490826798697257336652176556794107250876433756084600398490497214911746308553955635418864151316847843631308023759629577398300170898437501e-324 +5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687499e-4951 +5.46779929782371190379260890042912972459857622354034501558147073054255753295009660521434106293874080779587102102080529665295047844893304825496026211338471350822573387176689751785383789570845033963493234384897511609341047969033029090288686119993125921652327780757456908215307313367394295878957740232139393310129853319126610211888963060953233950845785422003199631793594071800032514400843804841615045854626840829469327828294881838298175674523144370769439505327077912524046992686788101985028712502357968555779098305597496288175991948375220290368919956488030568463545206536359579198829053635210070171697414632960443922662694334080526864190176997186277619487638560405926908417212393004914459916660510317558023267203296664540665686303143487355117536394182579842533190638252470657276648523287454223056426260916178239688724389624700924406883725156778322327128669248001067971134780240835161999919912749368941130062333775184713893949842620045030584554856591000906652415254548036281829022414017017836373531792968500569736393059459388134289532878925936202911959860111289900618887987637185487890257175376747802810055833471650478460459250779148245153313351312860635744071818212363779076932092244234906632899168786207255077931639313903720118757997293301622787489850525574323330053349895193815663640653261384657614561732314168448072640907418419722475454249088439281362536533088134879943284462483896082614443915736191774429072907311631885819175882194201070472653674851414139198108859096891122440647971063242952915458929379913214790617434914900609409461282745336576821301251695869305718994035511225062977631807957323251343409893311558937242893589182127073929977680322999972072084511129714257799395078371652632557642689712118195363229932217741231347266655794602658713781865895628587618356133445842690980622757869697298305457864854014077743134149549581616770960047019414114115927554858644718705151733262444646312957015720874401831783399876629267632412206980788226617090546010735234775446535427950204682560784093064091008748868287818605298248793439879457512520813143459903135506837923488146278624413240301557305921665812510099227873245904315487345753286636286503807226030243834125646514462721175610422077384131141310997310167289350231522394313116195338483765836875091084530867301962551116953524641866782219275647577303198252230493416188536313334782412272272680845833966884362299362668540114271927670393635174916595231338524725341041244411123466156968910970701214636522586812703780765383816975942646584796378630871592938388807529281755454082628134037935686954169983885723045287488247562656656838905184226961694223388061375323047846826624482079286817404761883437391178335259163868151357930349068061174131050087191978828376147382620503202915394941049520564716066454820461766340754590215525559595903549562621278099530136795125074514242718392219467940568610559805583630337329057723569860511809664741164231921947415724386492152042297812796203704453738513487869185273997856308082426571227053818066616162711321820177977936612440784457475475356233845487698185296555392790365032340724558109915880751818176959751731101364826598545575062030580805510188732031382604511098551005267200735661262096661256044824137056119967967779273328271035688633522914992613122903551437420180422544707071078472935932052340497748391917547810304969780910060995596752409667301101676249036106564732671055561556337835940895462611076531105318082794457577243991861203875486751486321760491907016803052102243880722619748067919226364128975269527936779466226741495770848035680512429340764509429270927056845470429154903231124579718536587607255881903776664771069031066938472788476460322012930233295033487307239472187974104523339108479138928271958145518583355195189390314460933853291828207141736579466617460059018668855897329226526045739728421972311873652633819589252279700383580649872482332717064626876511433504720180433213145347598195242033084909143585968861500534066295124347881553551091005403198578135356959232734262569115529775393942099186306684666328819296619712127724446251513719534288754911396839196870087240104752172553479156988209602152172573903085602353234630969464420805480187541663697061615897052158736871663656287877965014700568701277294647143621722168024410452769115970094432811353897291302226031856656464346619476276280777232193768927273861205192875774054105101149361515027529971227502627819113726259972234152835169954792656314857994567825617347666484628496410640971818182042794985528278253841862020655169993625733881361630774771266021694104359050140770498084974090253693257957652720666502780042003578789909113749828579771084884825283544063138938642114971057650305046009822534888054745317987421433744650802400305823700866991679376510383079097061393271193254188545464782857356545416354777903469647826173542650507678783352302721948966801419867450746302258931065735595588435458411860251695316041515884813891649489148235939442871333362636803581913695403219306498244714254851377779848235254021151511710933136132513506853438248590522201268915519660183559208727757248071287690032431294868087337963504976682551164851571910118588306438983236282234720992802435831644343483470149103980044398219705082804408727593958279432709850087691435623519380914762150835481641373335418838088700191162340990134529298079501516522974364360061496849397757812346609541561544786426941760385242778104838331497986813457080891521791939794631694023406117934862723018080732675346126855938595967878668842110313414179033917498253204546635083703852518317784773110170897293611521619288153898185799835444909828917340811313123097443309606660312914517408855034585438849563676549437992646003145318154279326911078747823286547592935758034819293619617810739585020754384990706331937996993116942871832994234753398176556080587247232218670875630645576361123808295145013820732577370224728666082441643103852052135237029107871824725171250301064910318448715931417597297739077195100440493528574265929367637279694961039405916019750786028596604786141194054282128301344907317062205837882653447288187668851269775881511119842904443216489319071880803360647138732888340962292032766761198105218517261333777006163413042578229757889674721527422550419125841970454230312985062190118002401201824458385906966474162853345156310197990075156820042500608570209040122153751704798004826805544998060107661096550615074217477224611806173614025750822946789256052710835878978453907682264056485085181035257786386181957751285160739592729901482394153462634869665739345774507872436670632443783818831158272076058561748763500450868853206266693313118805937759162696436463954232205499407904769897092430274201583908061356909751493847146842199649381827199629139314649794586391855195314900094376198383063623654537548076548847041634904692964444271447785937256873584370873901519906946675162792020243324948282106576182619520385972302637994125842758516674039106573708797071810533658185026800374315600912099826417389956527932358515693723141301076471660852356156972570942691331009141357831788562803921393250013528417186104846166274481895569136218377916506998203230597087664208101335848418267186316816833817435119742641262509842148123971199782739179038898658917188367922633778880524581892387460749864560166810987228694195882740201814306527328178587284738493695393674639171713173248820998049990430544672477855920384647234422762398960664315801237564285400749454724277525689811714006217058533748758859430726006925769147904672059052723725947401879880819003174931850051429136071633807200697867867820953318408936940737783251194718335284929170810085473034145093815636178641952577515465395754614358036259938883256478835410391923683669874002630496812188314777763451185185037095888408590233797624565610306839281153499423939631856771230553247716937842149249317370437936795460514548456241502709554506083187473957557289508327546112770413596023012051385091755433135227727865041410075526919022495723751757317409236187691973046528983526943866654482600334585753232528142338680982794761667642582849114342880722431789416983473659854276969831295794960590320328412811499235180870848768851143690332277365212457405547117714234927198999823577119102255454804246883221953362404922531362818578378084917959937881991252055552221165810711344767874684305393079096174421066851595190710538449873436664524942803177201535670543641172447751413365584060985488039245094960522618251980431402726553036253156053265695302528858549918222892192012183135907454120104466422471117039019915913380626933201571806187365694399692832452794303126511926687883400336268251942602962629598842585977035848887708019612096528229823223761223035861698616851060438205104442934328562512103956932612648678239801726833527961417722103017259976523738041525250371628522914038044559973313673784636324377732429055180750654147242958574602882254000616086649616491964000793596226737706078983952690750565966271161482894910424917641709240148851061582354827747784181341232939744368770519956736186837511153538087714349842044477361747583160630962450473112798415799955781866094028642440427514431285362784534306334231186628526883742296008944189588248424594505408261764521458293892861035227741011955560296507532542444335659379385268289908931497662989977383599138871788886071907657098670524708807859379351100914247434499663534978656817538413802460756120940336174886746762968225700770270762668795579136738393410120995580438064423487980539512392749133346315224095644617704348757904022300228726475684361770186580686970717318793991803745609634927267145287292242089385899402725157478883791184616177022716940750874196341472980767647757457070269344429082366644005572655279514534821916845976742736919782536786909511787772395739254104386790993747006099739201282014223813291082365753694036759607652383337781270170965742961483210755669592850422218371597998001335632399639696386108726803932103001801520206130516134145471637137725126177572779559798958663675717764562685641910924770276501358322003764402397837265405526948517172695984892888515296609750277756395652297345967262058326684349793545419433450629778911871465610501181181082233237352108436811286154136010912220079123505369597771143065415145113323689360785609297881437988143912215075223706486467673642091321473124070149531135323798381957284911285369782859180669910409931530643561799038859520279527137496536045020535123554499166808872342387738555816361724795948668717650945139401032841679141101967202611108127167764242601545073950503805754528504207308184129947310793073435383768802801240193210401980387235587845444085843444660909828020673265290009315620489328754690798749565951805953953470932851402791654679655963183657497015358123843332409682836407213440034420026916137720567620990980257393327159139701862251764595634841341397466479401705379002753504804904688514393007719499151947030805766110225906703998449318676097774175289034547319222063789321414647554026294200742938163492700383513394191467684738513531716291539122387971419059201430360641317052304217623052328615038567995111559365651690059167118453891355809281625119124385312041561384477751207895486661436002934120657671671068885091725680035306685394605882483165133926525678562246026972962033289200733544259940449566248313469794588468375979500641518671645837492034339425921785288689813115753318489415974924704367823875026875326490930964983153474039774360013999821020308467636989947850546175232414631869808983945042114307636178253068950656615360454314979037591180079348391228818858630917694698835398768405435212957063159198557844932356038662689259817026902702028295957943508009182579139917444559226833433740466716699302196502685546875e-4951 +5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687501e-4951 +-5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687499e-4951 +-5.46779929782371190379260890042912972459857622354034501558147073054255753295009660521434106293874080779587102102080529665295047844893304825496026211338471350822573387176689751785383789570845033963493234384897511609341047969033029090288686119993125921652327780757456908215307313367394295878957740232139393310129853319126610211888963060953233950845785422003199631793594071800032514400843804841615045854626840829469327828294881838298175674523144370769439505327077912524046992686788101985028712502357968555779098305597496288175991948375220290368919956488030568463545206536359579198829053635210070171697414632960443922662694334080526864190176997186277619487638560405926908417212393004914459916660510317558023267203296664540665686303143487355117536394182579842533190638252470657276648523287454223056426260916178239688724389624700924406883725156778322327128669248001067971134780240835161999919912749368941130062333775184713893949842620045030584554856591000906652415254548036281829022414017017836373531792968500569736393059459388134289532878925936202911959860111289900618887987637185487890257175376747802810055833471650478460459250779148245153313351312860635744071818212363779076932092244234906632899168786207255077931639313903720118757997293301622787489850525574323330053349895193815663640653261384657614561732314168448072640907418419722475454249088439281362536533088134879943284462483896082614443915736191774429072907311631885819175882194201070472653674851414139198108859096891122440647971063242952915458929379913214790617434914900609409461282745336576821301251695869305718994035511225062977631807957323251343409893311558937242893589182127073929977680322999972072084511129714257799395078371652632557642689712118195363229932217741231347266655794602658713781865895628587618356133445842690980622757869697298305457864854014077743134149549581616770960047019414114115927554858644718705151733262444646312957015720874401831783399876629267632412206980788226617090546010735234775446535427950204682560784093064091008748868287818605298248793439879457512520813143459903135506837923488146278624413240301557305921665812510099227873245904315487345753286636286503807226030243834125646514462721175610422077384131141310997310167289350231522394313116195338483765836875091084530867301962551116953524641866782219275647577303198252230493416188536313334782412272272680845833966884362299362668540114271927670393635174916595231338524725341041244411123466156968910970701214636522586812703780765383816975942646584796378630871592938388807529281755454082628134037935686954169983885723045287488247562656656838905184226961694223388061375323047846826624482079286817404761883437391178335259163868151357930349068061174131050087191978828376147382620503202915394941049520564716066454820461766340754590215525559595903549562621278099530136795125074514242718392219467940568610559805583630337329057723569860511809664741164231921947415724386492152042297812796203704453738513487869185273997856308082426571227053818066616162711321820177977936612440784457475475356233845487698185296555392790365032340724558109915880751818176959751731101364826598545575062030580805510188732031382604511098551005267200735661262096661256044824137056119967967779273328271035688633522914992613122903551437420180422544707071078472935932052340497748391917547810304969780910060995596752409667301101676249036106564732671055561556337835940895462611076531105318082794457577243991861203875486751486321760491907016803052102243880722619748067919226364128975269527936779466226741495770848035680512429340764509429270927056845470429154903231124579718536587607255881903776664771069031066938472788476460322012930233295033487307239472187974104523339108479138928271958145518583355195189390314460933853291828207141736579466617460059018668855897329226526045739728421972311873652633819589252279700383580649872482332717064626876511433504720180433213145347598195242033084909143585968861500534066295124347881553551091005403198578135356959232734262569115529775393942099186306684666328819296619712127724446251513719534288754911396839196870087240104752172553479156988209602152172573903085602353234630969464420805480187541663697061615897052158736871663656287877965014700568701277294647143621722168024410452769115970094432811353897291302226031856656464346619476276280777232193768927273861205192875774054105101149361515027529971227502627819113726259972234152835169954792656314857994567825617347666484628496410640971818182042794985528278253841862020655169993625733881361630774771266021694104359050140770498084974090253693257957652720666502780042003578789909113749828579771084884825283544063138938642114971057650305046009822534888054745317987421433744650802400305823700866991679376510383079097061393271193254188545464782857356545416354777903469647826173542650507678783352302721948966801419867450746302258931065735595588435458411860251695316041515884813891649489148235939442871333362636803581913695403219306498244714254851377779848235254021151511710933136132513506853438248590522201268915519660183559208727757248071287690032431294868087337963504976682551164851571910118588306438983236282234720992802435831644343483470149103980044398219705082804408727593958279432709850087691435623519380914762150835481641373335418838088700191162340990134529298079501516522974364360061496849397757812346609541561544786426941760385242778104838331497986813457080891521791939794631694023406117934862723018080732675346126855938595967878668842110313414179033917498253204546635083703852518317784773110170897293611521619288153898185799835444909828917340811313123097443309606660312914517408855034585438849563676549437992646003145318154279326911078747823286547592935758034819293619617810739585020754384990706331937996993116942871832994234753398176556080587247232218670875630645576361123808295145013820732577370224728666082441643103852052135237029107871824725171250301064910318448715931417597297739077195100440493528574265929367637279694961039405916019750786028596604786141194054282128301344907317062205837882653447288187668851269775881511119842904443216489319071880803360647138732888340962292032766761198105218517261333777006163413042578229757889674721527422550419125841970454230312985062190118002401201824458385906966474162853345156310197990075156820042500608570209040122153751704798004826805544998060107661096550615074217477224611806173614025750822946789256052710835878978453907682264056485085181035257786386181957751285160739592729901482394153462634869665739345774507872436670632443783818831158272076058561748763500450868853206266693313118805937759162696436463954232205499407904769897092430274201583908061356909751493847146842199649381827199629139314649794586391855195314900094376198383063623654537548076548847041634904692964444271447785937256873584370873901519906946675162792020243324948282106576182619520385972302637994125842758516674039106573708797071810533658185026800374315600912099826417389956527932358515693723141301076471660852356156972570942691331009141357831788562803921393250013528417186104846166274481895569136218377916506998203230597087664208101335848418267186316816833817435119742641262509842148123971199782739179038898658917188367922633778880524581892387460749864560166810987228694195882740201814306527328178587284738493695393674639171713173248820998049990430544672477855920384647234422762398960664315801237564285400749454724277525689811714006217058533748758859430726006925769147904672059052723725947401879880819003174931850051429136071633807200697867867820953318408936940737783251194718335284929170810085473034145093815636178641952577515465395754614358036259938883256478835410391923683669874002630496812188314777763451185185037095888408590233797624565610306839281153499423939631856771230553247716937842149249317370437936795460514548456241502709554506083187473957557289508327546112770413596023012051385091755433135227727865041410075526919022495723751757317409236187691973046528983526943866654482600334585753232528142338680982794761667642582849114342880722431789416983473659854276969831295794960590320328412811499235180870848768851143690332277365212457405547117714234927198999823577119102255454804246883221953362404922531362818578378084917959937881991252055552221165810711344767874684305393079096174421066851595190710538449873436664524942803177201535670543641172447751413365584060985488039245094960522618251980431402726553036253156053265695302528858549918222892192012183135907454120104466422471117039019915913380626933201571806187365694399692832452794303126511926687883400336268251942602962629598842585977035848887708019612096528229823223761223035861698616851060438205104442934328562512103956932612648678239801726833527961417722103017259976523738041525250371628522914038044559973313673784636324377732429055180750654147242958574602882254000616086649616491964000793596226737706078983952690750565966271161482894910424917641709240148851061582354827747784181341232939744368770519956736186837511153538087714349842044477361747583160630962450473112798415799955781866094028642440427514431285362784534306334231186628526883742296008944189588248424594505408261764521458293892861035227741011955560296507532542444335659379385268289908931497662989977383599138871788886071907657098670524708807859379351100914247434499663534978656817538413802460756120940336174886746762968225700770270762668795579136738393410120995580438064423487980539512392749133346315224095644617704348757904022300228726475684361770186580686970717318793991803745609634927267145287292242089385899402725157478883791184616177022716940750874196341472980767647757457070269344429082366644005572655279514534821916845976742736919782536786909511787772395739254104386790993747006099739201282014223813291082365753694036759607652383337781270170965742961483210755669592850422218371597998001335632399639696386108726803932103001801520206130516134145471637137725126177572779559798958663675717764562685641910924770276501358322003764402397837265405526948517172695984892888515296609750277756395652297345967262058326684349793545419433450629778911871465610501181181082233237352108436811286154136010912220079123505369597771143065415145113323689360785609297881437988143912215075223706486467673642091321473124070149531135323798381957284911285369782859180669910409931530643561799038859520279527137496536045020535123554499166808872342387738555816361724795948668717650945139401032841679141101967202611108127167764242601545073950503805754528504207308184129947310793073435383768802801240193210401980387235587845444085843444660909828020673265290009315620489328754690798749565951805953953470932851402791654679655963183657497015358123843332409682836407213440034420026916137720567620990980257393327159139701862251764595634841341397466479401705379002753504804904688514393007719499151947030805766110225906703998449318676097774175289034547319222063789321414647554026294200742938163492700383513394191467684738513531716291539122387971419059201430360641317052304217623052328615038567995111559365651690059167118453891355809281625119124385312041561384477751207895486661436002934120657671671068885091725680035306685394605882483165133926525678562246026972962033289200733544259940449566248313469794588468375979500641518671645837492034339425921785288689813115753318489415974924704367823875026875326490930964983153474039774360013999821020308467636989947850546175232414631869808983945042114307636178253068950656615360454314979037591180079348391228818858630917694698835398768405435212957063159198557844932356038662689259817026902702028295957943508009182579139917444559226833433740466716699302196502685546875e-4951 +-5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687501e-4951 +5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687499e-4951 +5.46779929782371190379260890042912972459857622354034501558147073054255753295009660521434106293874080779587102102080529665295047844893304825496026211338471350822573387176689751785383789570845033963493234384897511609341047969033029090288686119993125921652327780757456908215307313367394295878957740232139393310129853319126610211888963060953233950845785422003199631793594071800032514400843804841615045854626840829469327828294881838298175674523144370769439505327077912524046992686788101985028712502357968555779098305597496288175991948375220290368919956488030568463545206536359579198829053635210070171697414632960443922662694334080526864190176997186277619487638560405926908417212393004914459916660510317558023267203296664540665686303143487355117536394182579842533190638252470657276648523287454223056426260916178239688724389624700924406883725156778322327128669248001067971134780240835161999919912749368941130062333775184713893949842620045030584554856591000906652415254548036281829022414017017836373531792968500569736393059459388134289532878925936202911959860111289900618887987637185487890257175376747802810055833471650478460459250779148245153313351312860635744071818212363779076932092244234906632899168786207255077931639313903720118757997293301622787489850525574323330053349895193815663640653261384657614561732314168448072640907418419722475454249088439281362536533088134879943284462483896082614443915736191774429072907311631885819175882194201070472653674851414139198108859096891122440647971063242952915458929379913214790617434914900609409461282745336576821301251695869305718994035511225062977631807957323251343409893311558937242893589182127073929977680322999972072084511129714257799395078371652632557642689712118195363229932217741231347266655794602658713781865895628587618356133445842690980622757869697298305457864854014077743134149549581616770960047019414114115927554858644718705151733262444646312957015720874401831783399876629267632412206980788226617090546010735234775446535427950204682560784093064091008748868287818605298248793439879457512520813143459903135506837923488146278624413240301557305921665812510099227873245904315487345753286636286503807226030243834125646514462721175610422077384131141310997310167289350231522394313116195338483765836875091084530867301962551116953524641866782219275647577303198252230493416188536313334782412272272680845833966884362299362668540114271927670393635174916595231338524725341041244411123466156968910970701214636522586812703780765383816975942646584796378630871592938388807529281755454082628134037935686954169983885723045287488247562656656838905184226961694223388061375323047846826624482079286817404761883437391178335259163868151357930349068061174131050087191978828376147382620503202915394941049520564716066454820461766340754590215525559595903549562621278099530136795125074514242718392219467940568610559805583630337329057723569860511809664741164231921947415724386492152042297812796203704453738513487869185273997856308082426571227053818066616162711321820177977936612440784457475475356233845487698185296555392790365032340724558109915880751818176959751731101364826598545575062030580805510188732031382604511098551005267200735661262096661256044824137056119967967779273328271035688633522914992613122903551437420180422544707071078472935932052340497748391917547810304969780910060995596752409667301101676249036106564732671055561556337835940895462611076531105318082794457577243991861203875486751486321760491907016803052102243880722619748067919226364128975269527936779466226741495770848035680512429340764509429270927056845470429154903231124579718536587607255881903776664771069031066938472788476460322012930233295033487307239472187974104523339108479138928271958145518583355195189390314460933853291828207141736579466617460059018668855897329226526045739728421972311873652633819589252279700383580649872482332717064626876511433504720180433213145347598195242033084909143585968861500534066295124347881553551091005403198578135356959232734262569115529775393942099186306684666328819296619712127724446251513719534288754911396839196870087240104752172553479156988209602152172573903085602353234630969464420805480187541663697061615897052158736871663656287877965014700568701277294647143621722168024410452769115970094432811353897291302226031856656464346619476276280777232193768927273861205192875774054105101149361515027529971227502627819113726259972234152835169954792656314857994567825617347666484628496410640971818182042794985528278253841862020655169993625733881361630774771266021694104359050140770498084974090253693257957652720666502780042003578789909113749828579771084884825283544063138938642114971057650305046009822534888054745317987421433744650802400305823700866991679376510383079097061393271193254188545464782857356545416354777903469647826173542650507678783352302721948966801419867450746302258931065735595588435458411860251695316041515884813891649489148235939442871333362636803581913695403219306498244714254851377779848235254021151511710933136132513506853438248590522201268915519660183559208727757248071287690032431294868087337963504976682551164851571910118588306438983236282234720992802435831644343483470149103980044398219705082804408727593958279432709850087691435623519380914762150835481641373335418838088700191162340990134529298079501516522974364360061496849397757812346609541561544786426941760385242778104838331497986813457080891521791939794631694023406117934862723018080732675346126855938595967878668842110313414179033917498253204546635083703852518317784773110170897293611521619288153898185799835444909828917340811313123097443309606660312914517408855034585438849563676549437992646003145318154279326911078747823286547592935758034819293619617810739585020754384990706331937996993116942871832994234753398176556080587247232218670875630645576361123808295145013820732577370224728666082441643103852052135237029107871824725171250301064910318448715931417597297739077195100440493528574265929367637279694961039405916019750786028596604786141194054282128301344907317062205837882653447288187668851269775881511119842904443216489319071880803360647138732888340962292032766761198105218517261333777006163413042578229757889674721527422550419125841970454230312985062190118002401201824458385906966474162853345156310197990075156820042500608570209040122153751704798004826805544998060107661096550615074217477224611806173614025750822946789256052710835878978453907682264056485085181035257786386181957751285160739592729901482394153462634869665739345774507872436670632443783818831158272076058561748763500450868853206266693313118805937759162696436463954232205499407904769897092430274201583908061356909751493847146842199649381827199629139314649794586391855195314900094376198383063623654537548076548847041634904692964444271447785937256873584370873901519906946675162792020243324948282106576182619520385972302637994125842758516674039106573708797071810533658185026800374315600912099826417389956527932358515693723141301076471660852356156972570942691331009141357831788562803921393250013528417186104846166274481895569136218377916506998203230597087664208101335848418267186316816833817435119742641262509842148123971199782739179038898658917188367922633778880524581892387460749864560166810987228694195882740201814306527328178587284738493695393674639171713173248820998049990430544672477855920384647234422762398960664315801237564285400749454724277525689811714006217058533748758859430726006925769147904672059052723725947401879880819003174931850051429136071633807200697867867820953318408936940737783251194718335284929170810085473034145093815636178641952577515465395754614358036259938883256478835410391923683669874002630496812188314777763451185185037095888408590233797624565610306839281153499423939631856771230553247716937842149249317370437936795460514548456241502709554506083187473957557289508327546112770413596023012051385091755433135227727865041410075526919022495723751757317409236187691973046528983526943866654482600334585753232528142338680982794761667642582849114342880722431789416983473659854276969831295794960590320328412811499235180870848768851143690332277365212457405547117714234927198999823577119102255454804246883221953362404922531362818578378084917959937881991252055552221165810711344767874684305393079096174421066851595190710538449873436664524942803177201535670543641172447751413365584060985488039245094960522618251980431402726553036253156053265695302528858549918222892192012183135907454120104466422471117039019915913380626933201571806187365694399692832452794303126511926687883400336268251942602962629598842585977035848887708019612096528229823223761223035861698616851060438205104442934328562512103956932612648678239801726833527961417722103017259976523738041525250371628522914038044559973313673784636324377732429055180750654147242958574602882254000616086649616491964000793596226737706078983952690750565966271161482894910424917641709240148851061582354827747784181341232939744368770519956736186837511153538087714349842044477361747583160630962450473112798415799955781866094028642440427514431285362784534306334231186628526883742296008944189588248424594505408261764521458293892861035227741011955560296507532542444335659379385268289908931497662989977383599138871788886071907657098670524708807859379351100914247434499663534978656817538413802460756120940336174886746762968225700770270762668795579136738393410120995580438064423487980539512392749133346315224095644617704348757904022300228726475684361770186580686970717318793991803745609634927267145287292242089385899402725157478883791184616177022716940750874196341472980767647757457070269344429082366644005572655279514534821916845976742736919782536786909511787772395739254104386790993747006099739201282014223813291082365753694036759607652383337781270170965742961483210755669592850422218371597998001335632399639696386108726803932103001801520206130516134145471637137725126177572779559798958663675717764562685641910924770276501358322003764402397837265405526948517172695984892888515296609750277756395652297345967262058326684349793545419433450629778911871465610501181181082233237352108436811286154136010912220079123505369597771143065415145113323689360785609297881437988143912215075223706486467673642091321473124070149531135323798381957284911285369782859180669910409931530643561799038859520279527137496536045020535123554499166808872342387738555816361724795948668717650945139401032841679141101967202611108127167764242601545073950503805754528504207308184129947310793073435383768802801240193210401980387235587845444085843444660909828020673265290009315620489328754690798749565951805953953470932851402791654679655963183657497015358123843332409682836407213440034420026916137720567620990980257393327159139701862251764595634841341397466479401705379002753504804904688514393007719499151947030805766110225906703998449318676097774175289034547319222063789321414647554026294200742938163492700383513394191467684738513531716291539122387971419059201430360641317052304217623052328615038567995111559365651690059167118453891355809281625119124385312041561384477751207895486661436002934120657671671068885091725680035306685394605882483165133926525678562246026972962033289200733544259940449566248313469794588468375979500641518671645837492034339425921785288689813115753318489415974924704367823875026875326490930964983153474039774360013999821020308467636989947850546175232414631869808983945042114307636178253068950656615360454314979037591180079348391228818858630917694698835398768405435212957063159198557844932356038662689259817026902702028295957943508009182579139917444559226833433740466716699302196502685546875e-4951 +5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687501e-4951 +-5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687499e-4951 +-5.46779929782371190379260890042912972459857622354034501558147073054255753295009660521434106293874080779587102102080529665295047844893304825496026211338471350822573387176689751785383789570845033963493234384897511609341047969033029090288686119993125921652327780757456908215307313367394295878957740232139393310129853319126610211888963060953233950845785422003199631793594071800032514400843804841615045854626840829469327828294881838298175674523144370769439505327077912524046992686788101985028712502357968555779098305597496288175991948375220290368919956488030568463545206536359579198829053635210070171697414632960443922662694334080526864190176997186277619487638560405926908417212393004914459916660510317558023267203296664540665686303143487355117536394182579842533190638252470657276648523287454223056426260916178239688724389624700924406883725156778322327128669248001067971134780240835161999919912749368941130062333775184713893949842620045030584554856591000906652415254548036281829022414017017836373531792968500569736393059459388134289532878925936202911959860111289900618887987637185487890257175376747802810055833471650478460459250779148245153313351312860635744071818212363779076932092244234906632899168786207255077931639313903720118757997293301622787489850525574323330053349895193815663640653261384657614561732314168448072640907418419722475454249088439281362536533088134879943284462483896082614443915736191774429072907311631885819175882194201070472653674851414139198108859096891122440647971063242952915458929379913214790617434914900609409461282745336576821301251695869305718994035511225062977631807957323251343409893311558937242893589182127073929977680322999972072084511129714257799395078371652632557642689712118195363229932217741231347266655794602658713781865895628587618356133445842690980622757869697298305457864854014077743134149549581616770960047019414114115927554858644718705151733262444646312957015720874401831783399876629267632412206980788226617090546010735234775446535427950204682560784093064091008748868287818605298248793439879457512520813143459903135506837923488146278624413240301557305921665812510099227873245904315487345753286636286503807226030243834125646514462721175610422077384131141310997310167289350231522394313116195338483765836875091084530867301962551116953524641866782219275647577303198252230493416188536313334782412272272680845833966884362299362668540114271927670393635174916595231338524725341041244411123466156968910970701214636522586812703780765383816975942646584796378630871592938388807529281755454082628134037935686954169983885723045287488247562656656838905184226961694223388061375323047846826624482079286817404761883437391178335259163868151357930349068061174131050087191978828376147382620503202915394941049520564716066454820461766340754590215525559595903549562621278099530136795125074514242718392219467940568610559805583630337329057723569860511809664741164231921947415724386492152042297812796203704453738513487869185273997856308082426571227053818066616162711321820177977936612440784457475475356233845487698185296555392790365032340724558109915880751818176959751731101364826598545575062030580805510188732031382604511098551005267200735661262096661256044824137056119967967779273328271035688633522914992613122903551437420180422544707071078472935932052340497748391917547810304969780910060995596752409667301101676249036106564732671055561556337835940895462611076531105318082794457577243991861203875486751486321760491907016803052102243880722619748067919226364128975269527936779466226741495770848035680512429340764509429270927056845470429154903231124579718536587607255881903776664771069031066938472788476460322012930233295033487307239472187974104523339108479138928271958145518583355195189390314460933853291828207141736579466617460059018668855897329226526045739728421972311873652633819589252279700383580649872482332717064626876511433504720180433213145347598195242033084909143585968861500534066295124347881553551091005403198578135356959232734262569115529775393942099186306684666328819296619712127724446251513719534288754911396839196870087240104752172553479156988209602152172573903085602353234630969464420805480187541663697061615897052158736871663656287877965014700568701277294647143621722168024410452769115970094432811353897291302226031856656464346619476276280777232193768927273861205192875774054105101149361515027529971227502627819113726259972234152835169954792656314857994567825617347666484628496410640971818182042794985528278253841862020655169993625733881361630774771266021694104359050140770498084974090253693257957652720666502780042003578789909113749828579771084884825283544063138938642114971057650305046009822534888054745317987421433744650802400305823700866991679376510383079097061393271193254188545464782857356545416354777903469647826173542650507678783352302721948966801419867450746302258931065735595588435458411860251695316041515884813891649489148235939442871333362636803581913695403219306498244714254851377779848235254021151511710933136132513506853438248590522201268915519660183559208727757248071287690032431294868087337963504976682551164851571910118588306438983236282234720992802435831644343483470149103980044398219705082804408727593958279432709850087691435623519380914762150835481641373335418838088700191162340990134529298079501516522974364360061496849397757812346609541561544786426941760385242778104838331497986813457080891521791939794631694023406117934862723018080732675346126855938595967878668842110313414179033917498253204546635083703852518317784773110170897293611521619288153898185799835444909828917340811313123097443309606660312914517408855034585438849563676549437992646003145318154279326911078747823286547592935758034819293619617810739585020754384990706331937996993116942871832994234753398176556080587247232218670875630645576361123808295145013820732577370224728666082441643103852052135237029107871824725171250301064910318448715931417597297739077195100440493528574265929367637279694961039405916019750786028596604786141194054282128301344907317062205837882653447288187668851269775881511119842904443216489319071880803360647138732888340962292032766761198105218517261333777006163413042578229757889674721527422550419125841970454230312985062190118002401201824458385906966474162853345156310197990075156820042500608570209040122153751704798004826805544998060107661096550615074217477224611806173614025750822946789256052710835878978453907682264056485085181035257786386181957751285160739592729901482394153462634869665739345774507872436670632443783818831158272076058561748763500450868853206266693313118805937759162696436463954232205499407904769897092430274201583908061356909751493847146842199649381827199629139314649794586391855195314900094376198383063623654537548076548847041634904692964444271447785937256873584370873901519906946675162792020243324948282106576182619520385972302637994125842758516674039106573708797071810533658185026800374315600912099826417389956527932358515693723141301076471660852356156972570942691331009141357831788562803921393250013528417186104846166274481895569136218377916506998203230597087664208101335848418267186316816833817435119742641262509842148123971199782739179038898658917188367922633778880524581892387460749864560166810987228694195882740201814306527328178587284738493695393674639171713173248820998049990430544672477855920384647234422762398960664315801237564285400749454724277525689811714006217058533748758859430726006925769147904672059052723725947401879880819003174931850051429136071633807200697867867820953318408936940737783251194718335284929170810085473034145093815636178641952577515465395754614358036259938883256478835410391923683669874002630496812188314777763451185185037095888408590233797624565610306839281153499423939631856771230553247716937842149249317370437936795460514548456241502709554506083187473957557289508327546112770413596023012051385091755433135227727865041410075526919022495723751757317409236187691973046528983526943866654482600334585753232528142338680982794761667642582849114342880722431789416983473659854276969831295794960590320328412811499235180870848768851143690332277365212457405547117714234927198999823577119102255454804246883221953362404922531362818578378084917959937881991252055552221165810711344767874684305393079096174421066851595190710538449873436664524942803177201535670543641172447751413365584060985488039245094960522618251980431402726553036253156053265695302528858549918222892192012183135907454120104466422471117039019915913380626933201571806187365694399692832452794303126511926687883400336268251942602962629598842585977035848887708019612096528229823223761223035861698616851060438205104442934328562512103956932612648678239801726833527961417722103017259976523738041525250371628522914038044559973313673784636324377732429055180750654147242958574602882254000616086649616491964000793596226737706078983952690750565966271161482894910424917641709240148851061582354827747784181341232939744368770519956736186837511153538087714349842044477361747583160630962450473112798415799955781866094028642440427514431285362784534306334231186628526883742296008944189588248424594505408261764521458293892861035227741011955560296507532542444335659379385268289908931497662989977383599138871788886071907657098670524708807859379351100914247434499663534978656817538413802460756120940336174886746762968225700770270762668795579136738393410120995580438064423487980539512392749133346315224095644617704348757904022300228726475684361770186580686970717318793991803745609634927267145287292242089385899402725157478883791184616177022716940750874196341472980767647757457070269344429082366644005572655279514534821916845976742736919782536786909511787772395739254104386790993747006099739201282014223813291082365753694036759607652383337781270170965742961483210755669592850422218371597998001335632399639696386108726803932103001801520206130516134145471637137725126177572779559798958663675717764562685641910924770276501358322003764402397837265405526948517172695984892888515296609750277756395652297345967262058326684349793545419433450629778911871465610501181181082233237352108436811286154136010912220079123505369597771143065415145113323689360785609297881437988143912215075223706486467673642091321473124070149531135323798381957284911285369782859180669910409931530643561799038859520279527137496536045020535123554499166808872342387738555816361724795948668717650945139401032841679141101967202611108127167764242601545073950503805754528504207308184129947310793073435383768802801240193210401980387235587845444085843444660909828020673265290009315620489328754690798749565951805953953470932851402791654679655963183657497015358123843332409682836407213440034420026916137720567620990980257393327159139701862251764595634841341397466479401705379002753504804904688514393007719499151947030805766110225906703998449318676097774175289034547319222063789321414647554026294200742938163492700383513394191467684738513531716291539122387971419059201430360641317052304217623052328615038567995111559365651690059167118453891355809281625119124385312041561384477751207895486661436002934120657671671068885091725680035306685394605882483165133926525678562246026972962033289200733544259940449566248313469794588468375979500641518671645837492034339425921785288689813115753318489415974924704367823875026875326490930964983153474039774360013999821020308467636989947850546175232414631869808983945042114307636178253068950656615360454314979037591180079348391228818858630917694698835398768405435212957063159198557844932356038662689259817026902702028295957943508009182579139917444559226833433740466716699302196502685546875e-4951 +-5.4677992978237119037926089004291297245985762235403450155814707305425575329500966052143410629387408077958710210208052966529504784489330482549602621133847135082257338717668975178538378957084503396349323438489751160934104796903302909028868611999312592165232778075745690821530731336739429587895774023213939331012985331912661021188896306095323395084578542200319963179359407180003251440084380484161504585462684082946932782829488183829817567452314437076943950532707791252404699268678810198502871250235796855577909830559749628817599194837522029036891995648803056846354520653635957919882905363521007017169741463296044392266269433408052686419017699718627761948763856040592690841721239300491445991666051031755802326720329666454066568630314348735511753639418257984253319063825247065727664852328745422305642626091617823968872438962470092440688372515677832232712866924800106797113478024083516199991991274936894113006233377518471389394984262004503058455485659100090665241525454803628182902241401701783637353179296850056973639305945938813428953287892593620291195986011128990061888798763718548789025717537674780281005583347165047846045925077914824515331335131286063574407181821236377907693209224423490663289916878620725507793163931390372011875799729330162278748985052557432333005334989519381566364065326138465761456173231416844807264090741841972247545424908843928136253653308813487994328446248389608261444391573619177442907290731163188581917588219420107047265367485141413919810885909689112244064797106324295291545892937991321479061743491490060940946128274533657682130125169586930571899403551122506297763180795732325134340989331155893724289358918212707392997768032299997207208451112971425779939507837165263255764268971211819536322993221774123134726665579460265871378186589562858761835613344584269098062275786969729830545786485401407774313414954958161677096004701941411411592755485864471870515173326244464631295701572087440183178339987662926763241220698078822661709054601073523477544653542795020468256078409306409100874886828781860529824879343987945751252081314345990313550683792348814627862441324030155730592166581251009922787324590431548734575328663628650380722603024383412564651446272117561042207738413114131099731016728935023152239431311619533848376583687509108453086730196255111695352464186678221927564757730319825223049341618853631333478241227227268084583396688436229936266854011427192767039363517491659523133852472534104124441112346615696891097070121463652258681270378076538381697594264658479637863087159293838880752928175545408262813403793568695416998388572304528748824756265665683890518422696169422338806137532304784682662448207928681740476188343739117833525916386815135793034906806117413105008719197882837614738262050320291539494104952056471606645482046176634075459021552555959590354956262127809953013679512507451424271839221946794056861055980558363033732905772356986051180966474116423192194741572438649215204229781279620370445373851348786918527399785630808242657122705381806661616271132182017797793661244078445747547535623384548769818529655539279036503234072455810991588075181817695975173110136482659854557506203058080551018873203138260451109855100526720073566126209666125604482413705611996796777927332827103568863352291499261312290355143742018042254470707107847293593205234049774839191754781030496978091006099559675240966730110167624903610656473267105556155633783594089546261107653110531808279445757724399186120387548675148632176049190701680305210224388072261974806791922636412897526952793677946622674149577084803568051242934076450942927092705684547042915490323112457971853658760725588190377666477106903106693847278847646032201293023329503348730723947218797410452333910847913892827195814551858335519518939031446093385329182820714173657946661746005901866885589732922652604573972842197231187365263381958925227970038358064987248233271706462687651143350472018043321314534759819524203308490914358596886150053406629512434788155355109100540319857813535695923273426256911552977539394209918630668466632881929661971212772444625151371953428875491139683919687008724010475217255347915698820960215217257390308560235323463096946442080548018754166369706161589705215873687166365628787796501470056870127729464714362172216802441045276911597009443281135389729130222603185665646434661947627628077723219376892727386120519287577405410510114936151502752997122750262781911372625997223415283516995479265631485799456782561734766648462849641064097181818204279498552827825384186202065516999362573388136163077477126602169410435905014077049808497409025369325795765272066650278004200357878990911374982857977108488482528354406313893864211497105765030504600982253488805474531798742143374465080240030582370086699167937651038307909706139327119325418854546478285735654541635477790346964782617354265050767878335230272194896680141986745074630225893106573559558843545841186025169531604151588481389164948914823593944287133336263680358191369540321930649824471425485137777984823525402115151171093313613251350685343824859052220126891551966018355920872775724807128769003243129486808733796350497668255116485157191011858830643898323628223472099280243583164434348347014910398004439821970508280440872759395827943270985008769143562351938091476215083548164137333541883808870019116234099013452929807950151652297436436006149684939775781234660954156154478642694176038524277810483833149798681345708089152179193979463169402340611793486272301808073267534612685593859596787866884211031341417903391749825320454663508370385251831778477311017089729361152161928815389818579983544490982891734081131312309744330960666031291451740885503458543884956367654943799264600314531815427932691107874782328654759293575803481929361961781073958502075438499070633193799699311694287183299423475339817655608058724723221867087563064557636112380829514501382073257737022472866608244164310385205213523702910787182472517125030106491031844871593141759729773907719510044049352857426592936763727969496103940591601975078602859660478614119405428212830134490731706220583788265344728818766885126977588151111984290444321648931907188080336064713873288834096229203276676119810521851726133377700616341304257822975788967472152742255041912584197045423031298506219011800240120182445838590696647416285334515631019799007515682004250060857020904012215375170479800482680554499806010766109655061507421747722461180617361402575082294678925605271083587897845390768226405648508518103525778638618195775128516073959272990148239415346263486966573934577450787243667063244378381883115827207605856174876350045086885320626669331311880593775916269643646395423220549940790476989709243027420158390806135690975149384714684219964938182719962913931464979458639185519531490009437619838306362365453754807654884704163490469296444427144778593725687358437087390151990694667516279202024332494828210657618261952038597230263799412584275851667403910657370879707181053365818502680037431560091209982641738995652793235851569372314130107647166085235615697257094269133100914135783178856280392139325001352841718610484616627448189556913621837791650699820323059708766420810133584841826718631681683381743511974264126250984214812397119978273917903889865891718836792263377888052458189238746074986456016681098722869419588274020181430652732817858728473849369539367463917171317324882099804999043054467247785592038464723442276239896066431580123756428540074945472427752568981171400621705853374875885943072600692576914790467205905272372594740187988081900317493185005142913607163380720069786786782095331840893694073778325119471833528492917081008547303414509381563617864195257751546539575461435803625993888325647883541039192368366987400263049681218831477776345118518503709588840859023379762456561030683928115349942393963185677123055324771693784214924931737043793679546051454845624150270955450608318747395755728950832754611277041359602301205138509175543313522772786504141007552691902249572375175731740923618769197304652898352694386665448260033458575323252814233868098279476166764258284911434288072243178941698347365985427696983129579496059032032841281149923518087084876885114369033227736521245740554711771423492719899982357711910225545480424688322195336240492253136281857837808491795993788199125205555222116581071134476787468430539307909617442106685159519071053844987343666452494280317720153567054364117244775141336558406098548803924509496052261825198043140272655303625315605326569530252885854991822289219201218313590745412010446642247111703901991591338062693320157180618736569439969283245279430312651192668788340033626825194260296262959884258597703584888770801961209652822982322376122303586169861685106043820510444293432856251210395693261264867823980172683352796141772210301725997652373804152525037162852291403804455997331367378463632437773242905518075065414724295857460288225400061608664961649196400079359622673770607898395269075056596627116148289491042491764170924014885106158235482774778418134123293974436877051995673618683751115353808771434984204447736174758316063096245047311279841579995578186609402864244042751443128536278453430633423118662852688374229600894418958824842459450540826176452145829389286103522774101195556029650753254244433565937938526828990893149766298997738359913887178888607190765709867052470880785937935110091424743449966353497865681753841380246075612094033617488674676296822570077027076266879557913673839341012099558043806442348798053951239274913334631522409564461770434875790402230022872647568436177018658068697071731879399180374560963492726714528729224208938589940272515747888379118461617702271694075087419634147298076764775745707026934442908236664400557265527951453482191684597674273691978253678690951178777239573925410438679099374700609973920128201422381329108236575369403675960765238333778127017096574296148321075566959285042221837159799800133563239963969638610872680393210300180152020613051613414547163713772512617757277955979895866367571776456268564191092477027650135832200376440239783726540552694851717269598489288851529660975027775639565229734596726205832668434979354541943345062977891187146561050118118108223323735210843681128615413601091222007912350536959777114306541514511332368936078560929788143798814391221507522370648646767364209132147312407014953113532379838195728491128536978285918066991040993153064356179903885952027952713749653604502053512355449916680887234238773855581636172479594866871765094513940103284167914110196720261110812716776424260154507395050380575452850420730818412994731079307343538376880280124019321040198038723558784544408584344466090982802067326529000931562048932875469079874956595180595395347093285140279165467965596318365749701535812384333240968283640721344003442002691613772056762099098025739332715913970186225176459563484134139746647940170537900275350480490468851439300771949915194703080576611022590670399844931867609777417528903454731922206378932141464755402629420074293816349270038351339419146768473851353171629153912238797141905920143036064131705230421762305232861503856799511155936565169005916711845389135580928162511912438531204156138447775120789548666143600293412065767167106888509172568003530668539460588248316513392652567856224602697296203328920073354425994044956624831346979458846837597950064151867164583749203433942592178528868981311575331848941597492470436782387502687532649093096498315347403977436001399982102030846763698994785054617523241463186980898394504211430763617825306895065661536045431497903759118007934839122881885863091769469883539876840543521295706315919855784493235603866268925981702690270202829595794350800918257913991744455922683343374046671669930219650268554687501e-4951 diff --git a/stdlib/tst-strtod-round.c b/stdlib/tst-strtod-round.c new file mode 100644 index 0000000000..74385000c8 --- /dev/null +++ b/stdlib/tst-strtod-round.c @@ -0,0 +1,6298 @@ +/* Test for correct rounding of results of strtod and related + functions. + Copyright (C) 2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <float.h> +#include <math.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +struct test { + const char *s; + float f; + double d; + bool ld_ok; + long double ld; +}; + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 +# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ + ld64d, ld64n, ld64z, ld64u, ld106exact, \ + ld106d, ld106n, ld106z, ld106u, \ + ld113d, ld113n, ld113z, ld113u) \ + { s, fn, dn, true, ld53n } +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 +# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ + ld64d, ld64n, ld64z, ld64u, ld106exact, \ + ld106d, ld106n, ld106z, ld106u, \ + ld113d, ld113n, ld113z, ld113u) \ + { s, fn, dn, true, ld64n } +#elif LDBL_MANT_DIG == 106 && LDBL_MAX_EXP == 1024 +# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ + ld64d, ld64n, ld64z, ld64u, ld106exact, \ + ld106d, ld106n, ld106z, ld106u, \ + ld113d, ld113n, ld113z, ld113u) \ + { s, fn, dn, ld106exact, ld106n } +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 +# define TEST(s, fd, fn, fz, fu, dd, dn, dz, du, ld53d, ld53n, ld53z, ld53u, \ + ld64d, ld64n, ld64z, ld64u, ld106exact, \ + ld106d, ld106n, ld106z, ld106u, \ + ld113d, ld113n, ld113z, ld113u) \ + { s, fn, dn, true, ld113n } +#else +# error "unknown long double format" +#endif + +/* These tests are generated by gen-tst-strtod-round.c from + tst-strtod-round-data. */ + +static const struct test tests[] = { + TEST ("3.518437208883201171875E+013", + 0x2p+44f, + 0x2p+44f, + 0x2p+44f, + 0x2.000004p+44f, + 0x2.0000000000002p+44, + 0x2.0000000000004p+44, + 0x2.0000000000002p+44, + 0x2.0000000000004p+44, + 0x2.0000000000002p+44L, + 0x2.0000000000004p+44L, + 0x2.0000000000002p+44L, + 0x2.0000000000004p+44L, + 0x2.0000000000003p+44L, + 0x2.0000000000003p+44L, + 0x2.0000000000003p+44L, + 0x2.0000000000003p+44L, + true, + 0x2.0000000000003p+44L, + 0x2.0000000000003p+44L, + 0x2.0000000000003p+44L, + 0x2.0000000000003p+44L, + 0x2.0000000000003p+44L, + 0x2.0000000000003p+44L, + 0x2.0000000000003p+44L, + 0x2.0000000000003p+44L), + TEST ("1.00000005960464477550", + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.0000010000001p+0, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.0000010000001p+0L, + 0x1.0000010000000002p+0L, + 0x1.0000010000000002p+0L, + 0x1.0000010000000002p+0L, + 0x1.0000010000000004p+0L, + false, + 0x1.0000010000000002048242f2ffp+0L, + 0x1.0000010000000002048242f2ff8p+0L, + 0x1.0000010000000002048242f2ffp+0L, + 0x1.0000010000000002048242f2ff8p+0L, + 0x1.0000010000000002048242f2ff66p+0L, + 0x1.0000010000000002048242f2ff67p+0L, + 0x1.0000010000000002048242f2ff66p+0L, + 0x1.0000010000000002048242f2ff67p+0L), + TEST ("1.0000000596046447755", + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.0000010000001p+0, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.0000010000001p+0L, + 0x1.0000010000000002p+0L, + 0x1.0000010000000002p+0L, + 0x1.0000010000000002p+0L, + 0x1.0000010000000004p+0L, + false, + 0x1.0000010000000002048242f2ffp+0L, + 0x1.0000010000000002048242f2ff8p+0L, + 0x1.0000010000000002048242f2ffp+0L, + 0x1.0000010000000002048242f2ff8p+0L, + 0x1.0000010000000002048242f2ff66p+0L, + 0x1.0000010000000002048242f2ff67p+0L, + 0x1.0000010000000002048242f2ff66p+0L, + 0x1.0000010000000002048242f2ff67p+0L), + TEST ("1.000000059604644776", + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.0000010000001p+0, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.0000010000001p+0L, + 0x1.000001000000000ap+0L, + 0x1.000001000000000cp+0L, + 0x1.000001000000000ap+0L, + 0x1.000001000000000cp+0L, + false, + 0x1.000001000000000b3db12bdc21p+0L, + 0x1.000001000000000b3db12bdc21p+0L, + 0x1.000001000000000b3db12bdc21p+0L, + 0x1.000001000000000b3db12bdc218p+0L, + 0x1.000001000000000b3db12bdc213cp+0L, + 0x1.000001000000000b3db12bdc213dp+0L, + 0x1.000001000000000b3db12bdc213cp+0L, + 0x1.000001000000000b3db12bdc213dp+0L), + TEST ("1.000000059604644775", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000000fffffffp+0, + 0x1.000001p+0, + 0x1.000000fffffffp+0, + 0x1.000001p+0, + 0x1.000000fffffffp+0L, + 0x1.000001p+0L, + 0x1.000000fffffffp+0L, + 0x1.000001p+0L, + 0x1.000000fffffffff8p+0L, + 0x1.000000fffffffff8p+0L, + 0x1.000000fffffffff8p+0L, + 0x1.000000fffffffffap+0L, + false, + 0x1.000000fffffffff8cb535a09dd8p+0L, + 0x1.000000fffffffff8cb535a09dd8p+0L, + 0x1.000000fffffffff8cb535a09dd8p+0L, + 0x1.000000fffffffff8cb535a09dep+0L, + 0x1.000000fffffffff8cb535a09dd9p+0L, + 0x1.000000fffffffff8cb535a09dd91p+0L, + 0x1.000000fffffffff8cb535a09dd9p+0L, + 0x1.000000fffffffff8cb535a09dd91p+0L), + TEST ("1.00000005960464478", + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.0000010000001p+0, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.0000010000001p+0L, + 0x1.0000010000000054p+0L, + 0x1.0000010000000056p+0L, + 0x1.0000010000000054p+0L, + 0x1.0000010000000056p+0L, + false, + 0x1.0000010000000055072873252f8p+0L, + 0x1.0000010000000055072873253p+0L, + 0x1.0000010000000055072873252f8p+0L, + 0x1.0000010000000055072873253p+0L, + 0x1.0000010000000055072873252febp+0L, + 0x1.0000010000000055072873252febp+0L, + 0x1.0000010000000055072873252febp+0L, + 0x1.0000010000000055072873252fecp+0L), + TEST ("1.0000000596046448", + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.0000010000001p+0, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.0000010000001p+0L, + 0x1.00000100000001c4p+0L, + 0x1.00000100000001c6p+0L, + 0x1.00000100000001c4p+0L, + 0x1.00000100000001c6p+0L, + false, + 0x1.00000100000001c5f67cd79279p+0L, + 0x1.00000100000001c5f67cd792798p+0L, + 0x1.00000100000001c5f67cd79279p+0L, + 0x1.00000100000001c5f67cd792798p+0L, + 0x1.00000100000001c5f67cd7927953p+0L, + 0x1.00000100000001c5f67cd7927954p+0L, + 0x1.00000100000001c5f67cd7927953p+0L, + 0x1.00000100000001c5f67cd7927954p+0L), + TEST ("1.000000059604645", + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.0000010000001p+0, + 0x1.0000010000001p+0, + 0x1.0000010000001p+0, + 0x1.0000010000002p+0, + 0x1.0000010000001p+0L, + 0x1.0000010000001p+0L, + 0x1.0000010000001p+0L, + 0x1.0000010000002p+0L, + 0x1.000001000000102ep+0L, + 0x1.000001000000103p+0L, + 0x1.000001000000102ep+0L, + 0x1.000001000000103p+0L, + false, + 0x1.000001000000102f4fc8c3d757p+0L, + 0x1.000001000000102f4fc8c3d7578p+0L, + 0x1.000001000000102f4fc8c3d757p+0L, + 0x1.000001000000102f4fc8c3d7578p+0L, + 0x1.000001000000102f4fc8c3d75769p+0L, + 0x1.000001000000102f4fc8c3d75769p+0L, + 0x1.000001000000102f4fc8c3d75769p+0L, + 0x1.000001000000102f4fc8c3d7576ap+0L), + TEST ("1.00000005960464", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000000fffffeap+0, + 0x1.000000fffffeap+0, + 0x1.000000fffffeap+0, + 0x1.000000fffffebp+0, + 0x1.000000fffffeap+0L, + 0x1.000000fffffeap+0L, + 0x1.000000fffffeap+0L, + 0x1.000000fffffebp+0L, + 0x1.000000fffffea7e4p+0L, + 0x1.000000fffffea7e6p+0L, + 0x1.000000fffffea7e4p+0L, + 0x1.000000fffffea7e6p+0L, + false, + 0x1.000000fffffea7e5975eb11da7p+0L, + 0x1.000000fffffea7e5975eb11da78p+0L, + 0x1.000000fffffea7e5975eb11da7p+0L, + 0x1.000000fffffea7e5975eb11da78p+0L, + 0x1.000000fffffea7e5975eb11da74ap+0L, + 0x1.000000fffffea7e5975eb11da74bp+0L, + 0x1.000000fffffea7e5975eb11da74ap+0L, + 0x1.000000fffffea7e5975eb11da74bp+0L), + TEST ("1.0000000596046", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000000fffff36p+0, + 0x1.000000fffff36p+0, + 0x1.000000fffff36p+0, + 0x1.000000fffff37p+0, + 0x1.000000fffff36p+0L, + 0x1.000000fffff36p+0L, + 0x1.000000fffff36p+0L, + 0x1.000000fffff37p+0L, + 0x1.000000fffff36596p+0L, + 0x1.000000fffff36598p+0L, + 0x1.000000fffff36596p+0L, + 0x1.000000fffff36598p+0L, + false, + 0x1.000000fffff36597d40e1b5026p+0L, + 0x1.000000fffff36597d40e1b50268p+0L, + 0x1.000000fffff36597d40e1b5026p+0L, + 0x1.000000fffff36597d40e1b50268p+0L, + 0x1.000000fffff36597d40e1b502655p+0L, + 0x1.000000fffff36597d40e1b502656p+0L, + 0x1.000000fffff36597d40e1b502655p+0L, + 0x1.000000fffff36597d40e1b502656p+0L), + TEST ("1.000000059605", + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000001000063fp+0, + 0x1.000001000064p+0, + 0x1.000001000063fp+0, + 0x1.000001000064p+0, + 0x1.000001000063fp+0L, + 0x1.000001000064p+0L, + 0x1.000001000063fp+0L, + 0x1.000001000064p+0L, + 0x1.000001000063fcap+0L, + 0x1.000001000063fca2p+0L, + 0x1.000001000063fcap+0L, + 0x1.000001000063fca2p+0L, + false, + 0x1.000001000063fca17533f5572f8p+0L, + 0x1.000001000063fca17533f5573p+0L, + 0x1.000001000063fca17533f5572f8p+0L, + 0x1.000001000063fca17533f5573p+0L, + 0x1.000001000063fca17533f5572fe9p+0L, + 0x1.000001000063fca17533f5572feap+0L, + 0x1.000001000063fca17533f5572fe9p+0L, + 0x1.000001000063fca17533f5572feap+0L), + TEST ("1.00000005960", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000000fffae49p+0, + 0x1.000000fffae4ap+0, + 0x1.000000fffae49p+0, + 0x1.000000fffae4ap+0, + 0x1.000000fffae49p+0L, + 0x1.000000fffae4ap+0L, + 0x1.000000fffae49p+0L, + 0x1.000000fffae4ap+0L, + 0x1.000000fffae49ca8p+0L, + 0x1.000000fffae49caap+0L, + 0x1.000000fffae49ca8p+0L, + 0x1.000000fffae49caap+0L, + false, + 0x1.000000fffae49ca916dacfff38p+0L, + 0x1.000000fffae49ca916dacfff38p+0L, + 0x1.000000fffae49ca916dacfff38p+0L, + 0x1.000000fffae49ca916dacfff388p+0L, + 0x1.000000fffae49ca916dacfff382dp+0L, + 0x1.000000fffae49ca916dacfff382dp+0L, + 0x1.000000fffae49ca916dacfff382dp+0L, + 0x1.000000fffae49ca916dacfff382ep+0L), + TEST ("1.0000000596", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000000fffae49p+0, + 0x1.000000fffae4ap+0, + 0x1.000000fffae49p+0, + 0x1.000000fffae4ap+0, + 0x1.000000fffae49p+0L, + 0x1.000000fffae4ap+0L, + 0x1.000000fffae49p+0L, + 0x1.000000fffae4ap+0L, + 0x1.000000fffae49ca8p+0L, + 0x1.000000fffae49caap+0L, + 0x1.000000fffae49ca8p+0L, + 0x1.000000fffae49caap+0L, + false, + 0x1.000000fffae49ca916dacfff38p+0L, + 0x1.000000fffae49ca916dacfff38p+0L, + 0x1.000000fffae49ca916dacfff38p+0L, + 0x1.000000fffae49ca916dacfff388p+0L, + 0x1.000000fffae49ca916dacfff382dp+0L, + 0x1.000000fffae49ca916dacfff382dp+0L, + 0x1.000000fffae49ca916dacfff382dp+0L, + 0x1.000000fffae49ca916dacfff382ep+0L), + TEST ("1.000000060", + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.00000101b2b29p+0, + 0x1.00000101b2b2ap+0, + 0x1.00000101b2b29p+0, + 0x1.00000101b2b2ap+0, + 0x1.00000101b2b29p+0L, + 0x1.00000101b2b2ap+0L, + 0x1.00000101b2b29p+0L, + 0x1.00000101b2b2ap+0L, + 0x1.00000101b2b29a46p+0L, + 0x1.00000101b2b29a46p+0L, + 0x1.00000101b2b29a46p+0L, + 0x1.00000101b2b29a48p+0L, + false, + 0x1.00000101b2b29a4692b67b7ca3p+0L, + 0x1.00000101b2b29a4692b67b7ca3p+0L, + 0x1.00000101b2b29a4692b67b7ca3p+0L, + 0x1.00000101b2b29a4692b67b7ca38p+0L, + 0x1.00000101b2b29a4692b67b7ca313p+0L, + 0x1.00000101b2b29a4692b67b7ca314p+0L, + 0x1.00000101b2b29a4692b67b7ca313p+0L, + 0x1.00000101b2b29a4692b67b7ca314p+0L), + TEST ("1.00000006", + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.00000101b2b29p+0, + 0x1.00000101b2b2ap+0, + 0x1.00000101b2b29p+0, + 0x1.00000101b2b2ap+0, + 0x1.00000101b2b29p+0L, + 0x1.00000101b2b2ap+0L, + 0x1.00000101b2b29p+0L, + 0x1.00000101b2b2ap+0L, + 0x1.00000101b2b29a46p+0L, + 0x1.00000101b2b29a46p+0L, + 0x1.00000101b2b29a46p+0L, + 0x1.00000101b2b29a48p+0L, + false, + 0x1.00000101b2b29a4692b67b7ca3p+0L, + 0x1.00000101b2b29a4692b67b7ca3p+0L, + 0x1.00000101b2b29a4692b67b7ca3p+0L, + 0x1.00000101b2b29a4692b67b7ca38p+0L, + 0x1.00000101b2b29a4692b67b7ca313p+0L, + 0x1.00000101b2b29a4692b67b7ca314p+0L, + 0x1.00000101b2b29a4692b67b7ca313p+0L, + 0x1.00000101b2b29a4692b67b7ca314p+0L), + TEST ("1.0000001", + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000001ad7f29ap+0, + 0x1.000001ad7f29bp+0, + 0x1.000001ad7f29ap+0, + 0x1.000001ad7f29bp+0, + 0x1.000001ad7f29ap+0L, + 0x1.000001ad7f29bp+0L, + 0x1.000001ad7f29ap+0L, + 0x1.000001ad7f29bp+0L, + 0x1.000001ad7f29abcap+0L, + 0x1.000001ad7f29abcap+0L, + 0x1.000001ad7f29abcap+0L, + 0x1.000001ad7f29abccp+0L, + false, + 0x1.000001ad7f29abcaf485787a65p+0L, + 0x1.000001ad7f29abcaf485787a65p+0L, + 0x1.000001ad7f29abcaf485787a65p+0L, + 0x1.000001ad7f29abcaf485787a658p+0L, + 0x1.000001ad7f29abcaf485787a652p+0L, + 0x1.000001ad7f29abcaf485787a6521p+0L, + 0x1.000001ad7f29abcaf485787a652p+0L, + 0x1.000001ad7f29abcaf485787a6521p+0L), + TEST ("1.000000", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1p+0, + 0x1p+0, + 0x1p+0, + 0x1p+0, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + true, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L), + TEST ("1.00000000000000011113", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0, + 0x1.0000000000001p+0, + 0x1p+0, + 0x1.0000000000001p+0, + 0x1p+0L, + 0x1.0000000000001p+0L, + 0x1p+0L, + 0x1.0000000000001p+0L, + 0x1.00000000000008p+0L, + 0x1.0000000000000802p+0L, + 0x1.00000000000008p+0L, + 0x1.0000000000000802p+0L, + false, + 0x1.0000000000000801fc96557232p+0L, + 0x1.0000000000000801fc96557232p+0L, + 0x1.0000000000000801fc96557232p+0L, + 0x1.0000000000000801fc965572328p+0L, + 0x1.0000000000000801fc9655723222p+0L, + 0x1.0000000000000801fc9655723222p+0L, + 0x1.0000000000000801fc9655723222p+0L, + 0x1.0000000000000801fc9655723223p+0L), + TEST ("1.00000000000000011103", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0, + 0x1.0000000000001p+0, + 0x1p+0, + 0x1.0000000000001p+0, + 0x1p+0L, + 0x1.0000000000001p+0L, + 0x1p+0L, + 0x1.0000000000001p+0L, + 0x1.00000000000008p+0L, + 0x1.00000000000008p+0L, + 0x1.00000000000008p+0L, + 0x1.0000000000000802p+0L, + false, + 0x1.00000000000008002459c076c48p+0L, + 0x1.00000000000008002459c076c5p+0L, + 0x1.00000000000008002459c076c48p+0L, + 0x1.00000000000008002459c076c5p+0L, + 0x1.00000000000008002459c076c4f7p+0L, + 0x1.00000000000008002459c076c4f8p+0L, + 0x1.00000000000008002459c076c4f7p+0L, + 0x1.00000000000008002459c076c4f8p+0L), + TEST ("1.00000000000000011102", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0, + 0x1p+0, + 0x1p+0, + 0x1.0000000000001p+0, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1.0000000000001p+0L, + 0x1.00000000000007fep+0L, + 0x1.00000000000008p+0L, + 0x1.00000000000007fep+0L, + 0x1.00000000000008p+0L, + false, + 0x1.00000000000007fff5207e5dap+0L, + 0x1.00000000000007fff5207e5da08p+0L, + 0x1.00000000000007fff5207e5dap+0L, + 0x1.00000000000007fff5207e5da08p+0L, + 0x1.00000000000007fff5207e5da073p+0L, + 0x1.00000000000007fff5207e5da073p+0L, + 0x1.00000000000007fff5207e5da073p+0L, + 0x1.00000000000007fff5207e5da074p+0L), + TEST ("1.00000000000000011101", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0, + 0x1p+0, + 0x1p+0, + 0x1.0000000000001p+0, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1.0000000000001p+0L, + 0x1.00000000000007fep+0L, + 0x1.00000000000008p+0L, + 0x1.00000000000007fep+0L, + 0x1.00000000000008p+0L, + false, + 0x1.00000000000007ffc5e73c447b8p+0L, + 0x1.00000000000007ffc5e73c447cp+0L, + 0x1.00000000000007ffc5e73c447b8p+0L, + 0x1.00000000000007ffc5e73c447cp+0L, + 0x1.00000000000007ffc5e73c447befp+0L, + 0x1.00000000000007ffc5e73c447befp+0L, + 0x1.00000000000007ffc5e73c447befp+0L, + 0x1.00000000000007ffc5e73c447bfp+0L), + TEST ("1.0000000000000001111", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0, + 0x1.0000000000001p+0, + 0x1p+0, + 0x1.0000000000001p+0, + 0x1p+0L, + 0x1.0000000000001p+0L, + 0x1p+0L, + 0x1.0000000000001p+0L, + 0x1.00000000000008p+0L, + 0x1.0000000000000802p+0L, + 0x1.00000000000008p+0L, + 0x1.0000000000000802p+0L, + false, + 0x1.00000000000008016eea8f26c48p+0L, + 0x1.00000000000008016eea8f26c48p+0L, + 0x1.00000000000008016eea8f26c48p+0L, + 0x1.00000000000008016eea8f26c5p+0L, + 0x1.00000000000008016eea8f26c495p+0L, + 0x1.00000000000008016eea8f26c496p+0L, + 0x1.00000000000008016eea8f26c495p+0L, + 0x1.00000000000008016eea8f26c496p+0L), + TEST ("1.000000000000000111", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0, + 0x1p+0, + 0x1p+0, + 0x1.0000000000001p+0, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1.0000000000001p+0L, + 0x1.00000000000007fep+0L, + 0x1.00000000000008p+0L, + 0x1.00000000000007fep+0L, + 0x1.00000000000008p+0L, + false, + 0x1.00000000000007ff96adfa2b57p+0L, + 0x1.00000000000007ff96adfa2b578p+0L, + 0x1.00000000000007ff96adfa2b57p+0L, + 0x1.00000000000007ff96adfa2b578p+0L, + 0x1.00000000000007ff96adfa2b576ap+0L, + 0x1.00000000000007ff96adfa2b576bp+0L, + 0x1.00000000000007ff96adfa2b576ap+0L, + 0x1.00000000000007ff96adfa2b576bp+0L), + TEST ("1.00000000000000011", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0, + 0x1p+0, + 0x1p+0, + 0x1.0000000000001p+0, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1.0000000000001p+0L, + 0x1.00000000000007ecp+0L, + 0x1.00000000000007eep+0L, + 0x1.00000000000007ecp+0L, + 0x1.00000000000007eep+0L, + false, + 0x1.00000000000007ed24502859138p+0L, + 0x1.00000000000007ed24502859138p+0L, + 0x1.00000000000007ed24502859138p+0L, + 0x1.00000000000007ed2450285914p+0L, + 0x1.00000000000007ed2450285913bfp+0L, + 0x1.00000000000007ed2450285913bfp+0L, + 0x1.00000000000007ed2450285913bfp+0L, + 0x1.00000000000007ed2450285913cp+0L), + TEST ("1.0000000000000001", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0, + 0x1p+0, + 0x1p+0, + 0x1.0000000000001p+0, + 0x1p+0L, + 0x1p+0L, + 0x1p+0L, + 0x1.0000000000001p+0L, + 0x1.0000000000000734p+0L, + 0x1.0000000000000734p+0L, + 0x1.0000000000000734p+0L, + 0x1.0000000000000736p+0L, + false, + 0x1.0000000000000734aca5f6226fp+0L, + 0x1.0000000000000734aca5f6226fp+0L, + 0x1.0000000000000734aca5f6226fp+0L, + 0x1.0000000000000734aca5f6226f8p+0L, + 0x1.0000000000000734aca5f6226f0ap+0L, + 0x1.0000000000000734aca5f6226f0bp+0L, + 0x1.0000000000000734aca5f6226f0ap+0L, + 0x1.0000000000000734aca5f6226f0bp+0L), + TEST ("3929201589819414e-25", + 0x1.b0053p-32f, + 0x1.b00532p-32f, + 0x1.b0053p-32f, + 0x1.b00532p-32f, + 0x1.b005314e2421ep-32, + 0x1.b005314e2421ep-32, + 0x1.b005314e2421ep-32, + 0x1.b005314e2421fp-32, + 0x1.b005314e2421ep-32L, + 0x1.b005314e2421ep-32L, + 0x1.b005314e2421ep-32L, + 0x1.b005314e2421fp-32L, + 0x1.b005314e2421e7fep-32L, + 0x1.b005314e2421e8p-32L, + 0x1.b005314e2421e7fep-32L, + 0x1.b005314e2421e8p-32L, + false, + 0x1.b005314e2421e7ffb472840c5ap-32L, + 0x1.b005314e2421e7ffb472840c5a8p-32L, + 0x1.b005314e2421e7ffb472840c5ap-32L, + 0x1.b005314e2421e7ffb472840c5a8p-32L, + 0x1.b005314e2421e7ffb472840c5a6ep-32L, + 0x1.b005314e2421e7ffb472840c5a6fp-32L, + 0x1.b005314e2421e7ffb472840c5a6ep-32L, + 0x1.b005314e2421e7ffb472840c5a6fp-32L), + TEST ("0.0000000000000000000000000000000000000000000021019476964872" + "256063855943749348741969203929128147736576356024258346866240" + "28790902229957282543182373046875", + 0x8p-152f, + 0x1p-148f, + 0x8p-152f, + 0x1p-148f, + 0xcp-152, + 0xcp-152, + 0xcp-152, + 0xcp-152, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + true, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L), + TEST ("1.00000005960464477539062499", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000000fffffffp+0, + 0x1.000001p+0, + 0x1.000000fffffffp+0, + 0x1.000001p+0, + 0x1.000000fffffffp+0L, + 0x1.000001p+0L, + 0x1.000000fffffffp+0L, + 0x1.000001p+0L, + 0x1.000000fffffffffep+0L, + 0x1.000001p+0L, + 0x1.000000fffffffffep+0L, + 0x1.000001p+0L, + false, + 0x1.000000fffffffffffffffce7b78p+0L, + 0x1.000000fffffffffffffffce7b8p+0L, + 0x1.000000fffffffffffffffce7b78p+0L, + 0x1.000000fffffffffffffffce7b8p+0L, + 0x1.000000fffffffffffffffce7b7e7p+0L, + 0x1.000000fffffffffffffffce7b7e7p+0L, + 0x1.000000fffffffffffffffce7b7e7p+0L, + 0x1.000000fffffffffffffffce7b7e8p+0L), + TEST ("1.000000059604644775390625", + 0x1p+0f, + 0x1p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + true, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L), + TEST ("1.00000005960464477539062501", + 0x1p+0f, + 0x1.000002p+0f, + 0x1p+0f, + 0x1.000002p+0f, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.000001p+0, + 0x1.0000010000001p+0, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.0000010000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.000001p+0L, + 0x1.0000010000000002p+0L, + false, + 0x1.00000100000000000000031848p+0L, + 0x1.00000100000000000000031848p+0L, + 0x1.00000100000000000000031848p+0L, + 0x1.000001000000000000000318488p+0L, + 0x1.0000010000000000000003184818p+0L, + 0x1.0000010000000000000003184819p+0L, + 0x1.0000010000000000000003184818p+0L, + 0x1.0000010000000000000003184819p+0L), + TEST ("1.00000011920928955078125", + 0x1.000002p+0f, + 0x1.000002p+0f, + 0x1.000002p+0f, + 0x1.000002p+0f, + 0x1.000002p+0, + 0x1.000002p+0, + 0x1.000002p+0, + 0x1.000002p+0, + 0x1.000002p+0L, + 0x1.000002p+0L, + 0x1.000002p+0L, + 0x1.000002p+0L, + 0x1.000002p+0L, + 0x1.000002p+0L, + 0x1.000002p+0L, + 0x1.000002p+0L, + true, + 0x1.000002p+0L, + 0x1.000002p+0L, + 0x1.000002p+0L, + 0x1.000002p+0L, + 0x1.000002p+0L, + 0x1.000002p+0L, + 0x1.000002p+0L, + 0x1.000002p+0L), + TEST ("1.00000017881393432617187499", + 0x1.000002p+0f, + 0x1.000002p+0f, + 0x1.000002p+0f, + 0x1.000004p+0f, + 0x1.000002fffffffp+0, + 0x1.000003p+0, + 0x1.000002fffffffp+0, + 0x1.000003p+0, + 0x1.000002fffffffp+0L, + 0x1.000003p+0L, + 0x1.000002fffffffp+0L, + 0x1.000003p+0L, + 0x1.000002fffffffffep+0L, + 0x1.000003p+0L, + 0x1.000002fffffffffep+0L, + 0x1.000003p+0L, + false, + 0x1.000002fffffffffffffffce7b78p+0L, + 0x1.000002fffffffffffffffce7b8p+0L, + 0x1.000002fffffffffffffffce7b78p+0L, + 0x1.000002fffffffffffffffce7b8p+0L, + 0x1.000002fffffffffffffffce7b7e7p+0L, + 0x1.000002fffffffffffffffce7b7e7p+0L, + 0x1.000002fffffffffffffffce7b7e7p+0L, + 0x1.000002fffffffffffffffce7b7e8p+0L), + TEST ("1.000000178813934326171875", + 0x1.000002p+0f, + 0x1.000004p+0f, + 0x1.000002p+0f, + 0x1.000004p+0f, + 0x1.000003p+0, + 0x1.000003p+0, + 0x1.000003p+0, + 0x1.000003p+0, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + true, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L), + TEST ("1.00000017881393432617187501", + 0x1.000002p+0f, + 0x1.000004p+0f, + 0x1.000002p+0f, + 0x1.000004p+0f, + 0x1.000003p+0, + 0x1.000003p+0, + 0x1.000003p+0, + 0x1.0000030000001p+0, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.0000030000001p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.000003p+0L, + 0x1.0000030000000002p+0L, + false, + 0x1.00000300000000000000031848p+0L, + 0x1.00000300000000000000031848p+0L, + 0x1.00000300000000000000031848p+0L, + 0x1.000003000000000000000318488p+0L, + 0x1.0000030000000000000003184818p+0L, + 0x1.0000030000000000000003184819p+0L, + 0x1.0000030000000000000003184818p+0L, + 0x1.0000030000000000000003184819p+0L), + TEST ("1.0000002384185791015625", + 0x1.000004p+0f, + 0x1.000004p+0f, + 0x1.000004p+0f, + 0x1.000004p+0f, + 0x1.000004p+0, + 0x1.000004p+0, + 0x1.000004p+0, + 0x1.000004p+0, + 0x1.000004p+0L, + 0x1.000004p+0L, + 0x1.000004p+0L, + 0x1.000004p+0L, + 0x1.000004p+0L, + 0x1.000004p+0L, + 0x1.000004p+0L, + 0x1.000004p+0L, + true, + 0x1.000004p+0L, + 0x1.000004p+0L, + 0x1.000004p+0L, + 0x1.000004p+0L, + 0x1.000004p+0L, + 0x1.000004p+0L, + 0x1.000004p+0L, + 0x1.000004p+0L), + TEST ("1.08420217248550443400745280086994171142578125e-19", + 0x2p-64f, + 0x2p-64f, + 0x2p-64f, + 0x2p-64f, + 0x2p-64, + 0x2p-64, + 0x2p-64, + 0x2p-64, + 0x2p-64L, + 0x2p-64L, + 0x2p-64L, + 0x2p-64L, + 0x2p-64L, + 0x2p-64L, + 0x2p-64L, + 0x2p-64L, + true, + 0x2p-64L, + 0x2p-64L, + 0x2p-64L, + 0x2p-64L, + 0x2p-64L, + 0x2p-64L, + 0x2p-64L, + 0x2p-64L), + TEST ("1.0842022371089897897127399001987457793916291848290711641311" + "645507812499e-19", + 0x2p-64f, + 0x2p-64f, + 0x2p-64f, + 0x2.000004p-64f, + 0x2.000001ffffffep-64, + 0x2.000002p-64, + 0x2.000001ffffffep-64, + 0x2.000002p-64, + 0x2.000001ffffffep-64L, + 0x2.000002p-64L, + 0x2.000001ffffffep-64L, + 0x2.000002p-64L, + 0x2.000001fffffffffcp-64L, + 0x2.000002p-64L, + 0x2.000001fffffffffcp-64L, + 0x2.000002p-64L, + false, + 0x2.000001ffffffffffffffffffffp-64L, + 0x2.000002p-64L, + 0x2.000001ffffffffffffffffffffp-64L, + 0x2.000002p-64L, + 0x2.000001fffffffffffffffffffffep-64L, + 0x2.000002p-64L, + 0x2.000001fffffffffffffffffffffep-64L, + 0x2.000002p-64L), + TEST ("1.0842022371089897897127399001987457793916291848290711641311" + "6455078125e-19", + 0x2p-64f, + 0x2p-64f, + 0x2p-64f, + 0x2.000004p-64f, + 0x2.000002p-64, + 0x2.000002p-64, + 0x2.000002p-64, + 0x2.000002p-64, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + true, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L), + TEST ("1.0842022371089897897127399001987457793916291848290711641311" + "645507812501e-19", + 0x2p-64f, + 0x2.000004p-64f, + 0x2p-64f, + 0x2.000004p-64f, + 0x2.000002p-64, + 0x2.000002p-64, + 0x2.000002p-64, + 0x2.0000020000002p-64, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.0000020000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.0000020000000004p-64L, + false, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.00000200000000000000000001p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.000002p-64L, + 0x2.0000020000000000000000000002p-64L), + TEST ("1.0842023017324751454180269995275498473574771196581423282623" + "291015625e-19", + 0x2.000004p-64f, + 0x2.000004p-64f, + 0x2.000004p-64f, + 0x2.000004p-64f, + 0x2.000004p-64, + 0x2.000004p-64, + 0x2.000004p-64, + 0x2.000004p-64, + 0x2.000004p-64L, + 0x2.000004p-64L, + 0x2.000004p-64L, + 0x2.000004p-64L, + 0x2.000004p-64L, + 0x2.000004p-64L, + 0x2.000004p-64L, + 0x2.000004p-64L, + true, + 0x2.000004p-64L, + 0x2.000004p-64L, + 0x2.000004p-64L, + 0x2.000004p-64L, + 0x2.000004p-64L, + 0x2.000004p-64L, + 0x2.000004p-64L, + 0x2.000004p-64L), + TEST ("1.0842023663559605011233140988563539153233250544872134923934" + "936523437499e-19", + 0x2.000004p-64f, + 0x2.000004p-64f, + 0x2.000004p-64f, + 0x2.000008p-64f, + 0x2.000005ffffffep-64, + 0x2.000006p-64, + 0x2.000005ffffffep-64, + 0x2.000006p-64, + 0x2.000005ffffffep-64L, + 0x2.000006p-64L, + 0x2.000005ffffffep-64L, + 0x2.000006p-64L, + 0x2.000005fffffffffcp-64L, + 0x2.000006p-64L, + 0x2.000005fffffffffcp-64L, + 0x2.000006p-64L, + false, + 0x2.000005ffffffffffffffffffffp-64L, + 0x2.000006p-64L, + 0x2.000005ffffffffffffffffffffp-64L, + 0x2.000006p-64L, + 0x2.000005fffffffffffffffffffffep-64L, + 0x2.000006p-64L, + 0x2.000005fffffffffffffffffffffep-64L, + 0x2.000006p-64L), + TEST ("1.0842023663559605011233140988563539153233250544872134923934" + "9365234375e-19", + 0x2.000004p-64f, + 0x2.000008p-64f, + 0x2.000004p-64f, + 0x2.000008p-64f, + 0x2.000006p-64, + 0x2.000006p-64, + 0x2.000006p-64, + 0x2.000006p-64, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + true, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L), + TEST ("1.0842023663559605011233140988563539153233250544872134923934" + "936523437501e-19", + 0x2.000004p-64f, + 0x2.000008p-64f, + 0x2.000004p-64f, + 0x2.000008p-64f, + 0x2.000006p-64, + 0x2.000006p-64, + 0x2.000006p-64, + 0x2.0000060000002p-64, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.0000060000002p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.0000060000000004p-64L, + false, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.00000600000000000000000001p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.000006p-64L, + 0x2.0000060000000000000000000002p-64L), + TEST ("1.0842024309794458568286011981851579832891729893162846565246" + "58203125e-19", + 0x2.000008p-64f, + 0x2.000008p-64f, + 0x2.000008p-64f, + 0x2.000008p-64f, + 0x2.000008p-64, + 0x2.000008p-64, + 0x2.000008p-64, + 0x2.000008p-64, + 0x2.000008p-64L, + 0x2.000008p-64L, + 0x2.000008p-64L, + 0x2.000008p-64L, + 0x2.000008p-64L, + 0x2.000008p-64L, + 0x2.000008p-64L, + 0x2.000008p-64L, + true, + 0x2.000008p-64L, + 0x2.000008p-64L, + 0x2.000008p-64L, + 0x2.000008p-64L, + 0x2.000008p-64L, + 0x2.000008p-64L, + 0x2.000008p-64L, + 0x2.000008p-64L), + TEST ("7.5231638452626400509999138382223723380394595633413601376560" + "1092018187046051025390625e-37", + 0x1p-120f, + 0x1p-120f, + 0x1p-120f, + 0x1p-120f, + 0x1p-120, + 0x1p-120, + 0x1p-120, + 0x1p-120, + 0x1p-120L, + 0x1p-120L, + 0x1p-120L, + 0x1p-120L, + 0x1p-120L, + 0x1p-120L, + 0x1p-120L, + 0x1p-120L, + true, + 0x1p-120L, + 0x1p-120L, + 0x1p-120L, + 0x1p-120L, + 0x1p-120L, + 0x1p-120L, + 0x1p-120L, + 0x1p-120L), + TEST ("7.5231642936781486349413765338158389908126215730251815381410" + "578824437213052434003657253924757242202758789062499e-37", + 0x1p-120f, + 0x1p-120f, + 0x1p-120f, + 0x1.000002p-120f, + 0x1.000000fffffffp-120, + 0x1.000001p-120, + 0x1.000000fffffffp-120, + 0x1.000001p-120, + 0x1.000000fffffffp-120L, + 0x1.000001p-120L, + 0x1.000000fffffffp-120L, + 0x1.000001p-120L, + 0x1.000000fffffffffep-120L, + 0x1.000001p-120L, + 0x1.000000fffffffffep-120L, + 0x1.000001p-120L, + false, + 0x1.000000ffffffffffffffffffff8p-120L, + 0x1.000001p-120L, + 0x1.000000ffffffffffffffffffff8p-120L, + 0x1.000001p-120L, + 0x1.000000ffffffffffffffffffffffp-120L, + 0x1.000001p-120L, + 0x1.000000ffffffffffffffffffffffp-120L, + 0x1.000001p-120L), + TEST ("7.5231642936781486349413765338158389908126215730251815381410" + "5788244372130524340036572539247572422027587890625e-37", + 0x1p-120f, + 0x1p-120f, + 0x1p-120f, + 0x1.000002p-120f, + 0x1.000001p-120, + 0x1.000001p-120, + 0x1.000001p-120, + 0x1.000001p-120, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + true, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L), + TEST ("7.5231642936781486349413765338158389908126215730251815381410" + "578824437213052434003657253924757242202758789062501e-37", + 0x1p-120f, + 0x1.000002p-120f, + 0x1p-120f, + 0x1.000002p-120f, + 0x1.000001p-120, + 0x1.000001p-120, + 0x1.000001p-120, + 0x1.0000010000001p-120, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.0000010000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.0000010000000002p-120L, + false, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001000000000000000000008p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.000001p-120L, + 0x1.0000010000000000000000000001p-120L), + TEST ("7.5231647420936572188828392294093056435857835827090029386261" + "048447055721499765468252007849514484405517578125e-37", + 0x1.000002p-120f, + 0x1.000002p-120f, + 0x1.000002p-120f, + 0x1.000002p-120f, + 0x1.000002p-120, + 0x1.000002p-120, + 0x1.000002p-120, + 0x1.000002p-120, + 0x1.000002p-120L, + 0x1.000002p-120L, + 0x1.000002p-120L, + 0x1.000002p-120L, + 0x1.000002p-120L, + 0x1.000002p-120L, + 0x1.000002p-120L, + 0x1.000002p-120L, + true, + 0x1.000002p-120L, + 0x1.000002p-120L, + 0x1.000002p-120L, + 0x1.000002p-120L, + 0x1.000002p-120L, + 0x1.000002p-120L, + 0x1.000002p-120L, + 0x1.000002p-120L), + TEST ("7.5231651905091658028243019250027722963589455923928243391111" + "518069674229947096932846761774271726608276367187499e-37", + 0x1.000002p-120f, + 0x1.000002p-120f, + 0x1.000002p-120f, + 0x1.000004p-120f, + 0x1.000002fffffffp-120, + 0x1.000003p-120, + 0x1.000002fffffffp-120, + 0x1.000003p-120, + 0x1.000002fffffffp-120L, + 0x1.000003p-120L, + 0x1.000002fffffffp-120L, + 0x1.000003p-120L, + 0x1.000002fffffffffep-120L, + 0x1.000003p-120L, + 0x1.000002fffffffffep-120L, + 0x1.000003p-120L, + false, + 0x1.000002ffffffffffffffffffff8p-120L, + 0x1.000003p-120L, + 0x1.000002ffffffffffffffffffff8p-120L, + 0x1.000003p-120L, + 0x1.000002ffffffffffffffffffffffp-120L, + 0x1.000003p-120L, + 0x1.000002ffffffffffffffffffffffp-120L, + 0x1.000003p-120L), + TEST ("7.5231651905091658028243019250027722963589455923928243391111" + "5180696742299470969328467617742717266082763671875e-37", + 0x1.000002p-120f, + 0x1.000004p-120f, + 0x1.000002p-120f, + 0x1.000004p-120f, + 0x1.000003p-120, + 0x1.000003p-120, + 0x1.000003p-120, + 0x1.000003p-120, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + true, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L), + TEST ("7.5231651905091658028243019250027722963589455923928243391111" + "518069674229947096932846761774271726608276367187501e-37", + 0x1.000002p-120f, + 0x1.000004p-120f, + 0x1.000002p-120f, + 0x1.000004p-120f, + 0x1.000003p-120, + 0x1.000003p-120, + 0x1.000003p-120, + 0x1.0000030000001p-120, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.0000030000001p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.0000030000000002p-120L, + false, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003000000000000000000008p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.000003p-120L, + 0x1.0000030000000000000000000001p-120L), + TEST ("7.5231656389246743867657646205962389491321076020766457395961" + "98769229273839442839744151569902896881103515625e-37", + 0x1.000004p-120f, + 0x1.000004p-120f, + 0x1.000004p-120f, + 0x1.000004p-120f, + 0x1.000004p-120, + 0x1.000004p-120, + 0x1.000004p-120, + 0x1.000004p-120, + 0x1.000004p-120L, + 0x1.000004p-120L, + 0x1.000004p-120L, + 0x1.000004p-120L, + 0x1.000004p-120L, + 0x1.000004p-120L, + 0x1.000004p-120L, + 0x1.000004p-120L, + true, + 0x1.000004p-120L, + 0x1.000004p-120L, + 0x1.000004p-120L, + 0x1.000004p-120L, + 0x1.000004p-120L, + 0x1.000004p-120L, + 0x1.000004p-120L, + 0x1.000004p-120L), + TEST ("340282356779733661637539395458142568447.999", + 0xf.fffffp+124f, + 0xf.fffffp+124f, + 0xf.fffffp+124f, + INFINITY, + 0xf.fffff7ffffff8p+124, + 0xf.fffff8p+124, + 0xf.fffff7ffffff8p+124, + 0xf.fffff8p+124, + 0xf.fffff7ffffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff7ffffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff7fffffffffp+124L, + 0xf.fffff8p+124L, + 0xf.fffff7fffffffffp+124L, + 0xf.fffff8p+124L, + false, + 0xf.fffff7fffffffffffffffffffcp+124L, + 0xf.fffff8p+124L, + 0xf.fffff7fffffffffffffffffffcp+124L, + 0xf.fffff8p+124L, + 0xf.fffff7fffffffffffffffffffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff7fffffffffffffffffffff8p+124L, + 0xf.fffff8p+124L), + TEST ("340282356779733661637539395458142568448", + 0xf.fffffp+124f, + INFINITY, + 0xf.fffffp+124f, + INFINITY, + 0xf.fffff8p+124, + 0xf.fffff8p+124, + 0xf.fffff8p+124, + 0xf.fffff8p+124, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + true, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L), + TEST ("340282356779733661637539395458142568448.001", + 0xf.fffffp+124f, + INFINITY, + 0xf.fffffp+124f, + INFINITY, + 0xf.fffff8p+124, + 0xf.fffff8p+124, + 0xf.fffff8p+124, + 0xf.fffff80000008p+124, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff80000008p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8000000001p+124L, + false, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff800000000000000000004p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff8p+124L, + 0xf.fffff80000000000000000000008p+124L), + TEST ("-340282356779733661637539395458142568447.999", + -INFINITY, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -0xf.fffff8p+124, + -0xf.fffff8p+124, + -0xf.fffff7ffffff8p+124, + -0xf.fffff7ffffff8p+124, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff7ffffff8p+124L, + -0xf.fffff7ffffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff7fffffffffp+124L, + -0xf.fffff7fffffffffp+124L, + false, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff7fffffffffffffffffffcp+124L, + -0xf.fffff7fffffffffffffffffffcp+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff7fffffffffffffffffffff8p+124L, + -0xf.fffff7fffffffffffffffffffff8p+124L), + TEST ("-340282356779733661637539395458142568448", + -INFINITY, + -INFINITY, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -0xf.fffff8p+124, + -0xf.fffff8p+124, + -0xf.fffff8p+124, + -0xf.fffff8p+124, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + true, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L), + TEST ("-340282356779733661637539395458142568448.001", + -INFINITY, + -INFINITY, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -0xf.fffff80000008p+124, + -0xf.fffff8p+124, + -0xf.fffff8p+124, + -0xf.fffff8p+124, + -0xf.fffff80000008p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8000000001p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + false, + -0xf.fffff800000000000000000004p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff80000000000000000000008p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L, + -0xf.fffff8p+124L), + TEST ("179769313486231580793728971405303415079934132710037826936173" + "778980444968292764750946649017977587207096330286416692887910" + "946555547851940402630657488671505820681908902000708383676273" + "854845817711531764475730270069855571366959622842914819860834" + "936475292719074168444365510704342711559699508093042880177904" + "174497791.999", + 0xf.fffffp+124f, + INFINITY, + 0xf.fffffp+124f, + INFINITY, + 0xf.ffffffffffff8p+1020, + 0xf.ffffffffffff8p+1020, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020L, + 0xf.ffffffffffff8p+1020L, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.ffffffffffffbffp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffbffp+1020L, + 0xf.ffffffffffffcp+1020L, + false, + 0xf.ffffffffffffbffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffbffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffbffffffffffffff8p+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffbffffffffffffff8p+1020L, + 0xf.ffffffffffffcp+1020L), + TEST ("179769313486231580793728971405303415079934132710037826936173" + "778980444968292764750946649017977587207096330286416692887910" + "946555547851940402630657488671505820681908902000708383676273" + "854845817711531764475730270069855571366959622842914819860834" + "936475292719074168444365510704342711559699508093042880177904" + "174497792", + 0xf.fffffp+124f, + INFINITY, + 0xf.fffffp+124f, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + true, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L), + TEST ("179769313486231580793728971405303415079934132710037826936173" + "778980444968292764750946649017977587207096330286416692887910" + "946555547851940402630657488671505820681908902000708383676273" + "854845817711531764475730270069855571366959622842914819860834" + "936475292719074168444365510704342711559699508093042880177904" + "174497792.001", + 0xf.fffffp+124f, + INFINITY, + 0xf.fffffp+124f, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffc01p+1020L, + false, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffc0000000000004p+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffcp+1020L, + 0xf.ffffffffffffc000000000000008p+1020L), + TEST ("-17976931348623158079372897140530341507993413271003782693617" + "377898044496829276475094664901797758720709633028641669288791" + "094655554785194040263065748867150582068190890200070838367627" + "385484581771153176447573027006985557136695962284291481986083" + "493647529271907416844436551070434271155969950809304288017790" + "4174497791.999", + -INFINITY, + -INFINITY, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -INFINITY, + -0xf.ffffffffffff8p+1020, + -0xf.ffffffffffff8p+1020, + -0xf.ffffffffffff8p+1020, + -INFINITY, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffbffp+1020L, + -0xf.ffffffffffffbffp+1020L, + false, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffbffffffffffffcp+1020L, + -0xf.ffffffffffffbffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffbffffffffffffff8p+1020L, + -0xf.ffffffffffffbffffffffffffff8p+1020L), + TEST ("-17976931348623158079372897140530341507993413271003782693617" + "377898044496829276475094664901797758720709633028641669288791" + "094655554785194040263065748867150582068190890200070838367627" + "385484581771153176447573027006985557136695962284291481986083" + "493647529271907416844436551070434271155969950809304288017790" + "4174497792", + -INFINITY, + -INFINITY, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020, + -0xf.ffffffffffff8p+1020, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + true, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L), + TEST ("-17976931348623158079372897140530341507993413271003782693617" + "377898044496829276475094664901797758720709633028641669288791" + "094655554785194040263065748867150582068190890200070838367627" + "385484581771153176447573027006985557136695962284291481986083" + "493647529271907416844436551070434271155969950809304288017790" + "4174497792.001", + -INFINITY, + -INFINITY, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020, + -0xf.ffffffffffff8p+1020, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffffc01p+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + false, + -0xf.ffffffffffffc0000000000004p+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffc000000000000008p+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L, + -0xf.ffffffffffffcp+1020L), + TEST ("118973149535723176505351158982948866796625400469556721895649" + "927756249918185172720476044944290457046138433056764616744328" + "666255526748948793023632513609765434237723241753648908036202" + "958495124648560574092817813661123067421904850038181180520787" + "720310726881239888580817051703268776757919551260442611296993" + "969730906497042135737359373754818979106457807539652027804156" + "491987771033211787185996492320631117543475322122625353433719" + "930462950413766867781210335973022293561007134342532563356262" + "609267460063335819387905541393759243547993474715549691352074" + "891450084783459970660481689991674771307443551458551137274603" + "094678907537177579699931235422786658780337099286207273033150" + "295133847635735008945346069635452157254692607776538304457707" + "598289220004738023060594798392660507455937428888763514661408" + "758068906506527143720723156203739676372818578090840614216621" + "704787774611256823213431325634056809505691175988424606654072" + "823115950827627377808673574181547198668714142143234447550206" + "269197545774263993130119778810659043621312707109068433886162" + "877222844491518930341896313561238988520360803607534987178305" + "043520937299838173444083502027340452162582038296009574808809" + "658742434897860755961343752419543802653239216337103370292742" + "935497502474626454559729017094560234867236701379230234809843" + "263739640909561388493227725171983531003154799850580375254640" + "686684370650275318316632539920970969803838872914424760535111" + "444864748847573042963569291679400178896696862026500700279826" + "635302471702206627303799047632971460017199544567373231610376" + "256879987134317934150014443436145710546137924490489525241523" + "018271239906743645663976778059895127442517397682525944430951" + "907648109952479454685655581652571021331761401038962049122047" + "111009185757383743827811254014770944602713378187451095200132" + "611700632386420792585207954137064426995712656449343534120120" + "770857498813673742586478583964512406030930704197486727636333" + "837001863610516286928300891774383071105022919314408502968809" + "463848377324668014115592383521324785361676372582468085716775" + "183709078048790084022838728361454734650904480489014369184979" + "256497738392744524915616501449487520501300124861778269881261" + "335544037735715125808986359728419859776521586683035924100574" + "850554368935873803132428446524362913648833348768663733118103" + "918959060412499201797234385239260504905744357611987327994540" + "083286019952793692265006211633524675976369938866409689573287" + "599490442761701229217689614343727392339547174221615984024864" + "635625680108391566720681134647098412863051374760613506003971" + "759070209697293081442875903240426975910170967179075646317814" + "394978762382183679266247724762405284284971833355044962214065" + "895558105408175131247181971272672247996246595857705695208092" + "816044125822560989770526261449460733912621692806952140652061" + "911968824328747339453822511902787546522099225623311147726504" + "972617425102845212076162056723650625826928778132002074035405" + "250631109426611640681070927283430486232053929420514345435713" + "131387967949326001734866894273047449417824913738789829732833" + "683358900903818016968127085077418070951770702999663693968324" + "004781728763310108379440442854174041581191669623267749855519" + "774427387794278666183504498843857475877442235608736818515722" + "862733587905866015455830953591207040129558473662150426884726" + "759522376583586317425575669726781893104752341432891868770513" + "406836036136374264038296610854599454591170582569741798904328" + "676755131072831974295435585611673171096113833795735888591844" + "569864166955969416680807491722688418115891753669917660968752" + "228842669182040018336152355940915579955628386232949747891257" + "526145783057949776122896048841308261113063674538553146663451" + "574384023903569848640351704415703922683108552880537081027404" + "397775617608412295293311763789489900990611859125572525530349" + "278319943261304784125553748811339225969956465404836696490782" + "500903694674135036899321686023782466034636817818347651623601" + "663129318574761269352028560641266614840108083315301260274558" + "575087296910384815285134460531715154639604115052348665171547" + "251609075784863196403541944155425166776423403472211742139313" + "210299896884252707306862499895115691675551238140467142819537" + "867343414276518703858928008759955391140729958278175965217739" + "826511218924463113077693598006228365514899236789515147503266" + "616268809617626228164916917150602464494142485507467876173251" + "398398846807079309227567538802476335624194115637802439400050" + "221934368975949846684026462252790745597563393487879954351820" + "652138303761879543933808642920064500206512003954563931569820" + "114768348051593629274325149906343853129692245386396887281599" + "735312588117968646270517005121997466606469447530616465384255" + "826304380842850779833108567141643769616400809617173972138187" + "711971431230616321035038259922624655396612597024040812967444" + "207673594478417900666764580589685104809363813759667069693701" + "069921295791929938093722225050956280798177934138468414654728" + "631498256418191041953123619406060363406390776140155709737059" + "125898120366007955506160309553860446596202876233728025871625" + "578031503869424406179027994752890226443351619365453243328968" + "8740976918527.999", + 0xf.fffffp+124f, + INFINITY, + 0xf.fffffp+124f, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.fffffffffffffffp+16380L, + 0xf.fffffffffffffffp+16380L, + 0xf.fffffffffffffffp+16380L, + INFINITY, + false, + 0xf.fffffffffffffffffffffffffcp+1020L, + INFINITY, + 0xf.fffffffffffffffffffffffffcp+1020L, + INFINITY, + 0xf.fffffffffffffff7fffffffffff8p+16380L, + 0xf.fffffffffffffff8p+16380L, + 0xf.fffffffffffffff7fffffffffff8p+16380L, + 0xf.fffffffffffffff8p+16380L), + TEST ("118973149535723176505351158982948866796625400469556721895649" + "927756249918185172720476044944290457046138433056764616744328" + "666255526748948793023632513609765434237723241753648908036202" + "958495124648560574092817813661123067421904850038181180520787" + "720310726881239888580817051703268776757919551260442611296993" + "969730906497042135737359373754818979106457807539652027804156" + "491987771033211787185996492320631117543475322122625353433719" + "930462950413766867781210335973022293561007134342532563356262" + "609267460063335819387905541393759243547993474715549691352074" + "891450084783459970660481689991674771307443551458551137274603" + "094678907537177579699931235422786658780337099286207273033150" + "295133847635735008945346069635452157254692607776538304457707" + "598289220004738023060594798392660507455937428888763514661408" + "758068906506527143720723156203739676372818578090840614216621" + "704787774611256823213431325634056809505691175988424606654072" + "823115950827627377808673574181547198668714142143234447550206" + "269197545774263993130119778810659043621312707109068433886162" + "877222844491518930341896313561238988520360803607534987178305" + "043520937299838173444083502027340452162582038296009574808809" + "658742434897860755961343752419543802653239216337103370292742" + "935497502474626454559729017094560234867236701379230234809843" + "263739640909561388493227725171983531003154799850580375254640" + "686684370650275318316632539920970969803838872914424760535111" + "444864748847573042963569291679400178896696862026500700279826" + "635302471702206627303799047632971460017199544567373231610376" + "256879987134317934150014443436145710546137924490489525241523" + "018271239906743645663976778059895127442517397682525944430951" + "907648109952479454685655581652571021331761401038962049122047" + "111009185757383743827811254014770944602713378187451095200132" + "611700632386420792585207954137064426995712656449343534120120" + "770857498813673742586478583964512406030930704197486727636333" + "837001863610516286928300891774383071105022919314408502968809" + "463848377324668014115592383521324785361676372582468085716775" + "183709078048790084022838728361454734650904480489014369184979" + "256497738392744524915616501449487520501300124861778269881261" + "335544037735715125808986359728419859776521586683035924100574" + "850554368935873803132428446524362913648833348768663733118103" + "918959060412499201797234385239260504905744357611987327994540" + "083286019952793692265006211633524675976369938866409689573287" + "599490442761701229217689614343727392339547174221615984024864" + "635625680108391566720681134647098412863051374760613506003971" + "759070209697293081442875903240426975910170967179075646317814" + "394978762382183679266247724762405284284971833355044962214065" + "895558105408175131247181971272672247996246595857705695208092" + "816044125822560989770526261449460733912621692806952140652061" + "911968824328747339453822511902787546522099225623311147726504" + "972617425102845212076162056723650625826928778132002074035405" + "250631109426611640681070927283430486232053929420514345435713" + "131387967949326001734866894273047449417824913738789829732833" + "683358900903818016968127085077418070951770702999663693968324" + "004781728763310108379440442854174041581191669623267749855519" + "774427387794278666183504498843857475877442235608736818515722" + "862733587905866015455830953591207040129558473662150426884726" + "759522376583586317425575669726781893104752341432891868770513" + "406836036136374264038296610854599454591170582569741798904328" + "676755131072831974295435585611673171096113833795735888591844" + "569864166955969416680807491722688418115891753669917660968752" + "228842669182040018336152355940915579955628386232949747891257" + "526145783057949776122896048841308261113063674538553146663451" + "574384023903569848640351704415703922683108552880537081027404" + "397775617608412295293311763789489900990611859125572525530349" + "278319943261304784125553748811339225969956465404836696490782" + "500903694674135036899321686023782466034636817818347651623601" + "663129318574761269352028560641266614840108083315301260274558" + "575087296910384815285134460531715154639604115052348665171547" + "251609075784863196403541944155425166776423403472211742139313" + "210299896884252707306862499895115691675551238140467142819537" + "867343414276518703858928008759955391140729958278175965217739" + "826511218924463113077693598006228365514899236789515147503266" + "616268809617626228164916917150602464494142485507467876173251" + "398398846807079309227567538802476335624194115637802439400050" + "221934368975949846684026462252790745597563393487879954351820" + "652138303761879543933808642920064500206512003954563931569820" + "114768348051593629274325149906343853129692245386396887281599" + "735312588117968646270517005121997466606469447530616465384255" + "826304380842850779833108567141643769616400809617173972138187" + "711971431230616321035038259922624655396612597024040812967444" + "207673594478417900666764580589685104809363813759667069693701" + "069921295791929938093722225050956280798177934138468414654728" + "631498256418191041953123619406060363406390776140155709737059" + "125898120366007955506160309553860446596202876233728025871625" + "578031503869424406179027994752890226443351619365453243328968" + "8740976918528", + 0xf.fffffp+124f, + INFINITY, + 0xf.fffffp+124f, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.fffffffffffffffp+16380L, + INFINITY, + 0xf.fffffffffffffffp+16380L, + INFINITY, + false, + 0xf.fffffffffffffffffffffffffcp+1020L, + INFINITY, + 0xf.fffffffffffffffffffffffffcp+1020L, + INFINITY, + 0xf.fffffffffffffff8p+16380L, + 0xf.fffffffffffffff8p+16380L, + 0xf.fffffffffffffff8p+16380L, + 0xf.fffffffffffffff8p+16380L), + TEST ("118973149535723176505351158982948866796625400469556721895649" + "927756249918185172720476044944290457046138433056764616744328" + "666255526748948793023632513609765434237723241753648908036202" + "958495124648560574092817813661123067421904850038181180520787" + "720310726881239888580817051703268776757919551260442611296993" + "969730906497042135737359373754818979106457807539652027804156" + "491987771033211787185996492320631117543475322122625353433719" + "930462950413766867781210335973022293561007134342532563356262" + "609267460063335819387905541393759243547993474715549691352074" + "891450084783459970660481689991674771307443551458551137274603" + "094678907537177579699931235422786658780337099286207273033150" + "295133847635735008945346069635452157254692607776538304457707" + "598289220004738023060594798392660507455937428888763514661408" + "758068906506527143720723156203739676372818578090840614216621" + "704787774611256823213431325634056809505691175988424606654072" + "823115950827627377808673574181547198668714142143234447550206" + "269197545774263993130119778810659043621312707109068433886162" + "877222844491518930341896313561238988520360803607534987178305" + "043520937299838173444083502027340452162582038296009574808809" + "658742434897860755961343752419543802653239216337103370292742" + "935497502474626454559729017094560234867236701379230234809843" + "263739640909561388493227725171983531003154799850580375254640" + "686684370650275318316632539920970969803838872914424760535111" + "444864748847573042963569291679400178896696862026500700279826" + "635302471702206627303799047632971460017199544567373231610376" + "256879987134317934150014443436145710546137924490489525241523" + "018271239906743645663976778059895127442517397682525944430951" + "907648109952479454685655581652571021331761401038962049122047" + "111009185757383743827811254014770944602713378187451095200132" + "611700632386420792585207954137064426995712656449343534120120" + "770857498813673742586478583964512406030930704197486727636333" + "837001863610516286928300891774383071105022919314408502968809" + "463848377324668014115592383521324785361676372582468085716775" + "183709078048790084022838728361454734650904480489014369184979" + "256497738392744524915616501449487520501300124861778269881261" + "335544037735715125808986359728419859776521586683035924100574" + "850554368935873803132428446524362913648833348768663733118103" + "918959060412499201797234385239260504905744357611987327994540" + "083286019952793692265006211633524675976369938866409689573287" + "599490442761701229217689614343727392339547174221615984024864" + "635625680108391566720681134647098412863051374760613506003971" + "759070209697293081442875903240426975910170967179075646317814" + "394978762382183679266247724762405284284971833355044962214065" + "895558105408175131247181971272672247996246595857705695208092" + "816044125822560989770526261449460733912621692806952140652061" + "911968824328747339453822511902787546522099225623311147726504" + "972617425102845212076162056723650625826928778132002074035405" + "250631109426611640681070927283430486232053929420514345435713" + "131387967949326001734866894273047449417824913738789829732833" + "683358900903818016968127085077418070951770702999663693968324" + "004781728763310108379440442854174041581191669623267749855519" + "774427387794278666183504498843857475877442235608736818515722" + "862733587905866015455830953591207040129558473662150426884726" + "759522376583586317425575669726781893104752341432891868770513" + "406836036136374264038296610854599454591170582569741798904328" + "676755131072831974295435585611673171096113833795735888591844" + "569864166955969416680807491722688418115891753669917660968752" + "228842669182040018336152355940915579955628386232949747891257" + "526145783057949776122896048841308261113063674538553146663451" + "574384023903569848640351704415703922683108552880537081027404" + "397775617608412295293311763789489900990611859125572525530349" + "278319943261304784125553748811339225969956465404836696490782" + "500903694674135036899321686023782466034636817818347651623601" + "663129318574761269352028560641266614840108083315301260274558" + "575087296910384815285134460531715154639604115052348665171547" + "251609075784863196403541944155425166776423403472211742139313" + "210299896884252707306862499895115691675551238140467142819537" + "867343414276518703858928008759955391140729958278175965217739" + "826511218924463113077693598006228365514899236789515147503266" + "616268809617626228164916917150602464494142485507467876173251" + "398398846807079309227567538802476335624194115637802439400050" + "221934368975949846684026462252790745597563393487879954351820" + "652138303761879543933808642920064500206512003954563931569820" + "114768348051593629274325149906343853129692245386396887281599" + "735312588117968646270517005121997466606469447530616465384255" + "826304380842850779833108567141643769616400809617173972138187" + "711971431230616321035038259922624655396612597024040812967444" + "207673594478417900666764580589685104809363813759667069693701" + "069921295791929938093722225050956280798177934138468414654728" + "631498256418191041953123619406060363406390776140155709737059" + "125898120366007955506160309553860446596202876233728025871625" + "578031503869424406179027994752890226443351619365453243328968" + "8740976918528.001", + 0xf.fffffp+124f, + INFINITY, + 0xf.fffffp+124f, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.fffffffffffffffp+16380L, + INFINITY, + 0xf.fffffffffffffffp+16380L, + INFINITY, + false, + 0xf.fffffffffffffffffffffffffcp+1020L, + INFINITY, + 0xf.fffffffffffffffffffffffffcp+1020L, + INFINITY, + 0xf.fffffffffffffff8p+16380L, + 0xf.fffffffffffffff8p+16380L, + 0xf.fffffffffffffff8p+16380L, + 0xf.fffffffffffffff8000000000008p+16380L), + TEST ("-11897314953572317650535115898294886679662540046955672189564" + "992775624991818517272047604494429045704613843305676461674432" + "866625552674894879302363251360976543423772324175364890803620" + "295849512464856057409281781366112306742190485003818118052078" + "772031072688123988858081705170326877675791955126044261129699" + "396973090649704213573735937375481897910645780753965202780415" + "649198777103321178718599649232063111754347532212262535343371" + "993046295041376686778121033597302229356100713434253256335626" + "260926746006333581938790554139375924354799347471554969135207" + "489145008478345997066048168999167477130744355145855113727460" + "309467890753717757969993123542278665878033709928620727303315" + "029513384763573500894534606963545215725469260777653830445770" + "759828922000473802306059479839266050745593742888876351466140" + "875806890650652714372072315620373967637281857809084061421662" + "170478777461125682321343132563405680950569117598842460665407" + "282311595082762737780867357418154719866871414214323444755020" + "626919754577426399313011977881065904362131270710906843388616" + "287722284449151893034189631356123898852036080360753498717830" + "504352093729983817344408350202734045216258203829600957480880" + "965874243489786075596134375241954380265323921633710337029274" + "293549750247462645455972901709456023486723670137923023480984" + "326373964090956138849322772517198353100315479985058037525464" + "068668437065027531831663253992097096980383887291442476053511" + "144486474884757304296356929167940017889669686202650070027982" + "663530247170220662730379904763297146001719954456737323161037" + "625687998713431793415001444343614571054613792449048952524152" + "301827123990674364566397677805989512744251739768252594443095" + "190764810995247945468565558165257102133176140103896204912204" + "711100918575738374382781125401477094460271337818745109520013" + "261170063238642079258520795413706442699571265644934353412012" + "077085749881367374258647858396451240603093070419748672763633" + "383700186361051628692830089177438307110502291931440850296880" + "946384837732466801411559238352132478536167637258246808571677" + "518370907804879008402283872836145473465090448048901436918497" + "925649773839274452491561650144948752050130012486177826988126" + "133554403773571512580898635972841985977652158668303592410057" + "485055436893587380313242844652436291364883334876866373311810" + "391895906041249920179723438523926050490574435761198732799454" + "008328601995279369226500621163352467597636993886640968957328" + "759949044276170122921768961434372739233954717422161598402486" + "463562568010839156672068113464709841286305137476061350600397" + "175907020969729308144287590324042697591017096717907564631781" + "439497876238218367926624772476240528428497183335504496221406" + "589555810540817513124718197127267224799624659585770569520809" + "281604412582256098977052626144946073391262169280695214065206" + "191196882432874733945382251190278754652209922562331114772650" + "497261742510284521207616205672365062582692877813200207403540" + "525063110942661164068107092728343048623205392942051434543571" + "313138796794932600173486689427304744941782491373878982973283" + "368335890090381801696812708507741807095177070299966369396832" + "400478172876331010837944044285417404158119166962326774985551" + "977442738779427866618350449884385747587744223560873681851572" + "286273358790586601545583095359120704012955847366215042688472" + "675952237658358631742557566972678189310475234143289186877051" + "340683603613637426403829661085459945459117058256974179890432" + "867675513107283197429543558561167317109611383379573588859184" + "456986416695596941668080749172268841811589175366991766096875" + "222884266918204001833615235594091557995562838623294974789125" + "752614578305794977612289604884130826111306367453855314666345" + "157438402390356984864035170441570392268310855288053708102740" + "439777561760841229529331176378948990099061185912557252553034" + "927831994326130478412555374881133922596995646540483669649078" + "250090369467413503689932168602378246603463681781834765162360" + "166312931857476126935202856064126661484010808331530126027455" + "857508729691038481528513446053171515463960411505234866517154" + "725160907578486319640354194415542516677642340347221174213931" + "321029989688425270730686249989511569167555123814046714281953" + "786734341427651870385892800875995539114072995827817596521773" + "982651121892446311307769359800622836551489923678951514750326" + "661626880961762622816491691715060246449414248550746787617325" + "139839884680707930922756753880247633562419411563780243940005" + "022193436897594984668402646225279074559756339348787995435182" + "065213830376187954393380864292006450020651200395456393156982" + "011476834805159362927432514990634385312969224538639688728159" + "973531258811796864627051700512199746660646944753061646538425" + "582630438084285077983310856714164376961640080961717397213818" + "771197143123061632103503825992262465539661259702404081296744" + "420767359447841790066676458058968510480936381375966706969370" + "106992129579192993809372222505095628079817793413846841465472" + "863149825641819104195312361940606036340639077614015570973705" + "912589812036600795550616030955386044659620287623372802587162" + "557803150386942440617902799475289022644335161936545324332896" + "88740976918527.999", + -INFINITY, + -INFINITY, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020, + -0xf.ffffffffffff8p+1020, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffff8p+1020L, + -INFINITY, + -0xf.fffffffffffffffp+16380L, + -0xf.fffffffffffffffp+16380L, + -0xf.fffffffffffffffp+16380L, + false, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffffffffffffcp+1020L, + -0xf.fffffffffffffffffffffffffcp+1020L, + -0xf.fffffffffffffff8p+16380L, + -0xf.fffffffffffffff8p+16380L, + -0xf.fffffffffffffff7fffffffffff8p+16380L, + -0xf.fffffffffffffff7fffffffffff8p+16380L), + TEST ("-11897314953572317650535115898294886679662540046955672189564" + "992775624991818517272047604494429045704613843305676461674432" + "866625552674894879302363251360976543423772324175364890803620" + "295849512464856057409281781366112306742190485003818118052078" + "772031072688123988858081705170326877675791955126044261129699" + "396973090649704213573735937375481897910645780753965202780415" + "649198777103321178718599649232063111754347532212262535343371" + "993046295041376686778121033597302229356100713434253256335626" + "260926746006333581938790554139375924354799347471554969135207" + "489145008478345997066048168999167477130744355145855113727460" + "309467890753717757969993123542278665878033709928620727303315" + "029513384763573500894534606963545215725469260777653830445770" + "759828922000473802306059479839266050745593742888876351466140" + "875806890650652714372072315620373967637281857809084061421662" + "170478777461125682321343132563405680950569117598842460665407" + "282311595082762737780867357418154719866871414214323444755020" + "626919754577426399313011977881065904362131270710906843388616" + "287722284449151893034189631356123898852036080360753498717830" + "504352093729983817344408350202734045216258203829600957480880" + "965874243489786075596134375241954380265323921633710337029274" + "293549750247462645455972901709456023486723670137923023480984" + "326373964090956138849322772517198353100315479985058037525464" + "068668437065027531831663253992097096980383887291442476053511" + "144486474884757304296356929167940017889669686202650070027982" + "663530247170220662730379904763297146001719954456737323161037" + "625687998713431793415001444343614571054613792449048952524152" + "301827123990674364566397677805989512744251739768252594443095" + "190764810995247945468565558165257102133176140103896204912204" + "711100918575738374382781125401477094460271337818745109520013" + "261170063238642079258520795413706442699571265644934353412012" + "077085749881367374258647858396451240603093070419748672763633" + "383700186361051628692830089177438307110502291931440850296880" + "946384837732466801411559238352132478536167637258246808571677" + "518370907804879008402283872836145473465090448048901436918497" + "925649773839274452491561650144948752050130012486177826988126" + "133554403773571512580898635972841985977652158668303592410057" + "485055436893587380313242844652436291364883334876866373311810" + "391895906041249920179723438523926050490574435761198732799454" + "008328601995279369226500621163352467597636993886640968957328" + "759949044276170122921768961434372739233954717422161598402486" + "463562568010839156672068113464709841286305137476061350600397" + "175907020969729308144287590324042697591017096717907564631781" + "439497876238218367926624772476240528428497183335504496221406" + "589555810540817513124718197127267224799624659585770569520809" + "281604412582256098977052626144946073391262169280695214065206" + "191196882432874733945382251190278754652209922562331114772650" + "497261742510284521207616205672365062582692877813200207403540" + "525063110942661164068107092728343048623205392942051434543571" + "313138796794932600173486689427304744941782491373878982973283" + "368335890090381801696812708507741807095177070299966369396832" + "400478172876331010837944044285417404158119166962326774985551" + "977442738779427866618350449884385747587744223560873681851572" + "286273358790586601545583095359120704012955847366215042688472" + "675952237658358631742557566972678189310475234143289186877051" + "340683603613637426403829661085459945459117058256974179890432" + "867675513107283197429543558561167317109611383379573588859184" + "456986416695596941668080749172268841811589175366991766096875" + "222884266918204001833615235594091557995562838623294974789125" + "752614578305794977612289604884130826111306367453855314666345" + "157438402390356984864035170441570392268310855288053708102740" + "439777561760841229529331176378948990099061185912557252553034" + "927831994326130478412555374881133922596995646540483669649078" + "250090369467413503689932168602378246603463681781834765162360" + "166312931857476126935202856064126661484010808331530126027455" + "857508729691038481528513446053171515463960411505234866517154" + "725160907578486319640354194415542516677642340347221174213931" + "321029989688425270730686249989511569167555123814046714281953" + "786734341427651870385892800875995539114072995827817596521773" + "982651121892446311307769359800622836551489923678951514750326" + "661626880961762622816491691715060246449414248550746787617325" + "139839884680707930922756753880247633562419411563780243940005" + "022193436897594984668402646225279074559756339348787995435182" + "065213830376187954393380864292006450020651200395456393156982" + "011476834805159362927432514990634385312969224538639688728159" + "973531258811796864627051700512199746660646944753061646538425" + "582630438084285077983310856714164376961640080961717397213818" + "771197143123061632103503825992262465539661259702404081296744" + "420767359447841790066676458058968510480936381375966706969370" + "106992129579192993809372222505095628079817793413846841465472" + "863149825641819104195312361940606036340639077614015570973705" + "912589812036600795550616030955386044659620287623372802587162" + "557803150386942440617902799475289022644335161936545324332896" + "88740976918528", + -INFINITY, + -INFINITY, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020, + -0xf.ffffffffffff8p+1020, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffff8p+1020L, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffp+16380L, + -0xf.fffffffffffffffp+16380L, + false, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffffffffffffcp+1020L, + -0xf.fffffffffffffffffffffffffcp+1020L, + -0xf.fffffffffffffff8p+16380L, + -0xf.fffffffffffffff8p+16380L, + -0xf.fffffffffffffff8p+16380L, + -0xf.fffffffffffffff8p+16380L), + TEST ("-11897314953572317650535115898294886679662540046955672189564" + "992775624991818517272047604494429045704613843305676461674432" + "866625552674894879302363251360976543423772324175364890803620" + "295849512464856057409281781366112306742190485003818118052078" + "772031072688123988858081705170326877675791955126044261129699" + "396973090649704213573735937375481897910645780753965202780415" + "649198777103321178718599649232063111754347532212262535343371" + "993046295041376686778121033597302229356100713434253256335626" + "260926746006333581938790554139375924354799347471554969135207" + "489145008478345997066048168999167477130744355145855113727460" + "309467890753717757969993123542278665878033709928620727303315" + "029513384763573500894534606963545215725469260777653830445770" + "759828922000473802306059479839266050745593742888876351466140" + "875806890650652714372072315620373967637281857809084061421662" + "170478777461125682321343132563405680950569117598842460665407" + "282311595082762737780867357418154719866871414214323444755020" + "626919754577426399313011977881065904362131270710906843388616" + "287722284449151893034189631356123898852036080360753498717830" + "504352093729983817344408350202734045216258203829600957480880" + "965874243489786075596134375241954380265323921633710337029274" + "293549750247462645455972901709456023486723670137923023480984" + "326373964090956138849322772517198353100315479985058037525464" + "068668437065027531831663253992097096980383887291442476053511" + "144486474884757304296356929167940017889669686202650070027982" + "663530247170220662730379904763297146001719954456737323161037" + "625687998713431793415001444343614571054613792449048952524152" + "301827123990674364566397677805989512744251739768252594443095" + "190764810995247945468565558165257102133176140103896204912204" + "711100918575738374382781125401477094460271337818745109520013" + "261170063238642079258520795413706442699571265644934353412012" + "077085749881367374258647858396451240603093070419748672763633" + "383700186361051628692830089177438307110502291931440850296880" + "946384837732466801411559238352132478536167637258246808571677" + "518370907804879008402283872836145473465090448048901436918497" + "925649773839274452491561650144948752050130012486177826988126" + "133554403773571512580898635972841985977652158668303592410057" + "485055436893587380313242844652436291364883334876866373311810" + "391895906041249920179723438523926050490574435761198732799454" + "008328601995279369226500621163352467597636993886640968957328" + "759949044276170122921768961434372739233954717422161598402486" + "463562568010839156672068113464709841286305137476061350600397" + "175907020969729308144287590324042697591017096717907564631781" + "439497876238218367926624772476240528428497183335504496221406" + "589555810540817513124718197127267224799624659585770569520809" + "281604412582256098977052626144946073391262169280695214065206" + "191196882432874733945382251190278754652209922562331114772650" + "497261742510284521207616205672365062582692877813200207403540" + "525063110942661164068107092728343048623205392942051434543571" + "313138796794932600173486689427304744941782491373878982973283" + "368335890090381801696812708507741807095177070299966369396832" + "400478172876331010837944044285417404158119166962326774985551" + "977442738779427866618350449884385747587744223560873681851572" + "286273358790586601545583095359120704012955847366215042688472" + "675952237658358631742557566972678189310475234143289186877051" + "340683603613637426403829661085459945459117058256974179890432" + "867675513107283197429543558561167317109611383379573588859184" + "456986416695596941668080749172268841811589175366991766096875" + "222884266918204001833615235594091557995562838623294974789125" + "752614578305794977612289604884130826111306367453855314666345" + "157438402390356984864035170441570392268310855288053708102740" + "439777561760841229529331176378948990099061185912557252553034" + "927831994326130478412555374881133922596995646540483669649078" + "250090369467413503689932168602378246603463681781834765162360" + "166312931857476126935202856064126661484010808331530126027455" + "857508729691038481528513446053171515463960411505234866517154" + "725160907578486319640354194415542516677642340347221174213931" + "321029989688425270730686249989511569167555123814046714281953" + "786734341427651870385892800875995539114072995827817596521773" + "982651121892446311307769359800622836551489923678951514750326" + "661626880961762622816491691715060246449414248550746787617325" + "139839884680707930922756753880247633562419411563780243940005" + "022193436897594984668402646225279074559756339348787995435182" + "065213830376187954393380864292006450020651200395456393156982" + "011476834805159362927432514990634385312969224538639688728159" + "973531258811796864627051700512199746660646944753061646538425" + "582630438084285077983310856714164376961640080961717397213818" + "771197143123061632103503825992262465539661259702404081296744" + "420767359447841790066676458058968510480936381375966706969370" + "106992129579192993809372222505095628079817793413846841465472" + "863149825641819104195312361940606036340639077614015570973705" + "912589812036600795550616030955386044659620287623372802587162" + "557803150386942440617902799475289022644335161936545324332896" + "88740976918528.001", + -INFINITY, + -INFINITY, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020, + -0xf.ffffffffffff8p+1020, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffff8p+1020L, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffp+16380L, + -0xf.fffffffffffffffp+16380L, + false, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffffffffffffcp+1020L, + -0xf.fffffffffffffffffffffffffcp+1020L, + -0xf.fffffffffffffff8000000000008p+16380L, + -0xf.fffffffffffffff8p+16380L, + -0xf.fffffffffffffff8p+16380L, + -0xf.fffffffffffffff8p+16380L), + TEST ("118973149535723176508575932662800707347995686986910214150118" + "685272271246896789803961473130416053705672050873552479421805" + "932646640744124594447361172514341324846716679654551308018400" + "452551246797021031695590308415421099521962856162050274568841" + "297915828747574343774874752902176710049525787625138678906010" + "048638212027057374683542842282633896097240913572043788690878" + "561421008447838407815393303366617352859876685151925036335142" + "606462825839541908847139311166770091872983498508632067665424" + "131663456011801988221011933744533095583591952713287509471572" + "005635584655570174753698625195967118200265238753375268656404" + "300638718932246773699829720984119713851462400809295266529707" + "450603039675996477317034685632764277790214944500590950459817" + "905458649624723235138950801408157339866516893477731877579183" + "713595679581558427625325833939652897845282019149923069371763" + "621014587926698827182969408373803807712292191282429102445352" + "493434039402290243933941906906661090602900960765874258303002" + "994639315656152078708796474719793763077934223746582725715380" + "546621026022818892467551940977566283266498758568504813830755" + "715585325649227824857891916443381390920079346240984072859876" + "394789650127468861490822526766717770136680743866932662343305" + "821821344306240809967537078707691232937387041140557168161956" + "672595323950666742010786584275766171661791973302251394804664" + "351065107886557299707326005651230394674710597929211000345040" + "748992483614253006562424867893567074606589931788062200063807" + "336740036940230215831403322125165368742446805152078682411506" + "081843753974005583111391605547148303480887461773984314393817" + "233328426227146997925421743280885595916487699461777590949432" + "536021389649845214065322016198143547250143861460313408300535" + "800647014276175548485543791298383644643679669618879907720347" + "361578030001247419574448359597988425487829219851305162204925" + "876422580754230478244492592334149461342828532046897137732862" + "560405101567370570895662663174689131741739602970845694214086" + "383402465037069569640956912385125748139813888875258203003486" + "978747055202810394072908580324008598756993885667142200558137" + "216665049755676940757442911860295559656788759871904662758651" + "106796978788783386988295123326864580419821595430891867179378" + "372968821128698879468814267529461494723425453808822356093436" + "114567635804621183162768389034017821036515461700163537265334" + "837042272659885702600247792917728828912373907035369136531164" + "551871575024551077026080114197652598224677403885378544255851" + "452142889211152237506343909351748731538683443195842912801950" + "740929058503113127929421291089844021925400931905939216271347" + "501989193058654389516377770771439860033940981826669939750630" + "966060749188986231404992238674933998516958950824840538996637" + "227947236848099456610159878061379742621311380927234118601003" + "068752002060437285024623575047782086630607224900910789188204" + "422115342157245494745974521832782208601602710639261482504706" + "793704189474198047840288064399210243702202724597107455534275" + "321401119382263147115748905050195256886082040192083380490209" + "648570353905656303876661710430922155024620842080323610266391" + "819853291160589645614945256684769911320943457402697573094119" + "430125589389298495428377185239916427991844172165080029177729" + "625180644077484441695092005844026411665118679537869781924378" + "377060887769389297625907410934020531742739577183152327119791" + "567636713426904553654134937766951789571845662564530364234831" + "655818811851573018210173773037253988893680153247404060131255" + "432297982534770778617218088583998040670598195597843579610890" + "315316606725381521608825464438386306376596459107591134507541" + "153403024199191222328259713530472683187873517955642380703639" + "029816037096049042094836437281075965243968431839386959736989" + "889027924230006904683050305965712585804355337311372959487108" + "794286031594805559334414767793211932142402860019029250966461" + "933621763149049802791695077716375242516443825235146860078555" + "453142397983479144560015010889077242726183149587493050950967" + "941488752366197740591478464591650201477772717579831983405962" + "171742164889284586217913115136227964861078958766284010901639" + "781256012341028188155836968476480842715858962105341815444164" + "696766584018508513610260777540911573496315580383328678958350" + "148157337222619548467971967434956296433870815461340134721800" + "205755114983399523323106573720732056659216468891205124203527" + "449961814733926916757607468806003312492414061695431041238453" + "023522795690830184799840657478014435335788410588338795921829" + "674102072285495410088727730494748054715270026371111466557692" + "092596172401951206117443077191868585496116051853795368595736" + "003882511620497061598923985774687093334185939744167238203676" + "453052472980823976562293117120372063945943890666325365061961" + "022928215929070357135085816756816486043117613837876554929621" + "856269743752885605649447338817178927896144473776360438797900" + "366212779802747593450564030114752479071739585723270865632758" + "495434839556211713523098602573445161475191311400514062427097" + "780117858230840648695846140902244217544683559565818359212130" + "972233447491583165728635513802591543441145939539353470970452" + "5536550715391.999", + 0xf.fffffp+124f, + INFINITY, + 0xf.fffffp+124f, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.fffffffffffffffp+16380L, + INFINITY, + 0xf.fffffffffffffffp+16380L, + INFINITY, + false, + 0xf.fffffffffffffffffffffffffcp+1020L, + INFINITY, + 0xf.fffffffffffffffffffffffffcp+1020L, + INFINITY, + 0xf.fffffffffffffffffffffffffff8p+16380L, + 0xf.fffffffffffffffffffffffffff8p+16380L, + 0xf.fffffffffffffffffffffffffff8p+16380L, + INFINITY), + TEST ("118973149535723176508575932662800707347995686986910214150118" + "685272271246896789803961473130416053705672050873552479421805" + "932646640744124594447361172514341324846716679654551308018400" + "452551246797021031695590308415421099521962856162050274568841" + "297915828747574343774874752902176710049525787625138678906010" + "048638212027057374683542842282633896097240913572043788690878" + "561421008447838407815393303366617352859876685151925036335142" + "606462825839541908847139311166770091872983498508632067665424" + "131663456011801988221011933744533095583591952713287509471572" + "005635584655570174753698625195967118200265238753375268656404" + "300638718932246773699829720984119713851462400809295266529707" + "450603039675996477317034685632764277790214944500590950459817" + "905458649624723235138950801408157339866516893477731877579183" + "713595679581558427625325833939652897845282019149923069371763" + "621014587926698827182969408373803807712292191282429102445352" + "493434039402290243933941906906661090602900960765874258303002" + "994639315656152078708796474719793763077934223746582725715380" + "546621026022818892467551940977566283266498758568504813830755" + "715585325649227824857891916443381390920079346240984072859876" + "394789650127468861490822526766717770136680743866932662343305" + "821821344306240809967537078707691232937387041140557168161956" + "672595323950666742010786584275766171661791973302251394804664" + "351065107886557299707326005651230394674710597929211000345040" + "748992483614253006562424867893567074606589931788062200063807" + "336740036940230215831403322125165368742446805152078682411506" + "081843753974005583111391605547148303480887461773984314393817" + "233328426227146997925421743280885595916487699461777590949432" + "536021389649845214065322016198143547250143861460313408300535" + "800647014276175548485543791298383644643679669618879907720347" + "361578030001247419574448359597988425487829219851305162204925" + "876422580754230478244492592334149461342828532046897137732862" + "560405101567370570895662663174689131741739602970845694214086" + "383402465037069569640956912385125748139813888875258203003486" + "978747055202810394072908580324008598756993885667142200558137" + "216665049755676940757442911860295559656788759871904662758651" + "106796978788783386988295123326864580419821595430891867179378" + "372968821128698879468814267529461494723425453808822356093436" + "114567635804621183162768389034017821036515461700163537265334" + "837042272659885702600247792917728828912373907035369136531164" + "551871575024551077026080114197652598224677403885378544255851" + "452142889211152237506343909351748731538683443195842912801950" + "740929058503113127929421291089844021925400931905939216271347" + "501989193058654389516377770771439860033940981826669939750630" + "966060749188986231404992238674933998516958950824840538996637" + "227947236848099456610159878061379742621311380927234118601003" + "068752002060437285024623575047782086630607224900910789188204" + "422115342157245494745974521832782208601602710639261482504706" + "793704189474198047840288064399210243702202724597107455534275" + "321401119382263147115748905050195256886082040192083380490209" + "648570353905656303876661710430922155024620842080323610266391" + "819853291160589645614945256684769911320943457402697573094119" + "430125589389298495428377185239916427991844172165080029177729" + "625180644077484441695092005844026411665118679537869781924378" + "377060887769389297625907410934020531742739577183152327119791" + "567636713426904553654134937766951789571845662564530364234831" + "655818811851573018210173773037253988893680153247404060131255" + "432297982534770778617218088583998040670598195597843579610890" + "315316606725381521608825464438386306376596459107591134507541" + "153403024199191222328259713530472683187873517955642380703639" + "029816037096049042094836437281075965243968431839386959736989" + "889027924230006904683050305965712585804355337311372959487108" + "794286031594805559334414767793211932142402860019029250966461" + "933621763149049802791695077716375242516443825235146860078555" + "453142397983479144560015010889077242726183149587493050950967" + "941488752366197740591478464591650201477772717579831983405962" + "171742164889284586217913115136227964861078958766284010901639" + "781256012341028188155836968476480842715858962105341815444164" + "696766584018508513610260777540911573496315580383328678958350" + "148157337222619548467971967434956296433870815461340134721800" + "205755114983399523323106573720732056659216468891205124203527" + "449961814733926916757607468806003312492414061695431041238453" + "023522795690830184799840657478014435335788410588338795921829" + "674102072285495410088727730494748054715270026371111466557692" + "092596172401951206117443077191868585496116051853795368595736" + "003882511620497061598923985774687093334185939744167238203676" + "453052472980823976562293117120372063945943890666325365061961" + "022928215929070357135085816756816486043117613837876554929621" + "856269743752885605649447338817178927896144473776360438797900" + "366212779802747593450564030114752479071739585723270865632758" + "495434839556211713523098602573445161475191311400514062427097" + "780117858230840648695846140902244217544683559565818359212130" + "972233447491583165728635513802591543441145939539353470970452" + "5536550715392", + 0xf.fffffp+124f, + INFINITY, + 0xf.fffffp+124f, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.fffffffffffffffp+16380L, + INFINITY, + 0xf.fffffffffffffffp+16380L, + INFINITY, + false, + 0xf.fffffffffffffffffffffffffcp+1020L, + INFINITY, + 0xf.fffffffffffffffffffffffffcp+1020L, + INFINITY, + 0xf.fffffffffffffffffffffffffff8p+16380L, + INFINITY, + 0xf.fffffffffffffffffffffffffff8p+16380L, + INFINITY), + TEST ("118973149535723176508575932662800707347995686986910214150118" + "685272271246896789803961473130416053705672050873552479421805" + "932646640744124594447361172514341324846716679654551308018400" + "452551246797021031695590308415421099521962856162050274568841" + "297915828747574343774874752902176710049525787625138678906010" + "048638212027057374683542842282633896097240913572043788690878" + "561421008447838407815393303366617352859876685151925036335142" + "606462825839541908847139311166770091872983498508632067665424" + "131663456011801988221011933744533095583591952713287509471572" + "005635584655570174753698625195967118200265238753375268656404" + "300638718932246773699829720984119713851462400809295266529707" + "450603039675996477317034685632764277790214944500590950459817" + "905458649624723235138950801408157339866516893477731877579183" + "713595679581558427625325833939652897845282019149923069371763" + "621014587926698827182969408373803807712292191282429102445352" + "493434039402290243933941906906661090602900960765874258303002" + "994639315656152078708796474719793763077934223746582725715380" + "546621026022818892467551940977566283266498758568504813830755" + "715585325649227824857891916443381390920079346240984072859876" + "394789650127468861490822526766717770136680743866932662343305" + "821821344306240809967537078707691232937387041140557168161956" + "672595323950666742010786584275766171661791973302251394804664" + "351065107886557299707326005651230394674710597929211000345040" + "748992483614253006562424867893567074606589931788062200063807" + "336740036940230215831403322125165368742446805152078682411506" + "081843753974005583111391605547148303480887461773984314393817" + "233328426227146997925421743280885595916487699461777590949432" + "536021389649845214065322016198143547250143861460313408300535" + "800647014276175548485543791298383644643679669618879907720347" + "361578030001247419574448359597988425487829219851305162204925" + "876422580754230478244492592334149461342828532046897137732862" + "560405101567370570895662663174689131741739602970845694214086" + "383402465037069569640956912385125748139813888875258203003486" + "978747055202810394072908580324008598756993885667142200558137" + "216665049755676940757442911860295559656788759871904662758651" + "106796978788783386988295123326864580419821595430891867179378" + "372968821128698879468814267529461494723425453808822356093436" + "114567635804621183162768389034017821036515461700163537265334" + "837042272659885702600247792917728828912373907035369136531164" + "551871575024551077026080114197652598224677403885378544255851" + "452142889211152237506343909351748731538683443195842912801950" + "740929058503113127929421291089844021925400931905939216271347" + "501989193058654389516377770771439860033940981826669939750630" + "966060749188986231404992238674933998516958950824840538996637" + "227947236848099456610159878061379742621311380927234118601003" + "068752002060437285024623575047782086630607224900910789188204" + "422115342157245494745974521832782208601602710639261482504706" + "793704189474198047840288064399210243702202724597107455534275" + "321401119382263147115748905050195256886082040192083380490209" + "648570353905656303876661710430922155024620842080323610266391" + "819853291160589645614945256684769911320943457402697573094119" + "430125589389298495428377185239916427991844172165080029177729" + "625180644077484441695092005844026411665118679537869781924378" + "377060887769389297625907410934020531742739577183152327119791" + "567636713426904553654134937766951789571845662564530364234831" + "655818811851573018210173773037253988893680153247404060131255" + "432297982534770778617218088583998040670598195597843579610890" + "315316606725381521608825464438386306376596459107591134507541" + "153403024199191222328259713530472683187873517955642380703639" + "029816037096049042094836437281075965243968431839386959736989" + "889027924230006904683050305965712585804355337311372959487108" + "794286031594805559334414767793211932142402860019029250966461" + "933621763149049802791695077716375242516443825235146860078555" + "453142397983479144560015010889077242726183149587493050950967" + "941488752366197740591478464591650201477772717579831983405962" + "171742164889284586217913115136227964861078958766284010901639" + "781256012341028188155836968476480842715858962105341815444164" + "696766584018508513610260777540911573496315580383328678958350" + "148157337222619548467971967434956296433870815461340134721800" + "205755114983399523323106573720732056659216468891205124203527" + "449961814733926916757607468806003312492414061695431041238453" + "023522795690830184799840657478014435335788410588338795921829" + "674102072285495410088727730494748054715270026371111466557692" + "092596172401951206117443077191868585496116051853795368595736" + "003882511620497061598923985774687093334185939744167238203676" + "453052472980823976562293117120372063945943890666325365061961" + "022928215929070357135085816756816486043117613837876554929621" + "856269743752885605649447338817178927896144473776360438797900" + "366212779802747593450564030114752479071739585723270865632758" + "495434839556211713523098602573445161475191311400514062427097" + "780117858230840648695846140902244217544683559565818359212130" + "972233447491583165728635513802591543441145939539353470970452" + "5536550715392.001", + 0xf.fffffp+124f, + INFINITY, + 0xf.fffffp+124f, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.ffffffffffff8p+1020L, + INFINITY, + 0xf.fffffffffffffffp+16380L, + INFINITY, + 0xf.fffffffffffffffp+16380L, + INFINITY, + false, + 0xf.fffffffffffffffffffffffffcp+1020L, + INFINITY, + 0xf.fffffffffffffffffffffffffcp+1020L, + INFINITY, + 0xf.fffffffffffffffffffffffffff8p+16380L, + INFINITY, + 0xf.fffffffffffffffffffffffffff8p+16380L, + INFINITY), + TEST ("-11897314953572317650857593266280070734799568698691021415011" + "868527227124689678980396147313041605370567205087355247942180" + "593264664074412459444736117251434132484671667965455130801840" + "045255124679702103169559030841542109952196285616205027456884" + "129791582874757434377487475290217671004952578762513867890601" + "004863821202705737468354284228263389609724091357204378869087" + "856142100844783840781539330336661735285987668515192503633514" + "260646282583954190884713931116677009187298349850863206766542" + "413166345601180198822101193374453309558359195271328750947157" + "200563558465557017475369862519596711820026523875337526865640" + "430063871893224677369982972098411971385146240080929526652970" + "745060303967599647731703468563276427779021494450059095045981" + "790545864962472323513895080140815733986651689347773187757918" + "371359567958155842762532583393965289784528201914992306937176" + "362101458792669882718296940837380380771229219128242910244535" + "249343403940229024393394190690666109060290096076587425830300" + "299463931565615207870879647471979376307793422374658272571538" + "054662102602281889246755194097756628326649875856850481383075" + "571558532564922782485789191644338139092007934624098407285987" + "639478965012746886149082252676671777013668074386693266234330" + "582182134430624080996753707870769123293738704114055716816195" + "667259532395066674201078658427576617166179197330225139480466" + "435106510788655729970732600565123039467471059792921100034504" + "074899248361425300656242486789356707460658993178806220006380" + "733674003694023021583140332212516536874244680515207868241150" + "608184375397400558311139160554714830348088746177398431439381" + "723332842622714699792542174328088559591648769946177759094943" + "253602138964984521406532201619814354725014386146031340830053" + "580064701427617554848554379129838364464367966961887990772034" + "736157803000124741957444835959798842548782921985130516220492" + "587642258075423047824449259233414946134282853204689713773286" + "256040510156737057089566266317468913174173960297084569421408" + "638340246503706956964095691238512574813981388887525820300348" + "697874705520281039407290858032400859875699388566714220055813" + "721666504975567694075744291186029555965678875987190466275865" + "110679697878878338698829512332686458041982159543089186717937" + "837296882112869887946881426752946149472342545380882235609343" + "611456763580462118316276838903401782103651546170016353726533" + "483704227265988570260024779291772882891237390703536913653116" + "455187157502455107702608011419765259822467740388537854425585" + "145214288921115223750634390935174873153868344319584291280195" + "074092905850311312792942129108984402192540093190593921627134" + "750198919305865438951637777077143986003394098182666993975063" + "096606074918898623140499223867493399851695895082484053899663" + "722794723684809945661015987806137974262131138092723411860100" + "306875200206043728502462357504778208663060722490091078918820" + "442211534215724549474597452183278220860160271063926148250470" + "679370418947419804784028806439921024370220272459710745553427" + "532140111938226314711574890505019525688608204019208338049020" + "964857035390565630387666171043092215502462084208032361026639" + "181985329116058964561494525668476991132094345740269757309411" + "943012558938929849542837718523991642799184417216508002917772" + "962518064407748444169509200584402641166511867953786978192437" + "837706088776938929762590741093402053174273957718315232711979" + "156763671342690455365413493776695178957184566256453036423483" + "165581881185157301821017377303725398889368015324740406013125" + "543229798253477077861721808858399804067059819559784357961089" + "031531660672538152160882546443838630637659645910759113450754" + "115340302419919122232825971353047268318787351795564238070363" + "902981603709604904209483643728107596524396843183938695973698" + "988902792423000690468305030596571258580435533731137295948710" + "879428603159480555933441476779321193214240286001902925096646" + "193362176314904980279169507771637524251644382523514686007855" + "545314239798347914456001501088907724272618314958749305095096" + "794148875236619774059147846459165020147777271757983198340596" + "217174216488928458621791311513622796486107895876628401090163" + "978125601234102818815583696847648084271585896210534181544416" + "469676658401850851361026077754091157349631558038332867895835" + "014815733722261954846797196743495629643387081546134013472180" + "020575511498339952332310657372073205665921646889120512420352" + "744996181473392691675760746880600331249241406169543104123845" + "302352279569083018479984065747801443533578841058833879592182" + "967410207228549541008872773049474805471527002637111146655769" + "209259617240195120611744307719186858549611605185379536859573" + "600388251162049706159892398577468709333418593974416723820367" + "645305247298082397656229311712037206394594389066632536506196" + "102292821592907035713508581675681648604311761383787655492962" + "185626974375288560564944733881717892789614447377636043879790" + "036621277980274759345056403011475247907173958572327086563275" + "849543483955621171352309860257344516147519131140051406242709" + "778011785823084064869584614090224421754468355956581835921213" + "097223344749158316572863551380259154344114593953935347097045" + "25536550715391.999", + -INFINITY, + -INFINITY, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020, + -0xf.ffffffffffff8p+1020, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffff8p+1020L, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffp+16380L, + -0xf.fffffffffffffffp+16380L, + false, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffffffffffffcp+1020L, + -0xf.fffffffffffffffffffffffffcp+1020L, + -INFINITY, + -0xf.fffffffffffffffffffffffffff8p+16380L, + -0xf.fffffffffffffffffffffffffff8p+16380L, + -0xf.fffffffffffffffffffffffffff8p+16380L), + TEST ("-11897314953572317650857593266280070734799568698691021415011" + "868527227124689678980396147313041605370567205087355247942180" + "593264664074412459444736117251434132484671667965455130801840" + "045255124679702103169559030841542109952196285616205027456884" + "129791582874757434377487475290217671004952578762513867890601" + "004863821202705737468354284228263389609724091357204378869087" + "856142100844783840781539330336661735285987668515192503633514" + "260646282583954190884713931116677009187298349850863206766542" + "413166345601180198822101193374453309558359195271328750947157" + "200563558465557017475369862519596711820026523875337526865640" + "430063871893224677369982972098411971385146240080929526652970" + "745060303967599647731703468563276427779021494450059095045981" + "790545864962472323513895080140815733986651689347773187757918" + "371359567958155842762532583393965289784528201914992306937176" + "362101458792669882718296940837380380771229219128242910244535" + "249343403940229024393394190690666109060290096076587425830300" + "299463931565615207870879647471979376307793422374658272571538" + "054662102602281889246755194097756628326649875856850481383075" + "571558532564922782485789191644338139092007934624098407285987" + "639478965012746886149082252676671777013668074386693266234330" + "582182134430624080996753707870769123293738704114055716816195" + "667259532395066674201078658427576617166179197330225139480466" + "435106510788655729970732600565123039467471059792921100034504" + "074899248361425300656242486789356707460658993178806220006380" + "733674003694023021583140332212516536874244680515207868241150" + "608184375397400558311139160554714830348088746177398431439381" + "723332842622714699792542174328088559591648769946177759094943" + "253602138964984521406532201619814354725014386146031340830053" + "580064701427617554848554379129838364464367966961887990772034" + "736157803000124741957444835959798842548782921985130516220492" + "587642258075423047824449259233414946134282853204689713773286" + "256040510156737057089566266317468913174173960297084569421408" + "638340246503706956964095691238512574813981388887525820300348" + "697874705520281039407290858032400859875699388566714220055813" + "721666504975567694075744291186029555965678875987190466275865" + "110679697878878338698829512332686458041982159543089186717937" + "837296882112869887946881426752946149472342545380882235609343" + "611456763580462118316276838903401782103651546170016353726533" + "483704227265988570260024779291772882891237390703536913653116" + "455187157502455107702608011419765259822467740388537854425585" + "145214288921115223750634390935174873153868344319584291280195" + "074092905850311312792942129108984402192540093190593921627134" + "750198919305865438951637777077143986003394098182666993975063" + "096606074918898623140499223867493399851695895082484053899663" + "722794723684809945661015987806137974262131138092723411860100" + "306875200206043728502462357504778208663060722490091078918820" + "442211534215724549474597452183278220860160271063926148250470" + "679370418947419804784028806439921024370220272459710745553427" + "532140111938226314711574890505019525688608204019208338049020" + "964857035390565630387666171043092215502462084208032361026639" + "181985329116058964561494525668476991132094345740269757309411" + "943012558938929849542837718523991642799184417216508002917772" + "962518064407748444169509200584402641166511867953786978192437" + "837706088776938929762590741093402053174273957718315232711979" + "156763671342690455365413493776695178957184566256453036423483" + "165581881185157301821017377303725398889368015324740406013125" + "543229798253477077861721808858399804067059819559784357961089" + "031531660672538152160882546443838630637659645910759113450754" + "115340302419919122232825971353047268318787351795564238070363" + "902981603709604904209483643728107596524396843183938695973698" + "988902792423000690468305030596571258580435533731137295948710" + "879428603159480555933441476779321193214240286001902925096646" + "193362176314904980279169507771637524251644382523514686007855" + "545314239798347914456001501088907724272618314958749305095096" + "794148875236619774059147846459165020147777271757983198340596" + "217174216488928458621791311513622796486107895876628401090163" + "978125601234102818815583696847648084271585896210534181544416" + "469676658401850851361026077754091157349631558038332867895835" + "014815733722261954846797196743495629643387081546134013472180" + "020575511498339952332310657372073205665921646889120512420352" + "744996181473392691675760746880600331249241406169543104123845" + "302352279569083018479984065747801443533578841058833879592182" + "967410207228549541008872773049474805471527002637111146655769" + "209259617240195120611744307719186858549611605185379536859573" + "600388251162049706159892398577468709333418593974416723820367" + "645305247298082397656229311712037206394594389066632536506196" + "102292821592907035713508581675681648604311761383787655492962" + "185626974375288560564944733881717892789614447377636043879790" + "036621277980274759345056403011475247907173958572327086563275" + "849543483955621171352309860257344516147519131140051406242709" + "778011785823084064869584614090224421754468355956581835921213" + "097223344749158316572863551380259154344114593953935347097045" + "25536550715392", + -INFINITY, + -INFINITY, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020, + -0xf.ffffffffffff8p+1020, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffff8p+1020L, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffp+16380L, + -0xf.fffffffffffffffp+16380L, + false, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffffffffffffcp+1020L, + -0xf.fffffffffffffffffffffffffcp+1020L, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffffffffffffff8p+16380L, + -0xf.fffffffffffffffffffffffffff8p+16380L), + TEST ("-11897314953572317650857593266280070734799568698691021415011" + "868527227124689678980396147313041605370567205087355247942180" + "593264664074412459444736117251434132484671667965455130801840" + "045255124679702103169559030841542109952196285616205027456884" + "129791582874757434377487475290217671004952578762513867890601" + "004863821202705737468354284228263389609724091357204378869087" + "856142100844783840781539330336661735285987668515192503633514" + "260646282583954190884713931116677009187298349850863206766542" + "413166345601180198822101193374453309558359195271328750947157" + "200563558465557017475369862519596711820026523875337526865640" + "430063871893224677369982972098411971385146240080929526652970" + "745060303967599647731703468563276427779021494450059095045981" + "790545864962472323513895080140815733986651689347773187757918" + "371359567958155842762532583393965289784528201914992306937176" + "362101458792669882718296940837380380771229219128242910244535" + "249343403940229024393394190690666109060290096076587425830300" + "299463931565615207870879647471979376307793422374658272571538" + "054662102602281889246755194097756628326649875856850481383075" + "571558532564922782485789191644338139092007934624098407285987" + "639478965012746886149082252676671777013668074386693266234330" + "582182134430624080996753707870769123293738704114055716816195" + "667259532395066674201078658427576617166179197330225139480466" + "435106510788655729970732600565123039467471059792921100034504" + "074899248361425300656242486789356707460658993178806220006380" + "733674003694023021583140332212516536874244680515207868241150" + "608184375397400558311139160554714830348088746177398431439381" + "723332842622714699792542174328088559591648769946177759094943" + "253602138964984521406532201619814354725014386146031340830053" + "580064701427617554848554379129838364464367966961887990772034" + "736157803000124741957444835959798842548782921985130516220492" + "587642258075423047824449259233414946134282853204689713773286" + "256040510156737057089566266317468913174173960297084569421408" + "638340246503706956964095691238512574813981388887525820300348" + "697874705520281039407290858032400859875699388566714220055813" + "721666504975567694075744291186029555965678875987190466275865" + "110679697878878338698829512332686458041982159543089186717937" + "837296882112869887946881426752946149472342545380882235609343" + "611456763580462118316276838903401782103651546170016353726533" + "483704227265988570260024779291772882891237390703536913653116" + "455187157502455107702608011419765259822467740388537854425585" + "145214288921115223750634390935174873153868344319584291280195" + "074092905850311312792942129108984402192540093190593921627134" + "750198919305865438951637777077143986003394098182666993975063" + "096606074918898623140499223867493399851695895082484053899663" + "722794723684809945661015987806137974262131138092723411860100" + "306875200206043728502462357504778208663060722490091078918820" + "442211534215724549474597452183278220860160271063926148250470" + "679370418947419804784028806439921024370220272459710745553427" + "532140111938226314711574890505019525688608204019208338049020" + "964857035390565630387666171043092215502462084208032361026639" + "181985329116058964561494525668476991132094345740269757309411" + "943012558938929849542837718523991642799184417216508002917772" + "962518064407748444169509200584402641166511867953786978192437" + "837706088776938929762590741093402053174273957718315232711979" + "156763671342690455365413493776695178957184566256453036423483" + "165581881185157301821017377303725398889368015324740406013125" + "543229798253477077861721808858399804067059819559784357961089" + "031531660672538152160882546443838630637659645910759113450754" + "115340302419919122232825971353047268318787351795564238070363" + "902981603709604904209483643728107596524396843183938695973698" + "988902792423000690468305030596571258580435533731137295948710" + "879428603159480555933441476779321193214240286001902925096646" + "193362176314904980279169507771637524251644382523514686007855" + "545314239798347914456001501088907724272618314958749305095096" + "794148875236619774059147846459165020147777271757983198340596" + "217174216488928458621791311513622796486107895876628401090163" + "978125601234102818815583696847648084271585896210534181544416" + "469676658401850851361026077754091157349631558038332867895835" + "014815733722261954846797196743495629643387081546134013472180" + "020575511498339952332310657372073205665921646889120512420352" + "744996181473392691675760746880600331249241406169543104123845" + "302352279569083018479984065747801443533578841058833879592182" + "967410207228549541008872773049474805471527002637111146655769" + "209259617240195120611744307719186858549611605185379536859573" + "600388251162049706159892398577468709333418593974416723820367" + "645305247298082397656229311712037206394594389066632536506196" + "102292821592907035713508581675681648604311761383787655492962" + "185626974375288560564944733881717892789614447377636043879790" + "036621277980274759345056403011475247907173958572327086563275" + "849543483955621171352309860257344516147519131140051406242709" + "778011785823084064869584614090224421754468355956581835921213" + "097223344749158316572863551380259154344114593953935347097045" + "25536550715392.001", + -INFINITY, + -INFINITY, + -0xf.fffffp+124f, + -0xf.fffffp+124f, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020, + -0xf.ffffffffffff8p+1020, + -INFINITY, + -INFINITY, + -0xf.ffffffffffff8p+1020L, + -0xf.ffffffffffff8p+1020L, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffp+16380L, + -0xf.fffffffffffffffp+16380L, + false, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffffffffffffcp+1020L, + -0xf.fffffffffffffffffffffffffcp+1020L, + -INFINITY, + -INFINITY, + -0xf.fffffffffffffffffffffffffff8p+16380L, + -0xf.fffffffffffffffffffffffffff8p+16380L), + TEST ("2.1019476964872256063855943749348741969203929128147736576356" + "0242583468662402879090222995728254318237304687499e-45", + 0x8p-152f, + 0x8p-152f, + 0x8p-152f, + 0x1p-148f, + 0xb.ffffffffffff8p-152, + 0xcp-152, + 0xb.ffffffffffff8p-152, + 0xcp-152, + 0xb.ffffffffffff8p-152L, + 0xcp-152L, + 0xb.ffffffffffff8p-152L, + 0xcp-152L, + 0xb.fffffffffffffffp-152L, + 0xcp-152L, + 0xb.fffffffffffffffp-152L, + 0xcp-152L, + false, + 0xb.fffffffffffffffffffffffffcp-152L, + 0xcp-152L, + 0xb.fffffffffffffffffffffffffcp-152L, + 0xcp-152L, + 0xb.fffffffffffffffffffffffffff8p-152L, + 0xcp-152L, + 0xb.fffffffffffffffffffffffffff8p-152L, + 0xcp-152L), + TEST ("2.1019476964872256063855943749348741969203929128147736576356" + "02425834686624028790902229957282543182373046875e-45", + 0x8p-152f, + 0x1p-148f, + 0x8p-152f, + 0x1p-148f, + 0xcp-152, + 0xcp-152, + 0xcp-152, + 0xcp-152, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + true, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L), + TEST ("2.1019476964872256063855943749348741969203929128147736576356" + "0242583468662402879090222995728254318237304687501e-45", + 0x8p-152f, + 0x1p-148f, + 0x8p-152f, + 0x1p-148f, + 0xcp-152, + 0xcp-152, + 0xcp-152, + 0xc.0000000000008p-152, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xc.0000000000008p-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xc.000000000000001p-152L, + false, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xc.00000000000000000000000004p-152L, + 0xcp-152L, + 0xcp-152L, + 0xcp-152L, + 0xc.0000000000000000000000000008p-152L), + TEST ("-2.101947696487225606385594374934874196920392912814773657635" + "60242583468662402879090222995728254318237304687499e-45", + -0x1p-148f, + -0x8p-152f, + -0x8p-152f, + -0x8p-152f, + -0xcp-152, + -0xcp-152, + -0xb.ffffffffffff8p-152, + -0xb.ffffffffffff8p-152, + -0xcp-152L, + -0xcp-152L, + -0xb.ffffffffffff8p-152L, + -0xb.ffffffffffff8p-152L, + -0xcp-152L, + -0xcp-152L, + -0xb.fffffffffffffffp-152L, + -0xb.fffffffffffffffp-152L, + false, + -0xcp-152L, + -0xcp-152L, + -0xb.fffffffffffffffffffffffffcp-152L, + -0xb.fffffffffffffffffffffffffcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xb.fffffffffffffffffffffffffff8p-152L, + -0xb.fffffffffffffffffffffffffff8p-152L), + TEST ("-2.101947696487225606385594374934874196920392912814773657635" + "602425834686624028790902229957282543182373046875e-45", + -0x1p-148f, + -0x1p-148f, + -0x8p-152f, + -0x8p-152f, + -0xcp-152, + -0xcp-152, + -0xcp-152, + -0xcp-152, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + true, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L), + TEST ("-2.101947696487225606385594374934874196920392912814773657635" + "60242583468662402879090222995728254318237304687501e-45", + -0x1p-148f, + -0x1p-148f, + -0x8p-152f, + -0x8p-152f, + -0xc.0000000000008p-152, + -0xcp-152, + -0xcp-152, + -0xcp-152, + -0xc.0000000000008p-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xc.000000000000001p-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + false, + -0xc.00000000000000000000000004p-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L, + -0xc.0000000000000000000000000008p-152L, + -0xcp-152L, + -0xcp-152L, + -0xcp-152L), + TEST ("3.5032461608120426773093239582247903282006548546912894293926" + "7070972447770671465150371659547090530395507812499e-45", + 0x1p-148f, + 0x1p-148f, + 0x1p-148f, + 0x1.8p-148f, + 0x1.3ffffffffffffp-148, + 0x1.4p-148, + 0x1.3ffffffffffffp-148, + 0x1.4p-148, + 0x1.3ffffffffffffp-148L, + 0x1.4p-148L, + 0x1.3ffffffffffffp-148L, + 0x1.4p-148L, + 0x1.3ffffffffffffffep-148L, + 0x1.4p-148L, + 0x1.3ffffffffffffffep-148L, + 0x1.4p-148L, + false, + 0x1.3fffffffffffffffffffffffff8p-148L, + 0x1.4p-148L, + 0x1.3fffffffffffffffffffffffff8p-148L, + 0x1.4p-148L, + 0x1.3fffffffffffffffffffffffffffp-148L, + 0x1.4p-148L, + 0x1.3fffffffffffffffffffffffffffp-148L, + 0x1.4p-148L), + TEST ("3.5032461608120426773093239582247903282006548546912894293926" + "70709724477706714651503716595470905303955078125e-45", + 0x1p-148f, + 0x1p-148f, + 0x1p-148f, + 0x1.8p-148f, + 0x1.4p-148, + 0x1.4p-148, + 0x1.4p-148, + 0x1.4p-148, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + true, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L), + TEST ("3.5032461608120426773093239582247903282006548546912894293926" + "7070972447770671465150371659547090530395507812501e-45", + 0x1p-148f, + 0x1.8p-148f, + 0x1p-148f, + 0x1.8p-148f, + 0x1.4p-148, + 0x1.4p-148, + 0x1.4p-148, + 0x1.4000000000001p-148, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4000000000001p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4000000000000002p-148L, + false, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.400000000000000000000000008p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4p-148L, + 0x1.4000000000000000000000000001p-148L), + TEST ("-3.503246160812042677309323958224790328200654854691289429392" + "67070972447770671465150371659547090530395507812499e-45", + -0x1.8p-148f, + -0x1p-148f, + -0x1p-148f, + -0x1p-148f, + -0x1.4p-148, + -0x1.4p-148, + -0x1.3ffffffffffffp-148, + -0x1.3ffffffffffffp-148, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.3ffffffffffffp-148L, + -0x1.3ffffffffffffp-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.3ffffffffffffffep-148L, + -0x1.3ffffffffffffffep-148L, + false, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.3fffffffffffffffffffffffff8p-148L, + -0x1.3fffffffffffffffffffffffff8p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.3fffffffffffffffffffffffffffp-148L, + -0x1.3fffffffffffffffffffffffffffp-148L), + TEST ("-3.503246160812042677309323958224790328200654854691289429392" + "670709724477706714651503716595470905303955078125e-45", + -0x1.8p-148f, + -0x1p-148f, + -0x1p-148f, + -0x1p-148f, + -0x1.4p-148, + -0x1.4p-148, + -0x1.4p-148, + -0x1.4p-148, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + true, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L), + TEST ("-3.503246160812042677309323958224790328200654854691289429392" + "67070972447770671465150371659547090530395507812501e-45", + -0x1.8p-148f, + -0x1.8p-148f, + -0x1p-148f, + -0x1p-148f, + -0x1.4000000000001p-148, + -0x1.4p-148, + -0x1.4p-148, + -0x1.4p-148, + -0x1.4000000000001p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4000000000000002p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + false, + -0x1.400000000000000000000000008p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4000000000000000000000000001p-148L, + -0x1.4p-148L, + -0x1.4p-148L, + -0x1.4p-148L), + TEST ("7.4109846876186981626485318930233205854758970392148714663837" + "852375101326090531312779794975454245398856969484704316857659" + "638998506553390969459816219401617281718945106978546710679176" + "872575177347315553307795408549809608457500958111373034747658" + "096871009590975442271004757307809711118935784838675653998783" + "503015228055934046593739791790738723868299395818481660169122" + "019456499931289798411362062484498678713572180352209017023903" + "285791732520220528974020802906854021606612375549983402671300" + "035812486479041385743401875520901590172592547146296175134159" + "774938718574737870961645638908718119841271673056017045493004" + "705269590165763776884908267986972573366521765567941072508764" + "337560846003984904972149117463085539556354188641513168478436" + "31308023759629577398300170898437499e-324", + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + 0x4p-1076, + 0x4p-1076, + 0x4p-1076, + 0x8p-1076, + 0x4p-1076L, + 0x4p-1076L, + 0x4p-1076L, + 0x8p-1076L, + 0x5.fffffffffffffff8p-1076L, + 0x6p-1076L, + 0x5.fffffffffffffff8p-1076L, + 0x6p-1076L, + false, + 0x4p-1076L, + 0x4p-1076L, + 0x4p-1076L, + 0x8p-1076L, + 0x5.fffffffffffffffffffffffffffcp-1076L, + 0x6p-1076L, + 0x5.fffffffffffffffffffffffffffcp-1076L, + 0x6p-1076L), + TEST ("7.4109846876186981626485318930233205854758970392148714663837" + "852375101326090531312779794975454245398856969484704316857659" + "638998506553390969459816219401617281718945106978546710679176" + "872575177347315553307795408549809608457500958111373034747658" + "096871009590975442271004757307809711118935784838675653998783" + "503015228055934046593739791790738723868299395818481660169122" + "019456499931289798411362062484498678713572180352209017023903" + "285791732520220528974020802906854021606612375549983402671300" + "035812486479041385743401875520901590172592547146296175134159" + "774938718574737870961645638908718119841271673056017045493004" + "705269590165763776884908267986972573366521765567941072508764" + "337560846003984904972149117463085539556354188641513168478436" + "313080237596295773983001708984375e-324", + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + 0x4p-1076, + 0x8p-1076, + 0x4p-1076, + 0x8p-1076, + 0x4p-1076L, + 0x8p-1076L, + 0x4p-1076L, + 0x8p-1076L, + 0x6p-1076L, + 0x6p-1076L, + 0x6p-1076L, + 0x6p-1076L, + true, + 0x4p-1076L, + 0x8p-1076L, + 0x4p-1076L, + 0x8p-1076L, + 0x6p-1076L, + 0x6p-1076L, + 0x6p-1076L, + 0x6p-1076L), + TEST ("7.4109846876186981626485318930233205854758970392148714663837" + "852375101326090531312779794975454245398856969484704316857659" + "638998506553390969459816219401617281718945106978546710679176" + "872575177347315553307795408549809608457500958111373034747658" + "096871009590975442271004757307809711118935784838675653998783" + "503015228055934046593739791790738723868299395818481660169122" + "019456499931289798411362062484498678713572180352209017023903" + "285791732520220528974020802906854021606612375549983402671300" + "035812486479041385743401875520901590172592547146296175134159" + "774938718574737870961645638908718119841271673056017045493004" + "705269590165763776884908267986972573366521765567941072508764" + "337560846003984904972149117463085539556354188641513168478436" + "31308023759629577398300170898437501e-324", + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + 0x4p-1076, + 0x8p-1076, + 0x4p-1076, + 0x8p-1076, + 0x4p-1076L, + 0x8p-1076L, + 0x4p-1076L, + 0x8p-1076L, + 0x6p-1076L, + 0x6p-1076L, + 0x6p-1076L, + 0x6.0000000000000008p-1076L, + false, + 0x4p-1076L, + 0x8p-1076L, + 0x4p-1076L, + 0x8p-1076L, + 0x6p-1076L, + 0x6p-1076L, + 0x6p-1076L, + 0x6.0000000000000000000000000004p-1076L), + TEST ("-7.410984687618698162648531893023320585475897039214871466383" + "785237510132609053131277979497545424539885696948470431685765" + "963899850655339096945981621940161728171894510697854671067917" + "687257517734731555330779540854980960845750095811137303474765" + "809687100959097544227100475730780971111893578483867565399878" + "350301522805593404659373979179073872386829939581848166016912" + "201945649993128979841136206248449867871357218035220901702390" + "328579173252022052897402080290685402160661237554998340267130" + "003581248647904138574340187552090159017259254714629617513415" + "977493871857473787096164563890871811984127167305601704549300" + "470526959016576377688490826798697257336652176556794107250876" + "433756084600398490497214911746308553955635418864151316847843" + "631308023759629577398300170898437499e-324", + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + -0x8p-1076, + -0x4p-1076, + -0x4p-1076, + -0x4p-1076, + -0x8p-1076L, + -0x4p-1076L, + -0x4p-1076L, + -0x4p-1076L, + -0x6p-1076L, + -0x6p-1076L, + -0x5.fffffffffffffff8p-1076L, + -0x5.fffffffffffffff8p-1076L, + false, + -0x8p-1076L, + -0x4p-1076L, + -0x4p-1076L, + -0x4p-1076L, + -0x6p-1076L, + -0x6p-1076L, + -0x5.fffffffffffffffffffffffffffcp-1076L, + -0x5.fffffffffffffffffffffffffffcp-1076L), + TEST ("-7.410984687618698162648531893023320585475897039214871466383" + "785237510132609053131277979497545424539885696948470431685765" + "963899850655339096945981621940161728171894510697854671067917" + "687257517734731555330779540854980960845750095811137303474765" + "809687100959097544227100475730780971111893578483867565399878" + "350301522805593404659373979179073872386829939581848166016912" + "201945649993128979841136206248449867871357218035220901702390" + "328579173252022052897402080290685402160661237554998340267130" + "003581248647904138574340187552090159017259254714629617513415" + "977493871857473787096164563890871811984127167305601704549300" + "470526959016576377688490826798697257336652176556794107250876" + "433756084600398490497214911746308553955635418864151316847843" + "6313080237596295773983001708984375e-324", + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + -0x8p-1076, + -0x8p-1076, + -0x4p-1076, + -0x4p-1076, + -0x8p-1076L, + -0x8p-1076L, + -0x4p-1076L, + -0x4p-1076L, + -0x6p-1076L, + -0x6p-1076L, + -0x6p-1076L, + -0x6p-1076L, + true, + -0x8p-1076L, + -0x8p-1076L, + -0x4p-1076L, + -0x4p-1076L, + -0x6p-1076L, + -0x6p-1076L, + -0x6p-1076L, + -0x6p-1076L), + TEST ("-7.410984687618698162648531893023320585475897039214871466383" + "785237510132609053131277979497545424539885696948470431685765" + "963899850655339096945981621940161728171894510697854671067917" + "687257517734731555330779540854980960845750095811137303474765" + "809687100959097544227100475730780971111893578483867565399878" + "350301522805593404659373979179073872386829939581848166016912" + "201945649993128979841136206248449867871357218035220901702390" + "328579173252022052897402080290685402160661237554998340267130" + "003581248647904138574340187552090159017259254714629617513415" + "977493871857473787096164563890871811984127167305601704549300" + "470526959016576377688490826798697257336652176556794107250876" + "433756084600398490497214911746308553955635418864151316847843" + "631308023759629577398300170898437501e-324", + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + -0x8p-1076, + -0x8p-1076, + -0x4p-1076, + -0x4p-1076, + -0x8p-1076L, + -0x8p-1076L, + -0x4p-1076L, + -0x4p-1076L, + -0x6.0000000000000008p-1076L, + -0x6p-1076L, + -0x6p-1076L, + -0x6p-1076L, + false, + -0x8p-1076L, + -0x8p-1076L, + -0x4p-1076L, + -0x4p-1076L, + -0x6.0000000000000000000000000004p-1076L, + -0x6p-1076L, + -0x6p-1076L, + -0x6p-1076L), + TEST ("5.4677992978237119037926089004291297245985762235403450155814" + "707305425575329500966052143410629387408077958710210208052966" + "529504784489330482549602621133847135082257338717668975178538" + "378957084503396349323438489751160934104796903302909028868611" + "999312592165232778075745690821530731336739429587895774023213" + "939331012985331912661021188896306095323395084578542200319963" + "179359407180003251440084380484161504585462684082946932782829" + "488183829817567452314437076943950532707791252404699268678810" + "198502871250235796855577909830559749628817599194837522029036" + "891995648803056846354520653635957919882905363521007017169741" + "463296044392266269433408052686419017699718627761948763856040" + "592690841721239300491445991666051031755802326720329666454066" + "568630314348735511753639418257984253319063825247065727664852" + "328745422305642626091617823968872438962470092440688372515677" + "832232712866924800106797113478024083516199991991274936894113" + "006233377518471389394984262004503058455485659100090665241525" + "454803628182902241401701783637353179296850056973639305945938" + "813428953287892593620291195986011128990061888798763718548789" + "025717537674780281005583347165047846045925077914824515331335" + "131286063574407181821236377907693209224423490663289916878620" + "725507793163931390372011875799729330162278748985052557432333" + "005334989519381566364065326138465761456173231416844807264090" + "741841972247545424908843928136253653308813487994328446248389" + "608261444391573619177442907290731163188581917588219420107047" + "265367485141413919810885909689112244064797106324295291545892" + "937991321479061743491490060940946128274533657682130125169586" + "930571899403551122506297763180795732325134340989331155893724" + "289358918212707392997768032299997207208451112971425779939507" + "837165263255764268971211819536322993221774123134726665579460" + "265871378186589562858761835613344584269098062275786969729830" + "545786485401407774313414954958161677096004701941411411592755" + "485864471870515173326244464631295701572087440183178339987662" + "926763241220698078822661709054601073523477544653542795020468" + "256078409306409100874886828781860529824879343987945751252081" + "314345990313550683792348814627862441324030155730592166581251" + "009922787324590431548734575328663628650380722603024383412564" + "651446272117561042207738413114131099731016728935023152239431" + "311619533848376583687509108453086730196255111695352464186678" + "221927564757730319825223049341618853631333478241227227268084" + "583396688436229936266854011427192767039363517491659523133852" + "472534104124441112346615696891097070121463652258681270378076" + "538381697594264658479637863087159293838880752928175545408262" + "813403793568695416998388572304528748824756265665683890518422" + "696169422338806137532304784682662448207928681740476188343739" + "117833525916386815135793034906806117413105008719197882837614" + "738262050320291539494104952056471606645482046176634075459021" + "552555959590354956262127809953013679512507451424271839221946" + "794056861055980558363033732905772356986051180966474116423192" + "194741572438649215204229781279620370445373851348786918527399" + "785630808242657122705381806661616271132182017797793661244078" + "445747547535623384548769818529655539279036503234072455810991" + "588075181817695975173110136482659854557506203058080551018873" + "203138260451109855100526720073566126209666125604482413705611" + "996796777927332827103568863352291499261312290355143742018042" + "254470707107847293593205234049774839191754781030496978091006" + "099559675240966730110167624903610656473267105556155633783594" + "089546261107653110531808279445757724399186120387548675148632" + "176049190701680305210224388072261974806791922636412897526952" + "793677946622674149577084803568051242934076450942927092705684" + "547042915490323112457971853658760725588190377666477106903106" + "693847278847646032201293023329503348730723947218797410452333" + "910847913892827195814551858335519518939031446093385329182820" + "714173657946661746005901866885589732922652604573972842197231" + "187365263381958925227970038358064987248233271706462687651143" + "350472018043321314534759819524203308490914358596886150053406" + "629512434788155355109100540319857813535695923273426256911552" + "977539394209918630668466632881929661971212772444625151371953" + "428875491139683919687008724010475217255347915698820960215217" + "257390308560235323463096946442080548018754166369706161589705" + "215873687166365628787796501470056870127729464714362172216802" + "441045276911597009443281135389729130222603185665646434661947" + "627628077723219376892727386120519287577405410510114936151502" + "752997122750262781911372625997223415283516995479265631485799" + "456782561734766648462849641064097181818204279498552827825384" + "186202065516999362573388136163077477126602169410435905014077" + "049808497409025369325795765272066650278004200357878990911374" + "982857977108488482528354406313893864211497105765030504600982" + "253488805474531798742143374465080240030582370086699167937651" + "038307909706139327119325418854546478285735654541635477790346" + "964782617354265050767878335230272194896680141986745074630225" + "893106573559558843545841186025169531604151588481389164948914" + "823593944287133336263680358191369540321930649824471425485137" + "777984823525402115151171093313613251350685343824859052220126" + "891551966018355920872775724807128769003243129486808733796350" + "497668255116485157191011858830643898323628223472099280243583" + "164434348347014910398004439821970508280440872759395827943270" + "985008769143562351938091476215083548164137333541883808870019" + "116234099013452929807950151652297436436006149684939775781234" + "660954156154478642694176038524277810483833149798681345708089" + "152179193979463169402340611793486272301808073267534612685593" + "859596787866884211031341417903391749825320454663508370385251" + "831778477311017089729361152161928815389818579983544490982891" + "734081131312309744330960666031291451740885503458543884956367" + "654943799264600314531815427932691107874782328654759293575803" + "481929361961781073958502075438499070633193799699311694287183" + "299423475339817655608058724723221867087563064557636112380829" + "514501382073257737022472866608244164310385205213523702910787" + "182472517125030106491031844871593141759729773907719510044049" + "352857426592936763727969496103940591601975078602859660478614" + "119405428212830134490731706220583788265344728818766885126977" + "588151111984290444321648931907188080336064713873288834096229" + "203276676119810521851726133377700616341304257822975788967472" + "152742255041912584197045423031298506219011800240120182445838" + "590696647416285334515631019799007515682004250060857020904012" + "215375170479800482680554499806010766109655061507421747722461" + "180617361402575082294678925605271083587897845390768226405648" + "508518103525778638618195775128516073959272990148239415346263" + "486966573934577450787243667063244378381883115827207605856174" + "876350045086885320626669331311880593775916269643646395423220" + "549940790476989709243027420158390806135690975149384714684219" + "964938182719962913931464979458639185519531490009437619838306" + "362365453754807654884704163490469296444427144778593725687358" + "437087390151990694667516279202024332494828210657618261952038" + "597230263799412584275851667403910657370879707181053365818502" + "680037431560091209982641738995652793235851569372314130107647" + "166085235615697257094269133100914135783178856280392139325001" + "352841718610484616627448189556913621837791650699820323059708" + "766420810133584841826718631681683381743511974264126250984214" + "812397119978273917903889865891718836792263377888052458189238" + "746074986456016681098722869419588274020181430652732817858728" + "473849369539367463917171317324882099804999043054467247785592" + "038464723442276239896066431580123756428540074945472427752568" + "981171400621705853374875885943072600692576914790467205905272" + "372594740187988081900317493185005142913607163380720069786786" + "782095331840893694073778325119471833528492917081008547303414" + "509381563617864195257751546539575461435803625993888325647883" + "541039192368366987400263049681218831477776345118518503709588" + "840859023379762456561030683928115349942393963185677123055324" + "771693784214924931737043793679546051454845624150270955450608" + "318747395755728950832754611277041359602301205138509175543313" + "522772786504141007552691902249572375175731740923618769197304" + "652898352694386665448260033458575323252814233868098279476166" + "764258284911434288072243178941698347365985427696983129579496" + "059032032841281149923518087084876885114369033227736521245740" + "554711771423492719899982357711910225545480424688322195336240" + "492253136281857837808491795993788199125205555222116581071134" + "476787468430539307909617442106685159519071053844987343666452" + "494280317720153567054364117244775141336558406098548803924509" + "496052261825198043140272655303625315605326569530252885854991" + "822289219201218313590745412010446642247111703901991591338062" + "693320157180618736569439969283245279430312651192668788340033" + "626825194260296262959884258597703584888770801961209652822982" + "322376122303586169861685106043820510444293432856251210395693" + "261264867823980172683352796141772210301725997652373804152525" + "037162852291403804455997331367378463632437773242905518075065" + "414724295857460288225400061608664961649196400079359622673770" + "607898395269075056596627116148289491042491764170924014885106" + "158235482774778418134123293974436877051995673618683751115353" + "808771434984204447736174758316063096245047311279841579995578" + "186609402864244042751443128536278453430633423118662852688374" + "229600894418958824842459450540826176452145829389286103522774" + "101195556029650753254244433565937938526828990893149766298997" + "738359913887178888607190765709867052470880785937935110091424" + "743449966353497865681753841380246075612094033617488674676296" + "822570077027076266879557913673839341012099558043806442348798" + "053951239274913334631522409564461770434875790402230022872647" + "568436177018658068697071731879399180374560963492726714528729" + "224208938589940272515747888379118461617702271694075087419634" + "147298076764775745707026934442908236664400557265527951453482" + "191684597674273691978253678690951178777239573925410438679099" + "374700609973920128201422381329108236575369403675960765238333" + "778127017096574296148321075566959285042221837159799800133563" + "239963969638610872680393210300180152020613051613414547163713" + "772512617757277955979895866367571776456268564191092477027650" + "135832200376440239783726540552694851717269598489288851529660" + "975027775639565229734596726205832668434979354541943345062977" + "891187146561050118118108223323735210843681128615413601091222" + "007912350536959777114306541514511332368936078560929788143798" + "814391221507522370648646767364209132147312407014953113532379" + "838195728491128536978285918066991040993153064356179903885952" + "027952713749653604502053512355449916680887234238773855581636" + "172479594866871765094513940103284167914110196720261110812716" + "776424260154507395050380575452850420730818412994731079307343" + "538376880280124019321040198038723558784544408584344466090982" + "802067326529000931562048932875469079874956595180595395347093" + "285140279165467965596318365749701535812384333240968283640721" + "344003442002691613772056762099098025739332715913970186225176" + "459563484134139746647940170537900275350480490468851439300771" + "949915194703080576611022590670399844931867609777417528903454" + "731922206378932141464755402629420074293816349270038351339419" + "146768473851353171629153912238797141905920143036064131705230" + "421762305232861503856799511155936565169005916711845389135580" + "928162511912438531204156138447775120789548666143600293412065" + "767167106888509172568003530668539460588248316513392652567856" + "224602697296203328920073354425994044956624831346979458846837" + "597950064151867164583749203433942592178528868981311575331848" + "941597492470436782387502687532649093096498315347403977436001" + "399982102030846763698994785054617523241463186980898394504211" + "430763617825306895065661536045431497903759118007934839122881" + "885863091769469883539876840543521295706315919855784493235603" + "866268925981702690270202829595794350800918257913991744455922" + "683343374046671669930219650268554687499e-4951", + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + 0x0p+0, + 0x0p+0, + 0x0p+0, + 0x4p-1076, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + 0x8p-16448L, + 0x8p-16448L, + 0x8p-16448L, + 0x1p-16444L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + 0xb.fffffffffffcp-16448L, + 0xcp-16448L, + 0xb.fffffffffffcp-16448L, + 0xcp-16448L), + TEST ("5.4677992978237119037926089004291297245985762235403450155814" + "707305425575329500966052143410629387408077958710210208052966" + "529504784489330482549602621133847135082257338717668975178538" + "378957084503396349323438489751160934104796903302909028868611" + "999312592165232778075745690821530731336739429587895774023213" + "939331012985331912661021188896306095323395084578542200319963" + "179359407180003251440084380484161504585462684082946932782829" + "488183829817567452314437076943950532707791252404699268678810" + "198502871250235796855577909830559749628817599194837522029036" + "891995648803056846354520653635957919882905363521007017169741" + "463296044392266269433408052686419017699718627761948763856040" + "592690841721239300491445991666051031755802326720329666454066" + "568630314348735511753639418257984253319063825247065727664852" + "328745422305642626091617823968872438962470092440688372515677" + "832232712866924800106797113478024083516199991991274936894113" + "006233377518471389394984262004503058455485659100090665241525" + "454803628182902241401701783637353179296850056973639305945938" + "813428953287892593620291195986011128990061888798763718548789" + "025717537674780281005583347165047846045925077914824515331335" + "131286063574407181821236377907693209224423490663289916878620" + "725507793163931390372011875799729330162278748985052557432333" + "005334989519381566364065326138465761456173231416844807264090" + "741841972247545424908843928136253653308813487994328446248389" + "608261444391573619177442907290731163188581917588219420107047" + "265367485141413919810885909689112244064797106324295291545892" + "937991321479061743491490060940946128274533657682130125169586" + "930571899403551122506297763180795732325134340989331155893724" + "289358918212707392997768032299997207208451112971425779939507" + "837165263255764268971211819536322993221774123134726665579460" + "265871378186589562858761835613344584269098062275786969729830" + "545786485401407774313414954958161677096004701941411411592755" + "485864471870515173326244464631295701572087440183178339987662" + "926763241220698078822661709054601073523477544653542795020468" + "256078409306409100874886828781860529824879343987945751252081" + "314345990313550683792348814627862441324030155730592166581251" + "009922787324590431548734575328663628650380722603024383412564" + "651446272117561042207738413114131099731016728935023152239431" + "311619533848376583687509108453086730196255111695352464186678" + "221927564757730319825223049341618853631333478241227227268084" + "583396688436229936266854011427192767039363517491659523133852" + "472534104124441112346615696891097070121463652258681270378076" + "538381697594264658479637863087159293838880752928175545408262" + "813403793568695416998388572304528748824756265665683890518422" + "696169422338806137532304784682662448207928681740476188343739" + "117833525916386815135793034906806117413105008719197882837614" + "738262050320291539494104952056471606645482046176634075459021" + "552555959590354956262127809953013679512507451424271839221946" + "794056861055980558363033732905772356986051180966474116423192" + "194741572438649215204229781279620370445373851348786918527399" + "785630808242657122705381806661616271132182017797793661244078" + "445747547535623384548769818529655539279036503234072455810991" + "588075181817695975173110136482659854557506203058080551018873" + "203138260451109855100526720073566126209666125604482413705611" + "996796777927332827103568863352291499261312290355143742018042" + "254470707107847293593205234049774839191754781030496978091006" + "099559675240966730110167624903610656473267105556155633783594" + "089546261107653110531808279445757724399186120387548675148632" + "176049190701680305210224388072261974806791922636412897526952" + "793677946622674149577084803568051242934076450942927092705684" + "547042915490323112457971853658760725588190377666477106903106" + "693847278847646032201293023329503348730723947218797410452333" + "910847913892827195814551858335519518939031446093385329182820" + "714173657946661746005901866885589732922652604573972842197231" + "187365263381958925227970038358064987248233271706462687651143" + "350472018043321314534759819524203308490914358596886150053406" + "629512434788155355109100540319857813535695923273426256911552" + "977539394209918630668466632881929661971212772444625151371953" + "428875491139683919687008724010475217255347915698820960215217" + "257390308560235323463096946442080548018754166369706161589705" + "215873687166365628787796501470056870127729464714362172216802" + "441045276911597009443281135389729130222603185665646434661947" + "627628077723219376892727386120519287577405410510114936151502" + "752997122750262781911372625997223415283516995479265631485799" + "456782561734766648462849641064097181818204279498552827825384" + "186202065516999362573388136163077477126602169410435905014077" + "049808497409025369325795765272066650278004200357878990911374" + "982857977108488482528354406313893864211497105765030504600982" + "253488805474531798742143374465080240030582370086699167937651" + "038307909706139327119325418854546478285735654541635477790346" + "964782617354265050767878335230272194896680141986745074630225" + "893106573559558843545841186025169531604151588481389164948914" + "823593944287133336263680358191369540321930649824471425485137" + "777984823525402115151171093313613251350685343824859052220126" + "891551966018355920872775724807128769003243129486808733796350" + "497668255116485157191011858830643898323628223472099280243583" + "164434348347014910398004439821970508280440872759395827943270" + "985008769143562351938091476215083548164137333541883808870019" + "116234099013452929807950151652297436436006149684939775781234" + "660954156154478642694176038524277810483833149798681345708089" + "152179193979463169402340611793486272301808073267534612685593" + "859596787866884211031341417903391749825320454663508370385251" + "831778477311017089729361152161928815389818579983544490982891" + "734081131312309744330960666031291451740885503458543884956367" + "654943799264600314531815427932691107874782328654759293575803" + "481929361961781073958502075438499070633193799699311694287183" + "299423475339817655608058724723221867087563064557636112380829" + "514501382073257737022472866608244164310385205213523702910787" + "182472517125030106491031844871593141759729773907719510044049" + "352857426592936763727969496103940591601975078602859660478614" + "119405428212830134490731706220583788265344728818766885126977" + "588151111984290444321648931907188080336064713873288834096229" + "203276676119810521851726133377700616341304257822975788967472" + "152742255041912584197045423031298506219011800240120182445838" + "590696647416285334515631019799007515682004250060857020904012" + "215375170479800482680554499806010766109655061507421747722461" + "180617361402575082294678925605271083587897845390768226405648" + "508518103525778638618195775128516073959272990148239415346263" + "486966573934577450787243667063244378381883115827207605856174" + "876350045086885320626669331311880593775916269643646395423220" + "549940790476989709243027420158390806135690975149384714684219" + "964938182719962913931464979458639185519531490009437619838306" + "362365453754807654884704163490469296444427144778593725687358" + "437087390151990694667516279202024332494828210657618261952038" + "597230263799412584275851667403910657370879707181053365818502" + "680037431560091209982641738995652793235851569372314130107647" + "166085235615697257094269133100914135783178856280392139325001" + "352841718610484616627448189556913621837791650699820323059708" + "766420810133584841826718631681683381743511974264126250984214" + "812397119978273917903889865891718836792263377888052458189238" + "746074986456016681098722869419588274020181430652732817858728" + "473849369539367463917171317324882099804999043054467247785592" + "038464723442276239896066431580123756428540074945472427752568" + "981171400621705853374875885943072600692576914790467205905272" + "372594740187988081900317493185005142913607163380720069786786" + "782095331840893694073778325119471833528492917081008547303414" + "509381563617864195257751546539575461435803625993888325647883" + "541039192368366987400263049681218831477776345118518503709588" + "840859023379762456561030683928115349942393963185677123055324" + "771693784214924931737043793679546051454845624150270955450608" + "318747395755728950832754611277041359602301205138509175543313" + "522772786504141007552691902249572375175731740923618769197304" + "652898352694386665448260033458575323252814233868098279476166" + "764258284911434288072243178941698347365985427696983129579496" + "059032032841281149923518087084876885114369033227736521245740" + "554711771423492719899982357711910225545480424688322195336240" + "492253136281857837808491795993788199125205555222116581071134" + "476787468430539307909617442106685159519071053844987343666452" + "494280317720153567054364117244775141336558406098548803924509" + "496052261825198043140272655303625315605326569530252885854991" + "822289219201218313590745412010446642247111703901991591338062" + "693320157180618736569439969283245279430312651192668788340033" + "626825194260296262959884258597703584888770801961209652822982" + "322376122303586169861685106043820510444293432856251210395693" + "261264867823980172683352796141772210301725997652373804152525" + "037162852291403804455997331367378463632437773242905518075065" + "414724295857460288225400061608664961649196400079359622673770" + "607898395269075056596627116148289491042491764170924014885106" + "158235482774778418134123293974436877051995673618683751115353" + "808771434984204447736174758316063096245047311279841579995578" + "186609402864244042751443128536278453430633423118662852688374" + "229600894418958824842459450540826176452145829389286103522774" + "101195556029650753254244433565937938526828990893149766298997" + "738359913887178888607190765709867052470880785937935110091424" + "743449966353497865681753841380246075612094033617488674676296" + "822570077027076266879557913673839341012099558043806442348798" + "053951239274913334631522409564461770434875790402230022872647" + "568436177018658068697071731879399180374560963492726714528729" + "224208938589940272515747888379118461617702271694075087419634" + "147298076764775745707026934442908236664400557265527951453482" + "191684597674273691978253678690951178777239573925410438679099" + "374700609973920128201422381329108236575369403675960765238333" + "778127017096574296148321075566959285042221837159799800133563" + "239963969638610872680393210300180152020613051613414547163713" + "772512617757277955979895866367571776456268564191092477027650" + "135832200376440239783726540552694851717269598489288851529660" + "975027775639565229734596726205832668434979354541943345062977" + "891187146561050118118108223323735210843681128615413601091222" + "007912350536959777114306541514511332368936078560929788143798" + "814391221507522370648646767364209132147312407014953113532379" + "838195728491128536978285918066991040993153064356179903885952" + "027952713749653604502053512355449916680887234238773855581636" + "172479594866871765094513940103284167914110196720261110812716" + "776424260154507395050380575452850420730818412994731079307343" + "538376880280124019321040198038723558784544408584344466090982" + "802067326529000931562048932875469079874956595180595395347093" + "285140279165467965596318365749701535812384333240968283640721" + "344003442002691613772056762099098025739332715913970186225176" + "459563484134139746647940170537900275350480490468851439300771" + "949915194703080576611022590670399844931867609777417528903454" + "731922206378932141464755402629420074293816349270038351339419" + "146768473851353171629153912238797141905920143036064131705230" + "421762305232861503856799511155936565169005916711845389135580" + "928162511912438531204156138447775120789548666143600293412065" + "767167106888509172568003530668539460588248316513392652567856" + "224602697296203328920073354425994044956624831346979458846837" + "597950064151867164583749203433942592178528868981311575331848" + "941597492470436782387502687532649093096498315347403977436001" + "399982102030846763698994785054617523241463186980898394504211" + "430763617825306895065661536045431497903759118007934839122881" + "885863091769469883539876840543521295706315919855784493235603" + "866268925981702690270202829595794350800918257913991744455922" + "6833433740466716699302196502685546875e-4951", + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + 0x0p+0, + 0x0p+0, + 0x0p+0, + 0x4p-1076, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + 0x8p-16448L, + 0x1p-16444L, + 0x8p-16448L, + 0x1p-16444L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + 0xcp-16448L, + 0xcp-16448L, + 0xcp-16448L, + 0xcp-16448L), + TEST ("5.4677992978237119037926089004291297245985762235403450155814" + "707305425575329500966052143410629387408077958710210208052966" + "529504784489330482549602621133847135082257338717668975178538" + "378957084503396349323438489751160934104796903302909028868611" + "999312592165232778075745690821530731336739429587895774023213" + "939331012985331912661021188896306095323395084578542200319963" + "179359407180003251440084380484161504585462684082946932782829" + "488183829817567452314437076943950532707791252404699268678810" + "198502871250235796855577909830559749628817599194837522029036" + "891995648803056846354520653635957919882905363521007017169741" + "463296044392266269433408052686419017699718627761948763856040" + "592690841721239300491445991666051031755802326720329666454066" + "568630314348735511753639418257984253319063825247065727664852" + "328745422305642626091617823968872438962470092440688372515677" + "832232712866924800106797113478024083516199991991274936894113" + "006233377518471389394984262004503058455485659100090665241525" + "454803628182902241401701783637353179296850056973639305945938" + "813428953287892593620291195986011128990061888798763718548789" + "025717537674780281005583347165047846045925077914824515331335" + "131286063574407181821236377907693209224423490663289916878620" + "725507793163931390372011875799729330162278748985052557432333" + "005334989519381566364065326138465761456173231416844807264090" + "741841972247545424908843928136253653308813487994328446248389" + "608261444391573619177442907290731163188581917588219420107047" + "265367485141413919810885909689112244064797106324295291545892" + "937991321479061743491490060940946128274533657682130125169586" + "930571899403551122506297763180795732325134340989331155893724" + "289358918212707392997768032299997207208451112971425779939507" + "837165263255764268971211819536322993221774123134726665579460" + "265871378186589562858761835613344584269098062275786969729830" + "545786485401407774313414954958161677096004701941411411592755" + "485864471870515173326244464631295701572087440183178339987662" + "926763241220698078822661709054601073523477544653542795020468" + "256078409306409100874886828781860529824879343987945751252081" + "314345990313550683792348814627862441324030155730592166581251" + "009922787324590431548734575328663628650380722603024383412564" + "651446272117561042207738413114131099731016728935023152239431" + "311619533848376583687509108453086730196255111695352464186678" + "221927564757730319825223049341618853631333478241227227268084" + "583396688436229936266854011427192767039363517491659523133852" + "472534104124441112346615696891097070121463652258681270378076" + "538381697594264658479637863087159293838880752928175545408262" + "813403793568695416998388572304528748824756265665683890518422" + "696169422338806137532304784682662448207928681740476188343739" + "117833525916386815135793034906806117413105008719197882837614" + "738262050320291539494104952056471606645482046176634075459021" + "552555959590354956262127809953013679512507451424271839221946" + "794056861055980558363033732905772356986051180966474116423192" + "194741572438649215204229781279620370445373851348786918527399" + "785630808242657122705381806661616271132182017797793661244078" + "445747547535623384548769818529655539279036503234072455810991" + "588075181817695975173110136482659854557506203058080551018873" + "203138260451109855100526720073566126209666125604482413705611" + "996796777927332827103568863352291499261312290355143742018042" + "254470707107847293593205234049774839191754781030496978091006" + "099559675240966730110167624903610656473267105556155633783594" + "089546261107653110531808279445757724399186120387548675148632" + "176049190701680305210224388072261974806791922636412897526952" + "793677946622674149577084803568051242934076450942927092705684" + "547042915490323112457971853658760725588190377666477106903106" + "693847278847646032201293023329503348730723947218797410452333" + "910847913892827195814551858335519518939031446093385329182820" + "714173657946661746005901866885589732922652604573972842197231" + "187365263381958925227970038358064987248233271706462687651143" + "350472018043321314534759819524203308490914358596886150053406" + "629512434788155355109100540319857813535695923273426256911552" + "977539394209918630668466632881929661971212772444625151371953" + "428875491139683919687008724010475217255347915698820960215217" + "257390308560235323463096946442080548018754166369706161589705" + "215873687166365628787796501470056870127729464714362172216802" + "441045276911597009443281135389729130222603185665646434661947" + "627628077723219376892727386120519287577405410510114936151502" + "752997122750262781911372625997223415283516995479265631485799" + "456782561734766648462849641064097181818204279498552827825384" + "186202065516999362573388136163077477126602169410435905014077" + "049808497409025369325795765272066650278004200357878990911374" + "982857977108488482528354406313893864211497105765030504600982" + "253488805474531798742143374465080240030582370086699167937651" + "038307909706139327119325418854546478285735654541635477790346" + "964782617354265050767878335230272194896680141986745074630225" + "893106573559558843545841186025169531604151588481389164948914" + "823593944287133336263680358191369540321930649824471425485137" + "777984823525402115151171093313613251350685343824859052220126" + "891551966018355920872775724807128769003243129486808733796350" + "497668255116485157191011858830643898323628223472099280243583" + "164434348347014910398004439821970508280440872759395827943270" + "985008769143562351938091476215083548164137333541883808870019" + "116234099013452929807950151652297436436006149684939775781234" + "660954156154478642694176038524277810483833149798681345708089" + "152179193979463169402340611793486272301808073267534612685593" + "859596787866884211031341417903391749825320454663508370385251" + "831778477311017089729361152161928815389818579983544490982891" + "734081131312309744330960666031291451740885503458543884956367" + "654943799264600314531815427932691107874782328654759293575803" + "481929361961781073958502075438499070633193799699311694287183" + "299423475339817655608058724723221867087563064557636112380829" + "514501382073257737022472866608244164310385205213523702910787" + "182472517125030106491031844871593141759729773907719510044049" + "352857426592936763727969496103940591601975078602859660478614" + "119405428212830134490731706220583788265344728818766885126977" + "588151111984290444321648931907188080336064713873288834096229" + "203276676119810521851726133377700616341304257822975788967472" + "152742255041912584197045423031298506219011800240120182445838" + "590696647416285334515631019799007515682004250060857020904012" + "215375170479800482680554499806010766109655061507421747722461" + "180617361402575082294678925605271083587897845390768226405648" + "508518103525778638618195775128516073959272990148239415346263" + "486966573934577450787243667063244378381883115827207605856174" + "876350045086885320626669331311880593775916269643646395423220" + "549940790476989709243027420158390806135690975149384714684219" + "964938182719962913931464979458639185519531490009437619838306" + "362365453754807654884704163490469296444427144778593725687358" + "437087390151990694667516279202024332494828210657618261952038" + "597230263799412584275851667403910657370879707181053365818502" + "680037431560091209982641738995652793235851569372314130107647" + "166085235615697257094269133100914135783178856280392139325001" + "352841718610484616627448189556913621837791650699820323059708" + "766420810133584841826718631681683381743511974264126250984214" + "812397119978273917903889865891718836792263377888052458189238" + "746074986456016681098722869419588274020181430652732817858728" + "473849369539367463917171317324882099804999043054467247785592" + "038464723442276239896066431580123756428540074945472427752568" + "981171400621705853374875885943072600692576914790467205905272" + "372594740187988081900317493185005142913607163380720069786786" + "782095331840893694073778325119471833528492917081008547303414" + "509381563617864195257751546539575461435803625993888325647883" + "541039192368366987400263049681218831477776345118518503709588" + "840859023379762456561030683928115349942393963185677123055324" + "771693784214924931737043793679546051454845624150270955450608" + "318747395755728950832754611277041359602301205138509175543313" + "522772786504141007552691902249572375175731740923618769197304" + "652898352694386665448260033458575323252814233868098279476166" + "764258284911434288072243178941698347365985427696983129579496" + "059032032841281149923518087084876885114369033227736521245740" + "554711771423492719899982357711910225545480424688322195336240" + "492253136281857837808491795993788199125205555222116581071134" + "476787468430539307909617442106685159519071053844987343666452" + "494280317720153567054364117244775141336558406098548803924509" + "496052261825198043140272655303625315605326569530252885854991" + "822289219201218313590745412010446642247111703901991591338062" + "693320157180618736569439969283245279430312651192668788340033" + "626825194260296262959884258597703584888770801961209652822982" + "322376122303586169861685106043820510444293432856251210395693" + "261264867823980172683352796141772210301725997652373804152525" + "037162852291403804455997331367378463632437773242905518075065" + "414724295857460288225400061608664961649196400079359622673770" + "607898395269075056596627116148289491042491764170924014885106" + "158235482774778418134123293974436877051995673618683751115353" + "808771434984204447736174758316063096245047311279841579995578" + "186609402864244042751443128536278453430633423118662852688374" + "229600894418958824842459450540826176452145829389286103522774" + "101195556029650753254244433565937938526828990893149766298997" + "738359913887178888607190765709867052470880785937935110091424" + "743449966353497865681753841380246075612094033617488674676296" + "822570077027076266879557913673839341012099558043806442348798" + "053951239274913334631522409564461770434875790402230022872647" + "568436177018658068697071731879399180374560963492726714528729" + "224208938589940272515747888379118461617702271694075087419634" + "147298076764775745707026934442908236664400557265527951453482" + "191684597674273691978253678690951178777239573925410438679099" + "374700609973920128201422381329108236575369403675960765238333" + "778127017096574296148321075566959285042221837159799800133563" + "239963969638610872680393210300180152020613051613414547163713" + "772512617757277955979895866367571776456268564191092477027650" + "135832200376440239783726540552694851717269598489288851529660" + "975027775639565229734596726205832668434979354541943345062977" + "891187146561050118118108223323735210843681128615413601091222" + "007912350536959777114306541514511332368936078560929788143798" + "814391221507522370648646767364209132147312407014953113532379" + "838195728491128536978285918066991040993153064356179903885952" + "027952713749653604502053512355449916680887234238773855581636" + "172479594866871765094513940103284167914110196720261110812716" + "776424260154507395050380575452850420730818412994731079307343" + "538376880280124019321040198038723558784544408584344466090982" + "802067326529000931562048932875469079874956595180595395347093" + "285140279165467965596318365749701535812384333240968283640721" + "344003442002691613772056762099098025739332715913970186225176" + "459563484134139746647940170537900275350480490468851439300771" + "949915194703080576611022590670399844931867609777417528903454" + "731922206378932141464755402629420074293816349270038351339419" + "146768473851353171629153912238797141905920143036064131705230" + "421762305232861503856799511155936565169005916711845389135580" + "928162511912438531204156138447775120789548666143600293412065" + "767167106888509172568003530668539460588248316513392652567856" + "224602697296203328920073354425994044956624831346979458846837" + "597950064151867164583749203433942592178528868981311575331848" + "941597492470436782387502687532649093096498315347403977436001" + "399982102030846763698994785054617523241463186980898394504211" + "430763617825306895065661536045431497903759118007934839122881" + "885863091769469883539876840543521295706315919855784493235603" + "866268925981702690270202829595794350800918257913991744455922" + "683343374046671669930219650268554687501e-4951", + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + 0x0p+0, + 0x0p+0, + 0x0p+0, + 0x4p-1076, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + 0x8p-16448L, + 0x1p-16444L, + 0x8p-16448L, + 0x1p-16444L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + 0xcp-16448L, + 0xcp-16448L, + 0xcp-16448L, + 0xc.000000000004p-16448L), + TEST ("-5.467799297823711903792608900429129724598576223540345015581" + "470730542557532950096605214341062938740807795871021020805296" + "652950478448933048254960262113384713508225733871766897517853" + "837895708450339634932343848975116093410479690330290902886861" + "199931259216523277807574569082153073133673942958789577402321" + "393933101298533191266102118889630609532339508457854220031996" + "317935940718000325144008438048416150458546268408294693278282" + "948818382981756745231443707694395053270779125240469926867881" + "019850287125023579685557790983055974962881759919483752202903" + "689199564880305684635452065363595791988290536352100701716974" + "146329604439226626943340805268641901769971862776194876385604" + "059269084172123930049144599166605103175580232672032966645406" + "656863031434873551175363941825798425331906382524706572766485" + "232874542230564262609161782396887243896247009244068837251567" + "783223271286692480010679711347802408351619999199127493689411" + "300623337751847138939498426200450305845548565910009066524152" + "545480362818290224140170178363735317929685005697363930594593" + "881342895328789259362029119598601112899006188879876371854878" + "902571753767478028100558334716504784604592507791482451533133" + "513128606357440718182123637790769320922442349066328991687862" + "072550779316393139037201187579972933016227874898505255743233" + "300533498951938156636406532613846576145617323141684480726409" + "074184197224754542490884392813625365330881348799432844624838" + "960826144439157361917744290729073116318858191758821942010704" + "726536748514141391981088590968911224406479710632429529154589" + "293799132147906174349149006094094612827453365768213012516958" + "693057189940355112250629776318079573232513434098933115589372" + "428935891821270739299776803229999720720845111297142577993950" + "783716526325576426897121181953632299322177412313472666557946" + "026587137818658956285876183561334458426909806227578696972983" + "054578648540140777431341495495816167709600470194141141159275" + "548586447187051517332624446463129570157208744018317833998766" + "292676324122069807882266170905460107352347754465354279502046" + "825607840930640910087488682878186052982487934398794575125208" + "131434599031355068379234881462786244132403015573059216658125" + "100992278732459043154873457532866362865038072260302438341256" + "465144627211756104220773841311413109973101672893502315223943" + "131161953384837658368750910845308673019625511169535246418667" + "822192756475773031982522304934161885363133347824122722726808" + "458339668843622993626685401142719276703936351749165952313385" + "247253410412444111234661569689109707012146365225868127037807" + "653838169759426465847963786308715929383888075292817554540826" + "281340379356869541699838857230452874882475626566568389051842" + "269616942233880613753230478468266244820792868174047618834373" + "911783352591638681513579303490680611741310500871919788283761" + "473826205032029153949410495205647160664548204617663407545902" + "155255595959035495626212780995301367951250745142427183922194" + "679405686105598055836303373290577235698605118096647411642319" + "219474157243864921520422978127962037044537385134878691852739" + "978563080824265712270538180666161627113218201779779366124407" + "844574754753562338454876981852965553927903650323407245581099" + "158807518181769597517311013648265985455750620305808055101887" + "320313826045110985510052672007356612620966612560448241370561" + "199679677792733282710356886335229149926131229035514374201804" + "225447070710784729359320523404977483919175478103049697809100" + "609955967524096673011016762490361065647326710555615563378359" + "408954626110765311053180827944575772439918612038754867514863" + "217604919070168030521022438807226197480679192263641289752695" + "279367794662267414957708480356805124293407645094292709270568" + "454704291549032311245797185365876072558819037766647710690310" + "669384727884764603220129302332950334873072394721879741045233" + "391084791389282719581455185833551951893903144609338532918282" + "071417365794666174600590186688558973292265260457397284219723" + "118736526338195892522797003835806498724823327170646268765114" + "335047201804332131453475981952420330849091435859688615005340" + "662951243478815535510910054031985781353569592327342625691155" + "297753939420991863066846663288192966197121277244462515137195" + "342887549113968391968700872401047521725534791569882096021521" + "725739030856023532346309694644208054801875416636970616158970" + "521587368716636562878779650147005687012772946471436217221680" + "244104527691159700944328113538972913022260318566564643466194" + "762762807772321937689272738612051928757740541051011493615150" + "275299712275026278191137262599722341528351699547926563148579" + "945678256173476664846284964106409718181820427949855282782538" + "418620206551699936257338813616307747712660216941043590501407" + "704980849740902536932579576527206665027800420035787899091137" + "498285797710848848252835440631389386421149710576503050460098" + "225348880547453179874214337446508024003058237008669916793765" + "103830790970613932711932541885454647828573565454163547779034" + "696478261735426505076787833523027219489668014198674507463022" + "589310657355955884354584118602516953160415158848138916494891" + "482359394428713333626368035819136954032193064982447142548513" + "777798482352540211515117109331361325135068534382485905222012" + "689155196601835592087277572480712876900324312948680873379635" + "049766825511648515719101185883064389832362822347209928024358" + "316443434834701491039800443982197050828044087275939582794327" + "098500876914356235193809147621508354816413733354188380887001" + "911623409901345292980795015165229743643600614968493977578123" + "466095415615447864269417603852427781048383314979868134570808" + "915217919397946316940234061179348627230180807326753461268559" + "385959678786688421103134141790339174982532045466350837038525" + "183177847731101708972936115216192881538981857998354449098289" + "173408113131230974433096066603129145174088550345854388495636" + "765494379926460031453181542793269110787478232865475929357580" + "348192936196178107395850207543849907063319379969931169428718" + "329942347533981765560805872472322186708756306455763611238082" + "951450138207325773702247286660824416431038520521352370291078" + "718247251712503010649103184487159314175972977390771951004404" + "935285742659293676372796949610394059160197507860285966047861" + "411940542821283013449073170622058378826534472881876688512697" + "758815111198429044432164893190718808033606471387328883409622" + "920327667611981052185172613337770061634130425782297578896747" + "215274225504191258419704542303129850621901180024012018244583" + "859069664741628533451563101979900751568200425006085702090401" + "221537517047980048268055449980601076610965506150742174772246" + "118061736140257508229467892560527108358789784539076822640564" + "850851810352577863861819577512851607395927299014823941534626" + "348696657393457745078724366706324437838188311582720760585617" + "487635004508688532062666933131188059377591626964364639542322" + "054994079047698970924302742015839080613569097514938471468421" + "996493818271996291393146497945863918551953149000943761983830" + "636236545375480765488470416349046929644442714477859372568735" + "843708739015199069466751627920202433249482821065761826195203" + "859723026379941258427585166740391065737087970718105336581850" + "268003743156009120998264173899565279323585156937231413010764" + "716608523561569725709426913310091413578317885628039213932500" + "135284171861048461662744818955691362183779165069982032305970" + "876642081013358484182671863168168338174351197426412625098421" + "481239711997827391790388986589171883679226337788805245818923" + "874607498645601668109872286941958827402018143065273281785872" + "847384936953936746391717131732488209980499904305446724778559" + "203846472344227623989606643158012375642854007494547242775256" + "898117140062170585337487588594307260069257691479046720590527" + "237259474018798808190031749318500514291360716338072006978678" + "678209533184089369407377832511947183352849291708100854730341" + "450938156361786419525775154653957546143580362599388832564788" + "354103919236836698740026304968121883147777634511851850370958" + "884085902337976245656103068392811534994239396318567712305532" + "477169378421492493173704379367954605145484562415027095545060" + "831874739575572895083275461127704135960230120513850917554331" + "352277278650414100755269190224957237517573174092361876919730" + "465289835269438666544826003345857532325281423386809827947616" + "676425828491143428807224317894169834736598542769698312957949" + "605903203284128114992351808708487688511436903322773652124574" + "055471177142349271989998235771191022554548042468832219533624" + "049225313628185783780849179599378819912520555522211658107113" + "447678746843053930790961744210668515951907105384498734366645" + "249428031772015356705436411724477514133655840609854880392450" + "949605226182519804314027265530362531560532656953025288585499" + "182228921920121831359074541201044664224711170390199159133806" + "269332015718061873656943996928324527943031265119266878834003" + "362682519426029626295988425859770358488877080196120965282298" + "232237612230358616986168510604382051044429343285625121039569" + "326126486782398017268335279614177221030172599765237380415252" + "503716285229140380445599733136737846363243777324290551807506" + "541472429585746028822540006160866496164919640007935962267377" + "060789839526907505659662711614828949104249176417092401488510" + "615823548277477841813412329397443687705199567361868375111535" + "380877143498420444773617475831606309624504731127984157999557" + "818660940286424404275144312853627845343063342311866285268837" + "422960089441895882484245945054082617645214582938928610352277" + "410119555602965075325424443356593793852682899089314976629899" + "773835991388717888860719076570986705247088078593793511009142" + "474344996635349786568175384138024607561209403361748867467629" + "682257007702707626687955791367383934101209955804380644234879" + "805395123927491333463152240956446177043487579040223002287264" + "756843617701865806869707173187939918037456096349272671452872" + "922420893858994027251574788837911846161770227169407508741963" + "414729807676477574570702693444290823666440055726552795145348" + "219168459767427369197825367869095117877723957392541043867909" + "937470060997392012820142238132910823657536940367596076523833" + "377812701709657429614832107556695928504222183715979980013356" + "323996396963861087268039321030018015202061305161341454716371" + "377251261775727795597989586636757177645626856419109247702765" + "013583220037644023978372654055269485171726959848928885152966" + "097502777563956522973459672620583266843497935454194334506297" + "789118714656105011811810822332373521084368112861541360109122" + "200791235053695977711430654151451133236893607856092978814379" + "881439122150752237064864676736420913214731240701495311353237" + "983819572849112853697828591806699104099315306435617990388595" + "202795271374965360450205351235544991668088723423877385558163" + "617247959486687176509451394010328416791411019672026111081271" + "677642426015450739505038057545285042073081841299473107930734" + "353837688028012401932104019803872355878454440858434446609098" + "280206732652900093156204893287546907987495659518059539534709" + "328514027916546796559631836574970153581238433324096828364072" + "134400344200269161377205676209909802573933271591397018622517" + "645956348413413974664794017053790027535048049046885143930077" + "194991519470308057661102259067039984493186760977741752890345" + "473192220637893214146475540262942007429381634927003835133941" + "914676847385135317162915391223879714190592014303606413170523" + "042176230523286150385679951115593656516900591671184538913558" + "092816251191243853120415613844777512078954866614360029341206" + "576716710688850917256800353066853946058824831651339265256785" + "622460269729620332892007335442599404495662483134697945884683" + "759795006415186716458374920343394259217852886898131157533184" + "894159749247043678238750268753264909309649831534740397743600" + "139998210203084676369899478505461752324146318698089839450421" + "143076361782530689506566153604543149790375911800793483912288" + "188586309176946988353987684054352129570631591985578449323560" + "386626892598170269027020282959579435080091825791399174445592" + "2683343374046671669930219650268554687499e-4951", + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + -0x4p-1076, + -0x0p+0, + -0x0p+0, + -0x0p+0, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + -0x1p-16444L, + -0x8p-16448L, + -0x8p-16448L, + -0x8p-16448L, + false, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + -0xcp-16448L, + -0xcp-16448L, + -0xb.fffffffffffcp-16448L, + -0xb.fffffffffffcp-16448L), + TEST ("-5.467799297823711903792608900429129724598576223540345015581" + "470730542557532950096605214341062938740807795871021020805296" + "652950478448933048254960262113384713508225733871766897517853" + "837895708450339634932343848975116093410479690330290902886861" + "199931259216523277807574569082153073133673942958789577402321" + "393933101298533191266102118889630609532339508457854220031996" + "317935940718000325144008438048416150458546268408294693278282" + "948818382981756745231443707694395053270779125240469926867881" + "019850287125023579685557790983055974962881759919483752202903" + "689199564880305684635452065363595791988290536352100701716974" + "146329604439226626943340805268641901769971862776194876385604" + "059269084172123930049144599166605103175580232672032966645406" + "656863031434873551175363941825798425331906382524706572766485" + "232874542230564262609161782396887243896247009244068837251567" + "783223271286692480010679711347802408351619999199127493689411" + "300623337751847138939498426200450305845548565910009066524152" + "545480362818290224140170178363735317929685005697363930594593" + "881342895328789259362029119598601112899006188879876371854878" + "902571753767478028100558334716504784604592507791482451533133" + "513128606357440718182123637790769320922442349066328991687862" + "072550779316393139037201187579972933016227874898505255743233" + "300533498951938156636406532613846576145617323141684480726409" + "074184197224754542490884392813625365330881348799432844624838" + "960826144439157361917744290729073116318858191758821942010704" + "726536748514141391981088590968911224406479710632429529154589" + "293799132147906174349149006094094612827453365768213012516958" + "693057189940355112250629776318079573232513434098933115589372" + "428935891821270739299776803229999720720845111297142577993950" + "783716526325576426897121181953632299322177412313472666557946" + "026587137818658956285876183561334458426909806227578696972983" + "054578648540140777431341495495816167709600470194141141159275" + "548586447187051517332624446463129570157208744018317833998766" + "292676324122069807882266170905460107352347754465354279502046" + "825607840930640910087488682878186052982487934398794575125208" + "131434599031355068379234881462786244132403015573059216658125" + "100992278732459043154873457532866362865038072260302438341256" + "465144627211756104220773841311413109973101672893502315223943" + "131161953384837658368750910845308673019625511169535246418667" + "822192756475773031982522304934161885363133347824122722726808" + "458339668843622993626685401142719276703936351749165952313385" + "247253410412444111234661569689109707012146365225868127037807" + "653838169759426465847963786308715929383888075292817554540826" + "281340379356869541699838857230452874882475626566568389051842" + "269616942233880613753230478468266244820792868174047618834373" + "911783352591638681513579303490680611741310500871919788283761" + "473826205032029153949410495205647160664548204617663407545902" + "155255595959035495626212780995301367951250745142427183922194" + "679405686105598055836303373290577235698605118096647411642319" + "219474157243864921520422978127962037044537385134878691852739" + "978563080824265712270538180666161627113218201779779366124407" + "844574754753562338454876981852965553927903650323407245581099" + "158807518181769597517311013648265985455750620305808055101887" + "320313826045110985510052672007356612620966612560448241370561" + "199679677792733282710356886335229149926131229035514374201804" + "225447070710784729359320523404977483919175478103049697809100" + "609955967524096673011016762490361065647326710555615563378359" + "408954626110765311053180827944575772439918612038754867514863" + "217604919070168030521022438807226197480679192263641289752695" + "279367794662267414957708480356805124293407645094292709270568" + "454704291549032311245797185365876072558819037766647710690310" + "669384727884764603220129302332950334873072394721879741045233" + "391084791389282719581455185833551951893903144609338532918282" + "071417365794666174600590186688558973292265260457397284219723" + "118736526338195892522797003835806498724823327170646268765114" + "335047201804332131453475981952420330849091435859688615005340" + "662951243478815535510910054031985781353569592327342625691155" + "297753939420991863066846663288192966197121277244462515137195" + "342887549113968391968700872401047521725534791569882096021521" + "725739030856023532346309694644208054801875416636970616158970" + "521587368716636562878779650147005687012772946471436217221680" + "244104527691159700944328113538972913022260318566564643466194" + "762762807772321937689272738612051928757740541051011493615150" + "275299712275026278191137262599722341528351699547926563148579" + "945678256173476664846284964106409718181820427949855282782538" + "418620206551699936257338813616307747712660216941043590501407" + "704980849740902536932579576527206665027800420035787899091137" + "498285797710848848252835440631389386421149710576503050460098" + "225348880547453179874214337446508024003058237008669916793765" + "103830790970613932711932541885454647828573565454163547779034" + "696478261735426505076787833523027219489668014198674507463022" + "589310657355955884354584118602516953160415158848138916494891" + "482359394428713333626368035819136954032193064982447142548513" + "777798482352540211515117109331361325135068534382485905222012" + "689155196601835592087277572480712876900324312948680873379635" + "049766825511648515719101185883064389832362822347209928024358" + "316443434834701491039800443982197050828044087275939582794327" + "098500876914356235193809147621508354816413733354188380887001" + "911623409901345292980795015165229743643600614968493977578123" + "466095415615447864269417603852427781048383314979868134570808" + "915217919397946316940234061179348627230180807326753461268559" + "385959678786688421103134141790339174982532045466350837038525" + "183177847731101708972936115216192881538981857998354449098289" + "173408113131230974433096066603129145174088550345854388495636" + "765494379926460031453181542793269110787478232865475929357580" + "348192936196178107395850207543849907063319379969931169428718" + "329942347533981765560805872472322186708756306455763611238082" + "951450138207325773702247286660824416431038520521352370291078" + "718247251712503010649103184487159314175972977390771951004404" + "935285742659293676372796949610394059160197507860285966047861" + "411940542821283013449073170622058378826534472881876688512697" + "758815111198429044432164893190718808033606471387328883409622" + "920327667611981052185172613337770061634130425782297578896747" + "215274225504191258419704542303129850621901180024012018244583" + "859069664741628533451563101979900751568200425006085702090401" + "221537517047980048268055449980601076610965506150742174772246" + "118061736140257508229467892560527108358789784539076822640564" + "850851810352577863861819577512851607395927299014823941534626" + "348696657393457745078724366706324437838188311582720760585617" + "487635004508688532062666933131188059377591626964364639542322" + "054994079047698970924302742015839080613569097514938471468421" + "996493818271996291393146497945863918551953149000943761983830" + "636236545375480765488470416349046929644442714477859372568735" + "843708739015199069466751627920202433249482821065761826195203" + "859723026379941258427585166740391065737087970718105336581850" + "268003743156009120998264173899565279323585156937231413010764" + "716608523561569725709426913310091413578317885628039213932500" + "135284171861048461662744818955691362183779165069982032305970" + "876642081013358484182671863168168338174351197426412625098421" + "481239711997827391790388986589171883679226337788805245818923" + "874607498645601668109872286941958827402018143065273281785872" + "847384936953936746391717131732488209980499904305446724778559" + "203846472344227623989606643158012375642854007494547242775256" + "898117140062170585337487588594307260069257691479046720590527" + "237259474018798808190031749318500514291360716338072006978678" + "678209533184089369407377832511947183352849291708100854730341" + "450938156361786419525775154653957546143580362599388832564788" + "354103919236836698740026304968121883147777634511851850370958" + "884085902337976245656103068392811534994239396318567712305532" + "477169378421492493173704379367954605145484562415027095545060" + "831874739575572895083275461127704135960230120513850917554331" + "352277278650414100755269190224957237517573174092361876919730" + "465289835269438666544826003345857532325281423386809827947616" + "676425828491143428807224317894169834736598542769698312957949" + "605903203284128114992351808708487688511436903322773652124574" + "055471177142349271989998235771191022554548042468832219533624" + "049225313628185783780849179599378819912520555522211658107113" + "447678746843053930790961744210668515951907105384498734366645" + "249428031772015356705436411724477514133655840609854880392450" + "949605226182519804314027265530362531560532656953025288585499" + "182228921920121831359074541201044664224711170390199159133806" + "269332015718061873656943996928324527943031265119266878834003" + "362682519426029626295988425859770358488877080196120965282298" + "232237612230358616986168510604382051044429343285625121039569" + "326126486782398017268335279614177221030172599765237380415252" + "503716285229140380445599733136737846363243777324290551807506" + "541472429585746028822540006160866496164919640007935962267377" + "060789839526907505659662711614828949104249176417092401488510" + "615823548277477841813412329397443687705199567361868375111535" + "380877143498420444773617475831606309624504731127984157999557" + "818660940286424404275144312853627845343063342311866285268837" + "422960089441895882484245945054082617645214582938928610352277" + "410119555602965075325424443356593793852682899089314976629899" + "773835991388717888860719076570986705247088078593793511009142" + "474344996635349786568175384138024607561209403361748867467629" + "682257007702707626687955791367383934101209955804380644234879" + "805395123927491333463152240956446177043487579040223002287264" + "756843617701865806869707173187939918037456096349272671452872" + "922420893858994027251574788837911846161770227169407508741963" + "414729807676477574570702693444290823666440055726552795145348" + "219168459767427369197825367869095117877723957392541043867909" + "937470060997392012820142238132910823657536940367596076523833" + "377812701709657429614832107556695928504222183715979980013356" + "323996396963861087268039321030018015202061305161341454716371" + "377251261775727795597989586636757177645626856419109247702765" + "013583220037644023978372654055269485171726959848928885152966" + "097502777563956522973459672620583266843497935454194334506297" + "789118714656105011811810822332373521084368112861541360109122" + "200791235053695977711430654151451133236893607856092978814379" + "881439122150752237064864676736420913214731240701495311353237" + "983819572849112853697828591806699104099315306435617990388595" + "202795271374965360450205351235544991668088723423877385558163" + "617247959486687176509451394010328416791411019672026111081271" + "677642426015450739505038057545285042073081841299473107930734" + "353837688028012401932104019803872355878454440858434446609098" + "280206732652900093156204893287546907987495659518059539534709" + "328514027916546796559631836574970153581238433324096828364072" + "134400344200269161377205676209909802573933271591397018622517" + "645956348413413974664794017053790027535048049046885143930077" + "194991519470308057661102259067039984493186760977741752890345" + "473192220637893214146475540262942007429381634927003835133941" + "914676847385135317162915391223879714190592014303606413170523" + "042176230523286150385679951115593656516900591671184538913558" + "092816251191243853120415613844777512078954866614360029341206" + "576716710688850917256800353066853946058824831651339265256785" + "622460269729620332892007335442599404495662483134697945884683" + "759795006415186716458374920343394259217852886898131157533184" + "894159749247043678238750268753264909309649831534740397743600" + "139998210203084676369899478505461752324146318698089839450421" + "143076361782530689506566153604543149790375911800793483912288" + "188586309176946988353987684054352129570631591985578449323560" + "386626892598170269027020282959579435080091825791399174445592" + "26833433740466716699302196502685546875e-4951", + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + -0x4p-1076, + -0x0p+0, + -0x0p+0, + -0x0p+0, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + -0x1p-16444L, + -0x1p-16444L, + -0x8p-16448L, + -0x8p-16448L, + false, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + -0xcp-16448L, + -0xcp-16448L, + -0xcp-16448L, + -0xcp-16448L), + TEST ("-5.467799297823711903792608900429129724598576223540345015581" + "470730542557532950096605214341062938740807795871021020805296" + "652950478448933048254960262113384713508225733871766897517853" + "837895708450339634932343848975116093410479690330290902886861" + "199931259216523277807574569082153073133673942958789577402321" + "393933101298533191266102118889630609532339508457854220031996" + "317935940718000325144008438048416150458546268408294693278282" + "948818382981756745231443707694395053270779125240469926867881" + "019850287125023579685557790983055974962881759919483752202903" + "689199564880305684635452065363595791988290536352100701716974" + "146329604439226626943340805268641901769971862776194876385604" + "059269084172123930049144599166605103175580232672032966645406" + "656863031434873551175363941825798425331906382524706572766485" + "232874542230564262609161782396887243896247009244068837251567" + "783223271286692480010679711347802408351619999199127493689411" + "300623337751847138939498426200450305845548565910009066524152" + "545480362818290224140170178363735317929685005697363930594593" + "881342895328789259362029119598601112899006188879876371854878" + "902571753767478028100558334716504784604592507791482451533133" + "513128606357440718182123637790769320922442349066328991687862" + "072550779316393139037201187579972933016227874898505255743233" + "300533498951938156636406532613846576145617323141684480726409" + "074184197224754542490884392813625365330881348799432844624838" + "960826144439157361917744290729073116318858191758821942010704" + "726536748514141391981088590968911224406479710632429529154589" + "293799132147906174349149006094094612827453365768213012516958" + "693057189940355112250629776318079573232513434098933115589372" + "428935891821270739299776803229999720720845111297142577993950" + "783716526325576426897121181953632299322177412313472666557946" + "026587137818658956285876183561334458426909806227578696972983" + "054578648540140777431341495495816167709600470194141141159275" + "548586447187051517332624446463129570157208744018317833998766" + "292676324122069807882266170905460107352347754465354279502046" + "825607840930640910087488682878186052982487934398794575125208" + "131434599031355068379234881462786244132403015573059216658125" + "100992278732459043154873457532866362865038072260302438341256" + "465144627211756104220773841311413109973101672893502315223943" + "131161953384837658368750910845308673019625511169535246418667" + "822192756475773031982522304934161885363133347824122722726808" + "458339668843622993626685401142719276703936351749165952313385" + "247253410412444111234661569689109707012146365225868127037807" + "653838169759426465847963786308715929383888075292817554540826" + "281340379356869541699838857230452874882475626566568389051842" + "269616942233880613753230478468266244820792868174047618834373" + "911783352591638681513579303490680611741310500871919788283761" + "473826205032029153949410495205647160664548204617663407545902" + "155255595959035495626212780995301367951250745142427183922194" + "679405686105598055836303373290577235698605118096647411642319" + "219474157243864921520422978127962037044537385134878691852739" + "978563080824265712270538180666161627113218201779779366124407" + "844574754753562338454876981852965553927903650323407245581099" + "158807518181769597517311013648265985455750620305808055101887" + "320313826045110985510052672007356612620966612560448241370561" + "199679677792733282710356886335229149926131229035514374201804" + "225447070710784729359320523404977483919175478103049697809100" + "609955967524096673011016762490361065647326710555615563378359" + "408954626110765311053180827944575772439918612038754867514863" + "217604919070168030521022438807226197480679192263641289752695" + "279367794662267414957708480356805124293407645094292709270568" + "454704291549032311245797185365876072558819037766647710690310" + "669384727884764603220129302332950334873072394721879741045233" + "391084791389282719581455185833551951893903144609338532918282" + "071417365794666174600590186688558973292265260457397284219723" + "118736526338195892522797003835806498724823327170646268765114" + "335047201804332131453475981952420330849091435859688615005340" + "662951243478815535510910054031985781353569592327342625691155" + "297753939420991863066846663288192966197121277244462515137195" + "342887549113968391968700872401047521725534791569882096021521" + "725739030856023532346309694644208054801875416636970616158970" + "521587368716636562878779650147005687012772946471436217221680" + "244104527691159700944328113538972913022260318566564643466194" + "762762807772321937689272738612051928757740541051011493615150" + "275299712275026278191137262599722341528351699547926563148579" + "945678256173476664846284964106409718181820427949855282782538" + "418620206551699936257338813616307747712660216941043590501407" + "704980849740902536932579576527206665027800420035787899091137" + "498285797710848848252835440631389386421149710576503050460098" + "225348880547453179874214337446508024003058237008669916793765" + "103830790970613932711932541885454647828573565454163547779034" + "696478261735426505076787833523027219489668014198674507463022" + "589310657355955884354584118602516953160415158848138916494891" + "482359394428713333626368035819136954032193064982447142548513" + "777798482352540211515117109331361325135068534382485905222012" + "689155196601835592087277572480712876900324312948680873379635" + "049766825511648515719101185883064389832362822347209928024358" + "316443434834701491039800443982197050828044087275939582794327" + "098500876914356235193809147621508354816413733354188380887001" + "911623409901345292980795015165229743643600614968493977578123" + "466095415615447864269417603852427781048383314979868134570808" + "915217919397946316940234061179348627230180807326753461268559" + "385959678786688421103134141790339174982532045466350837038525" + "183177847731101708972936115216192881538981857998354449098289" + "173408113131230974433096066603129145174088550345854388495636" + "765494379926460031453181542793269110787478232865475929357580" + "348192936196178107395850207543849907063319379969931169428718" + "329942347533981765560805872472322186708756306455763611238082" + "951450138207325773702247286660824416431038520521352370291078" + "718247251712503010649103184487159314175972977390771951004404" + "935285742659293676372796949610394059160197507860285966047861" + "411940542821283013449073170622058378826534472881876688512697" + "758815111198429044432164893190718808033606471387328883409622" + "920327667611981052185172613337770061634130425782297578896747" + "215274225504191258419704542303129850621901180024012018244583" + "859069664741628533451563101979900751568200425006085702090401" + "221537517047980048268055449980601076610965506150742174772246" + "118061736140257508229467892560527108358789784539076822640564" + "850851810352577863861819577512851607395927299014823941534626" + "348696657393457745078724366706324437838188311582720760585617" + "487635004508688532062666933131188059377591626964364639542322" + "054994079047698970924302742015839080613569097514938471468421" + "996493818271996291393146497945863918551953149000943761983830" + "636236545375480765488470416349046929644442714477859372568735" + "843708739015199069466751627920202433249482821065761826195203" + "859723026379941258427585166740391065737087970718105336581850" + "268003743156009120998264173899565279323585156937231413010764" + "716608523561569725709426913310091413578317885628039213932500" + "135284171861048461662744818955691362183779165069982032305970" + "876642081013358484182671863168168338174351197426412625098421" + "481239711997827391790388986589171883679226337788805245818923" + "874607498645601668109872286941958827402018143065273281785872" + "847384936953936746391717131732488209980499904305446724778559" + "203846472344227623989606643158012375642854007494547242775256" + "898117140062170585337487588594307260069257691479046720590527" + "237259474018798808190031749318500514291360716338072006978678" + "678209533184089369407377832511947183352849291708100854730341" + "450938156361786419525775154653957546143580362599388832564788" + "354103919236836698740026304968121883147777634511851850370958" + "884085902337976245656103068392811534994239396318567712305532" + "477169378421492493173704379367954605145484562415027095545060" + "831874739575572895083275461127704135960230120513850917554331" + "352277278650414100755269190224957237517573174092361876919730" + "465289835269438666544826003345857532325281423386809827947616" + "676425828491143428807224317894169834736598542769698312957949" + "605903203284128114992351808708487688511436903322773652124574" + "055471177142349271989998235771191022554548042468832219533624" + "049225313628185783780849179599378819912520555522211658107113" + "447678746843053930790961744210668515951907105384498734366645" + "249428031772015356705436411724477514133655840609854880392450" + "949605226182519804314027265530362531560532656953025288585499" + "182228921920121831359074541201044664224711170390199159133806" + "269332015718061873656943996928324527943031265119266878834003" + "362682519426029626295988425859770358488877080196120965282298" + "232237612230358616986168510604382051044429343285625121039569" + "326126486782398017268335279614177221030172599765237380415252" + "503716285229140380445599733136737846363243777324290551807506" + "541472429585746028822540006160866496164919640007935962267377" + "060789839526907505659662711614828949104249176417092401488510" + "615823548277477841813412329397443687705199567361868375111535" + "380877143498420444773617475831606309624504731127984157999557" + "818660940286424404275144312853627845343063342311866285268837" + "422960089441895882484245945054082617645214582938928610352277" + "410119555602965075325424443356593793852682899089314976629899" + "773835991388717888860719076570986705247088078593793511009142" + "474344996635349786568175384138024607561209403361748867467629" + "682257007702707626687955791367383934101209955804380644234879" + "805395123927491333463152240956446177043487579040223002287264" + "756843617701865806869707173187939918037456096349272671452872" + "922420893858994027251574788837911846161770227169407508741963" + "414729807676477574570702693444290823666440055726552795145348" + "219168459767427369197825367869095117877723957392541043867909" + "937470060997392012820142238132910823657536940367596076523833" + "377812701709657429614832107556695928504222183715979980013356" + "323996396963861087268039321030018015202061305161341454716371" + "377251261775727795597989586636757177645626856419109247702765" + "013583220037644023978372654055269485171726959848928885152966" + "097502777563956522973459672620583266843497935454194334506297" + "789118714656105011811810822332373521084368112861541360109122" + "200791235053695977711430654151451133236893607856092978814379" + "881439122150752237064864676736420913214731240701495311353237" + "983819572849112853697828591806699104099315306435617990388595" + "202795271374965360450205351235544991668088723423877385558163" + "617247959486687176509451394010328416791411019672026111081271" + "677642426015450739505038057545285042073081841299473107930734" + "353837688028012401932104019803872355878454440858434446609098" + "280206732652900093156204893287546907987495659518059539534709" + "328514027916546796559631836574970153581238433324096828364072" + "134400344200269161377205676209909802573933271591397018622517" + "645956348413413974664794017053790027535048049046885143930077" + "194991519470308057661102259067039984493186760977741752890345" + "473192220637893214146475540262942007429381634927003835133941" + "914676847385135317162915391223879714190592014303606413170523" + "042176230523286150385679951115593656516900591671184538913558" + "092816251191243853120415613844777512078954866614360029341206" + "576716710688850917256800353066853946058824831651339265256785" + "622460269729620332892007335442599404495662483134697945884683" + "759795006415186716458374920343394259217852886898131157533184" + "894159749247043678238750268753264909309649831534740397743600" + "139998210203084676369899478505461752324146318698089839450421" + "143076361782530689506566153604543149790375911800793483912288" + "188586309176946988353987684054352129570631591985578449323560" + "386626892598170269027020282959579435080091825791399174445592" + "2683343374046671669930219650268554687501e-4951", + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + -0x4p-1076, + -0x0p+0, + -0x0p+0, + -0x0p+0, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + -0x1p-16444L, + -0x1p-16444L, + -0x8p-16448L, + -0x8p-16448L, + false, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + -0xc.000000000004p-16448L, + -0xcp-16448L, + -0xcp-16448L, + -0xcp-16448L), + TEST ("5.4677992978237119037926089004291297245985762235403450155814" + "707305425575329500966052143410629387408077958710210208052966" + "529504784489330482549602621133847135082257338717668975178538" + "378957084503396349323438489751160934104796903302909028868611" + "999312592165232778075745690821530731336739429587895774023213" + "939331012985331912661021188896306095323395084578542200319963" + "179359407180003251440084380484161504585462684082946932782829" + "488183829817567452314437076943950532707791252404699268678810" + "198502871250235796855577909830559749628817599194837522029036" + "891995648803056846354520653635957919882905363521007017169741" + "463296044392266269433408052686419017699718627761948763856040" + "592690841721239300491445991666051031755802326720329666454066" + "568630314348735511753639418257984253319063825247065727664852" + "328745422305642626091617823968872438962470092440688372515677" + "832232712866924800106797113478024083516199991991274936894113" + "006233377518471389394984262004503058455485659100090665241525" + "454803628182902241401701783637353179296850056973639305945938" + "813428953287892593620291195986011128990061888798763718548789" + "025717537674780281005583347165047846045925077914824515331335" + "131286063574407181821236377907693209224423490663289916878620" + "725507793163931390372011875799729330162278748985052557432333" + "005334989519381566364065326138465761456173231416844807264090" + "741841972247545424908843928136253653308813487994328446248389" + "608261444391573619177442907290731163188581917588219420107047" + "265367485141413919810885909689112244064797106324295291545892" + "937991321479061743491490060940946128274533657682130125169586" + "930571899403551122506297763180795732325134340989331155893724" + "289358918212707392997768032299997207208451112971425779939507" + "837165263255764268971211819536322993221774123134726665579460" + "265871378186589562858761835613344584269098062275786969729830" + "545786485401407774313414954958161677096004701941411411592755" + "485864471870515173326244464631295701572087440183178339987662" + "926763241220698078822661709054601073523477544653542795020468" + "256078409306409100874886828781860529824879343987945751252081" + "314345990313550683792348814627862441324030155730592166581251" + "009922787324590431548734575328663628650380722603024383412564" + "651446272117561042207738413114131099731016728935023152239431" + "311619533848376583687509108453086730196255111695352464186678" + "221927564757730319825223049341618853631333478241227227268084" + "583396688436229936266854011427192767039363517491659523133852" + "472534104124441112346615696891097070121463652258681270378076" + "538381697594264658479637863087159293838880752928175545408262" + "813403793568695416998388572304528748824756265665683890518422" + "696169422338806137532304784682662448207928681740476188343739" + "117833525916386815135793034906806117413105008719197882837614" + "738262050320291539494104952056471606645482046176634075459021" + "552555959590354956262127809953013679512507451424271839221946" + "794056861055980558363033732905772356986051180966474116423192" + "194741572438649215204229781279620370445373851348786918527399" + "785630808242657122705381806661616271132182017797793661244078" + "445747547535623384548769818529655539279036503234072455810991" + "588075181817695975173110136482659854557506203058080551018873" + "203138260451109855100526720073566126209666125604482413705611" + "996796777927332827103568863352291499261312290355143742018042" + "254470707107847293593205234049774839191754781030496978091006" + "099559675240966730110167624903610656473267105556155633783594" + "089546261107653110531808279445757724399186120387548675148632" + "176049190701680305210224388072261974806791922636412897526952" + "793677946622674149577084803568051242934076450942927092705684" + "547042915490323112457971853658760725588190377666477106903106" + "693847278847646032201293023329503348730723947218797410452333" + "910847913892827195814551858335519518939031446093385329182820" + "714173657946661746005901866885589732922652604573972842197231" + "187365263381958925227970038358064987248233271706462687651143" + "350472018043321314534759819524203308490914358596886150053406" + "629512434788155355109100540319857813535695923273426256911552" + "977539394209918630668466632881929661971212772444625151371953" + "428875491139683919687008724010475217255347915698820960215217" + "257390308560235323463096946442080548018754166369706161589705" + "215873687166365628787796501470056870127729464714362172216802" + "441045276911597009443281135389729130222603185665646434661947" + "627628077723219376892727386120519287577405410510114936151502" + "752997122750262781911372625997223415283516995479265631485799" + "456782561734766648462849641064097181818204279498552827825384" + "186202065516999362573388136163077477126602169410435905014077" + "049808497409025369325795765272066650278004200357878990911374" + "982857977108488482528354406313893864211497105765030504600982" + "253488805474531798742143374465080240030582370086699167937651" + "038307909706139327119325418854546478285735654541635477790346" + "964782617354265050767878335230272194896680141986745074630225" + "893106573559558843545841186025169531604151588481389164948914" + "823593944287133336263680358191369540321930649824471425485137" + "777984823525402115151171093313613251350685343824859052220126" + "891551966018355920872775724807128769003243129486808733796350" + "497668255116485157191011858830643898323628223472099280243583" + "164434348347014910398004439821970508280440872759395827943270" + "985008769143562351938091476215083548164137333541883808870019" + "116234099013452929807950151652297436436006149684939775781234" + "660954156154478642694176038524277810483833149798681345708089" + "152179193979463169402340611793486272301808073267534612685593" + "859596787866884211031341417903391749825320454663508370385251" + "831778477311017089729361152161928815389818579983544490982891" + "734081131312309744330960666031291451740885503458543884956367" + "654943799264600314531815427932691107874782328654759293575803" + "481929361961781073958502075438499070633193799699311694287183" + "299423475339817655608058724723221867087563064557636112380829" + "514501382073257737022472866608244164310385205213523702910787" + "182472517125030106491031844871593141759729773907719510044049" + "352857426592936763727969496103940591601975078602859660478614" + "119405428212830134490731706220583788265344728818766885126977" + "588151111984290444321648931907188080336064713873288834096229" + "203276676119810521851726133377700616341304257822975788967472" + "152742255041912584197045423031298506219011800240120182445838" + "590696647416285334515631019799007515682004250060857020904012" + "215375170479800482680554499806010766109655061507421747722461" + "180617361402575082294678925605271083587897845390768226405648" + "508518103525778638618195775128516073959272990148239415346263" + "486966573934577450787243667063244378381883115827207605856174" + "876350045086885320626669331311880593775916269643646395423220" + "549940790476989709243027420158390806135690975149384714684219" + "964938182719962913931464979458639185519531490009437619838306" + "362365453754807654884704163490469296444427144778593725687358" + "437087390151990694667516279202024332494828210657618261952038" + "597230263799412584275851667403910657370879707181053365818502" + "680037431560091209982641738995652793235851569372314130107647" + "166085235615697257094269133100914135783178856280392139325001" + "352841718610484616627448189556913621837791650699820323059708" + "766420810133584841826718631681683381743511974264126250984214" + "812397119978273917903889865891718836792263377888052458189238" + "746074986456016681098722869419588274020181430652732817858728" + "473849369539367463917171317324882099804999043054467247785592" + "038464723442276239896066431580123756428540074945472427752568" + "981171400621705853374875885943072600692576914790467205905272" + "372594740187988081900317493185005142913607163380720069786786" + "782095331840893694073778325119471833528492917081008547303414" + "509381563617864195257751546539575461435803625993888325647883" + "541039192368366987400263049681218831477776345118518503709588" + "840859023379762456561030683928115349942393963185677123055324" + "771693784214924931737043793679546051454845624150270955450608" + "318747395755728950832754611277041359602301205138509175543313" + "522772786504141007552691902249572375175731740923618769197304" + "652898352694386665448260033458575323252814233868098279476166" + "764258284911434288072243178941698347365985427696983129579496" + "059032032841281149923518087084876885114369033227736521245740" + "554711771423492719899982357711910225545480424688322195336240" + "492253136281857837808491795993788199125205555222116581071134" + "476787468430539307909617442106685159519071053844987343666452" + "494280317720153567054364117244775141336558406098548803924509" + "496052261825198043140272655303625315605326569530252885854991" + "822289219201218313590745412010446642247111703901991591338062" + "693320157180618736569439969283245279430312651192668788340033" + "626825194260296262959884258597703584888770801961209652822982" + "322376122303586169861685106043820510444293432856251210395693" + "261264867823980172683352796141772210301725997652373804152525" + "037162852291403804455997331367378463632437773242905518075065" + "414724295857460288225400061608664961649196400079359622673770" + "607898395269075056596627116148289491042491764170924014885106" + "158235482774778418134123293974436877051995673618683751115353" + "808771434984204447736174758316063096245047311279841579995578" + "186609402864244042751443128536278453430633423118662852688374" + "229600894418958824842459450540826176452145829389286103522774" + "101195556029650753254244433565937938526828990893149766298997" + "738359913887178888607190765709867052470880785937935110091424" + "743449966353497865681753841380246075612094033617488674676296" + "822570077027076266879557913673839341012099558043806442348798" + "053951239274913334631522409564461770434875790402230022872647" + "568436177018658068697071731879399180374560963492726714528729" + "224208938589940272515747888379118461617702271694075087419634" + "147298076764775745707026934442908236664400557265527951453482" + "191684597674273691978253678690951178777239573925410438679099" + "374700609973920128201422381329108236575369403675960765238333" + "778127017096574296148321075566959285042221837159799800133563" + "239963969638610872680393210300180152020613051613414547163713" + "772512617757277955979895866367571776456268564191092477027650" + "135832200376440239783726540552694851717269598489288851529660" + "975027775639565229734596726205832668434979354541943345062977" + "891187146561050118118108223323735210843681128615413601091222" + "007912350536959777114306541514511332368936078560929788143798" + "814391221507522370648646767364209132147312407014953113532379" + "838195728491128536978285918066991040993153064356179903885952" + "027952713749653604502053512355449916680887234238773855581636" + "172479594866871765094513940103284167914110196720261110812716" + "776424260154507395050380575452850420730818412994731079307343" + "538376880280124019321040198038723558784544408584344466090982" + "802067326529000931562048932875469079874956595180595395347093" + "285140279165467965596318365749701535812384333240968283640721" + "344003442002691613772056762099098025739332715913970186225176" + "459563484134139746647940170537900275350480490468851439300771" + "949915194703080576611022590670399844931867609777417528903454" + "731922206378932141464755402629420074293816349270038351339419" + "146768473851353171629153912238797141905920143036064131705230" + "421762305232861503856799511155936565169005916711845389135580" + "928162511912438531204156138447775120789548666143600293412065" + "767167106888509172568003530668539460588248316513392652567856" + "224602697296203328920073354425994044956624831346979458846837" + "597950064151867164583749203433942592178528868981311575331848" + "941597492470436782387502687532649093096498315347403977436001" + "399982102030846763698994785054617523241463186980898394504211" + "430763617825306895065661536045431497903759118007934839122881" + "885863091769469883539876840543521295706315919855784493235603" + "866268925981702690270202829595794350800918257913991744455922" + "683343374046671669930219650268554687499e-4951", + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + 0x0p+0, + 0x0p+0, + 0x0p+0, + 0x4p-1076, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + 0x8p-16448L, + 0x8p-16448L, + 0x8p-16448L, + 0x1p-16444L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + 0xb.fffffffffffcp-16448L, + 0xcp-16448L, + 0xb.fffffffffffcp-16448L, + 0xcp-16448L), + TEST ("5.4677992978237119037926089004291297245985762235403450155814" + "707305425575329500966052143410629387408077958710210208052966" + "529504784489330482549602621133847135082257338717668975178538" + "378957084503396349323438489751160934104796903302909028868611" + "999312592165232778075745690821530731336739429587895774023213" + "939331012985331912661021188896306095323395084578542200319963" + "179359407180003251440084380484161504585462684082946932782829" + "488183829817567452314437076943950532707791252404699268678810" + "198502871250235796855577909830559749628817599194837522029036" + "891995648803056846354520653635957919882905363521007017169741" + "463296044392266269433408052686419017699718627761948763856040" + "592690841721239300491445991666051031755802326720329666454066" + "568630314348735511753639418257984253319063825247065727664852" + "328745422305642626091617823968872438962470092440688372515677" + "832232712866924800106797113478024083516199991991274936894113" + "006233377518471389394984262004503058455485659100090665241525" + "454803628182902241401701783637353179296850056973639305945938" + "813428953287892593620291195986011128990061888798763718548789" + "025717537674780281005583347165047846045925077914824515331335" + "131286063574407181821236377907693209224423490663289916878620" + "725507793163931390372011875799729330162278748985052557432333" + "005334989519381566364065326138465761456173231416844807264090" + "741841972247545424908843928136253653308813487994328446248389" + "608261444391573619177442907290731163188581917588219420107047" + "265367485141413919810885909689112244064797106324295291545892" + "937991321479061743491490060940946128274533657682130125169586" + "930571899403551122506297763180795732325134340989331155893724" + "289358918212707392997768032299997207208451112971425779939507" + "837165263255764268971211819536322993221774123134726665579460" + "265871378186589562858761835613344584269098062275786969729830" + "545786485401407774313414954958161677096004701941411411592755" + "485864471870515173326244464631295701572087440183178339987662" + "926763241220698078822661709054601073523477544653542795020468" + "256078409306409100874886828781860529824879343987945751252081" + "314345990313550683792348814627862441324030155730592166581251" + "009922787324590431548734575328663628650380722603024383412564" + "651446272117561042207738413114131099731016728935023152239431" + "311619533848376583687509108453086730196255111695352464186678" + "221927564757730319825223049341618853631333478241227227268084" + "583396688436229936266854011427192767039363517491659523133852" + "472534104124441112346615696891097070121463652258681270378076" + "538381697594264658479637863087159293838880752928175545408262" + "813403793568695416998388572304528748824756265665683890518422" + "696169422338806137532304784682662448207928681740476188343739" + "117833525916386815135793034906806117413105008719197882837614" + "738262050320291539494104952056471606645482046176634075459021" + "552555959590354956262127809953013679512507451424271839221946" + "794056861055980558363033732905772356986051180966474116423192" + "194741572438649215204229781279620370445373851348786918527399" + "785630808242657122705381806661616271132182017797793661244078" + "445747547535623384548769818529655539279036503234072455810991" + "588075181817695975173110136482659854557506203058080551018873" + "203138260451109855100526720073566126209666125604482413705611" + "996796777927332827103568863352291499261312290355143742018042" + "254470707107847293593205234049774839191754781030496978091006" + "099559675240966730110167624903610656473267105556155633783594" + "089546261107653110531808279445757724399186120387548675148632" + "176049190701680305210224388072261974806791922636412897526952" + "793677946622674149577084803568051242934076450942927092705684" + "547042915490323112457971853658760725588190377666477106903106" + "693847278847646032201293023329503348730723947218797410452333" + "910847913892827195814551858335519518939031446093385329182820" + "714173657946661746005901866885589732922652604573972842197231" + "187365263381958925227970038358064987248233271706462687651143" + "350472018043321314534759819524203308490914358596886150053406" + "629512434788155355109100540319857813535695923273426256911552" + "977539394209918630668466632881929661971212772444625151371953" + "428875491139683919687008724010475217255347915698820960215217" + "257390308560235323463096946442080548018754166369706161589705" + "215873687166365628787796501470056870127729464714362172216802" + "441045276911597009443281135389729130222603185665646434661947" + "627628077723219376892727386120519287577405410510114936151502" + "752997122750262781911372625997223415283516995479265631485799" + "456782561734766648462849641064097181818204279498552827825384" + "186202065516999362573388136163077477126602169410435905014077" + "049808497409025369325795765272066650278004200357878990911374" + "982857977108488482528354406313893864211497105765030504600982" + "253488805474531798742143374465080240030582370086699167937651" + "038307909706139327119325418854546478285735654541635477790346" + "964782617354265050767878335230272194896680141986745074630225" + "893106573559558843545841186025169531604151588481389164948914" + "823593944287133336263680358191369540321930649824471425485137" + "777984823525402115151171093313613251350685343824859052220126" + "891551966018355920872775724807128769003243129486808733796350" + "497668255116485157191011858830643898323628223472099280243583" + "164434348347014910398004439821970508280440872759395827943270" + "985008769143562351938091476215083548164137333541883808870019" + "116234099013452929807950151652297436436006149684939775781234" + "660954156154478642694176038524277810483833149798681345708089" + "152179193979463169402340611793486272301808073267534612685593" + "859596787866884211031341417903391749825320454663508370385251" + "831778477311017089729361152161928815389818579983544490982891" + "734081131312309744330960666031291451740885503458543884956367" + "654943799264600314531815427932691107874782328654759293575803" + "481929361961781073958502075438499070633193799699311694287183" + "299423475339817655608058724723221867087563064557636112380829" + "514501382073257737022472866608244164310385205213523702910787" + "182472517125030106491031844871593141759729773907719510044049" + "352857426592936763727969496103940591601975078602859660478614" + "119405428212830134490731706220583788265344728818766885126977" + "588151111984290444321648931907188080336064713873288834096229" + "203276676119810521851726133377700616341304257822975788967472" + "152742255041912584197045423031298506219011800240120182445838" + "590696647416285334515631019799007515682004250060857020904012" + "215375170479800482680554499806010766109655061507421747722461" + "180617361402575082294678925605271083587897845390768226405648" + "508518103525778638618195775128516073959272990148239415346263" + "486966573934577450787243667063244378381883115827207605856174" + "876350045086885320626669331311880593775916269643646395423220" + "549940790476989709243027420158390806135690975149384714684219" + "964938182719962913931464979458639185519531490009437619838306" + "362365453754807654884704163490469296444427144778593725687358" + "437087390151990694667516279202024332494828210657618261952038" + "597230263799412584275851667403910657370879707181053365818502" + "680037431560091209982641738995652793235851569372314130107647" + "166085235615697257094269133100914135783178856280392139325001" + "352841718610484616627448189556913621837791650699820323059708" + "766420810133584841826718631681683381743511974264126250984214" + "812397119978273917903889865891718836792263377888052458189238" + "746074986456016681098722869419588274020181430652732817858728" + "473849369539367463917171317324882099804999043054467247785592" + "038464723442276239896066431580123756428540074945472427752568" + "981171400621705853374875885943072600692576914790467205905272" + "372594740187988081900317493185005142913607163380720069786786" + "782095331840893694073778325119471833528492917081008547303414" + "509381563617864195257751546539575461435803625993888325647883" + "541039192368366987400263049681218831477776345118518503709588" + "840859023379762456561030683928115349942393963185677123055324" + "771693784214924931737043793679546051454845624150270955450608" + "318747395755728950832754611277041359602301205138509175543313" + "522772786504141007552691902249572375175731740923618769197304" + "652898352694386665448260033458575323252814233868098279476166" + "764258284911434288072243178941698347365985427696983129579496" + "059032032841281149923518087084876885114369033227736521245740" + "554711771423492719899982357711910225545480424688322195336240" + "492253136281857837808491795993788199125205555222116581071134" + "476787468430539307909617442106685159519071053844987343666452" + "494280317720153567054364117244775141336558406098548803924509" + "496052261825198043140272655303625315605326569530252885854991" + "822289219201218313590745412010446642247111703901991591338062" + "693320157180618736569439969283245279430312651192668788340033" + "626825194260296262959884258597703584888770801961209652822982" + "322376122303586169861685106043820510444293432856251210395693" + "261264867823980172683352796141772210301725997652373804152525" + "037162852291403804455997331367378463632437773242905518075065" + "414724295857460288225400061608664961649196400079359622673770" + "607898395269075056596627116148289491042491764170924014885106" + "158235482774778418134123293974436877051995673618683751115353" + "808771434984204447736174758316063096245047311279841579995578" + "186609402864244042751443128536278453430633423118662852688374" + "229600894418958824842459450540826176452145829389286103522774" + "101195556029650753254244433565937938526828990893149766298997" + "738359913887178888607190765709867052470880785937935110091424" + "743449966353497865681753841380246075612094033617488674676296" + "822570077027076266879557913673839341012099558043806442348798" + "053951239274913334631522409564461770434875790402230022872647" + "568436177018658068697071731879399180374560963492726714528729" + "224208938589940272515747888379118461617702271694075087419634" + "147298076764775745707026934442908236664400557265527951453482" + "191684597674273691978253678690951178777239573925410438679099" + "374700609973920128201422381329108236575369403675960765238333" + "778127017096574296148321075566959285042221837159799800133563" + "239963969638610872680393210300180152020613051613414547163713" + "772512617757277955979895866367571776456268564191092477027650" + "135832200376440239783726540552694851717269598489288851529660" + "975027775639565229734596726205832668434979354541943345062977" + "891187146561050118118108223323735210843681128615413601091222" + "007912350536959777114306541514511332368936078560929788143798" + "814391221507522370648646767364209132147312407014953113532379" + "838195728491128536978285918066991040993153064356179903885952" + "027952713749653604502053512355449916680887234238773855581636" + "172479594866871765094513940103284167914110196720261110812716" + "776424260154507395050380575452850420730818412994731079307343" + "538376880280124019321040198038723558784544408584344466090982" + "802067326529000931562048932875469079874956595180595395347093" + "285140279165467965596318365749701535812384333240968283640721" + "344003442002691613772056762099098025739332715913970186225176" + "459563484134139746647940170537900275350480490468851439300771" + "949915194703080576611022590670399844931867609777417528903454" + "731922206378932141464755402629420074293816349270038351339419" + "146768473851353171629153912238797141905920143036064131705230" + "421762305232861503856799511155936565169005916711845389135580" + "928162511912438531204156138447775120789548666143600293412065" + "767167106888509172568003530668539460588248316513392652567856" + "224602697296203328920073354425994044956624831346979458846837" + "597950064151867164583749203433942592178528868981311575331848" + "941597492470436782387502687532649093096498315347403977436001" + "399982102030846763698994785054617523241463186980898394504211" + "430763617825306895065661536045431497903759118007934839122881" + "885863091769469883539876840543521295706315919855784493235603" + "866268925981702690270202829595794350800918257913991744455922" + "6833433740466716699302196502685546875e-4951", + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + 0x0p+0, + 0x0p+0, + 0x0p+0, + 0x4p-1076, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + 0x8p-16448L, + 0x1p-16444L, + 0x8p-16448L, + 0x1p-16444L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + 0xcp-16448L, + 0xcp-16448L, + 0xcp-16448L, + 0xcp-16448L), + TEST ("5.4677992978237119037926089004291297245985762235403450155814" + "707305425575329500966052143410629387408077958710210208052966" + "529504784489330482549602621133847135082257338717668975178538" + "378957084503396349323438489751160934104796903302909028868611" + "999312592165232778075745690821530731336739429587895774023213" + "939331012985331912661021188896306095323395084578542200319963" + "179359407180003251440084380484161504585462684082946932782829" + "488183829817567452314437076943950532707791252404699268678810" + "198502871250235796855577909830559749628817599194837522029036" + "891995648803056846354520653635957919882905363521007017169741" + "463296044392266269433408052686419017699718627761948763856040" + "592690841721239300491445991666051031755802326720329666454066" + "568630314348735511753639418257984253319063825247065727664852" + "328745422305642626091617823968872438962470092440688372515677" + "832232712866924800106797113478024083516199991991274936894113" + "006233377518471389394984262004503058455485659100090665241525" + "454803628182902241401701783637353179296850056973639305945938" + "813428953287892593620291195986011128990061888798763718548789" + "025717537674780281005583347165047846045925077914824515331335" + "131286063574407181821236377907693209224423490663289916878620" + "725507793163931390372011875799729330162278748985052557432333" + "005334989519381566364065326138465761456173231416844807264090" + "741841972247545424908843928136253653308813487994328446248389" + "608261444391573619177442907290731163188581917588219420107047" + "265367485141413919810885909689112244064797106324295291545892" + "937991321479061743491490060940946128274533657682130125169586" + "930571899403551122506297763180795732325134340989331155893724" + "289358918212707392997768032299997207208451112971425779939507" + "837165263255764268971211819536322993221774123134726665579460" + "265871378186589562858761835613344584269098062275786969729830" + "545786485401407774313414954958161677096004701941411411592755" + "485864471870515173326244464631295701572087440183178339987662" + "926763241220698078822661709054601073523477544653542795020468" + "256078409306409100874886828781860529824879343987945751252081" + "314345990313550683792348814627862441324030155730592166581251" + "009922787324590431548734575328663628650380722603024383412564" + "651446272117561042207738413114131099731016728935023152239431" + "311619533848376583687509108453086730196255111695352464186678" + "221927564757730319825223049341618853631333478241227227268084" + "583396688436229936266854011427192767039363517491659523133852" + "472534104124441112346615696891097070121463652258681270378076" + "538381697594264658479637863087159293838880752928175545408262" + "813403793568695416998388572304528748824756265665683890518422" + "696169422338806137532304784682662448207928681740476188343739" + "117833525916386815135793034906806117413105008719197882837614" + "738262050320291539494104952056471606645482046176634075459021" + "552555959590354956262127809953013679512507451424271839221946" + "794056861055980558363033732905772356986051180966474116423192" + "194741572438649215204229781279620370445373851348786918527399" + "785630808242657122705381806661616271132182017797793661244078" + "445747547535623384548769818529655539279036503234072455810991" + "588075181817695975173110136482659854557506203058080551018873" + "203138260451109855100526720073566126209666125604482413705611" + "996796777927332827103568863352291499261312290355143742018042" + "254470707107847293593205234049774839191754781030496978091006" + "099559675240966730110167624903610656473267105556155633783594" + "089546261107653110531808279445757724399186120387548675148632" + "176049190701680305210224388072261974806791922636412897526952" + "793677946622674149577084803568051242934076450942927092705684" + "547042915490323112457971853658760725588190377666477106903106" + "693847278847646032201293023329503348730723947218797410452333" + "910847913892827195814551858335519518939031446093385329182820" + "714173657946661746005901866885589732922652604573972842197231" + "187365263381958925227970038358064987248233271706462687651143" + "350472018043321314534759819524203308490914358596886150053406" + "629512434788155355109100540319857813535695923273426256911552" + "977539394209918630668466632881929661971212772444625151371953" + "428875491139683919687008724010475217255347915698820960215217" + "257390308560235323463096946442080548018754166369706161589705" + "215873687166365628787796501470056870127729464714362172216802" + "441045276911597009443281135389729130222603185665646434661947" + "627628077723219376892727386120519287577405410510114936151502" + "752997122750262781911372625997223415283516995479265631485799" + "456782561734766648462849641064097181818204279498552827825384" + "186202065516999362573388136163077477126602169410435905014077" + "049808497409025369325795765272066650278004200357878990911374" + "982857977108488482528354406313893864211497105765030504600982" + "253488805474531798742143374465080240030582370086699167937651" + "038307909706139327119325418854546478285735654541635477790346" + "964782617354265050767878335230272194896680141986745074630225" + "893106573559558843545841186025169531604151588481389164948914" + "823593944287133336263680358191369540321930649824471425485137" + "777984823525402115151171093313613251350685343824859052220126" + "891551966018355920872775724807128769003243129486808733796350" + "497668255116485157191011858830643898323628223472099280243583" + "164434348347014910398004439821970508280440872759395827943270" + "985008769143562351938091476215083548164137333541883808870019" + "116234099013452929807950151652297436436006149684939775781234" + "660954156154478642694176038524277810483833149798681345708089" + "152179193979463169402340611793486272301808073267534612685593" + "859596787866884211031341417903391749825320454663508370385251" + "831778477311017089729361152161928815389818579983544490982891" + "734081131312309744330960666031291451740885503458543884956367" + "654943799264600314531815427932691107874782328654759293575803" + "481929361961781073958502075438499070633193799699311694287183" + "299423475339817655608058724723221867087563064557636112380829" + "514501382073257737022472866608244164310385205213523702910787" + "182472517125030106491031844871593141759729773907719510044049" + "352857426592936763727969496103940591601975078602859660478614" + "119405428212830134490731706220583788265344728818766885126977" + "588151111984290444321648931907188080336064713873288834096229" + "203276676119810521851726133377700616341304257822975788967472" + "152742255041912584197045423031298506219011800240120182445838" + "590696647416285334515631019799007515682004250060857020904012" + "215375170479800482680554499806010766109655061507421747722461" + "180617361402575082294678925605271083587897845390768226405648" + "508518103525778638618195775128516073959272990148239415346263" + "486966573934577450787243667063244378381883115827207605856174" + "876350045086885320626669331311880593775916269643646395423220" + "549940790476989709243027420158390806135690975149384714684219" + "964938182719962913931464979458639185519531490009437619838306" + "362365453754807654884704163490469296444427144778593725687358" + "437087390151990694667516279202024332494828210657618261952038" + "597230263799412584275851667403910657370879707181053365818502" + "680037431560091209982641738995652793235851569372314130107647" + "166085235615697257094269133100914135783178856280392139325001" + "352841718610484616627448189556913621837791650699820323059708" + "766420810133584841826718631681683381743511974264126250984214" + "812397119978273917903889865891718836792263377888052458189238" + "746074986456016681098722869419588274020181430652732817858728" + "473849369539367463917171317324882099804999043054467247785592" + "038464723442276239896066431580123756428540074945472427752568" + "981171400621705853374875885943072600692576914790467205905272" + "372594740187988081900317493185005142913607163380720069786786" + "782095331840893694073778325119471833528492917081008547303414" + "509381563617864195257751546539575461435803625993888325647883" + "541039192368366987400263049681218831477776345118518503709588" + "840859023379762456561030683928115349942393963185677123055324" + "771693784214924931737043793679546051454845624150270955450608" + "318747395755728950832754611277041359602301205138509175543313" + "522772786504141007552691902249572375175731740923618769197304" + "652898352694386665448260033458575323252814233868098279476166" + "764258284911434288072243178941698347365985427696983129579496" + "059032032841281149923518087084876885114369033227736521245740" + "554711771423492719899982357711910225545480424688322195336240" + "492253136281857837808491795993788199125205555222116581071134" + "476787468430539307909617442106685159519071053844987343666452" + "494280317720153567054364117244775141336558406098548803924509" + "496052261825198043140272655303625315605326569530252885854991" + "822289219201218313590745412010446642247111703901991591338062" + "693320157180618736569439969283245279430312651192668788340033" + "626825194260296262959884258597703584888770801961209652822982" + "322376122303586169861685106043820510444293432856251210395693" + "261264867823980172683352796141772210301725997652373804152525" + "037162852291403804455997331367378463632437773242905518075065" + "414724295857460288225400061608664961649196400079359622673770" + "607898395269075056596627116148289491042491764170924014885106" + "158235482774778418134123293974436877051995673618683751115353" + "808771434984204447736174758316063096245047311279841579995578" + "186609402864244042751443128536278453430633423118662852688374" + "229600894418958824842459450540826176452145829389286103522774" + "101195556029650753254244433565937938526828990893149766298997" + "738359913887178888607190765709867052470880785937935110091424" + "743449966353497865681753841380246075612094033617488674676296" + "822570077027076266879557913673839341012099558043806442348798" + "053951239274913334631522409564461770434875790402230022872647" + "568436177018658068697071731879399180374560963492726714528729" + "224208938589940272515747888379118461617702271694075087419634" + "147298076764775745707026934442908236664400557265527951453482" + "191684597674273691978253678690951178777239573925410438679099" + "374700609973920128201422381329108236575369403675960765238333" + "778127017096574296148321075566959285042221837159799800133563" + "239963969638610872680393210300180152020613051613414547163713" + "772512617757277955979895866367571776456268564191092477027650" + "135832200376440239783726540552694851717269598489288851529660" + "975027775639565229734596726205832668434979354541943345062977" + "891187146561050118118108223323735210843681128615413601091222" + "007912350536959777114306541514511332368936078560929788143798" + "814391221507522370648646767364209132147312407014953113532379" + "838195728491128536978285918066991040993153064356179903885952" + "027952713749653604502053512355449916680887234238773855581636" + "172479594866871765094513940103284167914110196720261110812716" + "776424260154507395050380575452850420730818412994731079307343" + "538376880280124019321040198038723558784544408584344466090982" + "802067326529000931562048932875469079874956595180595395347093" + "285140279165467965596318365749701535812384333240968283640721" + "344003442002691613772056762099098025739332715913970186225176" + "459563484134139746647940170537900275350480490468851439300771" + "949915194703080576611022590670399844931867609777417528903454" + "731922206378932141464755402629420074293816349270038351339419" + "146768473851353171629153912238797141905920143036064131705230" + "421762305232861503856799511155936565169005916711845389135580" + "928162511912438531204156138447775120789548666143600293412065" + "767167106888509172568003530668539460588248316513392652567856" + "224602697296203328920073354425994044956624831346979458846837" + "597950064151867164583749203433942592178528868981311575331848" + "941597492470436782387502687532649093096498315347403977436001" + "399982102030846763698994785054617523241463186980898394504211" + "430763617825306895065661536045431497903759118007934839122881" + "885863091769469883539876840543521295706315919855784493235603" + "866268925981702690270202829595794350800918257913991744455922" + "683343374046671669930219650268554687501e-4951", + 0x0p+0f, + 0x0p+0f, + 0x0p+0f, + 0x8p-152f, + 0x0p+0, + 0x0p+0, + 0x0p+0, + 0x4p-1076, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + 0x8p-16448L, + 0x1p-16444L, + 0x8p-16448L, + 0x1p-16444L, + false, + 0x0p+0L, + 0x0p+0L, + 0x0p+0L, + 0x4p-1076L, + 0xcp-16448L, + 0xcp-16448L, + 0xcp-16448L, + 0xc.000000000004p-16448L), + TEST ("-5.467799297823711903792608900429129724598576223540345015581" + "470730542557532950096605214341062938740807795871021020805296" + "652950478448933048254960262113384713508225733871766897517853" + "837895708450339634932343848975116093410479690330290902886861" + "199931259216523277807574569082153073133673942958789577402321" + "393933101298533191266102118889630609532339508457854220031996" + "317935940718000325144008438048416150458546268408294693278282" + "948818382981756745231443707694395053270779125240469926867881" + "019850287125023579685557790983055974962881759919483752202903" + "689199564880305684635452065363595791988290536352100701716974" + "146329604439226626943340805268641901769971862776194876385604" + "059269084172123930049144599166605103175580232672032966645406" + "656863031434873551175363941825798425331906382524706572766485" + "232874542230564262609161782396887243896247009244068837251567" + "783223271286692480010679711347802408351619999199127493689411" + "300623337751847138939498426200450305845548565910009066524152" + "545480362818290224140170178363735317929685005697363930594593" + "881342895328789259362029119598601112899006188879876371854878" + "902571753767478028100558334716504784604592507791482451533133" + "513128606357440718182123637790769320922442349066328991687862" + "072550779316393139037201187579972933016227874898505255743233" + "300533498951938156636406532613846576145617323141684480726409" + "074184197224754542490884392813625365330881348799432844624838" + "960826144439157361917744290729073116318858191758821942010704" + "726536748514141391981088590968911224406479710632429529154589" + "293799132147906174349149006094094612827453365768213012516958" + "693057189940355112250629776318079573232513434098933115589372" + "428935891821270739299776803229999720720845111297142577993950" + "783716526325576426897121181953632299322177412313472666557946" + "026587137818658956285876183561334458426909806227578696972983" + "054578648540140777431341495495816167709600470194141141159275" + "548586447187051517332624446463129570157208744018317833998766" + "292676324122069807882266170905460107352347754465354279502046" + "825607840930640910087488682878186052982487934398794575125208" + "131434599031355068379234881462786244132403015573059216658125" + "100992278732459043154873457532866362865038072260302438341256" + "465144627211756104220773841311413109973101672893502315223943" + "131161953384837658368750910845308673019625511169535246418667" + "822192756475773031982522304934161885363133347824122722726808" + "458339668843622993626685401142719276703936351749165952313385" + "247253410412444111234661569689109707012146365225868127037807" + "653838169759426465847963786308715929383888075292817554540826" + "281340379356869541699838857230452874882475626566568389051842" + "269616942233880613753230478468266244820792868174047618834373" + "911783352591638681513579303490680611741310500871919788283761" + "473826205032029153949410495205647160664548204617663407545902" + "155255595959035495626212780995301367951250745142427183922194" + "679405686105598055836303373290577235698605118096647411642319" + "219474157243864921520422978127962037044537385134878691852739" + "978563080824265712270538180666161627113218201779779366124407" + "844574754753562338454876981852965553927903650323407245581099" + "158807518181769597517311013648265985455750620305808055101887" + "320313826045110985510052672007356612620966612560448241370561" + "199679677792733282710356886335229149926131229035514374201804" + "225447070710784729359320523404977483919175478103049697809100" + "609955967524096673011016762490361065647326710555615563378359" + "408954626110765311053180827944575772439918612038754867514863" + "217604919070168030521022438807226197480679192263641289752695" + "279367794662267414957708480356805124293407645094292709270568" + "454704291549032311245797185365876072558819037766647710690310" + "669384727884764603220129302332950334873072394721879741045233" + "391084791389282719581455185833551951893903144609338532918282" + "071417365794666174600590186688558973292265260457397284219723" + "118736526338195892522797003835806498724823327170646268765114" + "335047201804332131453475981952420330849091435859688615005340" + "662951243478815535510910054031985781353569592327342625691155" + "297753939420991863066846663288192966197121277244462515137195" + "342887549113968391968700872401047521725534791569882096021521" + "725739030856023532346309694644208054801875416636970616158970" + "521587368716636562878779650147005687012772946471436217221680" + "244104527691159700944328113538972913022260318566564643466194" + "762762807772321937689272738612051928757740541051011493615150" + "275299712275026278191137262599722341528351699547926563148579" + "945678256173476664846284964106409718181820427949855282782538" + "418620206551699936257338813616307747712660216941043590501407" + "704980849740902536932579576527206665027800420035787899091137" + "498285797710848848252835440631389386421149710576503050460098" + "225348880547453179874214337446508024003058237008669916793765" + "103830790970613932711932541885454647828573565454163547779034" + "696478261735426505076787833523027219489668014198674507463022" + "589310657355955884354584118602516953160415158848138916494891" + "482359394428713333626368035819136954032193064982447142548513" + "777798482352540211515117109331361325135068534382485905222012" + "689155196601835592087277572480712876900324312948680873379635" + "049766825511648515719101185883064389832362822347209928024358" + "316443434834701491039800443982197050828044087275939582794327" + "098500876914356235193809147621508354816413733354188380887001" + "911623409901345292980795015165229743643600614968493977578123" + "466095415615447864269417603852427781048383314979868134570808" + "915217919397946316940234061179348627230180807326753461268559" + "385959678786688421103134141790339174982532045466350837038525" + "183177847731101708972936115216192881538981857998354449098289" + "173408113131230974433096066603129145174088550345854388495636" + "765494379926460031453181542793269110787478232865475929357580" + "348192936196178107395850207543849907063319379969931169428718" + "329942347533981765560805872472322186708756306455763611238082" + "951450138207325773702247286660824416431038520521352370291078" + "718247251712503010649103184487159314175972977390771951004404" + "935285742659293676372796949610394059160197507860285966047861" + "411940542821283013449073170622058378826534472881876688512697" + "758815111198429044432164893190718808033606471387328883409622" + "920327667611981052185172613337770061634130425782297578896747" + "215274225504191258419704542303129850621901180024012018244583" + "859069664741628533451563101979900751568200425006085702090401" + "221537517047980048268055449980601076610965506150742174772246" + "118061736140257508229467892560527108358789784539076822640564" + "850851810352577863861819577512851607395927299014823941534626" + "348696657393457745078724366706324437838188311582720760585617" + "487635004508688532062666933131188059377591626964364639542322" + "054994079047698970924302742015839080613569097514938471468421" + "996493818271996291393146497945863918551953149000943761983830" + "636236545375480765488470416349046929644442714477859372568735" + "843708739015199069466751627920202433249482821065761826195203" + "859723026379941258427585166740391065737087970718105336581850" + "268003743156009120998264173899565279323585156937231413010764" + "716608523561569725709426913310091413578317885628039213932500" + "135284171861048461662744818955691362183779165069982032305970" + "876642081013358484182671863168168338174351197426412625098421" + "481239711997827391790388986589171883679226337788805245818923" + "874607498645601668109872286941958827402018143065273281785872" + "847384936953936746391717131732488209980499904305446724778559" + "203846472344227623989606643158012375642854007494547242775256" + "898117140062170585337487588594307260069257691479046720590527" + "237259474018798808190031749318500514291360716338072006978678" + "678209533184089369407377832511947183352849291708100854730341" + "450938156361786419525775154653957546143580362599388832564788" + "354103919236836698740026304968121883147777634511851850370958" + "884085902337976245656103068392811534994239396318567712305532" + "477169378421492493173704379367954605145484562415027095545060" + "831874739575572895083275461127704135960230120513850917554331" + "352277278650414100755269190224957237517573174092361876919730" + "465289835269438666544826003345857532325281423386809827947616" + "676425828491143428807224317894169834736598542769698312957949" + "605903203284128114992351808708487688511436903322773652124574" + "055471177142349271989998235771191022554548042468832219533624" + "049225313628185783780849179599378819912520555522211658107113" + "447678746843053930790961744210668515951907105384498734366645" + "249428031772015356705436411724477514133655840609854880392450" + "949605226182519804314027265530362531560532656953025288585499" + "182228921920121831359074541201044664224711170390199159133806" + "269332015718061873656943996928324527943031265119266878834003" + "362682519426029626295988425859770358488877080196120965282298" + "232237612230358616986168510604382051044429343285625121039569" + "326126486782398017268335279614177221030172599765237380415252" + "503716285229140380445599733136737846363243777324290551807506" + "541472429585746028822540006160866496164919640007935962267377" + "060789839526907505659662711614828949104249176417092401488510" + "615823548277477841813412329397443687705199567361868375111535" + "380877143498420444773617475831606309624504731127984157999557" + "818660940286424404275144312853627845343063342311866285268837" + "422960089441895882484245945054082617645214582938928610352277" + "410119555602965075325424443356593793852682899089314976629899" + "773835991388717888860719076570986705247088078593793511009142" + "474344996635349786568175384138024607561209403361748867467629" + "682257007702707626687955791367383934101209955804380644234879" + "805395123927491333463152240956446177043487579040223002287264" + "756843617701865806869707173187939918037456096349272671452872" + "922420893858994027251574788837911846161770227169407508741963" + "414729807676477574570702693444290823666440055726552795145348" + "219168459767427369197825367869095117877723957392541043867909" + "937470060997392012820142238132910823657536940367596076523833" + "377812701709657429614832107556695928504222183715979980013356" + "323996396963861087268039321030018015202061305161341454716371" + "377251261775727795597989586636757177645626856419109247702765" + "013583220037644023978372654055269485171726959848928885152966" + "097502777563956522973459672620583266843497935454194334506297" + "789118714656105011811810822332373521084368112861541360109122" + "200791235053695977711430654151451133236893607856092978814379" + "881439122150752237064864676736420913214731240701495311353237" + "983819572849112853697828591806699104099315306435617990388595" + "202795271374965360450205351235544991668088723423877385558163" + "617247959486687176509451394010328416791411019672026111081271" + "677642426015450739505038057545285042073081841299473107930734" + "353837688028012401932104019803872355878454440858434446609098" + "280206732652900093156204893287546907987495659518059539534709" + "328514027916546796559631836574970153581238433324096828364072" + "134400344200269161377205676209909802573933271591397018622517" + "645956348413413974664794017053790027535048049046885143930077" + "194991519470308057661102259067039984493186760977741752890345" + "473192220637893214146475540262942007429381634927003835133941" + "914676847385135317162915391223879714190592014303606413170523" + "042176230523286150385679951115593656516900591671184538913558" + "092816251191243853120415613844777512078954866614360029341206" + "576716710688850917256800353066853946058824831651339265256785" + "622460269729620332892007335442599404495662483134697945884683" + "759795006415186716458374920343394259217852886898131157533184" + "894159749247043678238750268753264909309649831534740397743600" + "139998210203084676369899478505461752324146318698089839450421" + "143076361782530689506566153604543149790375911800793483912288" + "188586309176946988353987684054352129570631591985578449323560" + "386626892598170269027020282959579435080091825791399174445592" + "2683343374046671669930219650268554687499e-4951", + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + -0x4p-1076, + -0x0p+0, + -0x0p+0, + -0x0p+0, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + -0x1p-16444L, + -0x8p-16448L, + -0x8p-16448L, + -0x8p-16448L, + false, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + -0xcp-16448L, + -0xcp-16448L, + -0xb.fffffffffffcp-16448L, + -0xb.fffffffffffcp-16448L), + TEST ("-5.467799297823711903792608900429129724598576223540345015581" + "470730542557532950096605214341062938740807795871021020805296" + "652950478448933048254960262113384713508225733871766897517853" + "837895708450339634932343848975116093410479690330290902886861" + "199931259216523277807574569082153073133673942958789577402321" + "393933101298533191266102118889630609532339508457854220031996" + "317935940718000325144008438048416150458546268408294693278282" + "948818382981756745231443707694395053270779125240469926867881" + "019850287125023579685557790983055974962881759919483752202903" + "689199564880305684635452065363595791988290536352100701716974" + "146329604439226626943340805268641901769971862776194876385604" + "059269084172123930049144599166605103175580232672032966645406" + "656863031434873551175363941825798425331906382524706572766485" + "232874542230564262609161782396887243896247009244068837251567" + "783223271286692480010679711347802408351619999199127493689411" + "300623337751847138939498426200450305845548565910009066524152" + "545480362818290224140170178363735317929685005697363930594593" + "881342895328789259362029119598601112899006188879876371854878" + "902571753767478028100558334716504784604592507791482451533133" + "513128606357440718182123637790769320922442349066328991687862" + "072550779316393139037201187579972933016227874898505255743233" + "300533498951938156636406532613846576145617323141684480726409" + "074184197224754542490884392813625365330881348799432844624838" + "960826144439157361917744290729073116318858191758821942010704" + "726536748514141391981088590968911224406479710632429529154589" + "293799132147906174349149006094094612827453365768213012516958" + "693057189940355112250629776318079573232513434098933115589372" + "428935891821270739299776803229999720720845111297142577993950" + "783716526325576426897121181953632299322177412313472666557946" + "026587137818658956285876183561334458426909806227578696972983" + "054578648540140777431341495495816167709600470194141141159275" + "548586447187051517332624446463129570157208744018317833998766" + "292676324122069807882266170905460107352347754465354279502046" + "825607840930640910087488682878186052982487934398794575125208" + "131434599031355068379234881462786244132403015573059216658125" + "100992278732459043154873457532866362865038072260302438341256" + "465144627211756104220773841311413109973101672893502315223943" + "131161953384837658368750910845308673019625511169535246418667" + "822192756475773031982522304934161885363133347824122722726808" + "458339668843622993626685401142719276703936351749165952313385" + "247253410412444111234661569689109707012146365225868127037807" + "653838169759426465847963786308715929383888075292817554540826" + "281340379356869541699838857230452874882475626566568389051842" + "269616942233880613753230478468266244820792868174047618834373" + "911783352591638681513579303490680611741310500871919788283761" + "473826205032029153949410495205647160664548204617663407545902" + "155255595959035495626212780995301367951250745142427183922194" + "679405686105598055836303373290577235698605118096647411642319" + "219474157243864921520422978127962037044537385134878691852739" + "978563080824265712270538180666161627113218201779779366124407" + "844574754753562338454876981852965553927903650323407245581099" + "158807518181769597517311013648265985455750620305808055101887" + "320313826045110985510052672007356612620966612560448241370561" + "199679677792733282710356886335229149926131229035514374201804" + "225447070710784729359320523404977483919175478103049697809100" + "609955967524096673011016762490361065647326710555615563378359" + "408954626110765311053180827944575772439918612038754867514863" + "217604919070168030521022438807226197480679192263641289752695" + "279367794662267414957708480356805124293407645094292709270568" + "454704291549032311245797185365876072558819037766647710690310" + "669384727884764603220129302332950334873072394721879741045233" + "391084791389282719581455185833551951893903144609338532918282" + "071417365794666174600590186688558973292265260457397284219723" + "118736526338195892522797003835806498724823327170646268765114" + "335047201804332131453475981952420330849091435859688615005340" + "662951243478815535510910054031985781353569592327342625691155" + "297753939420991863066846663288192966197121277244462515137195" + "342887549113968391968700872401047521725534791569882096021521" + "725739030856023532346309694644208054801875416636970616158970" + "521587368716636562878779650147005687012772946471436217221680" + "244104527691159700944328113538972913022260318566564643466194" + "762762807772321937689272738612051928757740541051011493615150" + "275299712275026278191137262599722341528351699547926563148579" + "945678256173476664846284964106409718181820427949855282782538" + "418620206551699936257338813616307747712660216941043590501407" + "704980849740902536932579576527206665027800420035787899091137" + "498285797710848848252835440631389386421149710576503050460098" + "225348880547453179874214337446508024003058237008669916793765" + "103830790970613932711932541885454647828573565454163547779034" + "696478261735426505076787833523027219489668014198674507463022" + "589310657355955884354584118602516953160415158848138916494891" + "482359394428713333626368035819136954032193064982447142548513" + "777798482352540211515117109331361325135068534382485905222012" + "689155196601835592087277572480712876900324312948680873379635" + "049766825511648515719101185883064389832362822347209928024358" + "316443434834701491039800443982197050828044087275939582794327" + "098500876914356235193809147621508354816413733354188380887001" + "911623409901345292980795015165229743643600614968493977578123" + "466095415615447864269417603852427781048383314979868134570808" + "915217919397946316940234061179348627230180807326753461268559" + "385959678786688421103134141790339174982532045466350837038525" + "183177847731101708972936115216192881538981857998354449098289" + "173408113131230974433096066603129145174088550345854388495636" + "765494379926460031453181542793269110787478232865475929357580" + "348192936196178107395850207543849907063319379969931169428718" + "329942347533981765560805872472322186708756306455763611238082" + "951450138207325773702247286660824416431038520521352370291078" + "718247251712503010649103184487159314175972977390771951004404" + "935285742659293676372796949610394059160197507860285966047861" + "411940542821283013449073170622058378826534472881876688512697" + "758815111198429044432164893190718808033606471387328883409622" + "920327667611981052185172613337770061634130425782297578896747" + "215274225504191258419704542303129850621901180024012018244583" + "859069664741628533451563101979900751568200425006085702090401" + "221537517047980048268055449980601076610965506150742174772246" + "118061736140257508229467892560527108358789784539076822640564" + "850851810352577863861819577512851607395927299014823941534626" + "348696657393457745078724366706324437838188311582720760585617" + "487635004508688532062666933131188059377591626964364639542322" + "054994079047698970924302742015839080613569097514938471468421" + "996493818271996291393146497945863918551953149000943761983830" + "636236545375480765488470416349046929644442714477859372568735" + "843708739015199069466751627920202433249482821065761826195203" + "859723026379941258427585166740391065737087970718105336581850" + "268003743156009120998264173899565279323585156937231413010764" + "716608523561569725709426913310091413578317885628039213932500" + "135284171861048461662744818955691362183779165069982032305970" + "876642081013358484182671863168168338174351197426412625098421" + "481239711997827391790388986589171883679226337788805245818923" + "874607498645601668109872286941958827402018143065273281785872" + "847384936953936746391717131732488209980499904305446724778559" + "203846472344227623989606643158012375642854007494547242775256" + "898117140062170585337487588594307260069257691479046720590527" + "237259474018798808190031749318500514291360716338072006978678" + "678209533184089369407377832511947183352849291708100854730341" + "450938156361786419525775154653957546143580362599388832564788" + "354103919236836698740026304968121883147777634511851850370958" + "884085902337976245656103068392811534994239396318567712305532" + "477169378421492493173704379367954605145484562415027095545060" + "831874739575572895083275461127704135960230120513850917554331" + "352277278650414100755269190224957237517573174092361876919730" + "465289835269438666544826003345857532325281423386809827947616" + "676425828491143428807224317894169834736598542769698312957949" + "605903203284128114992351808708487688511436903322773652124574" + "055471177142349271989998235771191022554548042468832219533624" + "049225313628185783780849179599378819912520555522211658107113" + "447678746843053930790961744210668515951907105384498734366645" + "249428031772015356705436411724477514133655840609854880392450" + "949605226182519804314027265530362531560532656953025288585499" + "182228921920121831359074541201044664224711170390199159133806" + "269332015718061873656943996928324527943031265119266878834003" + "362682519426029626295988425859770358488877080196120965282298" + "232237612230358616986168510604382051044429343285625121039569" + "326126486782398017268335279614177221030172599765237380415252" + "503716285229140380445599733136737846363243777324290551807506" + "541472429585746028822540006160866496164919640007935962267377" + "060789839526907505659662711614828949104249176417092401488510" + "615823548277477841813412329397443687705199567361868375111535" + "380877143498420444773617475831606309624504731127984157999557" + "818660940286424404275144312853627845343063342311866285268837" + "422960089441895882484245945054082617645214582938928610352277" + "410119555602965075325424443356593793852682899089314976629899" + "773835991388717888860719076570986705247088078593793511009142" + "474344996635349786568175384138024607561209403361748867467629" + "682257007702707626687955791367383934101209955804380644234879" + "805395123927491333463152240956446177043487579040223002287264" + "756843617701865806869707173187939918037456096349272671452872" + "922420893858994027251574788837911846161770227169407508741963" + "414729807676477574570702693444290823666440055726552795145348" + "219168459767427369197825367869095117877723957392541043867909" + "937470060997392012820142238132910823657536940367596076523833" + "377812701709657429614832107556695928504222183715979980013356" + "323996396963861087268039321030018015202061305161341454716371" + "377251261775727795597989586636757177645626856419109247702765" + "013583220037644023978372654055269485171726959848928885152966" + "097502777563956522973459672620583266843497935454194334506297" + "789118714656105011811810822332373521084368112861541360109122" + "200791235053695977711430654151451133236893607856092978814379" + "881439122150752237064864676736420913214731240701495311353237" + "983819572849112853697828591806699104099315306435617990388595" + "202795271374965360450205351235544991668088723423877385558163" + "617247959486687176509451394010328416791411019672026111081271" + "677642426015450739505038057545285042073081841299473107930734" + "353837688028012401932104019803872355878454440858434446609098" + "280206732652900093156204893287546907987495659518059539534709" + "328514027916546796559631836574970153581238433324096828364072" + "134400344200269161377205676209909802573933271591397018622517" + "645956348413413974664794017053790027535048049046885143930077" + "194991519470308057661102259067039984493186760977741752890345" + "473192220637893214146475540262942007429381634927003835133941" + "914676847385135317162915391223879714190592014303606413170523" + "042176230523286150385679951115593656516900591671184538913558" + "092816251191243853120415613844777512078954866614360029341206" + "576716710688850917256800353066853946058824831651339265256785" + "622460269729620332892007335442599404495662483134697945884683" + "759795006415186716458374920343394259217852886898131157533184" + "894159749247043678238750268753264909309649831534740397743600" + "139998210203084676369899478505461752324146318698089839450421" + "143076361782530689506566153604543149790375911800793483912288" + "188586309176946988353987684054352129570631591985578449323560" + "386626892598170269027020282959579435080091825791399174445592" + "26833433740466716699302196502685546875e-4951", + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + -0x4p-1076, + -0x0p+0, + -0x0p+0, + -0x0p+0, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + -0x1p-16444L, + -0x1p-16444L, + -0x8p-16448L, + -0x8p-16448L, + false, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + -0xcp-16448L, + -0xcp-16448L, + -0xcp-16448L, + -0xcp-16448L), + TEST ("-5.467799297823711903792608900429129724598576223540345015581" + "470730542557532950096605214341062938740807795871021020805296" + "652950478448933048254960262113384713508225733871766897517853" + "837895708450339634932343848975116093410479690330290902886861" + "199931259216523277807574569082153073133673942958789577402321" + "393933101298533191266102118889630609532339508457854220031996" + "317935940718000325144008438048416150458546268408294693278282" + "948818382981756745231443707694395053270779125240469926867881" + "019850287125023579685557790983055974962881759919483752202903" + "689199564880305684635452065363595791988290536352100701716974" + "146329604439226626943340805268641901769971862776194876385604" + "059269084172123930049144599166605103175580232672032966645406" + "656863031434873551175363941825798425331906382524706572766485" + "232874542230564262609161782396887243896247009244068837251567" + "783223271286692480010679711347802408351619999199127493689411" + "300623337751847138939498426200450305845548565910009066524152" + "545480362818290224140170178363735317929685005697363930594593" + "881342895328789259362029119598601112899006188879876371854878" + "902571753767478028100558334716504784604592507791482451533133" + "513128606357440718182123637790769320922442349066328991687862" + "072550779316393139037201187579972933016227874898505255743233" + "300533498951938156636406532613846576145617323141684480726409" + "074184197224754542490884392813625365330881348799432844624838" + "960826144439157361917744290729073116318858191758821942010704" + "726536748514141391981088590968911224406479710632429529154589" + "293799132147906174349149006094094612827453365768213012516958" + "693057189940355112250629776318079573232513434098933115589372" + "428935891821270739299776803229999720720845111297142577993950" + "783716526325576426897121181953632299322177412313472666557946" + "026587137818658956285876183561334458426909806227578696972983" + "054578648540140777431341495495816167709600470194141141159275" + "548586447187051517332624446463129570157208744018317833998766" + "292676324122069807882266170905460107352347754465354279502046" + "825607840930640910087488682878186052982487934398794575125208" + "131434599031355068379234881462786244132403015573059216658125" + "100992278732459043154873457532866362865038072260302438341256" + "465144627211756104220773841311413109973101672893502315223943" + "131161953384837658368750910845308673019625511169535246418667" + "822192756475773031982522304934161885363133347824122722726808" + "458339668843622993626685401142719276703936351749165952313385" + "247253410412444111234661569689109707012146365225868127037807" + "653838169759426465847963786308715929383888075292817554540826" + "281340379356869541699838857230452874882475626566568389051842" + "269616942233880613753230478468266244820792868174047618834373" + "911783352591638681513579303490680611741310500871919788283761" + "473826205032029153949410495205647160664548204617663407545902" + "155255595959035495626212780995301367951250745142427183922194" + "679405686105598055836303373290577235698605118096647411642319" + "219474157243864921520422978127962037044537385134878691852739" + "978563080824265712270538180666161627113218201779779366124407" + "844574754753562338454876981852965553927903650323407245581099" + "158807518181769597517311013648265985455750620305808055101887" + "320313826045110985510052672007356612620966612560448241370561" + "199679677792733282710356886335229149926131229035514374201804" + "225447070710784729359320523404977483919175478103049697809100" + "609955967524096673011016762490361065647326710555615563378359" + "408954626110765311053180827944575772439918612038754867514863" + "217604919070168030521022438807226197480679192263641289752695" + "279367794662267414957708480356805124293407645094292709270568" + "454704291549032311245797185365876072558819037766647710690310" + "669384727884764603220129302332950334873072394721879741045233" + "391084791389282719581455185833551951893903144609338532918282" + "071417365794666174600590186688558973292265260457397284219723" + "118736526338195892522797003835806498724823327170646268765114" + "335047201804332131453475981952420330849091435859688615005340" + "662951243478815535510910054031985781353569592327342625691155" + "297753939420991863066846663288192966197121277244462515137195" + "342887549113968391968700872401047521725534791569882096021521" + "725739030856023532346309694644208054801875416636970616158970" + "521587368716636562878779650147005687012772946471436217221680" + "244104527691159700944328113538972913022260318566564643466194" + "762762807772321937689272738612051928757740541051011493615150" + "275299712275026278191137262599722341528351699547926563148579" + "945678256173476664846284964106409718181820427949855282782538" + "418620206551699936257338813616307747712660216941043590501407" + "704980849740902536932579576527206665027800420035787899091137" + "498285797710848848252835440631389386421149710576503050460098" + "225348880547453179874214337446508024003058237008669916793765" + "103830790970613932711932541885454647828573565454163547779034" + "696478261735426505076787833523027219489668014198674507463022" + "589310657355955884354584118602516953160415158848138916494891" + "482359394428713333626368035819136954032193064982447142548513" + "777798482352540211515117109331361325135068534382485905222012" + "689155196601835592087277572480712876900324312948680873379635" + "049766825511648515719101185883064389832362822347209928024358" + "316443434834701491039800443982197050828044087275939582794327" + "098500876914356235193809147621508354816413733354188380887001" + "911623409901345292980795015165229743643600614968493977578123" + "466095415615447864269417603852427781048383314979868134570808" + "915217919397946316940234061179348627230180807326753461268559" + "385959678786688421103134141790339174982532045466350837038525" + "183177847731101708972936115216192881538981857998354449098289" + "173408113131230974433096066603129145174088550345854388495636" + "765494379926460031453181542793269110787478232865475929357580" + "348192936196178107395850207543849907063319379969931169428718" + "329942347533981765560805872472322186708756306455763611238082" + "951450138207325773702247286660824416431038520521352370291078" + "718247251712503010649103184487159314175972977390771951004404" + "935285742659293676372796949610394059160197507860285966047861" + "411940542821283013449073170622058378826534472881876688512697" + "758815111198429044432164893190718808033606471387328883409622" + "920327667611981052185172613337770061634130425782297578896747" + "215274225504191258419704542303129850621901180024012018244583" + "859069664741628533451563101979900751568200425006085702090401" + "221537517047980048268055449980601076610965506150742174772246" + "118061736140257508229467892560527108358789784539076822640564" + "850851810352577863861819577512851607395927299014823941534626" + "348696657393457745078724366706324437838188311582720760585617" + "487635004508688532062666933131188059377591626964364639542322" + "054994079047698970924302742015839080613569097514938471468421" + "996493818271996291393146497945863918551953149000943761983830" + "636236545375480765488470416349046929644442714477859372568735" + "843708739015199069466751627920202433249482821065761826195203" + "859723026379941258427585166740391065737087970718105336581850" + "268003743156009120998264173899565279323585156937231413010764" + "716608523561569725709426913310091413578317885628039213932500" + "135284171861048461662744818955691362183779165069982032305970" + "876642081013358484182671863168168338174351197426412625098421" + "481239711997827391790388986589171883679226337788805245818923" + "874607498645601668109872286941958827402018143065273281785872" + "847384936953936746391717131732488209980499904305446724778559" + "203846472344227623989606643158012375642854007494547242775256" + "898117140062170585337487588594307260069257691479046720590527" + "237259474018798808190031749318500514291360716338072006978678" + "678209533184089369407377832511947183352849291708100854730341" + "450938156361786419525775154653957546143580362599388832564788" + "354103919236836698740026304968121883147777634511851850370958" + "884085902337976245656103068392811534994239396318567712305532" + "477169378421492493173704379367954605145484562415027095545060" + "831874739575572895083275461127704135960230120513850917554331" + "352277278650414100755269190224957237517573174092361876919730" + "465289835269438666544826003345857532325281423386809827947616" + "676425828491143428807224317894169834736598542769698312957949" + "605903203284128114992351808708487688511436903322773652124574" + "055471177142349271989998235771191022554548042468832219533624" + "049225313628185783780849179599378819912520555522211658107113" + "447678746843053930790961744210668515951907105384498734366645" + "249428031772015356705436411724477514133655840609854880392450" + "949605226182519804314027265530362531560532656953025288585499" + "182228921920121831359074541201044664224711170390199159133806" + "269332015718061873656943996928324527943031265119266878834003" + "362682519426029626295988425859770358488877080196120965282298" + "232237612230358616986168510604382051044429343285625121039569" + "326126486782398017268335279614177221030172599765237380415252" + "503716285229140380445599733136737846363243777324290551807506" + "541472429585746028822540006160866496164919640007935962267377" + "060789839526907505659662711614828949104249176417092401488510" + "615823548277477841813412329397443687705199567361868375111535" + "380877143498420444773617475831606309624504731127984157999557" + "818660940286424404275144312853627845343063342311866285268837" + "422960089441895882484245945054082617645214582938928610352277" + "410119555602965075325424443356593793852682899089314976629899" + "773835991388717888860719076570986705247088078593793511009142" + "474344996635349786568175384138024607561209403361748867467629" + "682257007702707626687955791367383934101209955804380644234879" + "805395123927491333463152240956446177043487579040223002287264" + "756843617701865806869707173187939918037456096349272671452872" + "922420893858994027251574788837911846161770227169407508741963" + "414729807676477574570702693444290823666440055726552795145348" + "219168459767427369197825367869095117877723957392541043867909" + "937470060997392012820142238132910823657536940367596076523833" + "377812701709657429614832107556695928504222183715979980013356" + "323996396963861087268039321030018015202061305161341454716371" + "377251261775727795597989586636757177645626856419109247702765" + "013583220037644023978372654055269485171726959848928885152966" + "097502777563956522973459672620583266843497935454194334506297" + "789118714656105011811810822332373521084368112861541360109122" + "200791235053695977711430654151451133236893607856092978814379" + "881439122150752237064864676736420913214731240701495311353237" + "983819572849112853697828591806699104099315306435617990388595" + "202795271374965360450205351235544991668088723423877385558163" + "617247959486687176509451394010328416791411019672026111081271" + "677642426015450739505038057545285042073081841299473107930734" + "353837688028012401932104019803872355878454440858434446609098" + "280206732652900093156204893287546907987495659518059539534709" + "328514027916546796559631836574970153581238433324096828364072" + "134400344200269161377205676209909802573933271591397018622517" + "645956348413413974664794017053790027535048049046885143930077" + "194991519470308057661102259067039984493186760977741752890345" + "473192220637893214146475540262942007429381634927003835133941" + "914676847385135317162915391223879714190592014303606413170523" + "042176230523286150385679951115593656516900591671184538913558" + "092816251191243853120415613844777512078954866614360029341206" + "576716710688850917256800353066853946058824831651339265256785" + "622460269729620332892007335442599404495662483134697945884683" + "759795006415186716458374920343394259217852886898131157533184" + "894159749247043678238750268753264909309649831534740397743600" + "139998210203084676369899478505461752324146318698089839450421" + "143076361782530689506566153604543149790375911800793483912288" + "188586309176946988353987684054352129570631591985578449323560" + "386626892598170269027020282959579435080091825791399174445592" + "2683343374046671669930219650268554687501e-4951", + -0x8p-152f, + -0x0p+0f, + -0x0p+0f, + -0x0p+0f, + -0x4p-1076, + -0x0p+0, + -0x0p+0, + -0x0p+0, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + -0x1p-16444L, + -0x1p-16444L, + -0x8p-16448L, + -0x8p-16448L, + false, + -0x4p-1076L, + -0x0p+0L, + -0x0p+0L, + -0x0p+0L, + -0xc.000000000004p-16448L, + -0xcp-16448L, + -0xcp-16448L, + -0xcp-16448L), +}; + +static int +do_test (void) +{ + int result = 0; + for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++) + { + float f = strtof (tests[i].s, NULL); + double d = strtod (tests[i].s, NULL); + long double ld = strtold (tests[i].s, NULL); + if (f != tests[i].f + || copysignf (1.0f, f) != copysignf (1.0f, tests[i].f)) + { + printf ("strtof (%s) returned %a not %a\n", tests[i].s, f, + tests[i].f); + result = 1; + } + if (d != tests[i].d + || copysign (1.0, d) != copysign (1.0, tests[i].d)) + { + printf ("strtod (%s) returned %a not %a\n", tests[i].s, d, + tests[i].d); + result = 1; + } + if (ld != tests[i].ld + || copysignl (1.0L, ld) != copysignl (1.0L, tests[i].ld)) + { + printf ("strtold (%s) returned %La not %La\n", tests[i].s, ld, + tests[i].ld); + if (tests[i].ld_ok) + result = 1; + else + printf ("ignoring this inexact long double result\n"); + } + } + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" |