]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
math: Consolidate acosh and asinh internal table
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 10 Oct 2025 18:15:25 +0000 (15:15 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 27 Oct 2025 12:34:04 +0000 (09:34 -0300)
The shared internal data definitions are consolidated in
s_asincosh_data.c.

Reviewed-by: DJ Delorie <dj@redhat.com>
math/Makefile
sysdeps/ieee754/dbl-64/e_acosh.c
sysdeps/ieee754/dbl-64/s_asincosh_data.c [new file with mode: 0644]
sysdeps/ieee754/dbl-64/s_asincosh_data.h [new file with mode: 0644]
sysdeps/ieee754/dbl-64/s_asinh.c

index 3d236873f819ab9b25abbc07a4613d447e8458a6..d1b1ea3866963da5e1b35b3e60b4183fde8f7184 100644 (file)
@@ -361,6 +361,7 @@ type-double-routines := \
   e_pow_log_data \
   k_rem_pio2 \
   math_err \
+  s_asincosh_data \
   sincostab \
   # type-double-routines
 
index 757a7ac4cdc6ca8e6b6321fbbfba207cac66b0ff..faeef67e7e78dff94e92dc678b00aa6bdaa57773 100644 (file)
@@ -40,6 +40,7 @@ SOFTWARE. */
 #include <math.h>
 #include <libm-alias-finite.h>
 #include "math_config.h"
+#include "s_asincosh_data.h"
 
 static inline double
 fasttwosum (double x, double y, double *e)
@@ -134,105 +135,6 @@ as_acosh_one (double x, double sh, double sl)
   return y0 + y1;
 }
 
