diff options
author | Joseph Myers <joseph@codesourcery.com> | 2012-03-16 12:28:25 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2012-03-16 12:30:05 +0000 |
commit | 8848d99dce1e57168a492d146f5e72195c7665a5 (patch) | |
tree | b08411393dc81052bb86482bbdb044b622b57653 /sysdeps/ieee754 | |
parent | dd7f470327139a88019b2c5ded8fc2811b0fed00 (diff) | |
download | glibc-8848d99dce1e57168a492d146f5e72195c7665a5.tar.gz glibc-8848d99dce1e57168a492d146f5e72195c7665a5.tar.xz glibc-8848d99dce1e57168a492d146f5e72195c7665a5.zip |
Implement ldbl-96 sinl / cosl / sincosl (bug 13851).
Diffstat (limited to 'sysdeps/ieee754')
-rw-r--r-- | sysdeps/ieee754/dbl-64/k_rem_pio2.c | 17 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/e_rem_pio2l.c | 236 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/k_cosl.c | 123 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/k_sinl.c | 126 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/s_cosl.c | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/s_sinl.c | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/t_sincosl.c | 444 |
7 files changed, 941 insertions, 9 deletions
diff --git a/sysdeps/ieee754/dbl-64/k_rem_pio2.c b/sysdeps/ieee754/dbl-64/k_rem_pio2.c index a1e0c6d72d..fcf956afbe 100644 --- a/sysdeps/ieee754/dbl-64/k_rem_pio2.c +++ b/sysdeps/ieee754/dbl-64/k_rem_pio2.c @@ -273,13 +273,16 @@ recompute: y[0] = (ih==0)? fw: -fw; break; case 1: - case 2: - fw = 0.0; - for (i=jz;i>=0;i--) fw += fq[i]; - y[0] = (ih==0)? fw: -fw; - fw = fq[0]-fw; - for (i=1;i<=jz;i++) fw += fq[i]; - y[1] = (ih==0)? fw: -fw; + case 2:; +#if __FLT_EVAL_METHOD__ != 0 + volatile +#endif + double fv = 0.0; + for (i=jz;i>=0;i--) fv += fq[i]; + y[0] = (ih==0)? fv: -fv; + fv = fq[0]-fv; + for (i=1;i<=jz;i++) fv += fq[i]; + y[1] = (ih==0)? fv: -fv; break; case 3: /* painful */ for (i=jz;i>0;i--) { diff --git a/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c b/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c new file mode 100644 index 0000000000..b72230962d --- /dev/null +++ b/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c @@ -0,0 +1,236 @@ +/* Extended-precision floating point argument reduction. + Copyright (C) 1999-2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Based on quad-precision code by Jakub Jelinek <jj@ultra.linux.cz> + + 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 <math.h> +#include <math_private.h> + +/* Table of constants for 2/pi, 5628 hexadecimal digits of 2/pi. */ +static const int32_t two_over_pi[] = { +0xa2f983, 0x6e4e44, 0x1529fc, 0x2757d1, 0xf534dd, 0xc0db62, +0x95993c, 0x439041, 0xfe5163, 0xabdebb, 0xc561b7, 0x246e3a, +0x424dd2, 0xe00649, 0x2eea09, 0xd1921c, 0xfe1deb, 0x1cb129, +0xa73ee8, 0x8235f5, 0x2ebb44, 0x84e99c, 0x7026b4, 0x5f7e41, +0x3991d6, 0x398353, 0x39f49c, 0x845f8b, 0xbdf928, 0x3b1ff8, +0x97ffde, 0x05980f, 0xef2f11, 0x8b5a0a, 0x6d1f6d, 0x367ecf, +0x27cb09, 0xb74f46, 0x3f669e, 0x5fea2d, 0x7527ba, 0xc7ebe5, +0xf17b3d, 0x0739f7, 0x8a5292, 0xea6bfb, 0x5fb11f, 0x8d5d08, +0x560330, 0x46fc7b, 0x6babf0, 0xcfbc20, 0x9af436, 0x1da9e3, +0x91615e, 0xe61b08, 0x659985, 0x5f14a0, 0x68408d, 0xffd880, +0x4d7327, 0x310606, 0x1556ca, 0x73a8c9, 0x60e27b, 0xc08c6b, +0x47c419, 0xc367cd, 0xdce809, 0x2a8359, 0xc4768b, 0x961ca6, +0xddaf44, 0xd15719, 0x053ea5, 0xff0705, 0x3f7e33, 0xe832c2, +0xde4f98, 0x327dbb, 0xc33d26, 0xef6b1e, 0x5ef89f, 0x3a1f35, +0xcaf27f, 0x1d87f1, 0x21907c, 0x7c246a, 0xfa6ed5, 0x772d30, +0x433b15, 0xc614b5, 0x9d19c3, 0xc2c4ad, 0x414d2c, 0x5d000c, +0x467d86, 0x2d71e3, 0x9ac69b, 0x006233, 0x7cd2b4, 0x97a7b4, +0xd55537, 0xf63ed7, 0x1810a3, 0xfc764d, 0x2a9d64, 0xabd770, +0xf87c63, 0x57b07a, 0xe71517, 0x5649c0, 0xd9d63b, 0x3884a7, +0xcb2324, 0x778ad6, 0x23545a, 0xb91f00, 0x1b0af1, 0xdfce19, +0xff319f, 0x6a1e66, 0x615799, 0x47fbac, 0xd87f7e, 0xb76522, +0x89e832, 0x60bfe6, 0xcdc4ef, 0x09366c, 0xd43f5d, 0xd7de16, +0xde3b58, 0x929bde, 0x2822d2, 0xe88628, 0x4d58e2, 0x32cac6, +0x16e308, 0xcb7de0, 0x50c017, 0xa71df3, 0x5be018, 0x34132e, +0x621283, 0x014883, 0x5b8ef5, 0x7fb0ad, 0xf2e91e, 0x434a48, +0xd36710, 0xd8ddaa, 0x425fae, 0xce616a, 0xa4280a, 0xb499d3, +0xf2a606, 0x7f775c, 0x83c2a3, 0x883c61, 0x78738a, 0x5a8caf, +0xbdd76f, 0x63a62d, 0xcbbff4, 0xef818d, 0x67c126, 0x45ca55, +0x36d9ca, 0xd2a828, 0x8d61c2, 0x77c912, 0x142604, 0x9b4612, +0xc459c4, 0x44c5c8, 0x91b24d, 0xf31700, 0xad43d4, 0xe54929, +0x10d5fd, 0xfcbe00, 0xcc941e, 0xeece70, 0xf53e13, 0x80f1ec, +0xc3e7b3, 0x28f8c7, 0x940593, 0x3e71c1, 0xb3092e, 0xf3450b, +0x9c1288, 0x7b20ab, 0x9fb52e, 0xc29247, 0x2f327b, 0x6d550c, +0x90a772, 0x1fe76b, 0x96cb31, 0x4a1679, 0xe27941, 0x89dff4, +0x9794e8, 0x84e6e2, 0x973199, 0x6bed88, 0x365f5f, 0x0efdbb, +0xb49a48, 0x6ca467, 0x427271, 0x325d8d, 0xb8159f, 0x09e5bc, +0x25318d, 0x3974f7, 0x1c0530, 0x010c0d, 0x68084b, 0x58ee2c, +0x90aa47, 0x02e774, 0x24d6bd, 0xa67df7, 0x72486e, 0xef169f, +0xa6948e, 0xf691b4, 0x5153d1, 0xf20acf, 0x339820, 0x7e4bf5, +0x6863b2, 0x5f3edd, 0x035d40, 0x7f8985, 0x295255, 0xc06437, +0x10d86d, 0x324832, 0x754c5b, 0xd4714e, 0x6e5445, 0xc1090b, +0x69f52a, 0xd56614, 0x9d0727, 0x50045d, 0xdb3bb4, 0xc576ea, +0x17f987, 0x7d6b49, 0xba271d, 0x296996, 0xacccc6, 0x5414ad, +0x6ae290, 0x89d988, 0x50722c, 0xbea404, 0x940777, 0x7030f3, +0x27fc00, 0xa871ea, 0x49c266, 0x3de064, 0x83dd97, 0x973fa3, +0xfd9443, 0x8c860d, 0xde4131, 0x9d3992, 0x8c70dd, 0xe7b717, +0x3bdf08, 0x2b3715, 0xa0805c, 0x93805a, 0x921110, 0xd8e80f, +0xaf806c, 0x4bffdb, 0x0f9038, 0x761859, 0x15a562, 0xbbcb61, +0xb989c7, 0xbd4010, 0x04f2d2, 0x277549, 0xf6b6eb, 0xbb22db, +0xaa140a, 0x2f2689, 0x768364, 0x333b09, 0x1a940e, 0xaa3a51, +0xc2a31d, 0xaeedaf, 0x12265c, 0x4dc26d, 0x9c7a2d, 0x9756c0, +0x833f03, 0xf6f009, 0x8c402b, 0x99316d, 0x07b439, 0x15200c, +0x5bc3d8, 0xc492f5, 0x4badc6, 0xa5ca4e, 0xcd37a7, 0x36a9e6, +0x9492ab, 0x6842dd, 0xde6319, 0xef8c76, 0x528b68, 0x37dbfc, +0xaba1ae, 0x3115df, 0xa1ae00, 0xdafb0c, 0x664d64, 0xb705ed, +0x306529, 0xbf5657, 0x3aff47, 0xb9f96a, 0xf3be75, 0xdf9328, +0x3080ab, 0xf68c66, 0x15cb04, 0x0622fa, 0x1de4d9, 0xa4b33d, +0x8f1b57, 0x09cd36, 0xe9424e, 0xa4be13, 0xb52333, 0x1aaaf0, +0xa8654f, 0xa5c1d2, 0x0f3f0b, 0xcd785b, 0x76f923, 0x048b7b, +0x721789, 0x53a6c6, 0xe26e6f, 0x00ebef, 0x584a9b, 0xb7dac4, +0xba66aa, 0xcfcf76, 0x1d02d1, 0x2df1b1, 0xc1998c, 0x77adc3, +0xda4886, 0xa05df7, 0xf480c6, 0x2ff0ac, 0x9aecdd, 0xbc5c3f, +0x6dded0, 0x1fc790, 0xb6db2a, 0x3a25a3, 0x9aaf00, 0x9353ad, +0x0457b6, 0xb42d29, 0x7e804b, 0xa707da, 0x0eaa76, 0xa1597b, +0x2a1216, 0x2db7dc, 0xfde5fa, 0xfedb89, 0xfdbe89, 0x6c76e4, +0xfca906, 0x70803e, 0x156e85, 0xff87fd, 0x073e28, 0x336761, +0x86182a, 0xeabd4d, 0xafe7b3, 0x6e6d8f, 0x396795, 0x5bbf31, +0x48d784, 0x16df30, 0x432dc7, 0x356125, 0xce70c9, 0xb8cb30, +0xfd6cbf, 0xa200a4, 0xe46c05, 0xa0dd5a, 0x476f21, 0xd21262, +0x845cb9, 0x496170, 0xe0566b, 0x015299, 0x375550, 0xb7d51e, +0xc4f133, 0x5f6e13, 0xe4305d, 0xa92e85, 0xc3b21d, 0x3632a1, +0xa4b708, 0xd4b1ea, 0x21f716, 0xe4698f, 0x77ff27, 0x80030c, +0x2d408d, 0xa0cd4f, 0x99a520, 0xd3a2b3, 0x0a5d2f, 0x42f9b4, +0xcbda11, 0xd0be7d, 0xc1db9b, 0xbd17ab, 0x81a2ca, 0x5c6a08, +0x17552e, 0x550027, 0xf0147f, 0x8607e1, 0x640b14, 0x8d4196, +0xdebe87, 0x2afdda, 0xb6256b, 0x34897b, 0xfef305, 0x9ebfb9, +0x4f6a68, 0xa82a4a, 0x5ac44f, 0xbcf82d, 0x985ad7, 0x95c7f4, +0x8d4d0d, 0xa63a20, 0x5f57a4, 0xb13f14, 0x953880, 0x0120cc, +0x86dd71, 0xb6dec9, 0xf560bf, 0x11654d, 0x6b0701, 0xacb08c, +0xd0c0b2, 0x485551, 0x0efb1e, 0xc37295, 0x3b06a3, 0x3540c0, +0x7bdc06, 0xcc45e0, 0xfa294e, 0xc8cad6, 0x41f3e8, 0xde647c, +0xd8649b, 0x31bed9, 0xc397a4, 0xd45877, 0xc5e369, 0x13daf0, +0x3c3aba, 0x461846, 0x5f7555, 0xf5bdd2, 0xc6926e, 0x5d2eac, +0xed440e, 0x423e1c, 0x87c461, 0xe9fd29, 0xf3d6e7, 0xca7c22, +0x35916f, 0xc5e008, 0x8dd7ff, 0xe26a6e, 0xc6fdb0, 0xc10893, +0x745d7c, 0xb2ad6b, 0x9d6ecd, 0x7b723e, 0x6a11c6, 0xa9cff7, +0xdf7329, 0xbac9b5, 0x5100b7, 0x0db2e2, 0x24ba74, 0x607de5, +0x8ad874, 0x2c150d, 0x0c1881, 0x94667e, 0x162901, 0x767a9f, +0xbefdfd, 0xef4556, 0x367ed9, 0x13d9ec, 0xb9ba8b, 0xfc97c4, +0x27a831, 0xc36ef1, 0x36c594, 0x56a8d8, 0xb5a8b4, 0x0ecccf, +0x2d8912, 0x34576f, 0x89562c, 0xe3ce99, 0xb920d6, 0xaa5e6b, +0x9c2a3e, 0xcc5f11, 0x4a0bfd, 0xfbf4e1, 0x6d3b8e, 0x2c86e2, +0x84d4e9, 0xa9b4fc, 0xd1eeef, 0xc9352e, 0x61392f, 0x442138, +0xc8d91b, 0x0afc81, 0x6a4afb, 0xd81c2f, 0x84b453, 0x8c994e, +0xcc2254, 0xdc552a, 0xd6c6c0, 0x96190b, 0xb8701a, 0x649569, +0x605a26, 0xee523f, 0x0f117f, 0x11b5f4, 0xf5cbfc, 0x2dbc34, +0xeebc34, 0xcc5de8, 0x605edd, 0x9b8e67, 0xef3392, 0xb817c9, +0x9b5861, 0xbc57e1, 0xc68351, 0x103ed8, 0x4871dd, 0xdd1c2d, +0xa118af, 0x462c21, 0xd7f359, 0x987ad9, 0xc0549e, 0xfa864f, +0xfc0656, 0xae79e5, 0x362289, 0x22ad38, 0xdc9367, 0xaae855, +0x382682, 0x9be7ca, 0xa40d51, 0xb13399, 0x0ed7a9, 0x480569, +0xf0b265, 0xa7887f, 0x974c88, 0x36d1f9, 0xb39221, 0x4a827b, +0x21cf98, 0xdc9f40, 0x5547dc, 0x3a74e1, 0x42eb67, 0xdf9dfe, +0x5fd45e, 0xa4677b, 0x7aacba, 0xa2f655, 0x23882b, 0x55ba41, +0x086e59, 0x862a21, 0x834739, 0xe6e389, 0xd49ee5, 0x40fb49, +0xe956ff, 0xca0f1c, 0x8a59c5, 0x2bfa94, 0xc5c1d3, 0xcfc50f, +0xae5adb, 0x86c547, 0x624385, 0x3b8621, 0x94792c, 0x876110, +0x7b4c2a, 0x1a2c80, 0x12bf43, 0x902688, 0x893c78, 0xe4c4a8, +0x7bdbe5, 0xc23ac4, 0xeaf426, 0x8a67f7, 0xbf920d, 0x2ba365, +0xb1933d, 0x0b7cbd, 0xdc51a4, 0x63dd27, 0xdde169, 0x19949a, +0x9529a8, 0x28ce68, 0xb4ed09, 0x209f44, 0xca984e, 0x638270, +0x237c7e, 0x32b90f, 0x8ef5a7, 0xe75614, 0x08f121, 0x2a9db5, +0x4d7e6f, 0x5119a5, 0xabf9b5, 0xd6df82, 0x61dd96, 0x023616, +0x9f3ac4, 0xa1a283, 0x6ded72, 0x7a8d39, 0xa9b882, 0x5c326b, +0x5b2746, 0xed3400, 0x7700d2, 0x55f4fc, 0x4d5901, 0x8071e0, +0xe13f89, 0xb295f3, 0x64a8f1, 0xaea74b, 0x38fc4c, 0xeab2bb, +0x47270b, 0xabc3a7, 0x34ba60, 0x52dd34, 0xf8563a, 0xeb7e8a, +0x31bb36, 0x5895b7, 0x47f7a9, 0x94c3aa, 0xd39225, 0x1e7f3e, +0xd8974e, 0xbba94f, 0xd8ae01, 0xe661b4, 0x393d8e, 0xa523aa, +0x33068e, 0x1633b5, 0x3bb188, 0x1d3a9d, 0x4013d0, 0xcc1be5, +0xf862e7, 0x3bf28f, 0x39b5bf, 0x0bc235, 0x22747e, 0xa247c0, +0xd52d1f, 0x19add3, 0x9094df, 0x9311d0, 0xb42b25, 0x496db2, +0xe264b2, 0x5ef135, 0x3bc6a4, 0x1a4ad0, 0xaac92e, 0x64e886, +0x573091, 0x982cfb, 0x311b1a, 0x08728b, 0xbdcee1, 0x60e142, +0xeb641d, 0xd0bba3, 0xe559d4, 0x597b8c, 0x2a4483, 0xf332ba, +0xf84867, 0x2c8d1b, 0x2fa9b0, 0x50f3dd, 0xf9f573, 0xdb61b4, +0xfe233e, 0x6c41a6, 0xeea318, 0x775a26, 0xbc5e5c, 0xcea708, +0x94dc57, 0xe20196, 0xf1e839, 0xbe4851, 0x5d2d2f, 0x4e9555, +0xd96ec2, 0xe7d755, 0x6304e0, 0xc02e0e, 0xfc40a0, 0xbbf9b3, +0x7125a7, 0x222dfb, 0xf619d8, 0x838c1c, 0x6619e6, 0xb20d55, +0xbb5137, 0x79e809, 0xaf9149, 0x0d73de, 0x0b0da5, 0xce7f58, +0xac1934, 0x724667, 0x7a1a13, 0x9e26bc, 0x4555e7, 0x585cb5, +0x711d14, 0x486991, 0x480d60, 0x56adab, 0xd62f64, 0x96ee0c, +0x212ff3, 0x5d6d88, 0xa67684, 0x95651e, 0xab9e0a, 0x4ddefe, +0x571010, 0x836a39, 0xf8ea31, 0x9e381d, 0xeac8b1, 0xcac96b, +0x37f21e, 0xd505e9, 0x984743, 0x9fc56c, 0x0331b7, 0x3b8bf8, +0x86e56a, 0x8dc343, 0x6230e7, 0x93cfd5, 0x6a8f2d, 0x733005, +0x1af021, 0xa09fcb, 0x7415a1, 0xd56b23, 0x6ff725, 0x2f4bc7, +0xb8a591, 0x7fac59, 0x5c55de, 0x212c38, 0xb13296, 0x5cff50, +0x366262, 0xfa7b16, 0xf4d9a6, 0x2acfe7, 0xf07403, 0xd4d604, +0x6fd916, 0x31b1bf, 0xcbb450, 0x5bd7c8, 0x0ce194, 0x6bd643, +0x4fd91c, 0xdf4543, 0x5f3453, 0xe2b5aa, 0xc9aec8, 0x131485, +0xf9d2bf, 0xbadb9e, 0x76f5b9, 0xaf15cf, 0xca3182, 0x14b56d, +0xe9fe4d, 0x50fc35, 0xf5aed5, 0xa2d0c1, 0xc96057, 0x192eb6, +0xe91d92, 0x07d144, 0xaea3c6, 0x343566, 0x26d5b4, 0x3161e2, +0x37f1a2, 0x209eff, 0x958e23, 0x493798, 0x35f4a6, 0x4bdc02, +0xc2be13, 0xbe80a0, 0x0b72a3, 0x115c5f, 0x1e1bd1, 0x0db4d3, +0x869e85, 0x96976b, 0x2ac91f, 0x8a26c2, 0x3070f0, 0x041412, +0xfc9fa5, 0xf72a38, 0x9c6878, 0xe2aa76, 0x50cfe1, 0x559274, +0x934e38, 0x0a92f7, 0x5533f0, 0xa63db4, 0x399971, 0xe2b755, +0xa98a7c, 0x008f19, 0xac54d2, 0x2ea0b4, 0xf5f3e0, 0x60c849, +0xffd269, 0xae52ce, 0x7a5fdd, 0xe9ce06, 0xfb0ae8, 0xa50cce, +0xea9d3e, 0x3766dd, 0xb834f5, 0x0da090, 0x846f88, 0x4ae3d5, +0x099a03, 0x2eae2d, 0xfcb40a, 0xfb9b33, 0xe281dd, 0x1b16ba, +0xd8c0af, 0xd96b97, 0xb52dc9, 0x9c277f, 0x5951d5, 0x21ccd6, +0xb6496b, 0x584562, 0xb3baf2, 0xa1a5c4, 0x7ca2cf, 0xa9b93d, +0x7b7b89, 0x483d38, +}; + +int32_t +__ieee754_rem_pio2l (long double x, long double *y) +{ + double tx[3], ty[3]; + int32_t se, j0; + u_int32_t i0, i1; + int sx; + int n, exp; + + GET_LDOUBLE_WORDS (se, i0, i1, x); + sx = (se >> 15) & 1; + j0 = (se & 0x7fff) - 0x3fff; + + if (j0 < -1) + { + /* |x| < pi/4. */ + y[0] = x; + y[1] = 0; + return 0; + } + + if (j0 >= 0x8000) + { + /* x is infinite or NaN. */ + y[0] = x - x; + y[1] = y[0]; + return 0; + } + + /* Split the 64 bits of the mantissa into three 24-bit integers + stored in a double array. */ + exp = j0 - 23; + tx[0] = (double) (i0 >> 8); + tx[1] = (double) (((i0 << 16) | (i1 >> 16)) & 0xffffff); + tx[2] = (double) ((i1 << 8) & 0xffffff); + + n = __kernel_rem_pio2 (tx, ty, exp, 3, 2, two_over_pi); + + /* The result is now stored in two double values, we need to convert + it into two long double values. */ + if (sx == 0) + { + y[0] = (long double) ty[0] + (long double) ty[1]; + y[1] = ty[1] - (y[0] - ty[0]); + return n; + } + else + { + y[0] = -((long double) ty[0] + (long double) ty[1]); + y[1] = -ty[1] - (y[0] + ty[0]); + return -n; + } +} diff --git a/sysdeps/ieee754/ldbl-96/k_cosl.c b/sysdeps/ieee754/ldbl-96/k_cosl.c new file mode 100644 index 0000000000..9e8f33a283 --- /dev/null +++ b/sysdeps/ieee754/ldbl-96/k_cosl.c @@ -0,0 +1,123 @@ +/* Extended-precision floating point cosine on <-pi/4,pi/4>. + Copyright (C) 1999-2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Based on quad-precision cosine by Jakub Jelinek <jj@ultra.linux.cz> + + 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 <math.h> +#include <math_private.h> + +/* The polynomials have not been optimized for extended-precision and + may contain more terms than needed. */ + +static const long double c[] = { +#define ONE c[0] + 1.00000000000000000000000000000000000E+00L, + +/* cos x ~ ONE + x^2 ( SCOS1 + SCOS2 * x^2 + ... + SCOS4 * x^6 + SCOS5 * x^8 ) + x in <0,1/256> */ +#define SCOS1 c[1] +#define SCOS2 c[2] +#define SCOS3 c[3] +#define SCOS4 c[4] +#define SCOS5 c[5] +-5.00000000000000000000000000000000000E-01L, + 4.16666666666666666666666666556146073E-02L, +-1.38888888888888888888309442601939728E-03L, + 2.48015873015862382987049502531095061E-05L, +-2.75573112601362126593516899592158083E-07L, + +/* cos x ~ ONE + x^2 ( COS1 + COS2 * x^2 + ... + COS7 * x^12 + COS8 * x^14 ) + x in <0,0.1484375> */ +#define COS1 c[6] +#define COS2 c[7] +#define COS3 c[8] +#define COS4 c[9] +#define COS5 c[10] +#define COS6 c[11] +#define COS7 c[12] +#define COS8 c[13] +-4.99999999999999999999999999999999759E-01L, + 4.16666666666666666666666666651287795E-02L, +-1.38888888888888888888888742314300284E-03L, + 2.48015873015873015867694002851118210E-05L, +-2.75573192239858811636614709689300351E-07L, + 2.08767569877762248667431926878073669E-09L, +-1.14707451049343817400420280514614892E-11L, + 4.77810092804389587579843296923533297E-14L, + +/* sin x ~ ONE * x + x^3 ( SSIN1 + SSIN2 * x^2 + ... + SSIN4 * x^6 + SSIN5 * x^8 ) + x in <0,1/256> */ +#define SSIN1 c[14] +#define SSIN2 c[15] +#define SSIN3 c[16] +#define SSIN4 c[17] +#define SSIN5 c[18] +-1.66666666666666666666666666666666659E-01L, + 8.33333333333333333333333333146298442E-03L, +-1.98412698412698412697726277416810661E-04L, + 2.75573192239848624174178393552189149E-06L, +-2.50521016467996193495359189395805639E-08L, +}; + +#define SINCOSL_COS_HI 0 +#define SINCOSL_COS_LO 1 +#define SINCOSL_SIN_HI 2 +#define SINCOSL_SIN_LO 3 +extern const long double __sincosl_table[]; + +long double +__kernel_cosl(long double x, long double y) +{ + long double h, l, z, sin_l, cos_l_m1; + int index; + + if (signbit (x)) + { + x = -x; + y = -y; + } + if (x < 0.1484375L) + { + /* Argument is small enough to approximate it by a Chebyshev + polynomial of degree 16. */ + if (x < 0x1p-33L) + if (!((int)x)) return ONE; /* generate inexact */ + z = x * x; + return ONE + (z*(COS1+z*(COS2+z*(COS3+z*(COS4+ + z*(COS5+z*(COS6+z*(COS7+z*COS8)))))))); + } + else + { + /* So that we don't have to use too large polynomial, we find + l and h such that x = l + h, where fabsl(l) <= 1.0/256 with 83 + possible values for h. We look up cosl(h) and sinl(h) in + pre-computed tables, compute cosl(l) and sinl(l) using a + Chebyshev polynomial of degree 10(11) and compute + cosl(h+l) = cosl(h)cosl(l) - sinl(h)sinl(l). */ + index = (int) (128 * (x - (0.1484375L - 1.0L / 256.0L))); + h = 0.1484375L + index / 128.0; + index *= 4; + l = y - (h - x); + z = l * l; + sin_l = l*(ONE+z*(SSIN1+z*(SSIN2+z*(SSIN3+z*(SSIN4+z*SSIN5))))); + cos_l_m1 = z*(SCOS1+z*(SCOS2+z*(SCOS3+z*(SCOS4+z*SCOS5)))); + return __sincosl_table [index + SINCOSL_COS_HI] + + (__sincosl_table [index + SINCOSL_COS_LO] + - (__sincosl_table [index + SINCOSL_SIN_HI] * sin_l + - __sincosl_table [index + SINCOSL_COS_HI] * cos_l_m1)); + } +} diff --git a/sysdeps/ieee754/ldbl-96/k_sinl.c b/sysdeps/ieee754/ldbl-96/k_sinl.c new file mode 100644 index 0000000000..feb24d9e79 --- /dev/null +++ b/sysdeps/ieee754/ldbl-96/k_sinl.c @@ -0,0 +1,126 @@ +/* Quad-precision floating point sine on <-pi/4,pi/4>. + Copyright (C) 1999-2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Based on quad-precision sine by Jakub Jelinek <jj@ultra.linux.cz> + + 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/>. */ + +/* The polynomials have not been optimized for extended-precision and + may contain more terms than needed. */ + +#include <math.h> +#include <math_private.h> + +/* The polynomials have not been optimized for extended-precision and + may contain more terms than needed. */ + +static const long double c[] = { +#define ONE c[0] + 1.00000000000000000000000000000000000E+00L, + +/* cos x ~ ONE + x^2 ( SCOS1 + SCOS2 * x^2 + ... + SCOS4 * x^6 + SCOS5 * x^8 ) + x in <0,1/256> */ +#define SCOS1 c[1] +#define SCOS2 c[2] +#define SCOS3 c[3] +#define SCOS4 c[4] +#define SCOS5 c[5] +-5.00000000000000000000000000000000000E-01L, + 4.16666666666666666666666666556146073E-02L, +-1.38888888888888888888309442601939728E-03L, + 2.48015873015862382987049502531095061E-05L, +-2.75573112601362126593516899592158083E-07L, + +/* sin x ~ ONE * x + x^3 ( SIN1 + SIN2 * x^2 + ... + SIN7 * x^12 + SIN8 * x^14 ) + x in <0,0.1484375> */ +#define SIN1 c[6] +#define SIN2 c[7] +#define SIN3 c[8] +#define SIN4 c[9] +#define SIN5 c[10] +#define SIN6 c[11] +#define SIN7 c[12] +#define SIN8 c[13] +-1.66666666666666666666666666666666538e-01L, + 8.33333333333333333333333333307532934e-03L, +-1.98412698412698412698412534478712057e-04L, + 2.75573192239858906520896496653095890e-06L, +-2.50521083854417116999224301266655662e-08L, + 1.60590438367608957516841576404938118e-10L, +-7.64716343504264506714019494041582610e-13L, + 2.81068754939739570236322404393398135e-15L, + +/* sin x ~ ONE * x + x^3 ( SSIN1 + SSIN2 * x^2 + ... + SSIN4 * x^6 + SSIN5 * x^8 ) + x in <0,1/256> */ +#define SSIN1 c[14] +#define SSIN2 c[15] +#define SSIN3 c[16] +#define SSIN4 c[17] +#define SSIN5 c[18] +-1.66666666666666666666666666666666659E-01L, + 8.33333333333333333333333333146298442E-03L, +-1.98412698412698412697726277416810661E-04L, + 2.75573192239848624174178393552189149E-06L, +-2.50521016467996193495359189395805639E-08L, +}; + +#define SINCOSL_COS_HI 0 +#define SINCOSL_COS_LO 1 +#define SINCOSL_SIN_HI 2 +#define SINCOSL_SIN_LO 3 +extern const long double __sincosl_table[]; + +long double +__kernel_sinl(long double x, long double y, int iy) +{ + long double absx, h, l, z, sin_l, cos_l_m1; + int index; + + absx = fabsl (x); + if (absx < 0.1484375L) + { + /* Argument is small enough to approximate it by a Chebyshev + polynomial of degree 17. */ + if (absx < 0x1p-33L) + if (!((int)x)) return x; /* generate inexact */ + z = x * x; + return x + (x * (z*(SIN1+z*(SIN2+z*(SIN3+z*(SIN4+ + z*(SIN5+z*(SIN6+z*(SIN7+z*SIN8))))))))); + } + else + { + /* So that we don't have to use too large polynomial, we find + l and h such that x = l + h, where fabsl(l) <= 1.0/256 with 83 + possible values for h. We look up cosl(h) and sinl(h) in + pre-computed tables, compute cosl(l) and sinl(l) using a + Chebyshev polynomial of degree 10(11) and compute + sinl(h+l) = sinl(h)cosl(l) + cosl(h)sinl(l). */ + index = (int) (128 * (absx - (0.1484375L - 1.0L / 256.0L))); + h = 0.1484375L + index / 128.0; + index *= 4; + if (iy) + l = (x < 0 ? -y : y) - (h - absx); + else + l = absx - h; + z = l * l; + sin_l = l*(ONE+z*(SSIN1+z*(SSIN2+z*(SSIN3+z*(SSIN4+z*SSIN5))))); + cos_l_m1 = z*(SCOS1+z*(SCOS2+z*(SCOS3+z*(SCOS4+z*SCOS5)))); + z = __sincosl_table [index + SINCOSL_SIN_HI] + + (__sincosl_table [index + SINCOSL_SIN_LO] + + (__sincosl_table [index + SINCOSL_SIN_HI] * cos_l_m1) + + (__sincosl_table [index + SINCOSL_COS_HI] * sin_l)); + return (x < 0) ? -z : z; + } +} diff --git a/sysdeps/ieee754/ldbl-96/s_cosl.c b/sysdeps/ieee754/ldbl-96/s_cosl.c index 9d5606cfec..8b0b7d3cc2 100644 --- a/sysdeps/ieee754/ldbl-96/s_cosl.c +++ b/sysdeps/ieee754/ldbl-96/s_cosl.c @@ -68,7 +68,7 @@ long double __cosl(long double x) /* cos(Inf or NaN) is NaN */ else if (se==0x7fff) { - if ((i0 | i1) == 0) + if (i1 == 0 && i0 == 0x80000000) __set_errno (EDOM); return x-x; } diff --git a/sysdeps/ieee754/ldbl-96/s_sinl.c b/sysdeps/ieee754/ldbl-96/s_sinl.c index f15eb749bd..11e1899822 100644 --- a/sysdeps/ieee754/ldbl-96/s_sinl.c +++ b/sysdeps/ieee754/ldbl-96/s_sinl.c @@ -68,7 +68,7 @@ long double __sinl(long double x) /* sin(Inf or NaN) is NaN */ else if (se==0x7fff) { - if ((i0 | i1) == 0) + if (i1 == 0 && i0 == 0x80000000) __set_errno (EDOM); return x-x; } diff --git a/sysdeps/ieee754/ldbl-96/t_sincosl.c b/sysdeps/ieee754/ldbl-96/t_sincosl.c new file mode 100644 index 0000000000..1ab9c2c61c --- /dev/null +++ b/sysdeps/ieee754/ldbl-96/t_sincosl.c @@ -0,0 +1,444 @@ +/* Extended-precision floating point sine and cosine tables. + Copyright (C) 1999-2012 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Based on quad-precision tables by Jakub Jelinek <jj@ultra.linux.cz> + + 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/>. */ + +/* For 0.1484375 + n/128.0, n=0..82 this table contains + first 64 bits of cosine, then at least 64 additional + bits and the same for sine. + 0.1484375+82.0/128.0 is the smallest number among above defined numbers + larger than pi/4. + Computed using MPFR. + */ + +const long double __sincosl_table[] = { + /* x = 0.1484375 + 0/128. */ + 0xf.d2f5320e1b7902100p-4L, + -0x6.4b225d06708635580p-68L, + 0x2.5dc50bc95711d0d80p-4L, + 0x1.787d108fd438cf5a0p-68L, + /* x = 0.1484375 + 1/128. */ + 0xf.ce1a053e621438b00p-4L, + 0x6.d60c76e8c45bf0a80p-68L, + 0x2.7d66258bacd96a400p-4L, + -0x1.4cca4c9a3782a6bc0p-68L, + /* x = 0.1484375 + 2/128. */ + 0xf.c8ffa01ba68074100p-4L, + 0x7.e05962b0d9fdf2000p-68L, + 0x2.9cfd49b8be4f66540p-4L, + -0x1.89354fe340fbd96c0p-68L, + /* x = 0.1484375 + 3/128. */ + 0xf.c3a6170f767ac7300p-4L, + 0x5.d63d99a9d439e1d80p-68L, + 0x2.bc89f9f424de54840p-4L, + 0x1.de7ce03b2514952c0p-68L, + /* x = 0.1484375 + 4/128. */ + 0xf.be0d7f7fef11e7100p-4L, + -0x5.5bc47540b095ba800p-68L, + 0x2.dc0bb80b49a97ffc0p-4L, + -0xc.b1722e07246208500p-72L, + /* x = 0.1484375 + 5/128. */ + 0xf.b835efcf670dd2d00p-4L, + -0x1.90186db968115ec20p-68L, + 0x2.fb8205f75e56a2b40p-4L, + 0x1.6a1c4792f85625880p-68L, + /* x = 0.1484375 + 6/128. */ + 0xf.b21f7f5c156696b00p-4L, + 0xa.c1fe28ac5fd766700p-76L, + 0x3.1aec65df552876f80p-4L, + 0x2.ece9a235671324700p-72L, + /* x = 0.1484375 + 7/128. */ + 0xf.abca467fb3cb8f200p-4L, + -0x2.f960fe2715cc521c0p-68L, + 0x3.3a4a5a19d86246700p-4L, + 0x1.0f602c44df4fa5140p-68L, + /* x = 0.1484375 + 8/128. */ + 0xf.a5365e8f1d3ca2800p-4L, + -0x4.1e24a289519b26800p-68L, + 0x3.599b652f40ec999c0p-4L, + 0x1.f12a0a4c8561de160p-68L, + /* x = 0.1484375 + 9/128. */ + 0xf.9e63e1d9e8b6f6f00p-4L, + 0x2.e296bae5b5ed9c100p-68L, + 0x3.78df09db8c332ce00p-4L, + 0xd.2b53d865582e45200p-72L, + /* x = 0.1484375 + 10/128. */ + 0xf.9752eba9fff6b9900p-4L, + -0x7.bd415254fab56cd00p-68L, + 0x3.9814cb10513453cc0p-4L, + -0x6.84de43e3595cc8500p-72L, + /* x = 0.1484375 + 11/128. */ + 0xf.90039843324f9b900p-4L, + 0x4.0416c1984b6cbed00p-68L, + 0x3.b73c2bf6b4b9f6680p-4L, + 0xe.f9499c81f0d965100p-72L, + /* x = 0.1484375 + 12/128. */ + 0xf.887604e2c39dbb200p-4L, + 0xe.4ec5825059a78a000p-72L, + 0x3.d654aff15cb457a00p-4L, + 0xf.ca854698aba330400p-72L, + /* x = 0.1484375 + 13/128. */ + 0xf.80aa4fbef750ba800p-4L, + -0x7.c2cc346a06b075c00p-68L, + 0x3.f55dda9e62aed7500p-4L, + 0x1.3bd7b8e6a3d1635e0p-68L, + /* x = 0.1484375 + 14/128. */ + 0xf.78a098069792dab00p-4L, + -0x4.3611bda6e483a5980p-68L, + 0x4.14572fd94556e6480p-4L, + -0xc.29dfd8ec7722b8400p-72L, + /* x = 0.1484375 + 15/128. */ + 0xf.7058fde0788dfc800p-4L, + 0x5.b8fe88789e4f42500p-72L, + 0x4.334033bcd90d66080p-4L, + -0x3.0a0c93e2b47bbae40p-68L, + /* x = 0.1484375 + 16/128. */ + 0xf.67d3a26af7d07aa00p-4L, + 0x4.bd6d42af8c0068000p-68L, + 0x4.52186aa5377ab2080p-4L, + 0x3.bf2524f52e3a06a80p-68L, + /* x = 0.1484375 + 17/128. */ + 0xf.5f10a7bb77d3dfa00p-4L, + 0xc.1da8b578427832800p-72L, + 0x4.70df5931ae1d94600p-4L, + 0x7.6fe0dcff47fe31b80p-72L, + /* x = 0.1484375 + 18/128. */ + 0xf.561030ddd7a789600p-4L, + 0xe.a9f4a32c652155500p-72L, + 0x4.8f948446abcd6b100p-4L, + -0x8.0334eff185e4d9100p-72L, + /* x = 0.1484375 + 19/128. */ + 0xf.4cd261d3e6c15bb00p-4L, + 0x3.69c8758630d2ac000p-68L, + 0x4.ae37710fad27c8a80p-4L, + 0x2.9c4cf96c03519b9c0p-68L, + /* x = 0.1484375 + 20/128. */ + 0xf.43575f94d4f6b2700p-4L, + 0x2.f5fb76b14d2a64ac0p-68L, + 0x4.ccc7a50127e1de100p-4L, + -0x3.494bf3cfd39ae0840p-68L, + /* x = 0.1484375 + 21/128. */ + 0xf.399f500c9e9fd3800p-4L, + -0x5.166a8d9c254778900p-68L, + 0x4.eb44a5da74f600200p-4L, + 0x7.aaa090f0734e28880p-72L, + /* x = 0.1484375 + 22/128. */ + 0xf.2faa5a1b74e82fd00p-4L, + 0x6.1fa05f9177380e900p-68L, + 0x5.09adf9a7b9a5a0f80p-4L, + -0x1.c75705c59f5e66be0p-68L, + /* x = 0.1484375 + 23/128. */ + 0xf.2578a595224dd2e00p-4L, + 0x6.bfa2eb2f99cc67500p-68L, + 0x5.280326c3cf4818200p-4L, + 0x3.ba6bb08eac82c2080p-68L, + /* x = 0.1484375 + 24/128. */ + 0xf.1b0a5b406b526d900p-4L, + -0x7.93aa0152372f23380p-68L, + 0x5.4643b3da29de9b380p-4L, + -0x2.8eaa110f0ccd04c00p-68L, + /* x = 0.1484375 + 25/128. */ + 0xf.105fa4d66b607a600p-4L, + 0x7.d44e0427252044380p-68L, + 0x5.646f27e8bd65cbe00p-4L, + 0x3.a5d61ff0657229100p-68L, + /* x = 0.1484375 + 26/128. */ + 0xf.0578ad01ede708000p-4L, + -0x5.c63f6239467b50100p-68L, + 0x5.82850a41e1dd46c80p-4L, + -0x9.fd15dbb3244403200p-76L, + /* x = 0.1484375 + 27/128. */ + 0xe.fa559f5ec3aec3a00p-4L, + 0x4.eb03319278a2d4200p-68L, + 0x5.a084e28e35fda2780p-4L, + -0x9.202444aace28b3100p-72L, + /* x = 0.1484375 + 28/128. */ + 0xe.eef6a879146af0c00p-4L, + -0x6.46a15d15f53f2c200p-72L, + 0x5.be6e38ce809554280p-4L, + 0x3.c14ee9da0d3648400p-68L, + /* x = 0.1484375 + 29/128. */ + 0xe.e35bf5ccac8905300p-4L, + -0x3.26e2248cb2c5b81c0p-68L, + 0x5.dc40955d9084f4880p-4L, + 0x2.94675a2498de5d840p-68L, + /* x = 0.1484375 + 30/128. */ + 0xe.d785b5c44741b4500p-4L, + -0x6.c3a943462cc75eb00p-68L, + 0x5.f9fb80f21b5364a00p-4L, + -0x3.bcdabf5af1dd3ad00p-68L, + /* x = 0.1484375 + 31/128. */ + 0xe.cb7417b8d4ee3ff00p-4L, + -0x3.c8545bf8c55b70e00p-68L, + 0x6.179e84a09a5258a80p-4L, + -0x3.f164a0531fc1ada00p-68L, + /* x = 0.1484375 + 32/128. */ + 0xe.bf274bf0bda4f6200p-4L, + 0x4.47e56a09362679900p-68L, + 0x6.352929dd264bd4480p-4L, + 0x2.02ea766325d8aa8c0p-68L, + /* x = 0.1484375 + 33/128. */ + 0xe.b29f839f201fd1400p-4L, + -0x4.6c8697d86e9587100p-68L, + 0x6.529afa7d51b129600p-4L, + 0x3.1ec197c0a840a11c0p-68L, + /* x = 0.1484375 + 34/128. */ + 0xe.a5dcf0e30cf03e700p-4L, + -0x6.8910f4e13d9aea080p-68L, + 0x6.6ff380ba014410a00p-4L, + -0x1.c65cdf4f5c05a02a0p-68L, + /* x = 0.1484375 + 35/128. */ + 0xe.98dfc6c6be031e600p-4L, + 0xd.d3089cbdd18a75b00p-72L, + 0x6.8d324731433279700p-4L, + 0x3.bc712bcc4ccddc480p-68L, + /* x = 0.1484375 + 36/128. */ + 0xe.8ba8393eca7821b00p-4L, + -0x5.a9c27cb6e49efee80p-68L, + 0x6.aa56d8e8249db4e80p-4L, + 0x3.60a761fe3f9e559c0p-68L, + /* x = 0.1484375 + 37/128. */ + 0xe.7e367d2956cfb1700p-4L, + -0x4.955ee1abe632ffa80p-68L, + 0x6.c760c14c8585a5200p-4L, + -0x2.42cb99f5193ad5380p-68L, + /* x = 0.1484375 + 38/128. */ + 0xe.708ac84d4172a3e00p-4L, + 0x2.737662213429e1400p-68L, + 0x6.e44f8c36eb10a1c80p-4L, + -0xa.d2f6c3ff0b2b84600p-72L, + /* x = 0.1484375 + 39/128. */ + 0xe.62a551594b970a700p-4L, + 0x7.0b15d41d4c0e48400p-68L, + 0x7.0122c5ec5028c8d00p-4L, + -0xc.c540b02cbf333c800p-76L, + /* x = 0.1484375 + 40/128. */ + 0xe.54864fe33e8575d00p-4L, + -0x5.40a42f1a30e4e5780p-68L, + 0x7.1dd9fb1ff46778500p-4L, + 0x3.acb970a9f6729c700p-68L, + /* x = 0.1484375 + 41/128. */ + 0xe.462dfc670d421ab00p-4L, + 0x3.d1a15901228f146c0p-68L, + 0x7.3a74b8f52947b6800p-4L, + 0x1.baf6928eb3fb02180p-68L, + /* x = 0.1484375 + 42/128. */ + 0xe.379c9045f29d51800p-4L, + -0x3.b7f755b683dfa84c0p-68L, + 0x7.56f28d011d9852880p-4L, + 0x2.44a75fc29c779bd80p-68L, + /* x = 0.1484375 + 43/128. */ + 0xe.28d245c58baef7200p-4L, + 0x2.25e232abc003c4380p-68L, + 0x7.7353054ca72690d80p-4L, + -0x3.391e8e0266194c600p-68L, + /* x = 0.1484375 + 44/128. */ + 0xe.19cf580eeec046b00p-4L, + -0x5.ebdd058b7f8131080p-68L, + 0x7.8f95b0560a9a3bd80p-4L, + -0x1.2084267e23c739ee0p-68L, + /* x = 0.1484375 + 45/128. */ + 0xe.0a94032dbea7cee00p-4L, + -0x4.222625d0505267a80p-68L, + 0x7.abba1d12c17bfa200p-4L, + -0x2.6d0f26c09f2126680p-68L, + /* x = 0.1484375 + 46/128. */ + 0xd.fb20840f3a9b36f00p-4L, + 0x7.ae2c515342890b600p-68L, + 0x7.c7bfdaf13e5ed1700p-4L, + 0x2.12f8a7525bfb113c0p-68L, + /* x = 0.1484375 + 47/128. */ + 0xd.eb7518814a7a93200p-4L, + -0x4.433773ef632be3b00p-68L, + 0x7.e3a679daaf25c6780p-4L, + -0x1.abd434bfd72f69be0p-68L, + /* x = 0.1484375 + 48/128. */ + 0xd.db91ff31879917300p-4L, + -0x4.2dbad2f5c7760ae80p-68L, + 0x7.ff6d8a34bd5e8fa80p-4L, + -0x2.b368b7d24aea62100p-68L, + /* x = 0.1484375 + 49/128. */ + 0xd.cb7777ac420705100p-4L, + 0x6.8f31e3eb780ce9c80p-68L, + 0x8.1b149ce34caa5a500p-4L, + -0x1.9af072f602b295580p-68L, + /* x = 0.1484375 + 50/128. */ + 0xd.bb25c25b8260c1500p-4L, + -0x9.1843671366e48f400p-72L, + 0x8.369b434a372da7f00p-4L, + -0x4.a3758e01c931e1f80p-68L, + /* x = 0.1484375 + 51/128. */ + 0xd.aa9d2086082706400p-4L, + -0x2.1ae3f617aa166cd00p-72L, + 0x8.52010f4f080052100p-4L, + 0x3.78bd8dd614753d080p-68L, + /* x = 0.1484375 + 52/128. */ + 0xd.99ddd44e44a43d500p-4L, + -0x2.b5c5c126adfbef900p-68L, + 0x8.6d45935ab396cb500p-4L, + -0x1.bde17dd211ab0caa0p-68L, + /* x = 0.1484375 + 53/128. */ + 0xd.88e820b1526311e00p-4L, + -0x2.a9e1043f3e565ac80p-68L, + 0x8.8868625b4e1dbb200p-4L, + 0x3.13310133022527200p-68L, + /* x = 0.1484375 + 54/128. */ + 0xd.77bc4985e93a60800p-4L, + -0x3.6279746f944394400p-68L, + 0x8.a3690fc5bfc11c000p-4L, + -0x6.aca1d8c657aed0b80p-68L, + /* x = 0.1484375 + 55/128. */ + 0xd.665a937b4ef2b1f00p-4L, + 0x6.d51bad6d988a44180p-68L, + 0x8.be472f9776d809b00p-4L, + -0xd.477e8edbc29c29900p-72L, + /* x = 0.1484375 + 56/128. */ + 0xd.54c3441844897fd00p-4L, + -0x7.07ac0f9aa0e459680p-68L, + 0x8.d902565817ee78400p-4L, + -0x6.431c32ed7f9fee680p-68L, + /* x = 0.1484375 + 57/128. */ + 0xd.42f6a1b9f0168ce00p-4L, + -0xf.ce3d09c3726cfb200p-72L, + 0x8.f39a191b2ba612300p-4L, + -0x5.c05b0be2a5c002c00p-68L, + /* x = 0.1484375 + 58/128. */ + 0xd.30f4f392c357ab000p-4L, + 0x6.61c5fa8a7d9b26600p-68L, + 0x9.0e0e0d81ca6787900p-4L, + 0x6.cc92c8ea8c2815c00p-68L, + /* x = 0.1484375 + 59/128. */ + 0xd.1ebe81a95ee752e00p-4L, + 0x4.8a26bcd32d6e92300p-68L, + 0x9.285dc9bc45dd9ea00p-4L, + 0x3.d02457bcce59c4180p-68L, + /* x = 0.1484375 + 60/128. */ + 0xd.0c5394d7722281900p-4L, + 0x5.e25736c0357470800p-68L, + 0x9.4288e48bd0335fc00p-4L, + 0x4.1c4cbd2920497a900p-68L, + /* x = 0.1484375 + 61/128. */ + 0xc.f9b476c897c25c600p-4L, + -0x4.018af22c0cf715080p-68L, + 0x9.5c8ef544210ec0c00p-4L, + -0x6.e3b642d55f617ae80p-68L, + /* x = 0.1484375 + 62/128. */ + 0xc.e6e171f92f2e27f00p-4L, + 0x3.2225327ec440ddb00p-68L, + 0x9.766f93cd18413a700p-4L, + -0x5.503e303903d754480p-68L, + /* x = 0.1484375 + 63/128. */ + 0xc.d3dad1b5328a2e400p-4L, + 0x5.9f993f4f510881a00p-68L, + 0x9.902a58a45e27bed00p-4L, + 0x6.8412b426b675ed500p-68L, + /* x = 0.1484375 + 64/128. */ + 0xc.c0a0e21709883a400p-4L, + -0xf.f6ee1ee5f811c4300p-76L, + 0x9.a9bedcdf01b38da00p-4L, + -0x6.c0c287df87e21d700p-68L, + /* x = 0.1484375 + 65/128. */ + 0xc.ad33f00658fe5e800p-4L, + 0x2.04bbc0f3a66a0e6c0p-68L, + 0x9.c32cba2b14156ef00p-4L, + 0x5.256c4f857991ca680p-72L, + /* x = 0.1484375 + 66/128. */ + 0xc.99944936cf48c8900p-4L, + 0x1.1ff93fe64b3ddb7a0p-68L, + 0x9.dc738ad14204e6900p-4L, + -0x6.53a7d2f07a7d9a700p-68L, + /* x = 0.1484375 + 67/128. */ + 0xc.85c23c26ed7b6f000p-4L, + 0x1.4ef546c4792968220p-68L, + 0x9.f592e9b66a9cf9000p-4L, + 0x6.a3c7aa3c101998480p-68L, + /* x = 0.1484375 + 68/128. */ + 0xc.71be181ecd6875d00p-4L, + -0x1.d25a9ea5fc335df80p-68L, + 0xa.0e8a725d33c828c00p-4L, + 0x1.1fa50fd9e9a15ffe0p-68L, + /* x = 0.1484375 + 69/128. */ + 0xc.5d882d2ee48030c00p-4L, + 0x7.c07d28e981e348080p-68L, + 0xa.2759c0e79c3558200p-4L, + 0x5.27c32b55f5405c180p-68L, + /* x = 0.1484375 + 70/128. */ + 0xc.4920cc2ec38fb8900p-4L, + 0x1.b38827db08884fc60p-68L, + 0xa.400072188acf49d00p-4L, + -0x2.94e8c7da1fc7cb900p-68L, + /* x = 0.1484375 + 71/128. */ + 0xc.348846bbd36313400p-4L, + -0x7.001d401622ec7e600p-68L, + 0xa.587e23555bb080800p-4L, + 0x6.d02b9c662cdd29300p-68L, + /* x = 0.1484375 + 72/128. */ + 0xc.1fbeef380e4ffdd00p-4L, + 0x5.a613ec8722f644000p-68L, + 0xa.70d272a76a8d4b700p-4L, + -0x2.5f136f8ed448b7480p-68L, + /* x = 0.1484375 + 73/128. */ + 0xc.0ac518c8b6ae71100p-4L, + -0x4.5c85c1146f34ea500p-68L, + 0xa.88fcfebd9a8dd4800p-4L, + -0x1.d0c3891061dbc66e0p-68L, + /* x = 0.1484375 + 74/128. */ + 0xb.f59b17550a4406800p-4L, + 0x7.5969296567cf3e380p-68L, + 0xa.a0fd66eddb9212300p-4L, + 0x2.c28520d3911b8a040p-68L, + /* x = 0.1484375 + 75/128. */ + 0xb.e0413f84f2a771c00p-4L, + 0x6.14946a88cbf4da200p-68L, + 0xa.b8d34b36acd987200p-4L, + 0x1.0ed343ec65d7e3ae0p-68L, + /* x = 0.1484375 + 76/128. */ + 0xb.cab7e6bfb2a14aa00p-4L, + -0x4.edd3a8b5c89413680p-68L, + 0xa.d07e4c409d08c5000p-4L, + -0x5.c56fa844f53db4780p-68L, + /* x = 0.1484375 + 77/128. */ + 0xb.b4ff632a908f73f00p-4L, + -0x3.eae7c6346266c4b00p-68L, + 0xa.e7fe0b5fc786b2e00p-4L, + -0x6.991e2950ebf5b7780p-68L, + /* x = 0.1484375 + 78/128. */ + 0xb.9f180ba77dd075100p-4L, + 0x6.28e135a9508299000p-68L, + 0xa.ff522a954f2ba1700p-4L, + -0x2.621023be91cc0a180p-68L, + /* x = 0.1484375 + 79/128. */ + 0xb.890237d3bb3c28500p-4L, + -0x4.9eb5fac6fe9405f00p-68L, + 0xb.167a4c90d63c42400p-4L, + 0x4.cf5493b7cc23bd400p-68L, + /* x = 0.1484375 + 80/128. */ + 0xb.72be40067aaf2c000p-4L, + 0x5.0dbdb7a14c3d7d500p-68L, + 0xb.2d7614b1f3aaa2500p-4L, + -0x2.0d291df5881e35c00p-68L, + /* x = 0.1484375 + 81/128. */ + 0xb.5c4c7d4f7dae91600p-4L, + -0x5.3879330b4e5b67300p-68L, + 0xb.44452709a59752900p-4L, + 0x5.913765434a59d1100p-72L, + /* x = 0.1484375 + 82/128. */ + 0xb.45ad4975b1294cb00p-4L, + -0x2.35b30bf1370dd5980p-68L, + 0xb.5ae7285bc10cf5100p-4L, + 0x5.753847e8f8b7a3100p-68L, +}; |