-static const struct
-{
-  uint64_t c0;
-  short c1;
-} B[] = {
-  { 301, 27565 },    { 7189, 24786 },  { 13383, 22167 },  { 18923, 19696 },
-  { 23845, 17361 },  { 28184, 15150 }, { 31969, 13054 },  { 35231, 11064 },
-  { 37996, 9173 },   { 40288, 7372 },  { 42129, 5657 },   { 43542, 4020 },
-  { 44546, 2457 },   { 45160, 962 },   { 45399, -468 },   { 45281, -1838 },
-  { 44821, -3151 },  { 44032, -4412 }, { 42929, -5622 },  { 41522, -6786 },
-  { 39825, -7905 },  { 37848, -8982 }, { 35602, -10020 }, { 33097, -11020 },
-  { 30341, -11985 }, { 27345, -12916 }, { 24115, -13816 }, { 20661, -14685 },
-  { 16989, -15526 }, { 13107, -16339 }, { 9022, -17126 },  { 4740, -17889 }
-};
-static const double r1[]
-    = { 0x1p+0,              0x1.f5076p-1, 0x1.ea4bp-1,  0x1.dfc98p-1, 0x1.d5818p-1,
-       0x1.cb72p-1,  0x1.c199cp-1, 0x1.b7f76p-1, 0x1.ae8ap-1,  0x1.a5504p-1,
-       0x1.9c492p-1, 0x1.93738p-1, 0x1.8ace6p-1, 0x1.8258ap-1, 0x1.7a114p-1,
-       0x1.71f76p-1, 0x1.6a09ep-1, 0x1.6247ep-1, 0x1.5ab08p-1, 0x1.5342cp-1,
-       0x1.4bfdap-1, 0x1.44e08p-1, 0x1.3dea6p-1, 0x1.371a8p-1, 0x1.306fep-1,
-       0x1.29e9ep-1, 0x1.2387ap-1, 0x1.1d488p-1, 0x1.172b8p-1, 0x1.11302p-1,
-       0x1.0b558p-1, 0x1.059bp-1,  0x1p-1 };
-static const double r2[]
-    = { 0x1p+0,              0x1.ffa74p-1, 0x1.ff4eap-1, 0x1.fef62p-1, 0x1.fe9dap-1,
-       0x1.fe452p-1, 0x1.fdeccp-1, 0x1.fd946p-1, 0x1.fd3c2p-1, 0x1.fce3ep-1,
-       0x1.fc8bcp-1, 0x1.fc33ap-1, 0x1.fbdbap-1, 0x1.fb83ap-1, 0x1.fb2bcp-1,
-       0x1.fad3ep-1, 0x1.fa7c2p-1, 0x1.fa246p-1, 0x1.f9ccap-1, 0x1.f975p-1,
-       0x1.f91d8p-1, 0x1.f8c6p-1,  0x1.f86e8p-1, 0x1.f8172p-1, 0x1.f7bfep-1,
-       0x1.f768ap-1, 0x1.f7116p-1, 0x1.f6ba4p-1, 0x1.f6632p-1, 0x1.f60c2p-1,
-       0x1.f5b52p-1, 0x1.f55e4p-1, 0x1.f5076p-1 };
-static const double l1[][2] = { { 0x0p+0, 0x0p+0 },
-                               { -0x1.269e2038315b3p-46, 0x1.62e4eacd4p-6 },
-                               { -0x1.3f2558bddfc47p-45, 0x1.62e3ce7218p-5 },
-                               { 0x1.07ea13c34efb5p-45, 0x1.0a2ab6d3ecp-4 },
-                               { 0x1.8f3e77084d3bap-44, 0x1.62e4a86d8cp-4 },
-                               { -0x1.8d92a005f1a7ep-46, 0x1.bb9db7062cp-4 },
-                               { 0x1.58239e799bfe5p-44, 0x1.0a2b1a22ccp-3 },
-                               { -0x1.a93fcf5f593b7p-44, 0x1.3687f0a298p-3 },
-                               { -0x1.db4cac32fd2b5p-46, 0x1.62e4116b64p-3 },
-                               { -0x1.0e65a92ee0f3bp-46, 0x1.8f409e4df6p-3 },
-                               { -0x1.8261383d475f1p-44, 0x1.bb9d15001cp-3 },
-                               { -0x1.359886207513bp-44, 0x1.e7f9a8c94p-3 },
-                               { 0x1.811f87496ceb7p-44, 0x1.0a2b052ddbp-2 },
-                               { 0x1.4991ec6cb435cp-44, 0x1.205955ef73p-2 },
-                               { -0x1.4581abfeb8927p-44, 0x1.3687bd9121p-2 },
-                               { 0x1.cab48f6942703p-44, 0x1.4cb5e8f2b5p-2 },
-                               { -0x1.df2c452fde132p-47, 0x1.62e4420e2p-2 },
-                               { 0x1.6109f4fdb74bdp-45, 0x1.791292c46ap-2 },
-                               { -0x1.6b95fbdac7696p-44, 0x1.8f40af84e7p-2 },
-                               { 0x1.7394fa880cbdap-46, 0x1.a56ed8f865p-2 },
-                               { -0x1.50b06a94eccabp-46, 0x1.bb9d6505b4p-2 },
-                               { -0x1.be2abf0b38989p-44, 0x1.d1cb91e728p-2 },
-                               { -0x1.7d6bf1e34da04p-44, 0x1.e7f9d139e2p-2 },
-                               { -0x1.423c1e14de6edp-44, 0x1.fe27db9b0ep-2 },
-                               { 0x1.c46f1a0efbbc2p-44, 0x1.0a2b25060a8p-1 },
-                               { 0x1.834fe4e3e6018p-45, 0x1.154244482ap-1 },
-                               { 0x1.6a03d0f02b65p-46, 0x1.20597312988p-1 },
-                               { 0x1.d437056526f3p-44, 0x1.2b707145dep-1 },
-                               { -0x1.a0233728405c5p-45, 0x1.3687b0e0b28p-1 },
-                               { -0x1.4dbdda10d2bf1p-45, 0x1.419ec5d3f68p-1 },
-                               { 0x1.f7d0a25d154f2p-44, 0x1.4cb5f9fc02p-1 },
-                               { 0x1.15ede4d803b18p-44, 0x1.57cd28421a8p-1 },
-                               { 0x1.ef35793c7673p-45, 0x1.62e42fefa38p-1 } };
-static const double l2[][2] = { { 0x0p+0, 0x0p+0 },
-                               { 0x1.5abdac3638e99p-44, 0x1.631ec81ep-11 },
-                               { -0x1.16b8be9bbe239p-45, 0x1.62fd8127p-10 },
-                               { -0x1.364c6315542ebp-44, 0x1.0a2520508p-9 },
-                               { 0x1.734abe459c9p-45, 0x1.62dadc1dp-9 },
-                               { 0x1.0cf8a761431bfp-44, 0x1.bb9ff94dp-9 },
-                               { 0x1.da2718eb78708p-45, 0x1.0a2a2def8p-8 },
-                               { 0x1.34ada62c59b93p-44, 0x1.368c0fae4p-8 },
-                               { 0x1.d09ab376682d4p-44, 0x1.62e58e4f8p-8 },
-                               { -0x1.3cb7b94329211p-45, 0x1.8f46bd28cp-8 },
-                               { -0x1.eec5c297c41dp-45, 0x1.bb9f8312p-8 },
-                               { -0x1.6411b9395d15p-44, 0x1.e7fff8f3p-8 },
-                               { -0x1.1c0e59a43053cp-44, 0x1.0a2c0006ep-7 },
-                               { 0x1.6506596e077b6p-46, 0x1.205bdb6fp-7 },
-                               { 0x1.e256bce6faa27p-44, 0x1.36877c86ep-7 },
-                               { 0x1.bd42467b0c8d1p-51, 0x1.4cb6f5578p-7 },
-                               { -0x1.c4f92132ff0fp-44, 0x1.62e230e8cp-7 },
-                               { -0x1.80be08bfab39p-44, 0x1.7911440f6p-7 },
-                               { -0x1.f0b1319ceb1f7p-44, 0x1.8f443020ap-7 },
-                               { 0x1.a65fcfb8de99bp-45, 0x1.a572dbef4p-7 },
-                               { 0x1.4233885d3779cp-46, 0x1.bb9d449a6p-7 },
-                               { 0x1.f46a59e646edbp-44, 0x1.d1cb8491cp-7 },
-                               { -0x1.c3d2f11c11446p-44, 0x1.e7fd9d2aap-7 },
-                               { 0x1.7763f78a1e0ccp-45, 0x1.fe2b6f978p-7 },
-                               { 0x1.b4c37fc60c043p-44, 0x1.0a2a7c7a5p-6 },
-                               { -0x1.5b8a822859be3p-46, 0x1.15412ca86p-6 },
-                               { -0x1.f2d8c9fc064p-44, 0x1.2059c9005p-6 },
-                               { -0x1.e80e79c20378dp-44, 0x1.2b703f49bp-6 },
-                               { 0x1.68256e4329bdbp-44, 0x1.3688a1a8dp-6 },
-                               { 0x1.7e9741da248c3p-44, 0x1.419edc7bap-6 },
-                               { 0x1.e330dccce602bp-45, 0x1.4cb7034fap-6 },
-                               { 0x1.2f32b5d18eefbp-49, 0x1.57cd01187p-6 },
-                               { -0x1.269e2038315b3p-46, 0x1.62e4eacd4p-6 } };
-static const double c[] = { -0x1p-1, 0x1.555555555553p-2, -0x1.fffffffffffap-3,
-                           0x1.99999e33a6366p-3, -0x1.555559ef9525fp-3 };
-
 double
 __ieee754_acosh (double x)
 {
diff --git a/sysdeps/ieee754/dbl-64/s_asincosh_data.c b/sysdeps/ieee754/dbl-64/s_asincosh_data.c
new file mode 100644 (file)
index 0000000..526262c
--- /dev/null
@@ -0,0 +1,124 @@
+/* Common data for asinh/acosh implementations.
+
+Copyright (c) 2023-2025 Alexei Sibidanov.
+
+This file is part of the CORE-MATH project
+(https://core-math.gitlabpages.inria.fr/).
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE. */
+
+#include "s_asincosh_data.h"
+
+const struct __asincosh_B_t __asincosh_B[] = {
+  { 301, 27565 },    { 7189, 24786 },  { 13383, 22167 },  { 18923, 19696 },
+  { 23845, 17361 },  { 28184, 15150 }, { 31969, 13054 },  { 35231, 11064 },
+  { 37996, 9173 },   { 40288, 7372 },  { 42129, 5657 },   { 43542, 4020 },
+  { 44546, 2457 },   { 45160, 962 },   { 45399, -468 },   { 45281, -1838 },
+  { 44821, -3151 },  { 44032, -4412 }, { 42929, -5622 },  { 41522, -6786 },
+  { 39825, -7905 },  { 37848, -8982 }, { 35602, -10020 }, { 33097, -11020 },
+  { 30341, -11985 }, { 27345, -12916 }, { 24115, -13816 }, { 20661, -14685 },
+  { 16989, -15526 }, { 13107, -16339 }, { 9022, -17126 },  { 4740, -17889 }
+};
+const double __asincosh_r1[]
+    = { 0x1p+0,              0x1.f5076p-1, 0x1.ea4bp-1,  0x1.dfc98p-1, 0x1.d5818p-1,
+       0x1.cb72p-1,  0x1.c199cp-1, 0x1.b7f76p-1, 0x1.ae8ap-1,  0x1.a5504p-1,
+       0x1.9c492p-1, 0x1.93738p-1, 0x1.8ace6p-1, 0x1.8258ap-1, 0x1.7a114p-1,
+       0x1.71f76p-1, 0x1.6a09ep-1, 0x1.6247ep-1, 0x1.5ab08p-1, 0x1.5342cp-1,
+       0x1.4bfdap-1, 0x1.44e08p-1, 0x1.3dea6p-1, 0x1.371a8p-1, 0x1.306fep-1,
+       0x1.29e9ep-1, 0x1.2387ap-1, 0x1.1d488p-1, 0x1.172b8p-1, 0x1.11302p-1,
+       0x1.0b558p-1, 0x1.059bp-1,  0x1p-1 };
+const double __asincosh_r2[]
+    = { 0x1p+0,              0x1.ffa74p-1, 0x1.ff4eap-1, 0x1.fef62p-1, 0x1.fe9dap-1,
+       0x1.fe452p-1, 0x1.fdeccp-1, 0x1.fd946p-1, 0x1.fd3c2p-1, 0x1.fce3ep-1,
+       0x1.fc8bcp-1, 0x1.fc33ap-1, 0x1.fbdbap-1, 0x1.fb83ap-1, 0x1.fb2bcp-1,
+       0x1.fad3ep-1, 0x1.fa7c2p-1, 0x1.fa246p-1, 0x1.f9ccap-1, 0x1.f975p-1,
+       0x1.f91d8p-1, 0x1.f8c6p-1,  0x1.f86e8p-1, 0x1.f8172p-1, 0x1.f7bfep-1,
+       0x1.f768ap-1, 0x1.f7116p-1, 0x1.f6ba4p-1, 0x1.f6632p-1, 0x1.f60c2p-1,
+       0x1.f5b52p-1, 0x1.f55e4p-1, 0x1.f5076p-1 };
+const double __asincosh_l1[][2]
+    = { { 0x0p+0, 0x0p+0 },
+       { -0x1.269e2038315b3p-46, 0x1.62e4eacd4p-6 },
+       { -0x1.3f2558bddfc47p-45, 0x1.62e3ce7218p-5 },
+       { 0x1.07ea13c34efb5p-45, 0x1.0a2ab6d3ecp-4 },
+       { 0x1.8f3e77084d3bap-44, 0x1.62e4a86d8cp-4 },
+       { -0x1.8d92a005f1a7ep-46, 0x1.bb9db7062cp-4 },
+       { 0x1.58239e799bfe5p-44, 0x1.0a2b1a22ccp-3 },
+       { -0x1.a93fcf5f593b7p-44, 0x1.3687f0a298p-3 },
+       { -0x1.db4cac32fd2b5p-46, 0x1.62e4116b64p-3 },
+       { -0x1.0e65a92ee0f3bp-46, 0x1.8f409e4df6p-3 },
+       { -0x1.8261383d475f1p-44, 0x1.bb9d15001cp-3 },
+       { -0x1.359886207513bp-44, 0x1.e7f9a8c94p-3 },
+       { 0x1.811f87496ceb7p-44, 0x1.0a2b052ddbp-2 },
+       { 0x1.4991ec6cb435cp-44, 0x1.205955ef73p-2 },
+       { -0x1.4581abfeb8927p-44, 0x1.3687bd9121p-2 },
+       { 0x1.cab48f6942703p-44, 0x1.4cb5e8f2b5p-2 },
+       { -0x1.df2c452fde132p-47, 0x1.62e4420e2p-2 },
+       { 0x1.6109f4fdb74bdp-45, 0x1.791292c46ap-2 },
+       { -0x1.6b95fbdac7696p-44, 0x1.8f40af84e7p-2 },
+       { 0x1.7394fa880cbdap-46, 0x1.a56ed8f865p-2 },
+       { -0x1.50b06a94eccabp-46, 0x1.bb9d6505b4p-2 },
+       { -0x1.be2abf0b38989p-44, 0x1.d1cb91e728p-2 },
+       { -0x1.7d6bf1e34da04p-44, 0x1.e7f9d139e2p-2 },
+       { -0x1.423c1e14de6edp-44, 0x1.fe27db9b0ep-2 },
+       { 0x1.c46f1a0efbbc2p-44, 0x1.0a2b25060a8p-1 },
+       { 0x1.834fe4e3e6018p-45, 0x1.154244482ap-1 },
+       { 0x1.6a03d0f02b65p-46, 0x1.20597312988p-1 },
+       { 0x1.d437056526f3p-44, 0x1.2b707145dep-1 },
+       { -0x1.a0233728405c5p-45, 0x1.3687b0e0b28p-1 },
+       { -0x1.4dbdda10d2bf1p-45, 0x1.419ec5d3f68p-1 },
+       { 0x1.f7d0a25d154f2p-44, 0x1.4cb5f9fc02p-1 },
+       { 0x1.15ede4d803b18p-44, 0x1.57cd28421a8p-1 },
+       { 0x1.ef35793c7673p-45, 0x1.62e42fefa38p-1 } };
+const double __asincosh_l2[][2]
+    = { { 0x0p+0, 0x0p+0 },
+       { 0x1.5abdac3638e99p-44, 0x1.631ec81ep-11 },
+       { -0x1.16b8be9bbe239p-45, 0x1.62fd8127p-10 },
+       { -0x1.364c6315542ebp-44, 0x1.0a2520508p-9 },
+       { 0x1.734abe459c9p-45, 0x1.62dadc1dp-9 },
+       { 0x1.0cf8a761431bfp-44, 0x1.bb9ff94dp-9 },
+       { 0x1.da2718eb78708p-45, 0x1.0a2a2def8p-8 },
+       { 0x1.34ada62c59b93p-44, 0x1.368c0fae4p-8 },
+       { 0x1.d09ab376682d4p-44, 0x1.62e58e4f8p-8 },
+       { -0x1.3cb7b94329211p-45, 0x1.8f46bd28cp-8 },
+       { -0x1.eec5c297c41dp-45, 0x1.bb9f8312p-8 },
+       { -0x1.6411b9395d15p-44, 0x1.e7fff8f3p-8 },
+       { -0x1.1c0e59a43053cp-44, 0x1.0a2c0006ep-7 },
+       { 0x1.6506596e077b6p-46, 0x1.205bdb6fp-7 },
+       { 0x1.e256bce6faa27p-44, 0x1.36877c86ep-7 },
+       { 0x1.bd42467b0c8d1p-51, 0x1.4cb6f5578p-7 },
+       { -0x1.c4f92132ff0fp-44, 0x1.62e230e8cp-7 },
+       { -0x1.80be08bfab39p-44, 0x1.7911440f6p-7 },
+       { -0x1.f0b1319ceb1f7p-44, 0x1.8f443020ap-7 },
+       { 0x1.a65fcfb8de99bp-45, 0x1.a572dbef4p-7 },
+       { 0x1.4233885d3779cp-46, 0x1.bb9d449a6p-7 },
+       { 0x1.f46a59e646edbp-44, 0x1.d1cb8491cp-7 },
+       { -0x1.c3d2f11c11446p-44, 0x1.e7fd9d2aap-7 },
+       { 0x1.7763f78a1e0ccp-45, 0x1.fe2b6f978p-7 },
+       { 0x1.b4c37fc60c043p-44, 0x1.0a2a7c7a5p-6 },
+       { -0x1.5b8a822859be3p-46, 0x1.15412ca86p-6 },
+       { -0x1.f2d8c9fc064p-44, 0x1.2059c9005p-6 },
+       { -0x1.e80e79c20378dp-44, 0x1.2b703f49bp-6 },
+       { 0x1.68256e4329bdbp-44, 0x1.3688a1a8dp-6 },
+       { 0x1.7e9741da248c3p-44, 0x1.419edc7bap-6 },
+       { 0x1.e330dccce602bp-45, 0x1.4cb7034fap-6 },
+       { 0x1.2f32b5d18eefbp-49, 0x1.57cd01187p-6 },
+       { -0x1.269e2038315b3p-46, 0x1.62e4eacd4p-6 } };
+const double __asincosh_c[]
+    = { -0x1p-1, 0x1.555555555553p-2, -0x1.fffffffffffap-3,
+       0x1.99999e33a6366p-3, -0x1.555559ef9525fp-3 };
diff --git a/sysdeps/ieee754/dbl-64/s_asincosh_data.h b/sysdeps/ieee754/dbl-64/s_asincosh_data.h
new file mode 100644 (file)
index 0000000..3b2684f
--- /dev/null
@@ -0,0 +1,50 @@
+/* Common data for asinh/acosh implementations.
+
+Copyright (c) 2023 Alexei Sibidanov.
+
+This file is part of the CORE-MATH project
+(https://core-math.gitlabpages.inria.fr/).
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE. */
+
+#ifndef _S_ASINCOSH_DATA_H
+#define _S_ASINCOSH_DATA_H
+
+#include <stdint.h>
+
+struct __asincosh_B_t
+{
+  uint16_t c0;
+  short c1;
+};
+extern const struct __asincosh_B_t __asincosh_B[] attribute_hidden;
+extern const double __asincosh_r1[] attribute_hidden;
+extern const double __asincosh_r2[] attribute_hidden;
+extern const double __asincosh_l1[][2] attribute_hidden;
+extern const double __asincosh_l2[][2] attribute_hidden;
+extern const double __asincosh_c[] attribute_hidden;
+
+#define B __asincosh_B
+#define r1 __asincosh_r1
+#define r2 __asincosh_r2
+#define l1 __asincosh_l1
+#define l2 __asincosh_l2
+#define c __asincosh_c
+
+#endif
index 83b3a497ae502778bd6860db96b7d77c0df2b32e..e19ae4e0a01a90223e69e36859d73226b6b9d359 100644 (file)
@@ -29,6 +29,7 @@ SOFTWARE.
 #include <math.h>
 #include <libm-alias-double.h>
 #include "math_config.h"
+#include "s_asincosh_data.h"
 
 static inline double
 fasttwosum (double x, double y, double *e)
@@ -128,105 +129,6 @@ as_asinh_zero (double x, double x2h, double x2l)
   return y0 + y1;
 }
 
-static const struct
-{
-  uint16_t c0;
-  short c1;
-} B[] = {
-  { 301, 27565 },    { 7189, 24786 },  { 13383, 22167 },  { 18923, 19696 },
-  { 23845, 17361 },  { 28184, 15150 }, { 31969, 13054 },  { 35231, 11064 },
-  { 37996, 9173 },   { 40288, 7372 },  { 42129, 5657 },   { 43542, 4020 },
-  { 44546, 2457 },   { 45160, 962 },   { 45399, -468 },   { 45281, -1838 },
-  { 44821, -3151 },  { 44032, -4412 }, { 42929, -5622 },  { 41522, -6786 },
-  { 39825, -7905 },  { 37848, -8982 }, { 35602, -10020 }, { 33097, -11020 },
-  { 30341, -11985 }, { 27345, -12916 }, { 24115, -13816 }, { 20661, -14685 },
-  { 16989, -15526 }, { 13107, -16339 }, { 9022, -17126 },  { 4740, -17889 }
-};
-static const double r1[]
-    = { 0x1p+0,              0x1.f5076p-1, 0x1.ea4bp-1,  0x1.dfc98p-1, 0x1.d5818p-1,
-       0x1.cb72p-1,  0x1.c199cp-1, 0x1.b7f76p-1, 0x1.ae8ap-1,  0x1.a5504p-1,
-       0x1.9c492p-1, 0x1.93738p-1, 0x1.8ace6p-1, 0x1.8258ap-1, 0x1.7a114p-1,
-       0x1.71f76p-1, 0x1.6a09ep-1, 0x1.6247ep-1, 0x1.5ab08p-1, 0x1.5342cp-1,
-       0x1.4bfdap-1, 0x1.44e08p-1, 0x1.3dea6p-1, 0x1.371a8p-1, 0x1.306fep-1,
-       0x1.29e9ep-1, 0x1.2387ap-1, 0x1.1d488p-1, 0x1.172b8p-1, 0x1.11302p-1,
-       0x1.0b558p-1, 0x1.059bp-1,  0x1p-1 };
-static const double r2[]
-    = { 0x1p+0,              0x1.ffa74p-1, 0x1.ff4eap-1, 0x1.fef62p-1, 0x1.fe9dap-1,
-       0x1.fe452p-1, 0x1.fdeccp-1, 0x1.fd946p-1, 0x1.fd3c2p-1, 0x1.fce3ep-1,
-       0x1.fc8bcp-1, 0x1.fc33ap-1, 0x1.fbdbap-1, 0x1.fb83ap-1, 0x1.fb2bcp-1,
-       0x1.fad3ep-1, 0x1.fa7c2p-1, 0x1.fa246p-1, 0x1.f9ccap-1, 0x1.f975p-1,
-       0x1.f91d8p-1, 0x1.f8c6p-1,  0x1.f86e8p-1, 0x1.f8172p-1, 0x1.f7bfep-1,
-       0x1.f768ap-1, 0x1.f7116p-1, 0x1.f6ba4p-1, 0x1.f6632p-1, 0x1.f60c2p-1,
-       0x1.f5b52p-1, 0x1.f55e4p-1, 0x1.f5076p-1 };
-static const double l1[][2] = { { 0x0p+0, 0x0p+0 },
-                               { -0x1.269e2038315b3p-46, 0x1.62e4eacd4p-6 },
-                               { -0x1.3f2558bddfc47p-45, 0x1.62e3ce7218p-5 },
-                               { 0x1.07ea13c34efb5p-45, 0x1.0a2ab6d3ecp-4 },
-                               { 0x1.8f3e77084d3bap-44, 0x1.62e4a86d8cp-4 },
-                               { -0x1.8d92a005f1a7ep-46, 0x1.bb9db7062cp-4 },
-                               { 0x1.58239e799bfe5p-44, 0x1.0a2b1a22ccp-3 },
-                               { -0x1.a93fcf5f593b7p-44, 0x1.3687f0a298p-3 },
-                               { -0x1.db4cac32fd2b5p-46, 0x1.62e4116b64p-3 },
-                               { -0x1.0e65a92ee0f3bp-46, 0x1.8f409e4df6p-3 },
-                               { -0x1.8261383d475f1p-44, 0x1.bb9d15001cp-3 },
-                               { -0x1.359886207513bp-44, 0x1.e7f9a8c94p-3 },
-                               { 0x1.811f87496ceb7p-44, 0x1.0a2b052ddbp-2 },
-                               { 0x1.4991ec6cb435cp-44, 0x1.205955ef73p-2 },
-                               { -0x1.4581abfeb8927p-44, 0x1.3687bd9121p-2 },
-                               { 0x1.cab48f6942703p-44, 0x1.4cb5e8f2b5p-2 },
-                               { -0x1.df2c452fde132p-47, 0x1.62e4420e2p-2 },
-                               { 0x1.6109f4fdb74bdp-45, 0x1.791292c46ap-2 },
-                               { -0x1.6b95fbdac7696p-44, 0x1.8f40af84e7p-2 },
-                               { 0x1.7394fa880cbdap-46, 0x1.a56ed8f865p-2 },
-                               { -0x1.50b06a94eccabp-46, 0x1.bb9d6505b4p-2 },
-                               { -0x1.be2abf0b38989p-44, 0x1.d1cb91e728p-2 },
-                               { -0x1.7d6bf1e34da04p-44, 0x1.e7f9d139e2p-2 },
-                               { -0x1.423c1e14de6edp-44, 0x1.fe27db9b0ep-2 },
-                               { 0x1.c46f1a0efbbc2p-44, 0x1.0a2b25060a8p-1 },
-                               { 0x1.834fe4e3e6018p-45, 0x1.154244482ap-1 },
-                               { 0x1.6a03d0f02b65p-46, 0x1.20597312988p-1 },
-                               { 0x1.d437056526f3p-44, 0x1.2b707145dep-1 },
-                               { -0x1.a0233728405c5p-45, 0x1.3687b0e0b28p-1 },
-                               { -0x1.4dbdda10d2bf1p-45, 0x1.419ec5d3f68p-1 },
-                               { 0x1.f7d0a25d154f2p-44, 0x1.4cb5f9fc02p-1 },
-                               { 0x1.15ede4d803b18p-44, 0x1.57cd28421a8p-1 },
-                               { 0x1.ef35793c7673p-45, 0x1.62e42fefa38p-1 } };
-static const double l2[][2] = { { 0x0p+0, 0x0p+0 },
-                               { 0x1.5abdac3638e99p-44, 0x1.631ec81ep-11 },
-                               { -0x1.16b8be9bbe239p-45, 0x1.62fd8127p-10 },
-                               { -0x1.364c6315542ebp-44, 0x1.0a2520508p-9 },
-                               { 0x1.734abe459c9p-45, 0x1.62dadc1dp-9 },
-                               { 0x1.0cf8a761431bfp-44, 0x1.bb9ff94dp-9 },
-                               { 0x1.da2718eb78708p-45, 0x1.0a2a2def8p-8 },
-                               { 0x1.34ada62c59b93p-44, 0x1.368c0fae4p-8 },
-                               { 0x1.d09ab376682d4p-44, 0x1.62e58e4f8p-8 },
-                               { -0x1.3cb7b94329211p-45, 0x1.8f46bd28cp-8 },
-                               { -0x1.eec5c297c41dp-45, 0x1.bb9f8312p-8 },
-                               { -0x1.6411b9395d15p-44, 0x1.e7fff8f3p-8 },
-                               { -0x1.1c0e59a43053cp-44, 0x1.0a2c0006ep-7 },
-                               { 0x1.6506596e077b6p-46, 0x1.205bdb6fp-7 },
-                               { 0x1.e256bce6faa27p-44, 0x1.36877c86ep-7 },
-                               { 0x1.bd42467b0c8d1p-51, 0x1.4cb6f5578p-7 },
-                               { -0x1.c4f92132ff0fp-44, 0x1.62e230e8cp-7 },
-                               { -0x1.80be08bfab39p-44, 0x1.7911440f6p-7 },
-                               { -0x1.f0b1319ceb1f7p-44, 0x1.8f443020ap-7 },
-                               { 0x1.a65fcfb8de99bp-45, 0x1.a572dbef4p-7 },
-                               { 0x1.4233885d3779cp-46, 0x1.bb9d449a6p-7 },
-                               { 0x1.f46a59e646edbp-44, 0x1.d1cb8491cp-7 },
-                               { -0x1.c3d2f11c11446p-44, 0x1.e7fd9d2aap-7 },
-                               { 0x1.7763f78a1e0ccp-45, 0x1.fe2b6f978p-7 },
-                               { 0x1.b4c37fc60c043p-44, 0x1.0a2a7c7a5p-6 },
-                               { -0x1.5b8a822859be3p-46, 0x1.15412ca86p-6 },
-                               { -0x1.f2d8c9fc064p-44, 0x1.2059c9005p-6 },
-                               { -0x1.e80e79c20378dp-44, 0x1.2b703f49bp-6 },
-                               { 0x1.68256e4329bdbp-44, 0x1.3688a1a8dp-6 },
-                               { 0x1.7e9741da248c3p-44, 0x1.419edc7bap-6 },
-                               { 0x1.e330dccce602bp-45, 0x1.4cb7034fap-6 },
-                               { 0x1.2f32b5d18eefbp-49, 0x1.57cd01187p-6 },
-                               { -0x1.269e2038315b3p-46, 0x1.62e4eacd4p-6 } };
-static const double c[] = { -0x1p-1, 0x1.555555555553p-2, -0x1.fffffffffffap-3,
-                           0x1.99999e33a6366p-3, -0x1.555559ef9525fp-3 };
-
 double
 __asinh (double x)
 {