From a984eb367c032dbe2577f01238c3d1268526be70 Mon Sep 17 00:00:00 2001 From: Kacper Date: Thu, 25 Dec 2025 19:24:38 +0100 Subject: Clang-tidy fixes --- lib/libm/__cos.c | 10 +- lib/libm/__cosdf.c | 6 +- lib/libm/__cosl.c | 40 +++---- lib/libm/__invtrigl.c | 42 ++----- lib/libm/__rem_pio2.c | 10 +- lib/libm/__rem_pio2_large.c | 163 ++++++++++---------------- lib/libm/__rem_pio2f.c | 5 +- lib/libm/__rem_pio2l.c | 66 +++++------ lib/libm/__sin.c | 10 +- lib/libm/__sindf.c | 6 +- lib/libm/__sinl.c | 64 ++++------ lib/libm/__tan.c | 7 +- lib/libm/__tanl.c | 148 ++++++++++------------- lib/libm/acos.c | 22 ++-- lib/libm/acosf.c | 3 +- lib/libm/asin.c | 5 +- lib/libm/asinf.c | 3 +- lib/libm/asinl.c | 3 +- lib/libm/atan.c | 4 +- lib/libm/atanf.c | 3 +- lib/libm/atanl.c | 67 ++++------- lib/libm/atomic.h | 19 ++- lib/libm/cbrt.c | 2 +- lib/libm/cbrtf.c | 2 +- lib/libm/csinhl.c | 3 +- lib/libm/csinl.c | 3 +- lib/libm/ctan.c | 3 +- lib/libm/ctanhl.c | 3 +- lib/libm/ctanl.c | 3 +- lib/libm/erf.c | 40 ++----- lib/libm/erff.c | 37 ++---- lib/libm/erfl.c | 66 ++--------- lib/libm/exp.c | 3 +- lib/libm/exp10.c | 9 +- lib/libm/exp10f.c | 5 +- lib/libm/exp10l.c | 10 +- lib/libm/exp2.c | 3 +- lib/libm/exp2l.c | 277 +++++++++++++++----------------------------- lib/libm/expl.c | 3 +- lib/libm/expm1.c | 6 +- lib/libm/expm1l.c | 3 +- lib/libm/fma.c | 9 +- lib/libm/fmaf.c | 3 +- lib/libm/fmal.c | 3 +- lib/libm/j0.c | 45 ++++--- lib/libm/j0f.c | 9 +- lib/libm/j1.c | 25 ++-- lib/libm/j1f.c | 7 +- lib/libm/lgamma_r.c | 66 ++++------- lib/libm/lgammaf_r.c | 38 ++---- lib/libm/lgammal.c | 115 ++++++------------ lib/libm/libm.h | 18 +-- lib/libm/log.c | 9 +- lib/libm/log10.c | 20 ++-- lib/libm/log10f.c | 3 +- lib/libm/log10l.c | 10 +- lib/libm/log1pl.c | 10 +- lib/libm/log2.c | 3 +- lib/libm/log2l.c | 10 +- lib/libm/logl.c | 10 +- lib/libm/pow.c | 19 +-- lib/libm/powf.c | 9 +- lib/libm/powl.c | 48 +++----- lib/libm/remquo.c | 3 +- lib/libm/remquof.c | 3 +- lib/libm/remquol.c | 6 +- lib/libm/sin.c | 3 +- lib/libm/sincos.c | 3 +- lib/libm/sincosf.c | 3 +- lib/libm/sinf.c | 3 +- lib/libm/sinhl.c | 3 +- lib/libm/sqrt_data.c | 25 ++-- lib/libm/sqrtl.c | 6 +- lib/libm/tan.c | 3 +- lib/libm/tanf.c | 3 +- lib/libm/tgamma.c | 21 ++-- lib/libm/tgammal.c | 42 +++---- 77 files changed, 627 insertions(+), 1176 deletions(-) (limited to 'lib/libm') diff --git a/lib/libm/__cos.c b/lib/libm/__cos.c index a55d0eba..1ead64ed 100644 --- a/lib/libm/__cos.c +++ b/lib/libm/__cos.c @@ -54,11 +54,11 @@ static const double C1 = 4.16666666666666019037e-02, /* 0x3FA55555, 0x5555554C */ - C2 = -1.38888888888741095749e-03, /* 0xBF56C16C, 0x16C15177 */ - C3 = 2.48015872894767294178e-05, /* 0x3EFA01A0, 0x19CB1590 */ - C4 = -2.75573143513906633035e-07, /* 0xBE927E4F, 0x809C52AD */ - C5 = 2.08757232129817482790e-09, /* 0x3E21EE9E, 0xBDB4B1C4 */ - C6 = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */ + C2 = -1.38888888888741095749e-03, /* 0xBF56C16C, 0x16C15177 */ + C3 = 2.48015872894767294178e-05, /* 0x3EFA01A0, 0x19CB1590 */ + C4 = -2.75573143513906633035e-07, /* 0xBE927E4F, 0x809C52AD */ + C5 = 2.08757232129817482790e-09, /* 0x3E21EE9E, 0xBDB4B1C4 */ + C6 = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */ double __cos(double x, double y) { diff --git a/lib/libm/__cosdf.c b/lib/libm/__cosdf.c index d5469271..0b158223 100644 --- a/lib/libm/__cosdf.c +++ b/lib/libm/__cosdf.c @@ -20,9 +20,9 @@ /* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */ static const double C0 = -0x1ffffffd0c5e81.0p-54, /* -0.499999997251031003120 */ - C1 = 0x155553e1053a42.0p-57, /* 0.0416666233237390631894 */ - C2 = -0x16c087e80f1e27.0p-62, /* -0.00138867637746099294692 */ - C3 = 0x199342e0ee5069.0p-68; /* 0.0000243904487962774090654 */ + C1 = 0x155553e1053a42.0p-57, /* 0.0416666233237390631894 */ + C2 = -0x16c087e80f1e27.0p-62, /* -0.00138867637746099294692 */ + C3 = 0x199342e0ee5069.0p-68; /* 0.0000243904487962774090654 */ float __cosdf(double x) { diff --git a/lib/libm/__cosl.c b/lib/libm/__cosl.c index 18858e6b..89978d9a 100644 --- a/lib/libm/__cosl.c +++ b/lib/libm/__cosl.c @@ -44,21 +44,15 @@ * almost for free from the complications needed to search for the best * higher coefficients. */ -static const long double C1 = - 0.0416666666666666666136L; /* 0xaaaaaaaaaaaaaa9b.0p-68 - */ -static const double C2 = -0.0013888888888888874, /* -0x16c16c16c16c10.0p-62 */ - C3 = 0.000024801587301571716, /* 0x1a01a01a018e22.0p-68 */ - C4 = -0.00000027557319215507120, /* -0x127e4fb7602f22.0p-74 */ - C5 = 0.0000000020876754400407278, /* 0x11eed8caaeccf1.0p-81 */ - C6 = -1.1470297442401303e-11, /* -0x19393412bd1529.0p-89 */ - C7 = 4.7383039476436467e-14; /* 0x1aac9d9af5c43e.0p-97 */ -#define POLY(z) \ - ((z) * \ - (C1 + \ - (z) * (C2 + \ - (z) * (C3 + \ - (z) * (C4 + (z) * (C5 + (z) * (C6 + (z) * C7))))))) +static const long double C1 = 0.0416666666666666666136L; /* 0xaaaaaaaaaaaaaa9b.0p-68 + */ +static const double C2 = -0.0013888888888888874, /* -0x16c16c16c16c10.0p-62 */ + C3 = 0.000024801587301571716, /* 0x1a01a01a018e22.0p-68 */ + C4 = -0.00000027557319215507120, /* -0x127e4fb7602f22.0p-74 */ + C5 = 0.0000000020876754400407278, /* 0x11eed8caaeccf1.0p-81 */ + C6 = -1.1470297442401303e-11, /* -0x19393412bd1529.0p-89 */ + C7 = 4.7383039476436467e-14; /* 0x1aac9d9af5c43e.0p-97 */ +#define POLY(z) ((z) * (C1 + (z) * (C2 + (z) * (C3 + (z) * (C4 + (z) * (C5 + (z) * (C6 + (z) * C7))))))) #elif LDBL_MANT_DIG == 113 /* * ld128 version of __cos.c. See __cos.c for most comments. @@ -83,18 +77,10 @@ static const double C8 = -0.1561920696721507929516718307820958119868e-15, C9 = 0.4110317413744594971475941557607804508039e-18, C10 = -0.8896592467191938803288521958313920156409e-21, C11 = 0.1601061435794535138244346256065192782581e-23; -#define POLY(z) \ - (z * \ - (C1 + \ - z * (C2 + \ - z * (C3 + \ - z * (C4 + \ - z * (C5 + \ - z * (C6 + \ - z * (C7 + \ - z * (C8 + \ - z * (C9 + z * (C10 + \ - z * C11))))))))))) +#define POLY(z) \ + (z * (C1 + \ + z * (C2 + \ + z * (C3 + z * (C4 + z * (C5 + z * (C6 + z * (C7 + z * (C8 + z * (C9 + z * (C10 + z * C11))))))))))) #endif long double __cosl(long double x, long double y) diff --git a/lib/libm/__invtrigl.c b/lib/libm/__invtrigl.c index 8e8273ae..eed13971 100644 --- a/lib/libm/__invtrigl.c +++ b/lib/libm/__invtrigl.c @@ -3,18 +3,12 @@ #include // for LDBL_MANT_DIG, LDBL_MAX_EXP #if LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 -static const long double pS0 = 1.66666666666666666631e-01L, - pS1 = -4.16313987993683104320e-01L, - pS2 = 3.69068046323246813704e-01L, - pS3 = -1.36213932016738603108e-01L, - pS4 = 1.78324189708471965733e-02L, - pS5 = -2.19216428382605211588e-04L, - pS6 = -7.10526623669075243183e-06L, - qS1 = -2.94788392796209867269e+00L, - qS2 = 3.27309890266528636716e+00L, - qS3 = -1.68285799854822427013e+00L, - qS4 = 3.90699412641738801874e-01L, - qS5 = -3.14365703596053263322e-02L; +static const long double pS0 = 1.66666666666666666631e-01L, pS1 = -4.16313987993683104320e-01L, + pS2 = 3.69068046323246813704e-01L, pS3 = -1.36213932016738603108e-01L, + pS4 = 1.78324189708471965733e-02L, pS5 = -2.19216428382605211588e-04L, + pS6 = -7.10526623669075243183e-06L, qS1 = -2.94788392796209867269e+00L, + qS2 = 3.27309890266528636716e+00L, qS3 = -1.68285799854822427013e+00L, + qS4 = 3.90699412641738801874e-01L, qS5 = -3.14365703596053263322e-02L; const long double pio2_hi = 1.57079632679489661926L; const long double pio2_lo = -2.50827880633416601173e-20L; @@ -24,9 +18,7 @@ const long double pio2_lo = -2.50827880633416601173e-20L; long double __invtrigl_R(long double z) { long double p, q; - p = z * (pS0 + - z * (pS1 + - z * (pS2 + z * (pS3 + z * (pS4 + z * (pS5 + z * pS6)))))); + p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * (pS5 + z * pS6)))))); q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * (qS4 + z * qS5)))); return p / q; } @@ -57,23 +49,11 @@ const long double pio2_lo = 4.33590506506189051239852201302167613e-35L; long double __invtrigl_R(long double z) { long double p, q; - p = z * (pS0 + - z * (pS1 + - z * (pS2 + - z * (pS3 + - z * (pS4 + - z * (pS5 + - z * (pS6 + - z * (pS7 + - z * (pS8 + z * pS9))))))))); + p = z * + (pS0 + + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * (pS5 + z * (pS6 + z * (pS7 + z * (pS8 + z * pS9))))))))); q = 1.0 + - z * (qS1 + - z * (qS2 + - z * (qS3 + - z * (qS4 + - z * (qS5 + - z * (qS6 + - z * (qS7 + z * (qS8 + z * qS9)))))))); + z * (qS1 + z * (qS2 + z * (qS3 + z * (qS4 + z * (qS5 + z * (qS6 + z * (qS7 + z * (qS8 + z * qS9)))))))); return p / q; } #endif diff --git a/lib/libm/__rem_pio2.c b/lib/libm/__rem_pio2.c index 1d81061f..822b729f 100644 --- a/lib/libm/__rem_pio2.c +++ b/lib/libm/__rem_pio2.c @@ -38,9 +38,9 @@ * pio2_3: third 33 bit of pi/2 * pio2_3t: pi/2 - (pio2_1+pio2_2+pio2_3) */ -static const double toint = 1.5 / EPS, pio4 = 0x1.921fb54442d18p-1, - invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, - 0x6DC9C883 */ +static const double toint = 1.5 / EPS, pio4 = 0x1.921fb54442d18p-1, invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, + 0x6DC9C883 + */ pio2_1 = 1.57079632673412561417e+00, /* 0x3FF921FB, 0x54400000 */ pio2_1t = 6.07710050650619224932e-11, /* 0x3DD0B461, 0x1A626331 */ pio2_2 = 6.07710050630396597660e-11, /* 0x3DD0B461, 0x1A600000 */ @@ -64,8 +64,8 @@ int __rem_pio2(double x, double *y) ix = u.i >> 32 & 0x7fffffff; if (ix <= 0x400f6a7a) { /* |x| ~<= 5pi/4 */ if ((ix & 0xfffff) == 0x921fb) /* |x| ~= pi/2 or 2pi/2 */ - goto medium; /* cancellation -- use medium case */ - if (ix <= 0x4002d97c) { /* |x| ~<= 3pi/4 */ + goto medium; /* cancellation -- use medium case */ + if (ix <= 0x4002d97c) { /* |x| ~<= 3pi/4 */ if (!sign) { z = x - pio2_1; /* one round good to 85 bits */ y[0] = z - pio2_1t; diff --git a/lib/libm/__rem_pio2_large.c b/lib/libm/__rem_pio2_large.c index 8b97a6f6..f7df00d4 100644 --- a/lib/libm/__rem_pio2_large.c +++ b/lib/libm/__rem_pio2_large.c @@ -143,108 +143,71 @@ static const int init_jk[] = { 3, 4, 4, 6 }; /* initial value for jk */ * For quad precision (e0 <= 16360, jk = 6), this is 686. */ static const int32_t ipio2[] = { - 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, + 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, #if LDBL_MAX_EXP > 1024 - 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, + 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, #endif }; diff --git a/lib/libm/__rem_pio2f.c b/lib/libm/__rem_pio2f.c index 6316b60a..04326777 100644 --- a/lib/libm/__rem_pio2f.c +++ b/lib/libm/__rem_pio2f.c @@ -37,9 +37,8 @@ * pio2_1: first 25 bits of pi/2 * pio2_1t: pi/2 - pio2_1 */ -static const double toint = 1.5 / EPS, pio4 = 0x1.921fb6p-1, - invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, - 0x6DC9C883 */ +static const double toint = 1.5 / EPS, pio4 = 0x1.921fb6p-1, invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, + 0x6DC9C883 */ pio2_1 = 1.57079631090164184570e+00, /* 0x3FF921FB, 0x50000000 */ pio2_1t = 1.58932547735281966916e-08; /* 0x3E5110b4, 0x611A6263 */ diff --git a/lib/libm/__rem_pio2l.c b/lib/libm/__rem_pio2l.c index f5d28dde..7c980ba4 100644 --- a/lib/libm/__rem_pio2l.c +++ b/lib/libm/__rem_pio2l.c @@ -27,9 +27,7 @@ static const long double toint = 1.5 / LDBL_EPSILON; #if LDBL_MANT_DIG == 64 /* u ~< 0x1p25*pi/2 */ -#define SMALL(u) \ - ((((u).i.se & 0x7fffU) << 16 | (u).i.m >> 48) < \ - ((0x3fff + 25) << 16 | 0x921f >> 1 | 0x8000)) +#define SMALL(u) ((((u).i.se & 0x7fffU) << 16 | (u).i.m >> 48) < ((0x3fff + 25) << 16 | 0x921f >> 1 | 0x8000)) #define QUOBITS(x) ((uint32_t)(int32_t)(x) & 0x7fffffff) #define ROUND1 22 #define ROUND2 61 @@ -46,47 +44,37 @@ static const long double toint = 1.5 / LDBL_EPSILON; */ static const double pio2_1 = 1.57079632679597125389e+00, /* 0x3FF921FB, 0x54444000 */ - pio2_2 = -1.07463465549783099519e-12, /* -0x12e7b967674000.0p-92 */ - pio2_3 = 6.36831716351370313614e-25; /* 0x18a2e037074000.0p-133 */ -static const long double - pio4 = 0x1.921fb54442d1846ap-1L, - invpio2 = 6.36619772367581343076e-01L, /* 0xa2f9836e4e44152a.0p-64 - */ - pio2_1t = -1.07463465549719416346e-12L, /* -0x973dcb3b399d747f.0p-103 */ - pio2_2t = 6.36831716351095013979e-25L, /* 0xc51701b839a25205.0p-144 */ - pio2_3t = -2.75299651904407171810e-37L; /* -0xbb5bf6c7ddd660ce.0p-185 */ + pio2_2 = -1.07463465549783099519e-12, /* -0x12e7b967674000.0p-92 */ + pio2_3 = 6.36831716351370313614e-25; /* 0x18a2e037074000.0p-133 */ +static const long double pio4 = 0x1.921fb54442d1846ap-1L, + invpio2 = 6.36619772367581343076e-01L, /* 0xa2f9836e4e44152a.0p-64 + */ + pio2_1t = -1.07463465549719416346e-12L, /* -0x973dcb3b399d747f.0p-103 */ + pio2_2t = 6.36831716351095013979e-25L, /* 0xc51701b839a25205.0p-144 */ + pio2_3t = -2.75299651904407171810e-37L; /* -0xbb5bf6c7ddd660ce.0p-185 */ #elif LDBL_MANT_DIG == 113 /* u ~< 0x1p45*pi/2 */ -#define SMALL(u) \ - (((u.i.se & 0x7fffU) << 16 | u.i.top) < ((0x3fff + 45) << 16 | 0x921f)) +#define SMALL(u) (((u.i.se & 0x7fffU) << 16 | u.i.top) < ((0x3fff + 45) << 16 | 0x921f)) #define QUOBITS(x) ((uint32_t)(int64_t)x & 0x7fffffff) #define ROUND1 51 #define ROUND2 119 #define NX 5 #define NY 3 -static const long double - pio4 = 0x1.921fb54442d18469898cc51701b8p-1L, - invpio2 = - 6.3661977236758134307553505349005747e-01L, /* 0x145f306dc9c882a53f84eafa3ea6a.0p-113 - */ - pio2_1 = - 1.5707963267948966192292994253909555e+00L, /* 0x1921fb54442d18469800000000000.0p-112 - */ - pio2_1t = - 2.0222662487959507323996846200947577e-21L, /* 0x13198a2e03707344a4093822299f3.0p-181 - */ - pio2_2 = - 2.0222662487959507323994779168837751e-21L, /* 0x13198a2e03707344a400000000000.0p-181 - */ - pio2_2t = - 2.0670321098263988236496903051604844e-43L, /* 0x127044533e63a0105df531d89cd91.0p-254 - */ - pio2_3 = - 2.0670321098263988236499468110329591e-43L, /* 0x127044533e63a0105e00000000000.0p-254 - */ - pio2_3t = - -2.5650587247459238361625433492959285e-65L; /* -0x159c4ec64ddaeb5f78671cbfb2210.0p-327 - */ +static const long double pio4 = 0x1.921fb54442d18469898cc51701b8p-1L, + invpio2 = 6.3661977236758134307553505349005747e-01L, /* 0x145f306dc9c882a53f84eafa3ea6a.0p-113 + */ + pio2_1 = 1.5707963267948966192292994253909555e+00L, /* 0x1921fb54442d18469800000000000.0p-112 + */ + pio2_1t = 2.0222662487959507323996846200947577e-21L, /* 0x13198a2e03707344a4093822299f3.0p-181 + */ + pio2_2 = 2.0222662487959507323994779168837751e-21L, /* 0x13198a2e03707344a400000000000.0p-181 + */ + pio2_2t = 2.0670321098263988236496903051604844e-43L, /* 0x127044533e63a0105df531d89cd91.0p-254 + */ + pio2_3 = 2.0670321098263988236499468110329591e-43L, /* 0x127044533e63a0105e00000000000.0p-254 + */ + pio2_3t = -2.5650587247459238361625433492959285e-65L; /* -0x159c4ec64ddaeb5f78671cbfb2210.0p-327 + */ #endif int __rem_pio2l(long double x, long double *y) @@ -131,8 +119,8 @@ int __rem_pio2l(long double x, long double *y) ey = u.i.se & 0x7fff; if (ex - ey > ROUND2) { /* 3rd iteration, good to 180/316 bits */ - t = r; /* will cover all possible cases (not - verified for ld128) */ + t = r; /* will cover all possible cases (not + verified for ld128) */ w = fn * pio2_3; r = t - w; w = fn * pio2_3t - ((t - r) - w); diff --git a/lib/libm/__sin.c b/lib/libm/__sin.c index e44c66e7..53b71c59 100644 --- a/lib/libm/__sin.c +++ b/lib/libm/__sin.c @@ -45,11 +45,11 @@ static const double S1 = -1.66666666666666324348e-01, /* 0xBFC55555, 0x55555549 */ - S2 = 8.33333333332248946124e-03, /* 0x3F811111, 0x1110F8A6 */ - S3 = -1.98412698298579493134e-04, /* 0xBF2A01A0, 0x19C161D5 */ - S4 = 2.75573137070700676789e-06, /* 0x3EC71DE3, 0x57B1FE7D */ - S5 = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */ - S6 = 1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */ + S2 = 8.33333333332248946124e-03, /* 0x3F811111, 0x1110F8A6 */ + S3 = -1.98412698298579493134e-04, /* 0xBF2A01A0, 0x19C161D5 */ + S4 = 2.75573137070700676789e-06, /* 0x3EC71DE3, 0x57B1FE7D */ + S5 = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */ + S6 = 1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */ double __sin(double x, double y, int iy) { diff --git a/lib/libm/__sindf.c b/lib/libm/__sindf.c index b6b9cf42..ad67f804 100644 --- a/lib/libm/__sindf.c +++ b/lib/libm/__sindf.c @@ -20,9 +20,9 @@ /* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */ static const double S1 = -0x15555554cbac77.0p-55, /* -0.166666666416265235595 */ - S2 = 0x111110896efbb2.0p-59, /* 0.0083333293858894631756 */ - S3 = -0x1a00f9e2cae774.0p-65, /* -0.000198393348360966317347 */ - S4 = 0x16cd878c3b46a7.0p-71; /* 0.0000027183114939898219064 */ + S2 = 0x111110896efbb2.0p-59, /* 0.0083333293858894631756 */ + S3 = -0x1a00f9e2cae774.0p-65, /* -0.000198393348360966317347 */ + S4 = 0x16cd878c3b46a7.0p-71; /* 0.0000027183114939898219064 */ float __sindf(double x) { diff --git a/lib/libm/__sinl.c b/lib/libm/__sinl.c index ecc23a1a..465b7500 100644 --- a/lib/libm/__sinl.c +++ b/lib/libm/__sinl.c @@ -27,20 +27,16 @@ * * See __cosl.c for more details about the polynomial. */ -static const long double S1 = - -0.166666666666666666671L; /* -0xaaaaaaaaaaaaaaab.0p-66 - */ -static const double S2 = 0.0083333333333333332, /* 0x11111111111111.0p-59 */ - S3 = -0.00019841269841269427, /* -0x1a01a01a019f81.0p-65 */ - S4 = 0.0000027557319223597490, /* 0x171de3a55560f7.0p-71 */ - S5 = -0.000000025052108218074604, /* -0x1ae64564f16cad.0p-78 */ - S6 = 1.6059006598854211e-10, /* 0x161242b90243b5.0p-85 */ - S7 = -7.6429779983024564e-13, /* -0x1ae42ebd1b2e00.0p-93 */ - S8 = 2.6174587166648325e-15; /* 0x179372ea0b3f64.0p-101 */ -#define POLY(z) \ - (S2 + \ - (z) * (S3 + \ - (z) * (S4 + (z) * (S5 + (z) * (S6 + (z) * (S7 + (z) * S8)))))) +static const long double S1 = -0.166666666666666666671L; /* -0xaaaaaaaaaaaaaaab.0p-66 + */ +static const double S2 = 0.0083333333333333332, /* 0x11111111111111.0p-59 */ + S3 = -0.00019841269841269427, /* -0x1a01a01a019f81.0p-65 */ + S4 = 0.0000027557319223597490, /* 0x171de3a55560f7.0p-71 */ + S5 = -0.000000025052108218074604, /* -0x1ae64564f16cad.0p-78 */ + S6 = 1.6059006598854211e-10, /* 0x161242b90243b5.0p-85 */ + S7 = -7.6429779983024564e-13, /* -0x1ae42ebd1b2e00.0p-93 */ + S8 = 2.6174587166648325e-15; /* 0x179372ea0b3f64.0p-101 */ +#define POLY(z) (S2 + (z) * (S3 + (z) * (S4 + (z) * (S5 + (z) * (S6 + (z) * (S7 + (z) * S8)))))) #elif LDBL_MANT_DIG == 113 /* * ld128 version of __sin.c. See __sin.c for most comments. @@ -51,31 +47,21 @@ static const double S2 = 0.0083333333333333332, /* 0x11111111111111.0p-59 */ * * See __cosl.c for more details about the polynomial. */ -static const long double - S1 = -0.16666666666666666666666666666666666606732416116558L, - S2 = 0.0083333333333333333333333333333331135404851288270047L, - S3 = -0.00019841269841269841269841269839935785325638310428717L, - S4 = 0.27557319223985890652557316053039946268333231205686e-5L, - S5 = -0.25052108385441718775048214826384312253862930064745e-7L, - S6 = 0.16059043836821614596571832194524392581082444805729e-9L, - S7 = -0.76471637318198151807063387954939213287488216303768e-12L, - S8 = 0.28114572543451292625024967174638477283187397621303e-14L; -static const double - S9 = -0.82206352458348947812512122163446202498005154296863e-17, - S10 = 0.19572940011906109418080609928334380560135358385256e-19, - S11 = -0.38680813379701966970673724299207480965452616911420e-22, - S12 = 0.64038150078671872796678569586315881020659912139412e-25; -#define POLY(z) \ - (S2 + \ - z * (S3 + \ - z * (S4 + \ - z * (S5 + \ - z * (S6 + \ - z * (S7 + \ - z * (S8 + \ - z * (S9 + \ - z * (S10 + \ - z * (S11 + z * S12)))))))))) +static const long double S1 = -0.16666666666666666666666666666666666606732416116558L, + S2 = 0.0083333333333333333333333333333331135404851288270047L, + S3 = -0.00019841269841269841269841269839935785325638310428717L, + S4 = 0.27557319223985890652557316053039946268333231205686e-5L, + S5 = -0.25052108385441718775048214826384312253862930064745e-7L, + S6 = 0.16059043836821614596571832194524392581082444805729e-9L, + S7 = -0.76471637318198151807063387954939213287488216303768e-12L, + S8 = 0.28114572543451292625024967174638477283187397621303e-14L; +static const double S9 = -0.82206352458348947812512122163446202498005154296863e-17, + S10 = 0.19572940011906109418080609928334380560135358385256e-19, + S11 = -0.38680813379701966970673724299207480965452616911420e-22, + S12 = 0.64038150078671872796678569586315881020659912139412e-25; +#define POLY(z) \ + (S2 + \ + z * (S3 + z * (S4 + z * (S5 + z * (S6 + z * (S7 + z * (S8 + z * (S9 + z * (S10 + z * (S11 + z * S12)))))))))) #endif long double __sinl(long double x, long double y, int iy) diff --git a/lib/libm/__tan.c b/lib/libm/__tan.c index 9abfff35..4f0e6279 100644 --- a/lib/libm/__tan.c +++ b/lib/libm/__tan.c @@ -92,11 +92,8 @@ double __tan(double x, double y, int odd) * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) + * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12])) */ - r = T[1] + - w * (T[3] + w * (T[5] + w * (T[7] + w * (T[9] + w * T[11])))); - v = z * - (T[2] + - w * (T[4] + w * (T[6] + w * (T[8] + w * (T[10] + w * T[12]))))); + r = T[1] + w * (T[3] + w * (T[5] + w * (T[7] + w * (T[9] + w * T[11])))); + v = z * (T[2] + w * (T[4] + w * (T[6] + w * (T[8] + w * (T[10] + w * T[12]))))); s = z * x; r = y + z * (s * (r + v) + y) + s * T[0]; w = x + r; diff --git a/lib/libm/__tanl.c b/lib/libm/__tanl.c index 28167d02..a7d0dce0 100644 --- a/lib/libm/__tanl.c +++ b/lib/libm/__tanl.c @@ -27,38 +27,27 @@ * * See __cosl.c for more details about the polynomial. */ -static const long double - T3 = 0.333333333333333333180L, /* 0xaaaaaaaaaaaaaaa5.0p-65 - */ - T5 = 0.133333333333333372290L, /* 0x88888888888893c3.0p-66 */ - T7 = 0.0539682539682504975744L, /* 0xdd0dd0dd0dc13ba2.0p-68 */ - pio4 = 0.785398163397448309628L, /* 0xc90fdaa22168c235.0p-64 */ - pio4lo = -1.25413940316708300586e-20L; /* -0xece675d1fc8f8cbb.0p-130 */ -static const double T9 = 0.021869488536312216, /* 0x1664f4882cc1c2.0p-58 */ - T11 = 0.0088632355256619590, /* 0x1226e355c17612.0p-59 */ - T13 = 0.0035921281113786528, /* 0x1d6d3d185d7ff8.0p-61 */ - T15 = 0.0014558334756312418, /* 0x17da354aa3f96b.0p-62 */ - T17 = 0.00059003538700862256, /* 0x13559358685b83.0p-63 */ - T19 = 0.00023907843576635544, /* 0x1f56242026b5be.0p-65 */ - T21 = 0.000097154625656538905, /* 0x1977efc26806f4.0p-66 */ - T23 = 0.000038440165747303162, /* 0x14275a09b3ceac.0p-67 */ - T25 = 0.000018082171885432524, /* 0x12f5e563e5487e.0p-68 */ - T27 = 0.0000024196006108814377, /* 0x144c0d80cc6896.0p-71 */ - T29 = 0.0000078293456938132840, /* 0x106b59141a6cb3.0p-69 */ - T31 = -0.0000032609076735050182, /* -0x1b5abef3ba4b59.0p-71 */ - T33 = 0.0000023261313142559411; /* 0x13835436c0c87f.0p-71 */ -#define RPOLY(w) \ - (T5 + \ - (w) * (T9 + (w) * (T13 + \ - (w) * (T17 + \ - (w) * (T21 + \ - (w) * (T25 + \ - (w) * (T29 + (w) * T33))))))) -#define VPOLY(w) \ - (T7 + \ - (w) * (T11 + \ - (w) * (T15 + \ - (w) * (T19 + (w) * (T23 + (w) * (T27 + (w) * T31)))))) +static const long double T3 = 0.333333333333333333180L, /* 0xaaaaaaaaaaaaaaa5.0p-65 + */ + T5 = 0.133333333333333372290L, /* 0x88888888888893c3.0p-66 */ + T7 = 0.0539682539682504975744L, /* 0xdd0dd0dd0dc13ba2.0p-68 */ + pio4 = 0.785398163397448309628L, /* 0xc90fdaa22168c235.0p-64 */ + pio4lo = -1.25413940316708300586e-20L; /* -0xece675d1fc8f8cbb.0p-130 */ +static const double T9 = 0.021869488536312216, /* 0x1664f4882cc1c2.0p-58 */ + T11 = 0.0088632355256619590, /* 0x1226e355c17612.0p-59 */ + T13 = 0.0035921281113786528, /* 0x1d6d3d185d7ff8.0p-61 */ + T15 = 0.0014558334756312418, /* 0x17da354aa3f96b.0p-62 */ + T17 = 0.00059003538700862256, /* 0x13559358685b83.0p-63 */ + T19 = 0.00023907843576635544, /* 0x1f56242026b5be.0p-65 */ + T21 = 0.000097154625656538905, /* 0x1977efc26806f4.0p-66 */ + T23 = 0.000038440165747303162, /* 0x14275a09b3ceac.0p-67 */ + T25 = 0.000018082171885432524, /* 0x12f5e563e5487e.0p-68 */ + T27 = 0.0000024196006108814377, /* 0x144c0d80cc6896.0p-71 */ + T29 = 0.0000078293456938132840, /* 0x106b59141a6cb3.0p-69 */ + T31 = -0.0000032609076735050182, /* -0x1b5abef3ba4b59.0p-71 */ + T33 = 0.0000023261313142559411; /* 0x13835436c0c87f.0p-71 */ +#define RPOLY(w) (T5 + (w) * (T9 + (w) * (T13 + (w) * (T17 + (w) * (T21 + (w) * (T25 + (w) * (T29 + (w) * T33))))))) +#define VPOLY(w) (T7 + (w) * (T11 + (w) * (T15 + (w) * (T19 + (w) * (T23 + (w) * (T27 + (w) * T31)))))) #elif LDBL_MANT_DIG == 113 /* * ld128 version of __tan.c. See __tan.c for most comments. @@ -69,66 +58,45 @@ static const double T9 = 0.021869488536312216, /* 0x1664f4882cc1c2.0p-58 */ * * See __cosl.c for more details about the polynomial. */ -static const long double T3 = 0x1.5555555555555555555555555553p-2L, - T5 = 0x1.1111111111111111111111111eb5p-3L, - T7 = 0x1.ba1ba1ba1ba1ba1ba1ba1b694cd6p-5L, - T9 = 0x1.664f4882c10f9f32d6bbe09d8bcdp-6L, - T11 = 0x1.226e355e6c23c8f5b4f5762322eep-7L, - T13 = 0x1.d6d3d0e157ddfb5fed8e84e27b37p-9L, - T15 = 0x1.7da36452b75e2b5fce9ee7c2c92ep-10L, - T17 = 0x1.355824803674477dfcf726649efep-11L, - T19 = 0x1.f57d7734d1656e0aceb716f614c2p-13L, - T21 = 0x1.967e18afcb180ed942dfdc518d6cp-14L, - T23 = 0x1.497d8eea21e95bc7e2aa79b9f2cdp-15L, - T25 = 0x1.0b132d39f055c81be49eff7afd50p-16L, - T27 = 0x1.b0f72d33eff7bfa2fbc1059d90b6p-18L, - T29 = 0x1.5ef2daf21d1113df38d0fbc00267p-19L, - T31 = 0x1.1c77d6eac0234988cdaa04c96626p-20L, - T33 = 0x1.cd2a5a292b180e0bdd701057dfe3p-22L, - T35 = 0x1.75c7357d0298c01a31d0a6f7d518p-23L, - T37 = 0x1.2f3190f4718a9a520f98f50081fcp-24L, - pio4 = 0x1.921fb54442d18469898cc51701b8p-1L, - pio4lo = 0x1.cd129024e088a67cc74020bbea60p-116L; +static const long double T3 = 0x1.5555555555555555555555555553p-2L, T5 = 0x1.1111111111111111111111111eb5p-3L, + T7 = 0x1.ba1ba1ba1ba1ba1ba1ba1b694cd6p-5L, T9 = 0x1.664f4882c10f9f32d6bbe09d8bcdp-6L, + T11 = 0x1.226e355e6c23c8f5b4f5762322eep-7L, T13 = 0x1.d6d3d0e157ddfb5fed8e84e27b37p-9L, + T15 = 0x1.7da36452b75e2b5fce9ee7c2c92ep-10L, T17 = 0x1.355824803674477dfcf726649efep-11L, + T19 = 0x1.f57d7734d1656e0aceb716f614c2p-13L, T21 = 0x1.967e18afcb180ed942dfdc518d6cp-14L, + T23 = 0x1.497d8eea21e95bc7e2aa79b9f2cdp-15L, T25 = 0x1.0b132d39f055c81be49eff7afd50p-16L, + T27 = 0x1.b0f72d33eff7bfa2fbc1059d90b6p-18L, T29 = 0x1.5ef2daf21d1113df38d0fbc00267p-19L, + T31 = 0x1.1c77d6eac0234988cdaa04c96626p-20L, T33 = 0x1.cd2a5a292b180e0bdd701057dfe3p-22L, + T35 = 0x1.75c7357d0298c01a31d0a6f7d518p-23L, T37 = 0x1.2f3190f4718a9a520f98f50081fcp-24L, + pio4 = 0x1.921fb54442d18469898cc51701b8p-1L, pio4lo = 0x1.cd129024e088a67cc74020bbea60p-116L; static const double T39 = 0.000000028443389121318352, /* 0x1e8a7592977938.0p-78 */ - T41 = 0.000000011981013102001973, /* 0x19baa1b1223219.0p-79 */ - T43 = 0.0000000038303578044958070, /* 0x107385dfb24529.0p-80 */ - T45 = 0.0000000034664378216909893, /* 0x1dc6c702a05262.0p-81 */ - T47 = -0.0000000015090641701997785, /* -0x19ecef3569ebb6.0p-82 */ - T49 = 0.0000000029449552300483952, /* 0x194c0668da786a.0p-81 */ - T51 = -0.0000000022006995706097711, /* -0x12e763b8845268.0p-81 */ - T53 = 0.0000000015468200913196612, /* 0x1a92fc98c29554.0p-82 */ - T55 = -0.00000000061311613386849674, /* -0x151106cbc779a9.0p-83 */ - T57 = 1.4912469681508012e-10; /* 0x147edbdba6f43a.0p-85 */ -#define RPOLY(w) \ - (T5 + \ - w * (T9 + \ - w * (T13 + \ - w * (T17 + \ - w * (T21 + \ - w * (T25 + \ - w * (T29 + \ - w * (T33 + \ - w * (T37 + \ - w * (T41 + \ - w * (T45 + \ - w * (T49 + \ - w * (T53 + \ - w * T57))))))))))))) -#define VPOLY(w) \ - (T7 + \ - w * (T11 + \ - w * (T15 + \ - w * (T19 + \ - w * (T23 + \ - w * (T27 + \ - w * (T31 + \ - w * (T35 + \ - w * (T39 + \ - w * (T43 + \ - w * (T47 + \ - w * (T51 + \ - w * T55)))))))))))) + T41 = 0.000000011981013102001973, /* 0x19baa1b1223219.0p-79 */ + T43 = 0.0000000038303578044958070, /* 0x107385dfb24529.0p-80 */ + T45 = 0.0000000034664378216909893, /* 0x1dc6c702a05262.0p-81 */ + T47 = -0.0000000015090641701997785, /* -0x19ecef3569ebb6.0p-82 */ + T49 = 0.0000000029449552300483952, /* 0x194c0668da786a.0p-81 */ + T51 = -0.0000000022006995706097711, /* -0x12e763b8845268.0p-81 */ + T53 = 0.0000000015468200913196612, /* 0x1a92fc98c29554.0p-82 */ + T55 = -0.00000000061311613386849674, /* -0x151106cbc779a9.0p-83 */ + T57 = 1.4912469681508012e-10; /* 0x147edbdba6f43a.0p-85 */ +#define RPOLY(w) \ + (T5 + \ + w * (T9 + \ + w * (T13 + \ + w * (T17 + \ + w * (T21 + \ + w * (T25 + \ + w * (T29 + \ + w * (T33 + \ + w * (T37 + w * (T41 + w * (T45 + w * (T49 + w * (T53 + w * T57))))))))))))) +#define VPOLY(w) \ + (T7 + \ + w * (T11 + \ + w * (T15 + \ + w * (T19 + \ + w * (T23 + \ + w * (T27 + \ + w * (T31 + w * (T35 + w * (T39 + w * (T43 + w * (T47 + w * (T51 + w * T55)))))))))))) #endif long double __tanl(long double x, long double y, int odd) diff --git a/lib/libm/acos.c b/lib/libm/acos.c index 67c059af..ade05239 100644 --- a/lib/libm/acos.c +++ b/lib/libm/acos.c @@ -40,17 +40,17 @@ static const double pio2_hi = 1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */ - pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */ - pS0 = 1.66666666666666657415e-01, /* 0x3FC55555, 0x55555555 */ - pS1 = -3.25565818622400915405e-01, /* 0xBFD4D612, 0x03EB6F7D */ - pS2 = 2.01212532134862925881e-01, /* 0x3FC9C155, 0x0E884455 */ - pS3 = -4.00555345006794114027e-02, /* 0xBFA48228, 0xB5688F3B */ - pS4 = 7.91534994289814532176e-04, /* 0x3F49EFE0, 0x7501B288 */ - pS5 = 3.47933107596021167570e-05, /* 0x3F023DE1, 0x0DFDF709 */ - qS1 = -2.40339491173441421878e+00, /* 0xC0033A27, 0x1C8A2D4B */ - qS2 = 2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */ - qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */ - qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */ + pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */ + pS0 = 1.66666666666666657415e-01, /* 0x3FC55555, 0x55555555 */ + pS1 = -3.25565818622400915405e-01, /* 0xBFD4D612, 0x03EB6F7D */ + pS2 = 2.01212532134862925881e-01, /* 0x3FC9C155, 0x0E884455 */ + pS3 = -4.00555345006794114027e-02, /* 0xBFA48228, 0xB5688F3B */ + pS4 = 7.91534994289814532176e-04, /* 0x3F49EFE0, 0x7501B288 */ + pS5 = 3.47933107596021167570e-05, /* 0x3F023DE1, 0x0DFDF709 */ + qS1 = -2.40339491173441421878e+00, /* 0xC0033A27, 0x1C8A2D4B */ + qS2 = 2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */ + qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */ + qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */ static double R(double z) { diff --git a/lib/libm/acosf.c b/lib/libm/acosf.c index 51e5c5ea..31b987e0 100644 --- a/lib/libm/acosf.c +++ b/lib/libm/acosf.c @@ -20,8 +20,7 @@ static const float pio2_hi = 1.5707962513e+00, /* 0x3fc90fda */ pio2_lo = 7.5497894159e-08, /* 0x33a22168 */ - pS0 = 1.6666586697e-01, pS1 = -4.2743422091e-02, - pS2 = -8.6563630030e-03, qS1 = -7.0662963390e-01; + pS0 = 1.6666586697e-01, pS1 = -4.2743422091e-02, pS2 = -8.6563630030e-03, qS1 = -7.0662963390e-01; static float R(float z) { diff --git a/lib/libm/asin.c b/lib/libm/asin.c index eb669b87..8fdc1b19 100644 --- a/lib/libm/asin.c +++ b/lib/libm/asin.c @@ -46,7 +46,7 @@ static const double pio2_hi = 1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */ - pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */ + pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */ /* coefficients for R(x^2) */ pS0 = 1.66666666666666657415e-01, /* 0x3FC55555, 0x55555555 */ pS1 = -3.25565818622400915405e-01, /* 0xBFD4D612, 0x03EB6F7D */ @@ -102,8 +102,7 @@ double asin(double x) f = s; SET_LOW_WORD(f, 0); c = (z - f * f) / (s + f); - x = 0.5 * pio2_hi - - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f)); + x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f)); } if (hx >> 31) return -x; diff --git a/lib/libm/asinf.c b/lib/libm/asinf.c index 0175f4d5..6e26e646 100644 --- a/lib/libm/asinf.c +++ b/lib/libm/asinf.c @@ -22,8 +22,7 @@ static const double pio2 = 1.570796326794896558e+00; static const float /* coefficients for R(x^2) */ pS0 = 1.6666586697e-01, - pS1 = -4.2743422091e-02, pS2 = -8.6563630030e-03, - qS1 = -7.0662963390e-01; + pS1 = -4.2743422091e-02, pS2 = -8.6563630030e-03, qS1 = -7.0662963390e-01; static float R(float z) { diff --git a/lib/libm/asinl.c b/lib/libm/asinl.c index 7a5f6710..da0120b9 100644 --- a/lib/libm/asinl.c +++ b/lib/libm/asinl.c @@ -68,8 +68,7 @@ long double asinl(long double x) CLEARBOTTOM(u); f = u.f; c = (z - f * f) / (s + f); - x = 0.5 * pio2_hi - - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f)); + x = 0.5 * pio2_hi - (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f)); } return sign ? -x : x; } diff --git a/lib/libm/atan.c b/lib/libm/atan.c index 36d10d73..2346d21c 100644 --- a/lib/libm/atan.c +++ b/lib/libm/atan.c @@ -109,9 +109,7 @@ double atan(double x) z = x * x; w = z * z; /* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */ - s1 = z * (aT[0] + - w * (aT[2] + - w * (aT[4] + w * (aT[6] + w * (aT[8] + w * aT[10]))))); + s1 = z * (aT[0] + w * (aT[2] + w * (aT[4] + w * (aT[6] + w * (aT[8] + w * aT[10]))))); s2 = w * (aT[1] + w * (aT[3] + w * (aT[5] + w * (aT[7] + w * aT[9])))); if (id < 0) return x - x * (s1 + s2); diff --git a/lib/libm/atanf.c b/lib/libm/atanf.c index 74881a92..c46b970f 100644 --- a/lib/libm/atanf.c +++ b/lib/libm/atanf.c @@ -33,8 +33,7 @@ static const float atanlo[] = { }; static const float aT[] = { - 3.3333328366e-01, -1.9999158382e-01, 1.4253635705e-01, - -1.0648017377e-01, 6.1687607318e-02, + 3.3333328366e-01, -1.9999158382e-01, 1.4253635705e-01, -1.0648017377e-01, 6.1687607318e-02, }; float atanf(float x) diff --git a/lib/libm/atanl.c b/lib/libm/atanl.c index 1f1bff44..4a59fb40 100644 --- a/lib/libm/atanl.c +++ b/lib/libm/atanl.c @@ -44,28 +44,21 @@ static const long double atanlo[] = { }; static const long double aT[] = { - 3.33333333333333333017e-01L, -1.99999999999999632011e-01L, - 1.42857142857046531280e-01L, -1.11111111100562372733e-01L, - 9.09090902935647302252e-02L, -7.69230552476207730353e-02L, - 6.66661718042406260546e-02L, -5.88158892835030888692e-02L, - 5.25499891539726639379e-02L, -4.70119845393155721494e-02L, - 4.03539201366454414072e-02L, -2.91303858419364158725e-02L, + 3.33333333333333333017e-01L, -1.99999999999999632011e-01L, 1.42857142857046531280e-01L, + -1.11111111100562372733e-01L, 9.09090902935647302252e-02L, -7.69230552476207730353e-02L, + 6.66661718042406260546e-02L, -5.88158892835030888692e-02L, 5.25499891539726639379e-02L, + -4.70119845393155721494e-02L, 4.03539201366454414072e-02L, -2.91303858419364158725e-02L, 1.24822046299269234080e-02L, }; static long double T_even(long double x) { - return aT[0] + - x * (aT[2] + - x * (aT[4] + x * (aT[6] + x * (aT[8] + x * (aT[10] + - x * aT[12]))))); + return aT[0] + x * (aT[2] + x * (aT[4] + x * (aT[6] + x * (aT[8] + x * (aT[10] + x * aT[12]))))); } static long double T_odd(long double x) { - return aT[1] + - x * (aT[3] + - x * (aT[5] + x * (aT[7] + x * (aT[9] + x * aT[11])))); + return aT[1] + x * (aT[3] + x * (aT[5] + x * (aT[7] + x * (aT[9] + x * aT[11])))); } #elif LDBL_MANT_DIG == 113 #define EXPMAN(u) ((u.i.se & 0x7fff) << 8 | u.i.top >> 8) @@ -85,30 +78,18 @@ static const long double atanlo[] = { }; static const long double aT[] = { - 3.33333333333333333333333333333333125e-01L, - -1.99999999999999999999999999999180430e-01L, - 1.42857142857142857142857142125269827e-01L, - -1.11111111111111111111110834490810169e-01L, - 9.09090909090909090908522355708623681e-02L, - -7.69230769230769230696553844935357021e-02L, - 6.66666666666666660390096773046256096e-02L, - -5.88235294117646671706582985209643694e-02L, - 5.26315789473666478515847092020327506e-02L, - -4.76190476189855517021024424991436144e-02L, - 4.34782608678695085948531993458097026e-02L, - -3.99999999632663469330634215991142368e-02L, - 3.70370363987423702891250829918659723e-02L, - -3.44827496515048090726669907612335954e-02L, - 3.22579620681420149871973710852268528e-02L, - -3.03020767654269261041647570626778067e-02L, - 2.85641979882534783223403715930946138e-02L, - -2.69824879726738568189929461383741323e-02L, - 2.54194698498808542954187110873675769e-02L, - -2.35083879708189059926183138130183215e-02L, - 2.04832358998165364349957325067131428e-02L, - -1.54489555488544397858507248612362957e-02L, - 8.64492360989278761493037861575248038e-03L, - -2.58521121597609872727919154569765469e-03L, + 3.33333333333333333333333333333333125e-01L, -1.99999999999999999999999999999180430e-01L, + 1.42857142857142857142857142125269827e-01L, -1.11111111111111111111110834490810169e-01L, + 9.09090909090909090908522355708623681e-02L, -7.69230769230769230696553844935357021e-02L, + 6.66666666666666660390096773046256096e-02L, -5.88235294117646671706582985209643694e-02L, + 5.26315789473666478515847092020327506e-02L, -4.76190476189855517021024424991436144e-02L, + 4.34782608678695085948531993458097026e-02L, -3.99999999632663469330634215991142368e-02L, + 3.70370363987423702891250829918659723e-02L, -3.44827496515048090726669907612335954e-02L, + 3.22579620681420149871973710852268528e-02L, -3.03020767654269261041647570626778067e-02L, + 2.85641979882534783223403715930946138e-02L, -2.69824879726738568189929461383741323e-02L, + 2.54194698498808542954187110873675769e-02L, -2.35083879708189059926183138130183215e-02L, + 2.04832358998165364349957325067131428e-02L, -1.54489555488544397858507248612362957e-02L, + 8.64492360989278761493037861575248038e-03L, -2.58521121597609872727919154569765469e-03L, }; static long double T_even(long double x) @@ -121,10 +102,7 @@ static long double T_even(long double x) x * (aT[10] + x * (aT[12] + x * (aT[14] + - x * (aT[16] + - x * (aT[18] + - x * (aT[20] + - x * aT[22]))))))))))); + x * (aT[16] + x * (aT[18] + x * (aT[20] + x * aT[22]))))))))))); } static long double T_odd(long double x) @@ -137,10 +115,7 @@ static long double T_odd(long double x) x * (aT[11] + x * (aT[13] + x * (aT[15] + - x * (aT[17] + - x * (aT[19] + - x * (aT[21] + - x * aT[23]))))))))))); + x * (aT[17] + x * (aT[19] + x * (aT[21] + x * aT[23]))))))))))); } #endif @@ -172,7 +147,7 @@ long double atanl(long double x) id = -1; } else { x = fabsl(x); - if (expman < (0x3fff << 8) + 0x30) { /* |x| < 1.1875 */ + if (expman < (0x3fff << 8) + 0x30) { /* |x| < 1.1875 */ if (expman < ((0x3fff - 1) << 8) + 0x60) { /* 7/16 <= |x| < 11/16 */ diff --git a/lib/libm/atomic.h b/lib/libm/atomic.h index 44d659b7..b0a406ea 100644 --- a/lib/libm/atomic.h +++ b/lib/libm/atomic.h @@ -246,8 +246,7 @@ static inline void a_or_64(volatile uint64_t *p, uint64_t v) #endif #ifndef a_cas_p -typedef char a_cas_p_undefined_but_pointer_not_32bit - [-sizeof(char) == 0xffffffff ? 1 : -1]; +typedef char a_cas_p_undefined_but_pointer_not_32bit[-sizeof(char) == 0xffffffff ? 1 : -1]; #define a_cas_p a_cas_p static inline void *a_cas_p(volatile void *p, void *t, void *s) { @@ -281,10 +280,8 @@ static inline int a_ctz_32(uint32_t x) #ifdef a_clz_32 return 31 - a_clz_32(x & -x); #else - static const char debruijn32[32] = { 0, 1, 23, 2, 29, 24, 19, 3, - 30, 27, 25, 11, 20, 8, 4, 13, - 31, 22, 28, 18, 26, 10, 7, 12, - 21, 17, 9, 6, 16, 5, 15, 14 }; + static const char debruijn32[32] = { 0, 1, 23, 2, 29, 24, 19, 3, 30, 27, 25, 11, 20, 8, 4, 13, + 31, 22, 28, 18, 26, 10, 7, 12, 21, 17, 9, 6, 16, 5, 15, 14 }; return debruijn32[(x & -x) * 0x076be629 >> 27]; #endif } @@ -294,12 +291,10 @@ static inline int a_ctz_32(uint32_t x) #define a_ctz_64 a_ctz_64 static inline int a_ctz_64(uint64_t x) { - static const char debruijn64[64] = { - 0, 1, 2, 53, 3, 7, 54, 27, 4, 38, 41, 8, 34, 55, 48, 28, - 62, 5, 39, 46, 44, 42, 22, 9, 24, 35, 59, 56, 49, 18, 29, 11, - 63, 52, 6, 26, 37, 40, 33, 47, 61, 45, 43, 21, 23, 58, 17, 10, - 51, 25, 36, 32, 60, 20, 57, 16, 50, 31, 19, 15, 30, 14, 13, 12 - }; + static const char debruijn64[64] = { 0, 1, 2, 53, 3, 7, 54, 27, 4, 38, 41, 8, 34, 55, 48, 28, + 62, 5, 39, 46, 44, 42, 22, 9, 24, 35, 59, 56, 49, 18, 29, 11, + 63, 52, 6, 26, 37, 40, 33, 47, 61, 45, 43, 21, 23, 58, 17, 10, + 51, 25, 36, 32, 60, 20, 57, 16, 50, 31, 19, 15, 30, 14, 13, 12 }; if (sizeof(long) < 8) { uint32_t y = x; if (!y) { diff --git a/lib/libm/cbrt.c b/lib/libm/cbrt.c index d583b062..2ef082fb 100644 --- a/lib/libm/cbrt.c +++ b/lib/libm/cbrt.c @@ -20,7 +20,7 @@ static const uint32_t B1 = 715094163, /* B1 = (1023-1023/3-0.03306235651)*2**20 */ - B2 = 696219795; /* B2 = (1023-1023/3-54/3-0.03306235651)*2**20 */ + B2 = 696219795; /* B2 = (1023-1023/3-54/3-0.03306235651)*2**20 */ /* |1/cbrt(x) - p(x)| < 2**-23.5 (~[-7.93e-8, 7.929e-8]). */ static const double P0 = 1.87595182427177009643, /* 0x3ffe03e6, 0x0f61e692 */ diff --git a/lib/libm/cbrtf.c b/lib/libm/cbrtf.c index f35aae33..ec32a5b1 100644 --- a/lib/libm/cbrtf.c +++ b/lib/libm/cbrtf.c @@ -22,7 +22,7 @@ static const unsigned B1 = 709958130, /* B1 = (127-127.0/3-0.03306235651)*2**23 */ - B2 = 642849266; /* B2 = (127-127.0/3-24/3-0.03306235651)*2**23 */ + B2 = 642849266; /* B2 = (127-127.0/3-24/3-0.03306235651)*2**23 */ float cbrtf(float x) { diff --git a/lib/libm/csinhl.c b/lib/libm/csinhl.c index a8a2e4f3..3bede995 100644 --- a/lib/libm/csinhl.c +++ b/lib/libm/csinhl.c @@ -8,6 +8,5 @@ long double complex csinhl(long double complex z) x = creall(z); y = cimagl(z); - return sinhl(x) * cosl(y) + - (coshl(x) * sinl(y)) * (long double complex)I; + return sinhl(x) * cosl(y) + (coshl(x) * sinl(y)) * (long double complex)I; } diff --git a/lib/libm/csinl.c b/lib/libm/csinl.c index 9793d4ad..245d609f 100644 --- a/lib/libm/csinl.c +++ b/lib/libm/csinl.c @@ -7,6 +7,5 @@ long double complex csinl(long double complex z) { long double ch, sh; cchshl(cimagl(z), &ch, &sh); - return sinl(creall(z)) * ch + - (cosl(creall(z)) * sh) * (long double complex)I; + return sinl(creall(z)) * ch + (cosl(creall(z)) * sh) * (long double complex)I; } diff --git a/lib/libm/ctan.c b/lib/libm/ctan.c index b06e60a6..8be23bb7 100644 --- a/lib/libm/ctan.c +++ b/lib/libm/ctan.c @@ -51,6 +51,5 @@ double complex ctan(double complex z) return HUGE_VAL + HUGE_VAL * (double complex)I; } - return sin(2.0 * creal(z)) / d + - (sinh(2.0 * cimag(z)) / d) * (double complex)I; + return sin(2.0 * creal(z)) / d + (sinh(2.0 * cimag(z)) / d) * (double complex)I; } diff --git a/lib/libm/ctanhl.c b/lib/libm/ctanhl.c index 1c9b9b81..2aa2323d 100644 --- a/lib/libm/ctanhl.c +++ b/lib/libm/ctanhl.c @@ -9,6 +9,5 @@ long double complex ctanhl(long double complex z) y = cimagl(z); d = coshl(2.0L * x) + cosl(2.0L * y); - return sinhl(2.0L * x) / d + - (sinl(2.0L * y) / d) * (long double complex)I; + return sinhl(2.0L * x) / d + (sinl(2.0L * y) / d) * (long double complex)I; } diff --git a/lib/libm/ctanl.c b/lib/libm/ctanl.c index 65a9c2a5..1402d52e 100644 --- a/lib/libm/ctanl.c +++ b/lib/libm/ctanl.c @@ -15,6 +15,5 @@ long double complex ctanl(long double complex z) return HUGE_VALL + HUGE_VALL * (long double complex)I; } - return sinl(2.0L * creall(z)) / d + - (sinhl(2.0L * cimagl(z)) / d) * (long double complex)I; + return sinl(2.0L * creall(z)) / d + (sinhl(2.0L * cimagl(z)) / d) * (long double complex)I; } diff --git a/lib/libm/erf.c b/lib/libm/erf.c index e95fb98c..25980189 100644 --- a/lib/libm/erf.c +++ b/lib/libm/erf.c @@ -182,10 +182,8 @@ static double erfc1(double x) double_t s, P, Q; s = fabs(x) - 1; - P = pa0 + - s * (pa1 + s * (pa2 + s * (pa3 + s * (pa4 + s * (pa5 + s * pa6))))); - Q = 1 + - s * (qa1 + s * (qa2 + s * (qa3 + s * (qa4 + s * (qa5 + s * qa6))))); + P = pa0 + s * (pa1 + s * (pa2 + s * (pa3 + s * (pa4 + s * (pa5 + s * pa6))))); + Q = 1 + s * (qa1 + s * (qa2 + s * (qa3 + s * (qa4 + s * (qa5 + s * qa6))))); return 1 - erx - P / Q; } @@ -200,31 +198,11 @@ static double erfc2(uint32_t ix, double x) x = fabs(x); s = 1 / (x * x); if (ix < 0x4006db6d) { /* |x| < 1/.35 ~ 2.85714 */ - R = ra0 + - s * (ra1 + - s * (ra2 + - s * (ra3 + - s * (ra4 + - s * (ra5 + s * (ra6 + s * ra7)))))); - S = 1.0 + - s * (sa1 + - s * (sa2 + - s * (sa3 + - s * (sa4 + - s * (sa5 + - s * (sa6 + - s * (sa7 + s * sa8))))))); + R = ra0 + s * (ra1 + s * (ra2 + s * (ra3 + s * (ra4 + s * (ra5 + s * (ra6 + s * ra7)))))); + S = 1.0 + s * (sa1 + s * (sa2 + s * (sa3 + s * (sa4 + s * (sa5 + s * (sa6 + s * (sa7 + s * sa8))))))); } else { /* |x| > 1/.35 */ - R = rb0 + - s * (rb1 + - s * (rb2 + - s * (rb3 + s * (rb4 + s * (rb5 + s * rb6))))); - S = 1.0 + - s * (sb1 + - s * (sb2 + - s * (sb3 + - s * (sb4 + - s * (sb5 + s * (sb6 + s * sb7)))))); + R = rb0 + s * (rb1 + s * (rb2 + s * (rb3 + s * (rb4 + s * (rb5 + s * rb6))))); + S = 1.0 + s * (sb1 + s * (sb2 + s * (sb3 + s * (sb4 + s * (sb5 + s * (sb6 + s * sb7)))))); } z = x; SET_LOW_WORD(z, 0); @@ -251,8 +229,7 @@ double erf(double x) } z = x * x; r = pp0 + z * (pp1 + z * (pp2 + z * (pp3 + z * pp4))); - s = 1.0 + - z * (qq1 + z * (qq2 + z * (qq3 + z * (qq4 + z * qq5)))); + s = 1.0 + z * (qq1 + z * (qq2 + z * (qq3 + z * (qq4 + z * qq5)))); y = r / s; return x + x * y; } @@ -281,8 +258,7 @@ double erfc(double x) return 1.0 - x; z = x * x; r = pp0 + z * (pp1 + z * (pp2 + z * (pp3 + z * pp4))); - s = 1.0 + - z * (qq1 + z * (qq2 + z * (qq3 + z * (qq4 + z * qq5)))); + s = 1.0 + z * (qq1 + z * (qq2 + z * (qq3 + z * (qq4 + z * qq5)))); y = r / s; if (sign || ix < 0x3fd00000) { /* x < 1/4 */ return 1.0 - (x + x * y); diff --git a/lib/libm/erff.c b/lib/libm/erff.c index 2bf5d39e..dde5dc64 100644 --- a/lib/libm/erff.c +++ b/lib/libm/erff.c @@ -91,10 +91,8 @@ static float erfc1(float x) float_t s, P, Q; s = fabsf(x) - 1; - P = pa0 + - s * (pa1 + s * (pa2 + s * (pa3 + s * (pa4 + s * (pa5 + s * pa6))))); - Q = 1 + - s * (qa1 + s * (qa2 + s * (qa3 + s * (qa4 + s * (qa5 + s * qa6))))); + P = pa0 + s * (pa1 + s * (pa2 + s * (pa3 + s * (pa4 + s * (pa5 + s * pa6))))); + Q = 1 + s * (qa1 + s * (qa2 + s * (qa3 + s * (qa4 + s * (qa5 + s * qa6))))); return 1 - erx - P / Q; } @@ -109,31 +107,11 @@ static float erfc2(uint32_t ix, float x) x = fabsf(x); s = 1 / (x * x); if (ix < 0x4036db6d) { /* |x| < 1/0.35 */ - R = ra0 + - s * (ra1 + - s * (ra2 + - s * (ra3 + - s * (ra4 + - s * (ra5 + s * (ra6 + s * ra7)))))); - S = 1.0f + - s * (sa1 + - s * (sa2 + - s * (sa3 + - s * (sa4 + - s * (sa5 + - s * (sa6 + - s * (sa7 + s * sa8))))))); + R = ra0 + s * (ra1 + s * (ra2 + s * (ra3 + s * (ra4 + s * (ra5 + s * (ra6 + s * ra7)))))); + S = 1.0f + s * (sa1 + s * (sa2 + s * (sa3 + s * (sa4 + s * (sa5 + s * (sa6 + s * (sa7 + s * sa8))))))); } else { /* |x| >= 1/0.35 */ - R = rb0 + - s * (rb1 + - s * (rb2 + - s * (rb3 + s * (rb4 + s * (rb5 + s * rb6))))); - S = 1.0f + - s * (sb1 + - s * (sb2 + - s * (sb3 + - s * (sb4 + - s * (sb5 + s * (sb6 + s * sb7)))))); + R = rb0 + s * (rb1 + s * (rb2 + s * (rb3 + s * (rb4 + s * (rb5 + s * rb6))))); + S = 1.0f + s * (sb1 + s * (sb2 + s * (sb3 + s * (sb4 + s * (sb5 + s * (sb6 + s * sb7)))))); } GET_FLOAT_WORD(ix, x); SET_FLOAT_WORD(z, ix & 0xffffe000); @@ -190,8 +168,7 @@ float erfcf(float x) return 1.0f - x; z = x * x; r = pp0 + z * (pp1 + z * (pp2 + z * (pp3 + z * pp4))); - s = 1.0f + - z * (qq1 + z * (qq2 + z * (qq3 + z * (qq4 + z * qq5)))); + s = 1.0f + z * (qq1 + z * (qq2 + z * (qq3 + z * (qq4 + z * qq5)))); y = r / s; if (sign || ix < 0x3e800000) /* x < 1/4 */ return 1.0f - (x + x * y); diff --git a/lib/libm/erfl.c b/lib/libm/erfl.c index bb571734..143f6035 100644 --- a/lib/libm/erfl.c +++ b/lib/libm/erfl.c @@ -247,17 +247,8 @@ static long double erfc1(long double x) long double s, P, Q; s = fabsl(x) - 1; - P = pa[0] + - s * (pa[1] + - s * (pa[2] + - s * (pa[3] + - s * (pa[4] + - s * (pa[5] + s * (pa[6] + s * pa[7])))))); - Q = qa[0] + - s * (qa[1] + - s * (qa[2] + - s * (qa[3] + - s * (qa[4] + s * (qa[5] + s * (qa[6] + s)))))); + P = pa[0] + s * (pa[1] + s * (pa[2] + s * (pa[3] + s * (pa[4] + s * (pa[5] + s * (pa[6] + s * pa[7])))))); + Q = qa[0] + s * (qa[1] + s * (qa[2] + s * (qa[3] + s * (qa[4] + s * (qa[5] + s * (qa[6] + s)))))); return 1 - erx - P / Q; } @@ -274,41 +265,18 @@ static long double erfc2(uint32_t ix, long double x) if (ix < 0x4000b6db) { /* 1.25 <= |x| < 2.857 ~ 1/.35 */ R = ra[0] + s * (ra[1] + - s * (ra[2] + - s * (ra[3] + - s * (ra[4] + - s * (ra[5] + - s * (ra[6] + - s * (ra[7] + s * ra[8]))))))); + s * (ra[2] + s * (ra[3] + s * (ra[4] + s * (ra[5] + s * (ra[6] + s * (ra[7] + s * ra[8]))))))); S = sa[0] + s * (sa[1] + s * (sa[2] + - s * (sa[3] + - s * (sa[4] + - s * (sa[5] + - s * (sa[6] + - s * (sa[7] + - s * (sa[8] + s)))))))); + s * (sa[3] + s * (sa[4] + s * (sa[5] + s * (sa[6] + s * (sa[7] + s * (sa[8] + s)))))))); } else if (ix < 0x4001d555) { /* 2.857 <= |x| < 6.6666259765625 */ R = rb[0] + - s * (rb[1] + - s * (rb[2] + - s * (rb[3] + - s * (rb[4] + - s * (rb[5] + - s * (rb[6] + s * rb[7])))))); - S = sb[0] + - s * (sb[1] + - s * (sb[2] + - s * (sb[3] + - s * (sb[4] + - s * (sb[5] + s * (sb[6] + s)))))); + s * (rb[1] + s * (rb[2] + s * (rb[3] + s * (rb[4] + s * (rb[5] + s * (rb[6] + s * rb[7])))))); + S = sb[0] + s * (sb[1] + s * (sb[2] + s * (sb[3] + s * (sb[4] + s * (sb[5] + s * (sb[6] + s)))))); } else { /* 6.666 <= |x| < 107 (erfc only) */ - R = rc[0] + - s * (rc[1] + - s * (rc[2] + s * (rc[3] + s * (rc[4] + s * rc[5])))); - S = sc[0] + - s * (sc[1] + s * (sc[2] + s * (sc[3] + s * (sc[4] + s)))); + R = rc[0] + s * (rc[1] + s * (rc[2] + s * (rc[3] + s * (rc[4] + s * rc[5])))); + S = sc[0] + s * (sc[1] + s * (sc[2] + s * (sc[3] + s * (sc[4] + s)))); } u.f = x; u.i.m &= -1ULL << 40; @@ -331,13 +299,8 @@ long double erfl(long double x) return 0.125 * (8 * x + efx8 * x); /* avoid underflow */ } z = x * x; - r = pp[0] + - z * (pp[1] + - z * (pp[2] + z * (pp[3] + z * (pp[4] + z * pp[5])))); - s = qq[0] + - z * (qq[1] + - z * (qq[2] + - z * (qq[3] + z * (qq[4] + z * (qq[5] + z))))); + r = pp[0] + z * (pp[1] + z * (pp[2] + z * (pp[3] + z * (pp[4] + z * pp[5])))); + s = qq[0] + z * (qq[1] + z * (qq[2] + z * (qq[3] + z * (qq[4] + z * (qq[5] + z))))); y = r / s; return x + x * y; } @@ -362,13 +325,8 @@ long double erfcl(long double x) if (ix < 0x3fbe0000) /* |x| < 2**-65 */ return 1.0 - x; z = x * x; - r = pp[0] + - z * (pp[1] + - z * (pp[2] + z * (pp[3] + z * (pp[4] + z * pp[5])))); - s = qq[0] + - z * (qq[1] + - z * (qq[2] + - z * (qq[3] + z * (qq[4] + z * (qq[5] + z))))); + r = pp[0] + z * (pp[1] + z * (pp[2] + z * (pp[3] + z * (pp[4] + z * pp[5])))); + s = qq[0] + z * (qq[1] + z * (qq[2] + z * (qq[3] + z * (qq[4] + z * (qq[5] + z))))); y = r / s; if (ix < 0x3ffd8000) /* x < 1/4 */ return 1.0 - (x + x * y); diff --git a/lib/libm/exp.c b/lib/libm/exp.c index 088a0cbb..21619f6d 100644 --- a/lib/libm/exp.c +++ b/lib/libm/exp.c @@ -79,8 +79,7 @@ double exp(double x) double_t kd, z, r, r2, scale, tail, tmp; abstop = top12(x) & 0x7ff; - if (predict_false(abstop - top12(0x1p-54) >= - top12(512.0) - top12(0x1p-54))) { + if (predict_false(abstop - top12(0x1p-54) >= top12(512.0) - top12(0x1p-54))) { if (abstop - top12(0x1p-54) >= 0x80000000) /* Avoid spurious underflow for tiny x. */ /* Note: 0 is common input. */ diff --git a/lib/libm/exp10.c b/lib/libm/exp10.c index deed9dcb..06130c80 100644 --- a/lib/libm/exp10.c +++ b/lib/libm/exp10.c @@ -6,12 +6,9 @@ double exp10(double x) { - static const double p10[] = { 1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, - 1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, - 1e-3, 1e-2, 1e-1, 1, 1e1, 1e2, - 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, - 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, - 1e15 }; + static const double p10[] = { 1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9, 1e-8, 1e-7, 1e-6, 1e-5, + 1e-4, 1e-3, 1e-2, 1e-1, 1, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, + 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15 }; double n, y = modf(x, &n); union { double f; diff --git a/lib/libm/exp10f.c b/lib/libm/exp10f.c index a9cde41d..d4e322b4 100644 --- a/lib/libm/exp10f.c +++ b/lib/libm/exp10f.c @@ -6,9 +6,8 @@ float exp10f(float x) { - static const float p10[] = { 1e-7f, 1e-6f, 1e-5f, 1e-4f, 1e-3f, - 1e-2f, 1e-1f, 1, 1e1, 1e2, - 1e3, 1e4, 1e5, 1e6, 1e7 }; + static const float p10[] = { 1e-7f, 1e-6f, 1e-5f, 1e-4f, 1e-3f, 1e-2f, 1e-1f, 1, + 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7 }; float n, y = modff(x, &n); union { float f; diff --git a/lib/libm/exp10l.c b/lib/libm/exp10l.c index f0bf23d9..ba522faf 100644 --- a/lib/libm/exp10l.c +++ b/lib/libm/exp10l.c @@ -12,12 +12,10 @@ long double exp10l(long double x) #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 long double exp10l(long double x) { - static const long double p10[] = { - 1e-15L, 1e-14L, 1e-13L, 1e-12L, 1e-11L, 1e-10L, 1e-9L, 1e-8L, - 1e-7L, 1e-6L, 1e-5L, 1e-4L, 1e-3L, 1e-2L, 1e-1L, 1, - 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, - 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15 - }; + static const long double p10[] = { 1e-15L, 1e-14L, 1e-13L, 1e-12L, 1e-11L, 1e-10L, 1e-9L, 1e-8L, + 1e-7L, 1e-6L, 1e-5L, 1e-4L, 1e-3L, 1e-2L, 1e-1L, 1, + 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, + 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15 }; long double n, y = modfl(x, &n); union ldshape u = { n }; /* fabsl(n) < 16 without raising invalid on nan */ diff --git a/lib/libm/exp2.c b/lib/libm/exp2.c index b94232fa..57acec22 100644 --- a/lib/libm/exp2.c +++ b/lib/libm/exp2.c @@ -76,8 +76,7 @@ double exp2(double x) double_t kd, r, r2, scale, tail, tmp; abstop = top12(x) & 0x7ff; - if (predict_false(abstop - top12(0x1p-54) >= - top12(512.0) - top12(0x1p-54))) { + if (predict_false(abstop - top12(0x1p-54) >= top12(512.0) - top12(0x1p-54))) { if (abstop - top12(0x1p-54) >= 0x80000000) /* Avoid spurious underflow for tiny x. */ /* Note: 0 is common input. */ diff --git a/lib/libm/exp2l.c b/lib/libm/exp2l.c index d5899e2d..6c7fa21f 100644 --- a/lib/libm/exp2l.c +++ b/lib/libm/exp2l.c @@ -41,9 +41,8 @@ long double exp2l(long double x) #define TBLBITS 7 #define TBLSIZE (1 << TBLBITS) -static const double redux = 0x1.8p63 / TBLSIZE, P1 = 0x1.62e42fefa39efp-1, - P2 = 0x1.ebfbdff82c58fp-3, P3 = 0x1.c6b08d7049fap-5, - P4 = 0x1.3b2ab6fba4da5p-7, P5 = 0x1.5d8804780a736p-10, +static const double redux = 0x1.8p63 / TBLSIZE, P1 = 0x1.62e42fefa39efp-1, P2 = 0x1.ebfbdff82c58fp-3, + P3 = 0x1.c6b08d7049fap-5, P4 = 0x1.3b2ab6fba4da5p-7, P5 = 0x1.5d8804780a736p-10, P6 = 0x1.430918835e33dp-13; static const double tbl[TBLSIZE * 2] = { @@ -378,10 +377,7 @@ long double exp2l(long double x) long double t_hi = tbl[2 * i0]; long double t_lo = tbl[2 * i0 + 1]; /* XXX This gives > 1 ulp errors outside of FE_TONEAREST mode */ - r = t_lo + - (t_hi + t_lo) * z * - (P1 + z * (P2 + z * (P3 + z * (P4 + z * (P5 + z * P6))))) + - t_hi; + r = t_lo + (t_hi + t_lo) * z * (P1 + z * (P2 + z * (P3 + z * (P4 + z * (P5 + z * P6))))) + t_hi; return scalbnl(r, k.i); } @@ -389,181 +385,100 @@ long double exp2l(long double x) #define TBLBITS 7 #define TBLSIZE (1 << TBLBITS) -static const long double P1 = 0x1.62e42fefa39ef35793c7673007e6p-1L, - P2 = 0x1.ebfbdff82c58ea86f16b06ec9736p-3L, - P3 = 0x1.c6b08d704a0bf8b33a762bad3459p-5L, - P4 = 0x1.3b2ab6fba4e7729ccbbe0b4f3fc2p-7L, - P5 = 0x1.5d87fe78a67311071dee13fd11d9p-10L, - P6 = 0x1.430912f86c7876f4b663b23c5fe5p-13L; +static const long double P1 = 0x1.62e42fefa39ef35793c7673007e6p-1L, P2 = 0x1.ebfbdff82c58ea86f16b06ec9736p-3L, + P3 = 0x1.c6b08d704a0bf8b33a762bad3459p-5L, P4 = 0x1.3b2ab6fba4e7729ccbbe0b4f3fc2p-7L, + P5 = 0x1.5d87fe78a67311071dee13fd11d9p-10L, P6 = 0x1.430912f86c7876f4b663b23c5fe5p-13L; -static const double P7 = 0x1.ffcbfc588b041p-17, P8 = 0x1.62c0223a5c7c7p-20, - P9 = 0x1.b52541ff59713p-24, P10 = 0x1.e4cf56a391e22p-28, - redux = 0x1.8p112 / TBLSIZE; +static const double P7 = 0x1.ffcbfc588b041p-17, P8 = 0x1.62c0223a5c7c7p-20, P9 = 0x1.b52541ff59713p-24, + P10 = 0x1.e4cf56a391e22p-28, redux = 0x1.8p112 / TBLSIZE; static const long double tbl[TBLSIZE] = { - 0x1.6a09e667f3bcc908b2fb1366dfeap-1L, - 0x1.6c012750bdabeed76a99800f4edep-1L, - 0x1.6dfb23c651a2ef220e2cbe1bc0d4p-1L, - 0x1.6ff7df9519483cf87e1b4f3e1e98p-1L, - 0x1.71f75e8ec5f73dd2370f2ef0b148p-1L, - 0x1.73f9a48a58173bd5c9a4e68ab074p-1L, - 0x1.75feb564267c8bf6e9aa33a489a8p-1L, - 0x1.780694fde5d3f619ae02808592a4p-1L, - 0x1.7a11473eb0186d7d51023f6ccb1ap-1L, - 0x1.7c1ed0130c1327c49334459378dep-1L, - 0x1.7e2f336cf4e62105d02ba1579756p-1L, - 0x1.80427543e1a11b60de67649a3842p-1L, - 0x1.82589994cce128acf88afab34928p-1L, - 0x1.8471a4623c7acce52f6b97c6444cp-1L, - 0x1.868d99b4492ec80e41d90ac2556ap-1L, - 0x1.88ac7d98a669966530bcdf2d4cc0p-1L, - 0x1.8ace5422aa0db5ba7c55a192c648p-1L, - 0x1.8cf3216b5448bef2aa1cd161c57ap-1L, - 0x1.8f1ae991577362b982745c72eddap-1L, - 0x1.9145b0b91ffc588a61b469f6b6a0p-1L, - 0x1.93737b0cdc5e4f4501c3f2540ae8p-1L, - 0x1.95a44cbc8520ee9b483695a0e7fep-1L, - 0x1.97d829fde4e4f8b9e920f91e8eb6p-1L, - 0x1.9a0f170ca07b9ba3109b8c467844p-1L, - 0x1.9c49182a3f0901c7c46b071f28dep-1L, - 0x1.9e86319e323231824ca78e64c462p-1L, - 0x1.a0c667b5de564b29ada8b8cabbacp-1L, - 0x1.a309bec4a2d3358c171f770db1f4p-1L, - 0x1.a5503b23e255c8b424491caf88ccp-1L, - 0x1.a799e1330b3586f2dfb2b158f31ep-1L, - 0x1.a9e6b5579fdbf43eb243bdff53a2p-1L, - 0x1.ac36bbfd3f379c0db966a3126988p-1L, - 0x1.ae89f995ad3ad5e8734d17731c80p-1L, - 0x1.b0e07298db66590842acdfc6fb4ep-1L, - 0x1.b33a2b84f15faf6bfd0e7bd941b0p-1L, - 0x1.b59728de559398e3881111648738p-1L, - 0x1.b7f76f2fb5e46eaa7b081ab53ff6p-1L, - 0x1.ba5b030a10649840cb3c6af5b74cp-1L, - 0x1.bcc1e904bc1d2247ba0f45b3d06cp-1L, - 0x1.bf2c25bd71e088408d7025190cd0p-1L, - 0x1.c199bdd85529c2220cb12a0916bap-1L, - 0x1.c40ab5fffd07a6d14df820f17deap-1L, - 0x1.c67f12e57d14b4a2137fd20f2a26p-1L, - 0x1.c8f6d9406e7b511acbc48805c3f6p-1L, - 0x1.cb720dcef90691503cbd1e949d0ap-1L, - 0x1.cdf0b555dc3f9c44f8958fac4f12p-1L, - 0x1.d072d4a07897b8d0f22f21a13792p-1L, - 0x1.d2f87080d89f18ade123989ea50ep-1L, - 0x1.d5818dcfba48725da05aeb66dff8p-1L, - 0x1.d80e316c98397bb84f9d048807a0p-1L, - 0x1.da9e603db3285708c01a5b6d480cp-1L, - 0x1.dd321f301b4604b695de3c0630c0p-1L, - 0x1.dfc97337b9b5eb968cac39ed284cp-1L, - 0x1.e264614f5a128a12761fa17adc74p-1L, - 0x1.e502ee78b3ff6273d130153992d0p-1L, - 0x1.e7a51fbc74c834b548b2832378a4p-1L, - 0x1.ea4afa2a490d9858f73a18f5dab4p-1L, - 0x1.ecf482d8e67f08db0312fb949d50p-1L, - 0x1.efa1bee615a27771fd21a92dabb6p-1L, - 0x1.f252b376bba974e8696fc3638f24p-1L, - 0x1.f50765b6e4540674f84b762861a6p-1L, - 0x1.f7bfdad9cbe138913b4bfe72bd78p-1L, - 0x1.fa7c1819e90d82e90a7e74b26360p-1L, - 0x1.fd3c22b8f71f10975ba4b32bd006p-1L, - 0x1.0000000000000000000000000000p+0L, - 0x1.0163da9fb33356d84a66ae336e98p+0L, - 0x1.02c9a3e778060ee6f7caca4f7a18p+0L, - 0x1.04315e86e7f84bd738f9a20da442p+0L, - 0x1.059b0d31585743ae7c548eb68c6ap+0L, - 0x1.0706b29ddf6ddc6dc403a9d87b1ep+0L, - 0x1.0874518759bc808c35f25d942856p+0L, - 0x1.09e3ecac6f3834521e060c584d5cp+0L, - 0x1.0b5586cf9890f6298b92b7184200p+0L, - 0x1.0cc922b7247f7407b705b893dbdep+0L, - 0x1.0e3ec32d3d1a2020742e4f8af794p+0L, - 0x1.0fb66affed31af232091dd8a169ep+0L, - 0x1.11301d0125b50a4ebbf1aed9321cp+0L, - 0x1.12abdc06c31cbfb92bad324d6f84p+0L, - 0x1.1429aaea92ddfb34101943b2588ep+0L, - 0x1.15a98c8a58e512480d573dd562aep+0L, - 0x1.172b83c7d517adcdf7c8c50eb162p+0L, - 0x1.18af9388c8de9bbbf70b9a3c269cp+0L, - 0x1.1a35beb6fcb753cb698f692d2038p+0L, - 0x1.1bbe084045cd39ab1e72b442810ep+0L, - 0x1.1d4873168b9aa7805b8028990be8p+0L, - 0x1.1ed5022fcd91cb8819ff61121fbep+0L, - 0x1.2063b88628cd63b8eeb0295093f6p+0L, - 0x1.21f49917ddc962552fd29294bc20p+0L, - 0x1.2387a6e75623866c1fadb1c159c0p+0L, - 0x1.251ce4fb2a63f3582ab7de9e9562p+0L, - 0x1.26b4565e27cdd257a673281d3068p+0L, - 0x1.284dfe1f5638096cf15cf03c9fa0p+0L, - 0x1.29e9df51fdee12c25d15f5a25022p+0L, - 0x1.2b87fd0dad98ffddea46538fca24p+0L, - 0x1.2d285a6e4030b40091d536d0733ep+0L, - 0x1.2ecafa93e2f5611ca0f45d5239a4p+0L, - 0x1.306fe0a31b7152de8d5a463063bep+0L, - 0x1.32170fc4cd8313539cf1c3009330p+0L, - 0x1.33c08b26416ff4c9c8610d96680ep+0L, - 0x1.356c55f929ff0c94623476373be4p+0L, - 0x1.371a7373aa9caa7145502f45452ap+0L, - 0x1.38cae6d05d86585a9cb0d9bed530p+0L, - 0x1.3a7db34e59ff6ea1bc9299e0a1fep+0L, - 0x1.3c32dc313a8e484001f228b58cf0p+0L, - 0x1.3dea64c12342235b41223e13d7eep+0L, - 0x1.3fa4504ac801ba0bf701aa417b9cp+0L, - 0x1.4160a21f72e29f84325b8f3dbacap+0L, - 0x1.431f5d950a896dc704439410b628p+0L, - 0x1.44e086061892d03136f409df0724p+0L, - 0x1.46a41ed1d005772512f459229f0ap+0L, - 0x1.486a2b5c13cd013c1a3b69062f26p+0L, - 0x1.4a32af0d7d3de672d8bcf46f99b4p+0L, - 0x1.4bfdad5362a271d4397afec42e36p+0L, - 0x1.4dcb299fddd0d63b36ef1a9e19dep+0L, - 0x1.4f9b2769d2ca6ad33d8b69aa0b8cp+0L, - 0x1.516daa2cf6641c112f52c84d6066p+0L, - 0x1.5342b569d4f81df0a83c49d86bf4p+0L, - 0x1.551a4ca5d920ec52ec620243540cp+0L, - 0x1.56f4736b527da66ecb004764e61ep+0L, - 0x1.58d12d497c7fd252bc2b7343d554p+0L, - 0x1.5ab07dd48542958c93015191e9a8p+0L, - 0x1.5c9268a5946b701c4b1b81697ed4p+0L, - 0x1.5e76f15ad21486e9be4c20399d12p+0L, - 0x1.605e1b976dc08b076f592a487066p+0L, - 0x1.6247eb03a5584b1f0fa06fd2d9eap+0L, - 0x1.6434634ccc31fc76f8714c4ee122p+0L, - 0x1.66238825522249127d9e29b92ea2p+0L, - 0x1.68155d44ca973081c57227b9f69ep+0L, + 0x1.6a09e667f3bcc908b2fb1366dfeap-1L, 0x1.6c012750bdabeed76a99800f4edep-1L, + 0x1.6dfb23c651a2ef220e2cbe1bc0d4p-1L, 0x1.6ff7df9519483cf87e1b4f3e1e98p-1L, + 0x1.71f75e8ec5f73dd2370f2ef0b148p-1L, 0x1.73f9a48a58173bd5c9a4e68ab074p-1L, + 0x1.75feb564267c8bf6e9aa33a489a8p-1L, 0x1.780694fde5d3f619ae02808592a4p-1L, + 0x1.7a11473eb0186d7d51023f6ccb1ap-1L, 0x1.7c1ed0130c1327c49334459378dep-1L, + 0x1.7e2f336cf4e62105d02ba1579756p-1L, 0x1.80427543e1a11b60de67649a3842p-1L, + 0x1.82589994cce128acf88afab34928p-1L, 0x1.8471a4623c7acce52f6b97c6444cp-1L, + 0x1.868d99b4492ec80e41d90ac2556ap-1L, 0x1.88ac7d98a669966530bcdf2d4cc0p-1L, + 0x1.8ace5422aa0db5ba7c55a192c648p-1L, 0x1.8cf3216b5448bef2aa1cd161c57ap-1L, + 0x1.8f1ae991577362b982745c72eddap-1L, 0x1.9145b0b91ffc588a61b469f6b6a0p-1L, + 0x1.93737b0cdc5e4f4501c3f2540ae8p-1L, 0x1.95a44cbc8520ee9b483695a0e7fep-1L, + 0x1.97d829fde4e4f8b9e920f91e8eb6p-1L, 0x1.9a0f170ca07b9ba3109b8c467844p-1L, + 0x1.9c49182a3f0901c7c46b071f28dep-1L, 0x1.9e86319e323231824ca78e64c462p-1L, + 0x1.a0c667b5de564b29ada8b8cabbacp-1L, 0x1.a309bec4a2d3358c171f770db1f4p-1L, + 0x1.a5503b23e255c8b424491caf88ccp-1L, 0x1.a799e1330b3586f2dfb2b158f31ep-1L, + 0x1.a9e6b5579fdbf43eb243bdff53a2p-1L, 0x1.ac36bbfd3f379c0db966a3126988p-1L, + 0x1.ae89f995ad3ad5e8734d17731c80p-1L, 0x1.b0e07298db66590842acdfc6fb4ep-1L, + 0x1.b33a2b84f15faf6bfd0e7bd941b0p-1L, 0x1.b59728de559398e3881111648738p-1L, + 0x1.b7f76f2fb5e46eaa7b081ab53ff6p-1L, 0x1.ba5b030a10649840cb3c6af5b74cp-1L, + 0x1.bcc1e904bc1d2247ba0f45b3d06cp-1L, 0x1.bf2c25bd71e088408d7025190cd0p-1L, + 0x1.c199bdd85529c2220cb12a0916bap-1L, 0x1.c40ab5fffd07a6d14df820f17deap-1L, + 0x1.c67f12e57d14b4a2137fd20f2a26p-1L, 0x1.c8f6d9406e7b511acbc48805c3f6p-1L, + 0x1.cb720dcef90691503cbd1e949d0ap-1L, 0x1.cdf0b555dc3f9c44f8958fac4f12p-1L, + 0x1.d072d4a07897b8d0f22f21a13792p-1L, 0x1.d2f87080d89f18ade123989ea50ep-1L, + 0x1.d5818dcfba48725da05aeb66dff8p-1L, 0x1.d80e316c98397bb84f9d048807a0p-1L, + 0x1.da9e603db3285708c01a5b6d480cp-1L, 0x1.dd321f301b4604b695de3c0630c0p-1L, + 0x1.dfc97337b9b5eb968cac39ed284cp-1L, 0x1.e264614f5a128a12761fa17adc74p-1L, + 0x1.e502ee78b3ff6273d130153992d0p-1L, 0x1.e7a51fbc74c834b548b2832378a4p-1L, + 0x1.ea4afa2a490d9858f73a18f5dab4p-1L, 0x1.ecf482d8e67f08db0312fb949d50p-1L, + 0x1.efa1bee615a27771fd21a92dabb6p-1L, 0x1.f252b376bba974e8696fc3638f24p-1L, + 0x1.f50765b6e4540674f84b762861a6p-1L, 0x1.f7bfdad9cbe138913b4bfe72bd78p-1L, + 0x1.fa7c1819e90d82e90a7e74b26360p-1L, 0x1.fd3c22b8f71f10975ba4b32bd006p-1L, + 0x1.0000000000000000000000000000p+0L, 0x1.0163da9fb33356d84a66ae336e98p+0L, + 0x1.02c9a3e778060ee6f7caca4f7a18p+0L, 0x1.04315e86e7f84bd738f9a20da442p+0L, + 0x1.059b0d31585743ae7c548eb68c6ap+0L, 0x1.0706b29ddf6ddc6dc403a9d87b1ep+0L, + 0x1.0874518759bc808c35f25d942856p+0L, 0x1.09e3ecac6f3834521e060c584d5cp+0L, + 0x1.0b5586cf9890f6298b92b7184200p+0L, 0x1.0cc922b7247f7407b705b893dbdep+0L, + 0x1.0e3ec32d3d1a2020742e4f8af794p+0L, 0x1.0fb66affed31af232091dd8a169ep+0L, + 0x1.11301d0125b50a4ebbf1aed9321cp+0L, 0x1.12abdc06c31cbfb92bad324d6f84p+0L, + 0x1.1429aaea92ddfb34101943b2588ep+0L, 0x1.15a98c8a58e512480d573dd562aep+0L, + 0x1.172b83c7d517adcdf7c8c50eb162p+0L, 0x1.18af9388c8de9bbbf70b9a3c269cp+0L, + 0x1.1a35beb6fcb753cb698f692d2038p+0L, 0x1.1bbe084045cd39ab1e72b442810ep+0L, + 0x1.1d4873168b9aa7805b8028990be8p+0L, 0x1.1ed5022fcd91cb8819ff61121fbep+0L, + 0x1.2063b88628cd63b8eeb0295093f6p+0L, 0x1.21f49917ddc962552fd29294bc20p+0L, + 0x1.2387a6e75623866c1fadb1c159c0p+0L, 0x1.251ce4fb2a63f3582ab7de9e9562p+0L, + 0x1.26b4565e27cdd257a673281d3068p+0L, 0x1.284dfe1f5638096cf15cf03c9fa0p+0L, + 0x1.29e9df51fdee12c25d15f5a25022p+0L, 0x1.2b87fd0dad98ffddea46538fca24p+0L, + 0x1.2d285a6e4030b40091d536d0733ep+0L, 0x1.2ecafa93e2f5611ca0f45d5239a4p+0L, + 0x1.306fe0a31b7152de8d5a463063bep+0L, 0x1.32170fc4cd8313539cf1c3009330p+0L, + 0x1.33c08b26416ff4c9c8610d96680ep+0L, 0x1.356c55f929ff0c94623476373be4p+0L, + 0x1.371a7373aa9caa7145502f45452ap+0L, 0x1.38cae6d05d86585a9cb0d9bed530p+0L, + 0x1.3a7db34e59ff6ea1bc9299e0a1fep+0L, 0x1.3c32dc313a8e484001f228b58cf0p+0L, + 0x1.3dea64c12342235b41223e13d7eep+0L, 0x1.3fa4504ac801ba0bf701aa417b9cp+0L, + 0x1.4160a21f72e29f84325b8f3dbacap+0L, 0x1.431f5d950a896dc704439410b628p+0L, + 0x1.44e086061892d03136f409df0724p+0L, 0x1.46a41ed1d005772512f459229f0ap+0L, + 0x1.486a2b5c13cd013c1a3b69062f26p+0L, 0x1.4a32af0d7d3de672d8bcf46f99b4p+0L, + 0x1.4bfdad5362a271d4397afec42e36p+0L, 0x1.4dcb299fddd0d63b36ef1a9e19dep+0L, + 0x1.4f9b2769d2ca6ad33d8b69aa0b8cp+0L, 0x1.516daa2cf6641c112f52c84d6066p+0L, + 0x1.5342b569d4f81df0a83c49d86bf4p+0L, 0x1.551a4ca5d920ec52ec620243540cp+0L, + 0x1.56f4736b527da66ecb004764e61ep+0L, 0x1.58d12d497c7fd252bc2b7343d554p+0L, + 0x1.5ab07dd48542958c93015191e9a8p+0L, 0x1.5c9268a5946b701c4b1b81697ed4p+0L, + 0x1.5e76f15ad21486e9be4c20399d12p+0L, 0x1.605e1b976dc08b076f592a487066p+0L, + 0x1.6247eb03a5584b1f0fa06fd2d9eap+0L, 0x1.6434634ccc31fc76f8714c4ee122p+0L, + 0x1.66238825522249127d9e29b92ea2p+0L, 0x1.68155d44ca973081c57227b9f69ep+0L, }; static const float eps[TBLSIZE] = { - -0x1.5c50p-101, -0x1.5d00p-106, 0x1.8e90p-102, -0x1.5340p-103, - 0x1.1bd0p-102, -0x1.4600p-105, -0x1.7a40p-104, 0x1.d590p-102, - -0x1.d590p-101, 0x1.b100p-103, -0x1.0d80p-105, 0x1.6b00p-103, - -0x1.9f00p-105, 0x1.c400p-103, 0x1.e120p-103, -0x1.c100p-104, - -0x1.9d20p-103, 0x1.a800p-108, 0x1.4c00p-106, -0x1.9500p-106, - 0x1.6900p-105, -0x1.29d0p-100, 0x1.4c60p-103, 0x1.13a0p-102, - -0x1.5b60p-103, -0x1.1c40p-103, 0x1.db80p-102, 0x1.91a0p-102, - 0x1.dc00p-105, 0x1.44c0p-104, 0x1.9710p-102, 0x1.8760p-103, - -0x1.a720p-103, 0x1.ed20p-103, -0x1.49c0p-102, -0x1.e000p-111, - 0x1.86a0p-103, 0x1.2b40p-103, -0x1.b400p-108, 0x1.1280p-99, - -0x1.02d8p-102, -0x1.e3d0p-103, -0x1.b080p-105, -0x1.f100p-107, - -0x1.16c0p-105, -0x1.1190p-103, -0x1.a7d2p-100, 0x1.3450p-103, - -0x1.67c0p-105, 0x1.4b80p-104, -0x1.c4e0p-103, 0x1.6000p-108, - -0x1.3f60p-105, 0x1.93f0p-104, 0x1.5fe0p-105, 0x1.6f80p-107, - -0x1.7600p-106, 0x1.21e0p-106, -0x1.3a40p-106, -0x1.40c0p-104, - -0x1.9860p-105, -0x1.5d40p-108, -0x1.1d70p-106, 0x1.2760p-105, - 0x0.0000p+0, 0x1.21e2p-104, -0x1.9520p-108, -0x1.5720p-106, - -0x1.4810p-106, -0x1.be00p-109, 0x1.0080p-105, -0x1.5780p-108, - -0x1.d460p-105, -0x1.6140p-105, 0x1.4630p-104, 0x1.ad50p-103, - 0x1.82e0p-105, 0x1.1d3cp-101, 0x1.6100p-107, 0x1.ec30p-104, - 0x1.f200p-108, 0x1.0b40p-103, 0x1.3660p-102, 0x1.d9d0p-103, - -0x1.02d0p-102, 0x1.b070p-103, 0x1.b9c0p-104, -0x1.01c0p-103, - -0x1.dfe0p-103, 0x1.1b60p-104, -0x1.ae94p-101, -0x1.3340p-104, - 0x1.b3d8p-102, -0x1.6e40p-105, -0x1.3670p-103, 0x1.c140p-104, - 0x1.1840p-101, 0x1.1ab0p-102, -0x1.a400p-104, 0x1.1f00p-104, - -0x1.7180p-103, 0x1.4ce0p-102, 0x1.9200p-107, -0x1.54c0p-103, - 0x1.1b80p-105, -0x1.1828p-101, 0x1.5720p-102, -0x1.a060p-100, - 0x1.9160p-102, 0x1.a280p-104, 0x1.3400p-107, 0x1.2b20p-102, - 0x1.7800p-108, 0x1.cfd0p-101, 0x1.2ef0p-102, -0x1.2760p-99, - 0x1.b380p-104, 0x1.0048p-101, -0x1.60b0p-102, 0x1.a1ccp-100, - -0x1.a640p-104, -0x1.08a0p-101, 0x1.7e60p-102, 0x1.22c0p-103, - -0x1.7200p-106, 0x1.f0f0p-102, 0x1.eb4ep-99, 0x1.c6e0p-103, + -0x1.5c50p-101, -0x1.5d00p-106, 0x1.8e90p-102, -0x1.5340p-103, 0x1.1bd0p-102, -0x1.4600p-105, -0x1.7a40p-104, + 0x1.d590p-102, -0x1.d590p-101, 0x1.b100p-103, -0x1.0d80p-105, 0x1.6b00p-103, -0x1.9f00p-105, 0x1.c400p-103, + 0x1.e120p-103, -0x1.c100p-104, -0x1.9d20p-103, 0x1.a800p-108, 0x1.4c00p-106, -0x1.9500p-106, 0x1.6900p-105, + -0x1.29d0p-100, 0x1.4c60p-103, 0x1.13a0p-102, -0x1.5b60p-103, -0x1.1c40p-103, 0x1.db80p-102, 0x1.91a0p-102, + 0x1.dc00p-105, 0x1.44c0p-104, 0x1.9710p-102, 0x1.8760p-103, -0x1.a720p-103, 0x1.ed20p-103, -0x1.49c0p-102, + -0x1.e000p-111, 0x1.86a0p-103, 0x1.2b40p-103, -0x1.b400p-108, 0x1.1280p-99, -0x1.02d8p-102, -0x1.e3d0p-103, + -0x1.b080p-105, -0x1.f100p-107, -0x1.16c0p-105, -0x1.1190p-103, -0x1.a7d2p-100, 0x1.3450p-103, -0x1.67c0p-105, + 0x1.4b80p-104, -0x1.c4e0p-103, 0x1.6000p-108, -0x1.3f60p-105, 0x1.93f0p-104, 0x1.5fe0p-105, 0x1.6f80p-107, + -0x1.7600p-106, 0x1.21e0p-106, -0x1.3a40p-106, -0x1.40c0p-104, -0x1.9860p-105, -0x1.5d40p-108, -0x1.1d70p-106, + 0x1.2760p-105, 0x0.0000p+0, 0x1.21e2p-104, -0x1.9520p-108, -0x1.5720p-106, -0x1.4810p-106, -0x1.be00p-109, + 0x1.0080p-105, -0x1.5780p-108, -0x1.d460p-105, -0x1.6140p-105, 0x1.4630p-104, 0x1.ad50p-103, 0x1.82e0p-105, + 0x1.1d3cp-101, 0x1.6100p-107, 0x1.ec30p-104, 0x1.f200p-108, 0x1.0b40p-103, 0x1.3660p-102, 0x1.d9d0p-103, + -0x1.02d0p-102, 0x1.b070p-103, 0x1.b9c0p-104, -0x1.01c0p-103, -0x1.dfe0p-103, 0x1.1b60p-104, -0x1.ae94p-101, + -0x1.3340p-104, 0x1.b3d8p-102, -0x1.6e40p-105, -0x1.3670p-103, 0x1.c140p-104, 0x1.1840p-101, 0x1.1ab0p-102, + -0x1.a400p-104, 0x1.1f00p-104, -0x1.7180p-103, 0x1.4ce0p-102, 0x1.9200p-107, -0x1.54c0p-103, 0x1.1b80p-105, + -0x1.1828p-101, 0x1.5720p-102, -0x1.a060p-100, 0x1.9160p-102, 0x1.a280p-104, 0x1.3400p-107, 0x1.2b20p-102, + 0x1.7800p-108, 0x1.cfd0p-101, 0x1.2ef0p-102, -0x1.2760p-99, 0x1.b380p-104, 0x1.0048p-101, -0x1.60b0p-102, + 0x1.a1ccp-100, -0x1.a640p-104, -0x1.08a0p-101, 0x1.7e60p-102, 0x1.22c0p-103, -0x1.7200p-106, 0x1.f0f0p-102, + 0x1.eb4ep-99, 0x1.c6e0p-103, }; /* @@ -650,15 +565,7 @@ long double exp2l(long double x) r = t + t * z * (P1 + - z * (P2 + - z * (P3 + - z * (P4 + - z * (P5 + - z * (P6 + - z * (P7 + - z * (P8 + - z * (P9 + - z * P10))))))))); + z * (P2 + z * (P3 + z * (P4 + z * (P5 + z * (P6 + z * (P7 + z * (P8 + z * (P9 + z * P10))))))))); return scalbnl(r, k.i); } diff --git a/lib/libm/expl.c b/lib/libm/expl.c index 5499a3f3..222b43ef 100644 --- a/lib/libm/expl.c +++ b/lib/libm/expl.c @@ -88,8 +88,7 @@ static const long double Q[4] = { 2.2726554820815502876593E-1L, 2.0000000000000000000897E0L, }; -static const long double LN2HI = 6.9314575195312500000000E-1L, - LN2LO = 1.4286068203094172321215E-6L, +static const long double LN2HI = 6.9314575195312500000000E-1L, LN2LO = 1.4286068203094172321215E-6L, LOG2E = 1.4426950408889634073599E0L; long double expl(long double x) diff --git a/lib/libm/expm1.c b/lib/libm/expm1.c index c4022188..6411cb2d 100644 --- a/lib/libm/expm1.c +++ b/lib/libm/expm1.c @@ -111,9 +111,9 @@ static const double o_threshold = 7.09782712893383973096e+02, /* 0x40862E42, 0xFEFA39EF */ - ln2_hi = 6.93147180369123816490e-01, /* 0x3fe62e42, 0xfee00000 */ - ln2_lo = 1.90821492927058770002e-10, /* 0x3dea39ef, 0x35793c76 */ - invln2 = 1.44269504088896338700e+00, /* 0x3ff71547, 0x652b82fe */ + ln2_hi = 6.93147180369123816490e-01, /* 0x3fe62e42, 0xfee00000 */ + ln2_lo = 1.90821492927058770002e-10, /* 0x3dea39ef, 0x35793c76 */ + invln2 = 1.44269504088896338700e+00, /* 0x3ff71547, 0x652b82fe */ /* Scaled Q's: Qn_here = 2**n * Qn_above, for R(2*z) where z = hxs = x*x/2: */ Q1 = -3.33333333333331316428e-02, /* BFA11111 111110F4 */ diff --git a/lib/libm/expm1l.c b/lib/libm/expm1l.c index e26e19c5..f779aecf 100644 --- a/lib/libm/expm1l.c +++ b/lib/libm/expm1l.c @@ -72,8 +72,7 @@ static const long double P0 = -1.586135578666346600772998894928250240826E4L, Q4 = -4.002027679107076077238836622982900945173E1L, /* Q5 = 1.000000000000000000000000000000000000000E0 */ /* C1 + C2 = ln 2 */ - C1 = 6.93145751953125E-1L, - C2 = 1.428606820309417232121458176568075500134E-6L, + C1 = 6.93145751953125E-1L, C2 = 1.428606820309417232121458176568075500134E-6L, /* ln 2^-65 */ minarg = -4.5054566736396445112120088E1L, /* ln 2^16384 */ diff --git a/lib/libm/fma.c b/lib/libm/fma.c index 77bc7b3c..4d354020 100644 --- a/lib/libm/fma.c +++ b/lib/libm/fma.c @@ -86,8 +86,7 @@ double fma(double x, double y, double z) d -= 64; if (d == 0) { } else if (d < 64) { - rlo = rhi << (64 - d) | rlo >> d | - !!(rlo << (64 - d)); + rlo = rhi << (64 - d) | rlo >> d | !!(rlo << (64 - d)); rhi = rhi >> d; } else { rlo = 1; @@ -162,16 +161,14 @@ double fma(double x, double y, double z) on arch behaviour which can be imitated by a double to float conversion */ - float fltmin = (float)(0x0.ffffff8p-63) * - FLT_MIN * (float)r; + float fltmin = (float)(0x0.ffffff8p-63) * FLT_MIN * (float)r; return DBL_MIN / FLT_MIN * fltmin; } /* one bit is lost when scaled, add another top bit to only round once at conversion if it is inexact */ if (rhi << 53) { - i = (int64_t)(rhi >> 1 | (rhi & 1) | - 1ull << 62); + i = (int64_t)(rhi >> 1 | (rhi & 1) | 1ull << 62); if (sign) i = -i; r = (double)i; diff --git a/lib/libm/fmaf.c b/lib/libm/fmaf.c index fb7508a3..48b6caa5 100644 --- a/lib/libm/fmaf.c +++ b/lib/libm/fmaf.c @@ -63,8 +63,7 @@ float fmaf(float x, float y, float z) fmaf(0x1p-120f, 0x1p-120f, 0x1p-149f) */ #if defined(FE_INEXACT) && defined(FE_UNDERFLOW) - if (e < 0x3ff - 126 && e >= 0x3ff - 149 && - fetestexcept(FE_INEXACT)) { + if (e < 0x3ff - 126 && e >= 0x3ff - 149 && fetestexcept(FE_INEXACT)) { feclearexcept(FE_INEXACT); /* TODO: gcc and clang bug workaround */ volatile float vz = z; diff --git a/lib/libm/fmal.c b/lib/libm/fmal.c index 11097f0e..0bf3221a 100644 --- a/lib/libm/fmal.c +++ b/lib/libm/fmal.c @@ -101,8 +101,7 @@ static inline long double add_adjusted(long double a, long double b) * that the result will be subnormal, and care is taken to ensure that * double rounding does not occur. */ -static inline long double add_and_denormalize(long double a, long double b, - int scale) +static inline long double add_and_denormalize(long double a, long double b, int scale) { struct dd sum; int bits_lost; diff --git a/lib/libm/j0.c b/lib/libm/j0.c index 52d3f483..b466c1ad 100644 --- a/lib/libm/j0.c +++ b/lib/libm/j0.c @@ -63,7 +63,7 @@ static double pzero(double), qzero(double); static const double invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */ - tpi = 6.36619772367581382433e-01; /* 0x3FE45F30, 0x6DC9C883 */ + tpi = 6.36619772367581382433e-01; /* 0x3FE45F30, 0x6DC9C883 */ /* common method when |x|>=2 */ static double common(uint32_t ix, double x, int y0) @@ -103,13 +103,13 @@ static double common(uint32_t ix, double x, int y0) /* R0/S0 on [0, 2.00] */ static const double R02 = 1.56249999999999947958e-02, /* 0x3F8FFFFF, 0xFFFFFFFD */ - R03 = -1.89979294238854721751e-04, /* 0xBF28E6A5, 0xB61AC6E9 */ - R04 = 1.82954049532700665670e-06, /* 0x3EBEB1D1, 0x0C503919 */ - R05 = -4.61832688532103189199e-09, /* 0xBE33D5E7, 0x73D63FCE */ - S01 = 1.56191029464890010492e-02, /* 0x3F8FFCE8, 0x82C8C2A4 */ - S02 = 1.16926784663337450260e-04, /* 0x3F1EA6D2, 0xDD57DBF4 */ - S03 = 5.13546550207318111446e-07, /* 0x3EA13B54, 0xCE84D5A9 */ - S04 = 1.16614003333790000205e-09; /* 0x3E1408BC, 0xF4745D8F */ + R03 = -1.89979294238854721751e-04, /* 0xBF28E6A5, 0xB61AC6E9 */ + R04 = 1.82954049532700665670e-06, /* 0x3EBEB1D1, 0x0C503919 */ + R05 = -4.61832688532103189199e-09, /* 0xBE33D5E7, 0x73D63FCE */ + S01 = 1.56191029464890010492e-02, /* 0x3F8FFCE8, 0x82C8C2A4 */ + S02 = 1.16926784663337450260e-04, /* 0x3F1EA6D2, 0xDD57DBF4 */ + S03 = 5.13546550207318111446e-07, /* 0x3EA13B54, 0xCE84D5A9 */ + S04 = 1.16614003333790000205e-09; /* 0x3E1408BC, 0xF4745D8F */ double j0(double x) { @@ -148,16 +148,16 @@ double j0(double x) static const double u00 = -7.38042951086872317523e-02, /* 0xBFB2E4D6, 0x99CBD01F */ - u01 = 1.76666452509181115538e-01, /* 0x3FC69D01, 0x9DE9E3FC */ - u02 = -1.38185671945596898896e-02, /* 0xBF8C4CE8, 0xB16CFA97 */ - u03 = 3.47453432093683650238e-04, /* 0x3F36C54D, 0x20B29B6B */ - u04 = -3.81407053724364161125e-06, /* 0xBECFFEA7, 0x73D25CAD */ - u05 = 1.95590137035022920206e-08, /* 0x3E550057, 0x3B4EABD4 */ - u06 = -3.98205194132103398453e-11, /* 0xBDC5E43D, 0x693FB3C8 */ - v01 = 1.27304834834123699328e-02, /* 0x3F8A1270, 0x91C9C71A */ - v02 = 7.60068627350353253702e-05, /* 0x3F13ECBB, 0xF578C6C1 */ - v03 = 2.59150851840457805467e-07, /* 0x3E91642D, 0x7FF202FD */ - v04 = 4.41110311332675467403e-10; /* 0x3DFE5018, 0x3BD6D9EF */ + u01 = 1.76666452509181115538e-01, /* 0x3FC69D01, 0x9DE9E3FC */ + u02 = -1.38185671945596898896e-02, /* 0xBF8C4CE8, 0xB16CFA97 */ + u03 = 3.47453432093683650238e-04, /* 0x3F36C54D, 0x20B29B6B */ + u04 = -3.81407053724364161125e-06, /* 0xBECFFEA7, 0x73D25CAD */ + u05 = 1.95590137035022920206e-08, /* 0x3E550057, 0x3B4EABD4 */ + u06 = -3.98205194132103398453e-11, /* 0xBDC5E43D, 0x693FB3C8 */ + v01 = 1.27304834834123699328e-02, /* 0x3F8A1270, 0x91C9C71A */ + v02 = 7.60068627350353253702e-05, /* 0x3F13ECBB, 0xF578C6C1 */ + v03 = 2.59150851840457805467e-07, /* 0x3E91642D, 0x7FF202FD */ + v04 = 4.41110311332675467403e-10; /* 0x3DFE5018, 0x3BD6D9EF */ double y0(double x) { @@ -183,10 +183,7 @@ double y0(double x) if (ix >= 0x3e400000) { /* x >= 2**-27 */ /* large ulp error near the first zero, x ~= 0.89 */ z = x * x; - u = u00 + - z * (u01 + - z * (u02 + - z * (u03 + z * (u04 + z * (u05 + z * u06))))); + u = u00 + z * (u01 + z * (u02 + z * (u03 + z * (u04 + z * (u05 + z * u06))))); v = 1.0 + z * (v01 + z * (v02 + z * (v03 + z * v04))); return u / v + tpi * (j0(x) * log(x)); } @@ -401,8 +398,6 @@ static double qzero(double x) } z = 1.0 / (x * x); r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5])))); - s = 1.0 + - z * (q[0] + - z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5]))))); + s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5]))))); return (-.125 + r / s) / x; } diff --git a/lib/libm/j0f.c b/lib/libm/j0f.c index 46ffc758..476281a7 100644 --- a/lib/libm/j0f.c +++ b/lib/libm/j0f.c @@ -120,10 +120,7 @@ float y0f(float x) if (ix >= 0x39000000) { /* x >= 2**-13 */ /* large ulp error at x ~= 0.89 */ z = x * x; - u = u00 + - z * (u01 + - z * (u02 + - z * (u03 + z * (u04 + z * (u05 + z * u06))))); + u = u00 + z * (u01 + z * (u02 + z * (u03 + z * (u04 + z * (u05 + z * u06))))); v = 1 + z * (v01 + z * (v02 + z * (v03 + z * v04))); return u / v + tpi * (j0f(x) * logf(x)); } @@ -337,8 +334,6 @@ static float qzerof(float x) } z = 1.0f / (x * x); r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5])))); - s = 1.0f + - z * (q[0] + - z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5]))))); + s = 1.0f + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5]))))); return (-.125f + r / s) / x; } diff --git a/lib/libm/j1.c b/lib/libm/j1.c index 839160c4..211c78bf 100644 --- a/lib/libm/j1.c +++ b/lib/libm/j1.c @@ -63,7 +63,7 @@ static double pone(double), qone(double); static const double invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */ - tpi = 6.36619772367581382433e-01; /* 0x3FE45F30, 0x6DC9C883 */ + tpi = 6.36619772367581382433e-01; /* 0x3FE45F30, 0x6DC9C883 */ static double common(uint32_t ix, double x, int y1, int sign) { @@ -104,14 +104,14 @@ static double common(uint32_t ix, double x, int y1, int sign) /* R0/S0 on [0,2] */ static const double r00 = -6.25000000000000000000e-02, /* 0xBFB00000, 0x00000000 */ - r01 = 1.40705666955189706048e-03, /* 0x3F570D9F, 0x98472C61 */ - r02 = -1.59955631084035597520e-05, /* 0xBEF0C5C6, 0xBA169668 */ - r03 = 4.96727999609584448412e-08, /* 0x3E6AAAFA, 0x46CA0BD9 */ - s01 = 1.91537599538363460805e-02, /* 0x3F939D0B, 0x12637E53 */ - s02 = 1.85946785588630915560e-04, /* 0x3F285F56, 0xB9CDF664 */ - s03 = 1.17718464042623683263e-06, /* 0x3EB3BFF8, 0x333F8498 */ - s04 = 5.04636257076217042715e-09, /* 0x3E35AC88, 0xC97DFF2C */ - s05 = 1.23542274426137913908e-11; /* 0x3DAB2ACF, 0xCFB97ED8 */ + r01 = 1.40705666955189706048e-03, /* 0x3F570D9F, 0x98472C61 */ + r02 = -1.59955631084035597520e-05, /* 0xBEF0C5C6, 0xBA169668 */ + r03 = 4.96727999609584448412e-08, /* 0x3E6AAAFA, 0x46CA0BD9 */ + s01 = 1.91537599538363460805e-02, /* 0x3F939D0B, 0x12637E53 */ + s02 = 1.85946785588630915560e-04, /* 0x3F285F56, 0xB9CDF664 */ + s03 = 1.17718464042623683263e-06, /* 0x3EB3BFF8, 0x333F8498 */ + s04 = 5.04636257076217042715e-09, /* 0x3E35AC88, 0xC97DFF2C */ + s05 = 1.23542274426137913908e-11; /* 0x3DAB2ACF, 0xCFB97ED8 */ double j1(double x) { @@ -172,8 +172,7 @@ double y1(double x) return -tpi / x; z = x * x; u = U0[0] + z * (U0[1] + z * (U0[2] + z * (U0[3] + z * U0[4]))); - v = 1 + - z * (V0[0] + z * (V0[1] + z * (V0[2] + z * (V0[3] + z * V0[4])))); + v = 1 + z * (V0[0] + z * (V0[1] + z * (V0[2] + z * (V0[3] + z * V0[4])))); return x * (u / v) + tpi * (j1(x) * log(x) - 1 / x); } @@ -385,8 +384,6 @@ static double qone(double x) } z = 1.0 / (x * x); r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5])))); - s = 1.0 + - z * (q[0] + - z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5]))))); + s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5]))))); return (.375 + r / s) / x; } diff --git a/lib/libm/j1f.c b/lib/libm/j1f.c index 6415ae14..b1bb6226 100644 --- a/lib/libm/j1f.c +++ b/lib/libm/j1f.c @@ -118,8 +118,7 @@ float y1f(float x) return -tpi / x; z = x * x; u = U0[0] + z * (U0[1] + z * (U0[2] + z * (U0[3] + z * U0[4]))); - v = 1.0f + - z * (V0[0] + z * (V0[1] + z * (V0[2] + z * (V0[3] + z * V0[4])))); + v = 1.0f + z * (V0[0] + z * (V0[1] + z * (V0[2] + z * (V0[3] + z * V0[4])))); return x * (u / v) + tpi * (j1f(x) * logf(x) - 1.0f / x); } @@ -331,8 +330,6 @@ static float qonef(float x) } z = 1.0f / (x * x); r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5])))); - s = 1.0f + - z * (q[0] + - z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5]))))); + s = 1.0f + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5]))))); return (.375f + r / s) / x; } diff --git a/lib/libm/lgamma_r.c b/lib/libm/lgamma_r.c index d3f901ae..a6345f11 100644 --- a/lib/libm/lgamma_r.c +++ b/lib/libm/lgamma_r.c @@ -85,20 +85,20 @@ static const double pi = 3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */ - a0 = 7.72156649015328655494e-02, /* 0x3FB3C467, 0xE37DB0C8 */ - a1 = 3.22467033424113591611e-01, /* 0x3FD4A34C, 0xC4A60FAD */ - a2 = 6.73523010531292681824e-02, /* 0x3FB13E00, 0x1A5562A7 */ - a3 = 2.05808084325167332806e-02, /* 0x3F951322, 0xAC92547B */ - a4 = 7.38555086081402883957e-03, /* 0x3F7E404F, 0xB68FEFE8 */ - a5 = 2.89051383673415629091e-03, /* 0x3F67ADD8, 0xCCB7926B */ - a6 = 1.19270763183362067845e-03, /* 0x3F538A94, 0x116F3F5D */ - a7 = 5.10069792153511336608e-04, /* 0x3F40B6C6, 0x89B99C00 */ - a8 = 2.20862790713908385557e-04, /* 0x3F2CF2EC, 0xED10E54D */ - a9 = 1.08011567247583939954e-04, /* 0x3F1C5088, 0x987DFB07 */ - a10 = 2.52144565451257326939e-05, /* 0x3EFA7074, 0x428CFA52 */ - a11 = 4.48640949618915160150e-05, /* 0x3F07858E, 0x90A45837 */ - tc = 1.46163214496836224576e+00, /* 0x3FF762D8, 0x6356BE3F */ - tf = -1.21486290535849611461e-01, /* 0xBFBF19B9, 0xBCC38A42 */ + a0 = 7.72156649015328655494e-02, /* 0x3FB3C467, 0xE37DB0C8 */ + a1 = 3.22467033424113591611e-01, /* 0x3FD4A34C, 0xC4A60FAD */ + a2 = 6.73523010531292681824e-02, /* 0x3FB13E00, 0x1A5562A7 */ + a3 = 2.05808084325167332806e-02, /* 0x3F951322, 0xAC92547B */ + a4 = 7.38555086081402883957e-03, /* 0x3F7E404F, 0xB68FEFE8 */ + a5 = 2.89051383673415629091e-03, /* 0x3F67ADD8, 0xCCB7926B */ + a6 = 1.19270763183362067845e-03, /* 0x3F538A94, 0x116F3F5D */ + a7 = 5.10069792153511336608e-04, /* 0x3F40B6C6, 0x89B99C00 */ + a8 = 2.20862790713908385557e-04, /* 0x3F2CF2EC, 0xED10E54D */ + a9 = 1.08011567247583939954e-04, /* 0x3F1C5088, 0x987DFB07 */ + a10 = 2.52144565451257326939e-05, /* 0x3EFA7074, 0x428CFA52 */ + a11 = 4.48640949618915160150e-05, /* 0x3F07858E, 0x90A45837 */ + tc = 1.46163214496836224576e+00, /* 0x3FF762D8, 0x6356BE3F */ + tf = -1.21486290535849611461e-01, /* 0xBFBF19B9, 0xBCC38A42 */ /* tt = -(tail of tf) */ tt = -3.63867699703950536541e-18, /* 0xBC50C7CA, 0xA48A971F */ t0 = 4.83836122723810047042e-01, /* 0x3FDEF72B, 0xC8EE38A2 */ @@ -242,48 +242,32 @@ double __lgamma_r(double x, int *signgamp) switch (i) { case 0: z = y * y; - p1 = a0 + - z * (a2 + - z * (a4 + z * (a6 + z * (a8 + z * a10)))); - p2 = z * - (a1 + - z * (a3 + - z * (a5 + z * (a7 + z * (a9 + z * a11))))); + p1 = a0 + z * (a2 + z * (a4 + z * (a6 + z * (a8 + z * a10)))); + p2 = z * (a1 + z * (a3 + z * (a5 + z * (a7 + z * (a9 + z * a11))))); p = y * p1 + p2; r += (p - 0.5 * y); break; case 1: z = y * y; w = z * y; - p1 = t0 + - w * (t3 + - w * (t6 + w * (t9 + w * t12))); /* parallel - comp - */ + p1 = t0 + w * (t3 + w * (t6 + w * (t9 + w * t12))); /* parallel + comp + */ p2 = t1 + w * (t4 + w * (t7 + w * (t10 + w * t13))); p3 = t2 + w * (t5 + w * (t8 + w * (t11 + w * t14))); p = z * p1 - (tt - w * (p2 + y * p3)); r += tf + p; break; case 2: - p1 = y * - (u0 + - y * (u1 + - y * (u2 + y * (u3 + y * (u4 + y * u5))))); - p2 = 1.0 + - y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * v5)))); + p1 = y * (u0 + y * (u1 + y * (u2 + y * (u3 + y * (u4 + y * u5))))); + p2 = 1.0 + y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * v5)))); r += -0.5 * y + p1 / p2; } } else if (ix < 0x40200000) { /* x < 8.0 */ i = (int)x; y = x - (double)i; - p = y * - (s0 + - y * (s1 + - y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6)))))); - q = 1.0 + - y * (r1 + - y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * r6))))); + p = y * (s0 + y * (s1 + y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6)))))); + q = 1.0 + y * (r1 + y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * r6))))); r = 0.5 * y + p / q; z = 1.0; /* lgamma(1+s) = log(s) + lgamma(s) */ switch (i) { @@ -304,9 +288,7 @@ double __lgamma_r(double x, int *signgamp) t = log(x); z = 1.0 / x; y = z * z; - w = w0 + - z * (w1 + - y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * w6))))); + w = w0 + z * (w1 + y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * w6))))); r = (x - 0.5) * (t - 1.0) + w; } else /* 2**58 <= x <= inf */ r = x * (log(x) - 1.0); diff --git a/lib/libm/lgammaf_r.c b/lib/libm/lgammaf_r.c index 7cb25578..4db28bf4 100644 --- a/lib/libm/lgammaf_r.c +++ b/lib/libm/lgammaf_r.c @@ -176,48 +176,32 @@ float __lgammaf_r(float x, int *signgamp) switch (i) { case 0: z = y * y; - p1 = a0 + - z * (a2 + - z * (a4 + z * (a6 + z * (a8 + z * a10)))); - p2 = z * - (a1 + - z * (a3 + - z * (a5 + z * (a7 + z * (a9 + z * a11))))); + p1 = a0 + z * (a2 + z * (a4 + z * (a6 + z * (a8 + z * a10)))); + p2 = z * (a1 + z * (a3 + z * (a5 + z * (a7 + z * (a9 + z * a11))))); p = y * p1 + p2; r += p - 0.5f * y; break; case 1: z = y * y; w = z * y; - p1 = t0 + - w * (t3 + - w * (t6 + w * (t9 + w * t12))); /* parallel - comp - */ + p1 = t0 + w * (t3 + w * (t6 + w * (t9 + w * t12))); /* parallel + comp + */ p2 = t1 + w * (t4 + w * (t7 + w * (t10 + w * t13))); p3 = t2 + w * (t5 + w * (t8 + w * (t11 + w * t14))); p = z * p1 - (tt - w * (p2 + y * p3)); r += (tf + p); break; case 2: - p1 = y * - (u0 + - y * (u1 + - y * (u2 + y * (u3 + y * (u4 + y * u5))))); - p2 = 1.0f + - y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * v5)))); + p1 = y * (u0 + y * (u1 + y * (u2 + y * (u3 + y * (u4 + y * u5))))); + p2 = 1.0f + y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * v5)))); r += -0.5f * y + p1 / p2; } } else if (ix < 0x41000000) { /* x < 8.0 */ i = (int)x; y = x - (float)i; - p = y * - (s0 + - y * (s1 + - y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6)))))); - q = 1.0f + - y * (r1 + - y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * r6))))); + p = y * (s0 + y * (s1 + y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6)))))); + q = 1.0f + y * (r1 + y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * r6))))); r = 0.5f * y + p / q; z = 1.0f; /* lgamma(1+s) = log(s) + lgamma(s) */ switch (i) { @@ -238,9 +222,7 @@ float __lgammaf_r(float x, int *signgamp) t = logf(x); z = 1.0f / x; y = z * z; - w = w0 + - z * (w1 + - y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * w6))))); + w = w0 + z * (w1 + y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * w6))))); r = (x - 0.5f) * (t - 1.0f) + w; } else /* 2**58 <= x <= inf */ r = x * (logf(x) - 1.0f); diff --git a/lib/libm/lgammal.c b/lib/libm/lgammal.c index 6c137e20..4bb58d09 100644 --- a/lib/libm/lgammal.c +++ b/lib/libm/lgammal.c @@ -104,17 +104,12 @@ static const long double /* lgam(1+x) = 0.5 x + x a(x)/b(x) -0.268402099609375 <= x <= 0 peak relative error 6.6e-22 */ - a0 = -6.343246574721079391729402781192128239938E2L, - a1 = 1.856560238672465796768677717168371401378E3L, - a2 = 2.404733102163746263689288466865843408429E3L, - a3 = 8.804188795790383497379532868917517596322E2L, - a4 = 1.135361354097447729740103745999661157426E2L, - a5 = 3.766956539107615557608581581190400021285E0L, + a0 = -6.343246574721079391729402781192128239938E2L, a1 = 1.856560238672465796768677717168371401378E3L, + a2 = 2.404733102163746263689288466865843408429E3L, a3 = 8.804188795790383497379532868917517596322E2L, + a4 = 1.135361354097447729740103745999661157426E2L, a5 = 3.766956539107615557608581581190400021285E0L, - b0 = 8.214973713960928795704317259806842490498E3L, - b1 = 1.026343508841367384879065363925870888012E4L, - b2 = 4.553337477045763320522762343132210919277E3L, - b3 = 8.506975785032585797446253359230031874803E2L, + b0 = 8.214973713960928795704317259806842490498E3L, b1 = 1.026343508841367384879065363925870888012E4L, + b2 = 4.553337477045763320522762343132210919277E3L, b3 = 8.506975785032585797446253359230031874803E2L, b4 = 6.042447899703295436820744186992189445813E1L, /* b5 = 1.000000000000000000000000000000000000000E0 */ @@ -130,58 +125,40 @@ static const long double -0.230003726999612341262659542325721328468 <= x <= 0.2699962730003876587373404576742786715318 peak relative error 2.1e-21 */ - g0 = 3.645529916721223331888305293534095553827E-18L, - g1 = 5.126654642791082497002594216163574795690E3L, - g2 = 8.828603575854624811911631336122070070327E3L, - g3 = 5.464186426932117031234820886525701595203E3L, - g4 = 1.455427403530884193180776558102868592293E3L, - g5 = 1.541735456969245924860307497029155838446E2L, + g0 = 3.645529916721223331888305293534095553827E-18L, g1 = 5.126654642791082497002594216163574795690E3L, + g2 = 8.828603575854624811911631336122070070327E3L, g3 = 5.464186426932117031234820886525701595203E3L, + g4 = 1.455427403530884193180776558102868592293E3L, g5 = 1.541735456969245924860307497029155838446E2L, g6 = 4.335498275274822298341872707453445815118E0L, - h0 = 1.059584930106085509696730443974495979641E4L, - h1 = 2.147921653490043010629481226937850618860E4L, - h2 = 1.643014770044524804175197151958100656728E4L, - h3 = 5.869021995186925517228323497501767586078E3L, - h4 = 9.764244777714344488787381271643502742293E2L, - h5 = 6.442485441570592541741092969581997002349E1L, + h0 = 1.059584930106085509696730443974495979641E4L, h1 = 2.147921653490043010629481226937850618860E4L, + h2 = 1.643014770044524804175197151958100656728E4L, h3 = 5.869021995186925517228323497501767586078E3L, + h4 = 9.764244777714344488787381271643502742293E2L, h5 = 6.442485441570592541741092969581997002349E1L, /* h6 = 1.000000000000000000000000000000000000000E0 */ /* lgam (x+1) = -0.5 x + x u(x)/v(x) -0.100006103515625 <= x <= 0.231639862060546875 peak relative error 1.3e-21 */ - u0 = -8.886217500092090678492242071879342025627E1L, - u1 = 6.840109978129177639438792958320783599310E2L, - u2 = 2.042626104514127267855588786511809932433E3L, - u3 = 1.911723903442667422201651063009856064275E3L, - u4 = 7.447065275665887457628865263491667767695E2L, - u5 = 1.132256494121790736268471016493103952637E2L, + u0 = -8.886217500092090678492242071879342025627E1L, u1 = 6.840109978129177639438792958320783599310E2L, + u2 = 2.042626104514127267855588786511809932433E3L, u3 = 1.911723903442667422201651063009856064275E3L, + u4 = 7.447065275665887457628865263491667767695E2L, u5 = 1.132256494121790736268471016493103952637E2L, u6 = 4.484398885516614191003094714505960972894E0L, - v0 = 1.150830924194461522996462401210374632929E3L, - v1 = 3.399692260848747447377972081399737098610E3L, - v2 = 3.786631705644460255229513563657226008015E3L, - v3 = 1.966450123004478374557778781564114347876E3L, - v4 = 4.741359068914069299837355438370682773122E2L, - v5 = 4.508989649747184050907206782117647852364E1L, + v0 = 1.150830924194461522996462401210374632929E3L, v1 = 3.399692260848747447377972081399737098610E3L, + v2 = 3.786631705644460255229513563657226008015E3L, v3 = 1.966450123004478374557778781564114347876E3L, + v4 = 4.741359068914069299837355438370682773122E2L, v5 = 4.508989649747184050907206782117647852364E1L, /* v6 = 1.000000000000000000000000000000000000000E0 */ /* lgam (x+2) = .5 x + x s(x)/r(x) 0 <= x <= 1 peak relative error 7.2e-22 */ - s0 = 1.454726263410661942989109455292824853344E6L, - s1 = -3.901428390086348447890408306153378922752E6L, - s2 = -6.573568698209374121847873064292963089438E6L, - s3 = -3.319055881485044417245964508099095984643E6L, - s4 = -7.094891568758439227560184618114707107977E5L, - s5 = -6.263426646464505837422314539808112478303E4L, + s0 = 1.454726263410661942989109455292824853344E6L, s1 = -3.901428390086348447890408306153378922752E6L, + s2 = -6.573568698209374121847873064292963089438E6L, s3 = -3.319055881485044417245964508099095984643E6L, + s4 = -7.094891568758439227560184618114707107977E5L, s5 = -6.263426646464505837422314539808112478303E4L, s6 = -1.684926520999477529949915657519454051529E3L, - r0 = -1.883978160734303518163008696712983134698E7L, - r1 = -2.815206082812062064902202753264922306830E7L, - r2 = -1.600245495251915899081846093343626358398E7L, - r3 = -4.310526301881305003489257052083370058799E6L, - r4 = -5.563807682263923279438235987186184968542E5L, - r5 = -3.027734654434169996032905158145259713083E4L, + r0 = -1.883978160734303518163008696712983134698E7L, r1 = -2.815206082812062064902202753264922306830E7L, + r2 = -1.600245495251915899081846093343626358398E7L, r3 = -4.310526301881305003489257052083370058799E6L, + r4 = -5.563807682263923279438235987186184968542E5L, r5 = -3.027734654434169996032905158145259713083E4L, r6 = -4.501995652861105629217250715790764371267E2L, /* r6 = 1.000000000000000000000000000000000000000E0 */ @@ -189,9 +166,8 @@ static const long double x >= 8 Peak relative error 1.51e-21 w0 = LS2PI - 0.5 */ - w0 = 4.189385332046727417803e-1L, w1 = 8.333333333333331447505E-2L, - w2 = -2.777777777750349603440E-3L, w3 = 7.936507795855070755671E-4L, - w4 = -5.952345851765688514613E-4L, w5 = 8.412723297322498080632E-4L, + w0 = 4.189385332046727417803e-1L, w1 = 8.333333333333331447505E-2L, w2 = -2.777777777750349603440E-3L, + w3 = 7.936507795855070755671E-4L, w4 = -5.952345851765688514613E-4L, w5 = 8.412723297322498080632E-4L, w6 = -1.880801938119376907179E-3L, w7 = 4.885026142432270781165E-3L; /* sin(pi*x) assuming x > 2^-1000, if sin(pi*x)==0 the sign is arbitrary */ @@ -289,48 +265,27 @@ long double __lgammal_r(long double x, int *sg) } switch (i) { case 0: - p1 = a0 + - y * (a1 + y * (a2 + y * (a3 + y * (a4 + y * a5)))); + p1 = a0 + y * (a1 + y * (a2 + y * (a3 + y * (a4 + y * a5)))); p2 = b0 + y * (b1 + y * (b2 + y * (b3 + y * (b4 + y)))); r += 0.5 * y + y * p1 / p2; break; case 1: - p1 = g0 + - y * (g1 + - y * (g2 + - y * (g3 + y * (g4 + y * (g5 + y * g6))))); - p2 = h0 + - y * (h1 + - y * (h2 + - y * (h3 + y * (h4 + y * (h5 + y))))); + p1 = g0 + y * (g1 + y * (g2 + y * (g3 + y * (g4 + y * (g5 + y * g6))))); + p2 = h0 + y * (h1 + y * (h2 + y * (h3 + y * (h4 + y * (h5 + y))))); p = tt + y * p1 / p2; r += (tf + p); break; case 2: - p1 = y * - (u0 + - y * (u1 + - y * (u2 + - y * (u3 + - y * (u4 + y * (u5 + y * u6)))))); - p2 = v0 + - y * (v1 + - y * (v2 + - y * (v3 + y * (v4 + y * (v5 + y))))); + p1 = y * (u0 + y * (u1 + y * (u2 + y * (u3 + y * (u4 + y * (u5 + y * u6)))))); + p2 = v0 + y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * (v5 + y))))); r += (-0.5 * y + p1 / p2); } } else if (ix < 0x40028000) { /* 8.0 */ /* x < 8.0 */ i = (int)x; y = x - (double)i; - p = y * - (s0 + - y * (s1 + - y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6)))))); - q = r0 + - y * (r1 + - y * (r2 + - y * (r3 + y * (r4 + y * (r5 + y * (r6 + y)))))); + p = y * (s0 + y * (s1 + y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6)))))); + q = r0 + y * (r1 + y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * (r6 + y)))))); r = 0.5 * y + p / q; z = 1.0; /* lgamma(1+s) = log(s) + lgamma(s) */ @@ -353,11 +308,7 @@ long double __lgammal_r(long double x, int *sg) t = logl(x); z = 1.0 / x; y = z * z; - w = w0 + - z * (w1 + - y * (w2 + - y * (w3 + - y * (w4 + y * (w5 + y * (w6 + y * w7)))))); + w = w0 + z * (w1 + y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * (w6 + y * w7)))))); r = (x - 0.5) * (t - 1.0) + w; } else /* 2**66 <= x <= inf */ r = x * (logl(x) - 1.0); diff --git a/lib/libm/libm.h b/lib/libm/libm.h index 5d37249e..a1a876af 100644 --- a/lib/libm/libm.h +++ b/lib/libm/libm.h @@ -22,8 +22,7 @@ static __inline uint16_t __bswap16(uint16_t __x) static __inline uint32_t __bswap32(uint32_t __x) { - return __x >> 24 | (__x >> 8 & 0xff00) | (__x << 8 & 0xff0000) | - __x << 24; + return __x >> 24 | (__x >> 8 & 0xff00) | (__x << 8 & 0xff0000) | __x << 24; } static __inline uint64_t __bswap64(uint64_t __x) @@ -60,8 +59,7 @@ static __inline uint64_t __bswap64(uint64_t __x) #endif #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 -#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && \ - __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ union ldshape { long double f; struct { @@ -69,8 +67,7 @@ union ldshape { uint16_t se; } i; }; -#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && \ - __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ /* This is the m68k variant of 80-bit long double, and this definition only * works on archs where the alignment requirement of uint64_t is <= 4. */ union ldshape { @@ -81,8 +78,7 @@ union ldshape { uint64_t m; } i; }; -#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && \ - __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ union ldshape { long double f; struct { @@ -96,8 +92,7 @@ union ldshape { uint64_t hi; } i2; }; -#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && \ - __BYTE_ORDER == __BIG_ENDIAN +#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER == __BIG_ENDIAN union ldshape { long double f; struct { @@ -343,7 +338,6 @@ hidden double __math_invalid(double); hidden long double __math_invalidl(long double); #endif -#define weak_alias(old, new) \ - extern __typeof(old)(new) __attribute__((__weak__, __alias__(#old))) +#define weak_alias(old, new) extern __typeof(old)(new) __attribute__((__weak__, __alias__(#old))) #endif diff --git a/lib/libm/log.c b/lib/libm/log.c index 39d23cdd..96d6158e 100644 --- a/lib/libm/log.c +++ b/lib/libm/log.c @@ -45,10 +45,8 @@ double log(double x) r = x - 1.0; r2 = r * r; r3 = r * r2; - y = r3 * - (B[1] + r * B[2] + r2 * B[3] + - r3 * (B[4] + r * B[5] + r2 * B[6] + - r3 * (B[7] + r * B[8] + r2 * B[9] + r3 * B[10]))); + y = r3 * (B[1] + r * B[2] + r2 * B[3] + + r3 * (B[4] + r * B[5] + r2 * B[6] + r3 * (B[7] + r * B[8] + r2 * B[9] + r3 * B[10]))); /* Worst-case error is around 0.507 ULP. */ w = r * 0x1p27; double_t rhi = r + w - w; @@ -107,7 +105,6 @@ double log(double x) 0.5 + 4.13/N + abs-poly-error*2^57 ULP (+ 0.002 ULP without fma) Worst case error if |y| > 0x1p-4: 0.5 + 2.06/N + abs-poly-error*2^56 ULP (+ 0.001 ULP without fma). */ - y = lo + r2 * A[0] + - r * r2 * (A[1] + r * A[2] + r2 * (A[3] + r * A[4])) + hi; + y = lo + r2 * A[0] + r * r2 * (A[1] + r * A[2] + r2 * (A[3] + r * A[4])) + hi; return eval_as_double(y); } diff --git a/lib/libm/log10.c b/lib/libm/log10.c index 729ca4d6..05168293 100644 --- a/lib/libm/log10.c +++ b/lib/libm/log10.c @@ -22,16 +22,16 @@ static const double ivln10hi = 4.34294481878168880939e-01, /* 0x3fdbcb7b, 0x15200000 */ - ivln10lo = 2.50829467116452752298e-11, /* 0x3dbb9438, 0xca9aadd5 */ - log10_2hi = 3.01029995663611771306e-01, /* 0x3FD34413, 0x509F6000 */ - log10_2lo = 3.69423907715893078616e-13, /* 0x3D59FEF3, 0x11F12B36 */ - Lg1 = 6.666666666666735130e-01, /* 3FE55555 55555593 */ - Lg2 = 3.999999999940941908e-01, /* 3FD99999 9997FA04 */ - Lg3 = 2.857142874366239149e-01, /* 3FD24924 94229359 */ - Lg4 = 2.222219843214978396e-01, /* 3FCC71C5 1D8E78AF */ - Lg5 = 1.818357216161805012e-01, /* 3FC74664 96CB03DE */ - Lg6 = 1.531383769920937332e-01, /* 3FC39A09 D078C69F */ - Lg7 = 1.479819860511658591e-01; /* 3FC2F112 DF3E5244 */ + ivln10lo = 2.50829467116452752298e-11, /* 0x3dbb9438, 0xca9aadd5 */ + log10_2hi = 3.01029995663611771306e-01, /* 0x3FD34413, 0x509F6000 */ + log10_2lo = 3.69423907715893078616e-13, /* 0x3D59FEF3, 0x11F12B36 */ + Lg1 = 6.666666666666735130e-01, /* 3FE55555 55555593 */ + Lg2 = 3.999999999940941908e-01, /* 3FD99999 9997FA04 */ + Lg3 = 2.857142874366239149e-01, /* 3FD24924 94229359 */ + Lg4 = 2.222219843214978396e-01, /* 3FCC71C5 1D8E78AF */ + Lg5 = 1.818357216161805012e-01, /* 3FC74664 96CB03DE */ + Lg6 = 1.531383769920937332e-01, /* 3FC39A09 D078C69F */ + Lg7 = 1.479819860511658591e-01; /* 3FC2F112 DF3E5244 */ double log10(double x) { diff --git a/lib/libm/log10f.c b/lib/libm/log10f.c index 4bf26544..b1f8de94 100644 --- a/lib/libm/log10f.c +++ b/lib/libm/log10f.c @@ -76,6 +76,5 @@ float log10f(float x) hi = u.f; lo = f - hi - hfsq + s * (hfsq + R); dk = k; - return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + - hi * ivln10hi + dk * log10_2hi; + return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi + dk * log10_2hi; } diff --git a/lib/libm/log10l.c b/lib/libm/log10l.c index d462308f..6a5025fb 100644 --- a/lib/libm/log10l.c +++ b/lib/libm/log10l.c @@ -73,16 +73,14 @@ long double log10l(long double x) * Theoretical peak relative error = 6.2e-22 */ static const long double P[] = { - 4.9962495940332550844739E-1L, 1.0767376367209449010438E1L, - 7.7671073698359539859595E1L, 2.5620629828144409632571E2L, - 4.2401812743503691187826E2L, 3.4258224542413922935104E2L, + 4.9962495940332550844739E-1L, 1.0767376367209449010438E1L, 7.7671073698359539859595E1L, + 2.5620629828144409632571E2L, 4.2401812743503691187826E2L, 3.4258224542413922935104E2L, 1.0747524399916215149070E2L, }; static const long double Q[] = { /* 1.0000000000000000000000E0,*/ - 2.3479774160285863271658E1L, 1.9444210022760132894510E2L, - 7.7952888181207260646090E2L, 1.6911722418503949084863E3L, - 2.0307734695595183428202E3L, 1.2695660352705325274404E3L, + 2.3479774160285863271658E1L, 1.9444210022760132894510E2L, 7.7952888181207260646090E2L, + 1.6911722418503949084863E3L, 2.0307734695595183428202E3L, 1.2695660352705325274404E3L, 3.2242573199748645407652E2L, }; diff --git a/lib/libm/log1pl.c b/lib/libm/log1pl.c index 972e9467..a64355e3 100644 --- a/lib/libm/log1pl.c +++ b/lib/libm/log1pl.c @@ -64,16 +64,14 @@ long double log1pl(long double x) * Theoretical peak relative error = 2.32e-20 */ static const long double P[] = { - 4.5270000862445199635215E-5L, 4.9854102823193375972212E-1L, - 6.5787325942061044846969E0L, 2.9911919328553073277375E1L, - 6.0949667980987787057556E1L, 5.7112963590585538103336E1L, + 4.5270000862445199635215E-5L, 4.9854102823193375972212E-1L, 6.5787325942061044846969E0L, + 2.9911919328553073277375E1L, 6.0949667980987787057556E1L, 5.7112963590585538103336E1L, 2.0039553499201281259648E1L, }; static const long double Q[] = { /* 1.0000000000000000000000E0,*/ - 1.5062909083469192043167E1L, 8.3047565967967209469434E1L, - 2.2176239823732856465394E2L, 3.0909872225312059774938E2L, - 2.1642788614495947685003E2L, 6.0118660497603843919306E1L, + 1.5062909083469192043167E1L, 8.3047565967967209469434E1L, 2.2176239823732856465394E2L, + 3.0909872225312059774938E2L, 2.1642788614495947685003E2L, 6.0118660497603843919306E1L, }; /* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2), diff --git a/lib/libm/log2.c b/lib/libm/log2.c index e240ac07..e3b9a9c7 100644 --- a/lib/libm/log2.c +++ b/lib/libm/log2.c @@ -60,8 +60,7 @@ double log2(double x) p = r2 * (B[0] + r * B[1]); y = hi + p; lo += hi - y + p; - lo += r4 * (B[2] + r * B[3] + r2 * (B[4] + r * B[5]) + - r4 * (B[6] + r * B[7] + r2 * (B[8] + r * B[9]))); + lo += r4 * (B[2] + r * B[3] + r2 * (B[4] + r * B[5]) + r4 * (B[6] + r * B[7] + r2 * (B[8] + r * B[9]))); y += lo; return eval_as_double(y); } diff --git a/lib/libm/log2l.c b/lib/libm/log2l.c index bec1d02d..c5f39e16 100644 --- a/lib/libm/log2l.c +++ b/lib/libm/log2l.c @@ -68,16 +68,14 @@ long double log2l(long double x) * Theoretical peak relative error = 6.2e-22 */ static const long double P[] = { - 4.9962495940332550844739E-1L, 1.0767376367209449010438E1L, - 7.7671073698359539859595E1L, 2.5620629828144409632571E2L, - 4.2401812743503691187826E2L, 3.4258224542413922935104E2L, + 4.9962495940332550844739E-1L, 1.0767376367209449010438E1L, 7.7671073698359539859595E1L, + 2.5620629828144409632571E2L, 4.2401812743503691187826E2L, 3.4258224542413922935104E2L, 1.0747524399916215149070E2L, }; static const long double Q[] = { /* 1.0000000000000000000000E0,*/ - 2.3479774160285863271658E1L, 1.9444210022760132894510E2L, - 7.7952888181207260646090E2L, 1.6911722418503949084863E3L, - 2.0307734695595183428202E3L, 1.2695660352705325274404E3L, + 2.3479774160285863271658E1L, 1.9444210022760132894510E2L, 7.7952888181207260646090E2L, + 1.6911722418503949084863E3L, 2.0307734695595183428202E3L, 1.2695660352705325274404E3L, 3.2242573199748645407652E2L, }; diff --git a/lib/libm/logl.c b/lib/libm/logl.c index 419f98b6..7a541be2 100644 --- a/lib/libm/logl.c +++ b/lib/libm/logl.c @@ -68,16 +68,14 @@ long double logl(long double x) * Theoretical peak relative error = 2.32e-20 */ static const long double P[] = { - 4.5270000862445199635215E-5L, 4.9854102823193375972212E-1L, - 6.5787325942061044846969E0L, 2.9911919328553073277375E1L, - 6.0949667980987787057556E1L, 5.7112963590585538103336E1L, + 4.5270000862445199635215E-5L, 4.9854102823193375972212E-1L, 6.5787325942061044846969E0L, + 2.9911919328553073277375E1L, 6.0949667980987787057556E1L, 5.7112963590585538103336E1L, 2.0039553499201281259648E1L, }; static const long double Q[] = { /* 1.0000000000000000000000E0,*/ - 1.5062909083469192043167E1L, 8.3047565967967209469434E1L, - 2.2176239823732856465394E2L, 3.0909872225312059774938E2L, - 2.1642788614495947685003E2L, 6.0118660497603843919306E1L, + 1.5062909083469192043167E1L, 8.3047565967967209469434E1L, 2.2176239823732856465394E2L, + 3.0909872225312059774938E2L, 2.1642788614495947685003E2L, 6.0118660497603843919306E1L, }; /* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2), diff --git a/lib/libm/pow.c b/lib/libm/pow.c index f4f84703..f91da903 100644 --- a/lib/libm/pow.c +++ b/lib/libm/pow.c @@ -94,8 +94,7 @@ static inline double_t log_inline(uint64_t ix, double_t *tail) lo4 = t2 - hi + arhi2; #endif /* p = log1p(r) - r - A[0]*r*r. */ - p = (ar3 * (A[1] + r * A[2] + - ar2 * (A[3] + r * A[4] + ar2 * (A[5] + r * A[6])))); + p = (ar3 * (A[1] + r * A[2] + ar2 * (A[3] + r * A[4] + ar2 * (A[5] + r * A[6])))); lo = lo1 + lo2 + lo3 + lo4 + p; y = hi + lo; *tail = hi - y + lo; @@ -176,8 +175,7 @@ static inline double exp_inline(double_t x, double_t xtail, uint32_t sign_bias) double_t kd, z, r, r2, scale, tail, tmp; abstop = top12(x) & 0x7ff; - if (predict_false(abstop - top12(0x1p-54) >= - top12(512.0) - top12(0x1p-54))) { + if (predict_false(abstop - top12(0x1p-54) >= top12(512.0) - top12(0x1p-54))) { if (abstop - top12(0x1p-54) >= 0x80000000) { /* Avoid spurious underflow for tiny x. */ /* Note: 0 is common input. */ @@ -267,8 +265,7 @@ double pow(double x, double y) iy = asuint64(y); topx = top12(x); topy = top12(y); - if (predict_false(topx - 0x001 >= 0x7ff - 0x001 || - (topy & 0x7ff) - 0x3be >= 0x43e - 0x3be)) { + if (predict_false(topx - 0x001 >= 0x7ff - 0x001 || (topy & 0x7ff) - 0x3be >= 0x43e - 0x3be)) { /* Note: if |y| > 1075 * ln2 * 2^53 ~= 0x1.749p62 then pow(x,y) = inf/0 and if |y| < 2^-54 / 1075 ~= 0x1.e7b6p-65 then pow(x,y) = +-1. */ @@ -279,8 +276,7 @@ double pow(double x, double y) return issignaling_inline(x) ? x + y : 1.0; if (ix == asuint64(1.0)) return issignaling_inline(y) ? x + y : 1.0; - if (2 * ix > 2 * asuint64(INFINITY) || - 2 * iy > 2 * asuint64(INFINITY)) + if (2 * ix > 2 * asuint64(INFINITY) || 2 * iy > 2 * asuint64(INFINITY)) return x + y; if (2 * ix == 2 * asuint64(1.0)) return 1.0; @@ -316,13 +312,10 @@ double pow(double x, double y) if ((topy & 0x7ff) < 0x3be) { /* |y| < 2^-65, x^y ~= 1 + y*log(x). */ if (WANT_ROUNDING) - return ix > asuint64(1.0) ? 1.0 + y : - 1.0 - y; + return ix > asuint64(1.0) ? 1.0 + y : 1.0 - y; return 1.0; } - return (ix > asuint64(1.0)) == (topy < 0x800) ? - __math_oflow(0) : - __math_uflow(0); + return (ix > asuint64(1.0)) == (topy < 0x800) ? __math_oflow(0) : __math_uflow(0); } if (topx == 0) { /* Normalize subnormal x so exponent becomes negative. diff --git a/lib/libm/powf.c b/lib/libm/powf.c index f93a5877..424cbd51 100644 --- a/lib/libm/powf.c +++ b/lib/libm/powf.c @@ -130,8 +130,7 @@ float powf(float x, float y) ix = asuint(x); iy = asuint(y); - if (predict_false(ix - 0x00800000 >= 0x7f800000 - 0x00800000 || - zeroinfnan(iy))) { + if (predict_false(ix - 0x00800000 >= 0x7f800000 - 0x00800000 || zeroinfnan(iy))) { /* Either (x < 0x1p-126 or inf or nan) or (y is 0 or inf or * nan). */ if (predict_false(zeroinfnan(iy))) { @@ -139,8 +138,7 @@ float powf(float x, float y) return issignalingf_inline(x) ? x + y : 1.0f; if (ix == 0x3f800000) return issignalingf_inline(y) ? x + y : 1.0f; - if (2 * ix > 2u * 0x7f800000 || - 2 * iy > 2u * 0x7f800000) + if (2 * ix > 2u * 0x7f800000 || 2 * iy > 2u * 0x7f800000) return x + y; if (2 * ix == 2 * 0x3f800000) return 1.0f; @@ -178,8 +176,7 @@ float powf(float x, float y) } double_t logx = log2_inline(ix); double_t ylogx = y * logx; /* cannot overflow, y is single prec. */ - if (predict_false((asuint64(ylogx) >> 47 & 0xffff) >= - asuint64(126.0 * POWF_SCALE) >> 47)) { + if (predict_false((asuint64(ylogx) >> 47 & 0xffff) >= asuint64(126.0 * POWF_SCALE) >> 47)) { /* |y*log(x)| >= 126. */ if (ylogx > 0x1.fffffffd1d571p+6 * POWF_SCALE) return __math_oflowf(sign_bias); diff --git a/lib/libm/powl.c b/lib/libm/powl.c index 26a9b5ae..d47e6307 100644 --- a/lib/libm/powl.c +++ b/lib/libm/powl.c @@ -93,43 +93,33 @@ static const long double Q[] = { * If i is even, A[i] + B[i/2] gives additional accuracy. */ static const long double A[33] = { - 1.0000000000000000000000E0L, 9.7857206208770013448287E-1L, - 9.5760328069857364691013E-1L, 9.3708381705514995065011E-1L, - 9.1700404320467123175367E-1L, 8.9735453750155359320742E-1L, - 8.7812608018664974155474E-1L, 8.5930964906123895780165E-1L, - 8.4089641525371454301892E-1L, 8.2287773907698242225554E-1L, - 8.0524516597462715409607E-1L, 7.8799042255394324325455E-1L, - 7.7110541270397041179298E-1L, 7.5458221379671136985669E-1L, - 7.3841307296974965571198E-1L, 7.2259040348852331001267E-1L, - 7.0710678118654752438189E-1L, 6.9195494098191597746178E-1L, - 6.7712777346844636413344E-1L, 6.6261832157987064729696E-1L, - 6.4841977732550483296079E-1L, 6.3452547859586661129850E-1L, - 6.2092890603674202431705E-1L, 6.0762367999023443907803E-1L, - 5.9460355750136053334378E-1L, 5.8186242938878875689693E-1L, - 5.6939431737834582684856E-1L, 5.5719337129794626814472E-1L, - 5.4525386633262882960438E-1L, 5.3357020033841180906486E-1L, - 5.2213689121370692017331E-1L, 5.1094857432705833910408E-1L, - 5.0000000000000000000000E-1L, + 1.0000000000000000000000E0L, 9.7857206208770013448287E-1L, 9.5760328069857364691013E-1L, + 9.3708381705514995065011E-1L, 9.1700404320467123175367E-1L, 8.9735453750155359320742E-1L, + 8.7812608018664974155474E-1L, 8.5930964906123895780165E-1L, 8.4089641525371454301892E-1L, + 8.2287773907698242225554E-1L, 8.0524516597462715409607E-1L, 7.8799042255394324325455E-1L, + 7.7110541270397041179298E-1L, 7.5458221379671136985669E-1L, 7.3841307296974965571198E-1L, + 7.2259040348852331001267E-1L, 7.0710678118654752438189E-1L, 6.9195494098191597746178E-1L, + 6.7712777346844636413344E-1L, 6.6261832157987064729696E-1L, 6.4841977732550483296079E-1L, + 6.3452547859586661129850E-1L, 6.2092890603674202431705E-1L, 6.0762367999023443907803E-1L, + 5.9460355750136053334378E-1L, 5.8186242938878875689693E-1L, 5.6939431737834582684856E-1L, + 5.5719337129794626814472E-1L, 5.4525386633262882960438E-1L, 5.3357020033841180906486E-1L, + 5.2213689121370692017331E-1L, 5.1094857432705833910408E-1L, 5.0000000000000000000000E-1L, }; static const long double B[17] = { - 0.0000000000000000000000E0L, 2.6176170809902549338711E-20L, - -1.0126791927256478897086E-20L, 1.3438228172316276937655E-21L, - 1.2207982955417546912101E-20L, -6.3084814358060867200133E-21L, - 1.3164426894366316434230E-20L, -1.8527916071632873716786E-20L, - 1.8950325588932570796551E-20L, 1.5564775779538780478155E-20L, - 6.0859793637556860974380E-21L, -2.0208749253662532228949E-20L, - 1.4966292219224761844552E-20L, 3.3540909728056476875639E-21L, - -8.6987564101742849540743E-22L, -1.2327176863327626135542E-20L, - 0.0000000000000000000000E0L, + 0.0000000000000000000000E0L, 2.6176170809902549338711E-20L, -1.0126791927256478897086E-20L, + 1.3438228172316276937655E-21L, 1.2207982955417546912101E-20L, -6.3084814358060867200133E-21L, + 1.3164426894366316434230E-20L, -1.8527916071632873716786E-20L, 1.8950325588932570796551E-20L, + 1.5564775779538780478155E-20L, 6.0859793637556860974380E-21L, -2.0208749253662532228949E-20L, + 1.4966292219224761844552E-20L, 3.3540909728056476875639E-21L, -8.6987564101742849540743E-22L, + -1.2327176863327626135542E-20L, 0.0000000000000000000000E0L, }; /* 2^x = 1 + x P(x), * on the interval -1/32 <= x <= 0 */ static const long double R[] = { - 1.5089970579127659901157E-5L, 1.5402715328927013076125E-4L, - 1.3333556028915671091390E-3L, 9.6181291046036762031786E-3L, - 5.5504108664798463044015E-2L, 2.4022650695910062854352E-1L, + 1.5089970579127659901157E-5L, 1.5402715328927013076125E-4L, 1.3333556028915671091390E-3L, + 9.6181291046036762031786E-3L, 5.5504108664798463044015E-2L, 2.4022650695910062854352E-1L, 6.9314718055994530931447E-1L, }; diff --git a/lib/libm/remquo.c b/lib/libm/remquo.c index 8e27914f..adddd850 100644 --- a/lib/libm/remquo.c +++ b/lib/libm/remquo.c @@ -78,8 +78,7 @@ end: x = ux.f; if (sy) y = -y; - if (ex == ey || - (ex + 1 == ey && (2 * x > y || (2 * x == y && q % 2)))) { + if (ex == ey || (ex + 1 == ey && (2 * x > y || (2 * x == y && q % 2)))) { x -= y; q++; } diff --git a/lib/libm/remquof.c b/lib/libm/remquof.c index c50b1615..7963b349 100644 --- a/lib/libm/remquof.c +++ b/lib/libm/remquof.c @@ -78,8 +78,7 @@ end: x = ux.f; if (sy) y = -y; - if (ex == ey || - (ex + 1 == ey && (2 * x > y || (2 * x == y && q % 2)))) { + if (ex == ey || (ex + 1 == ey && (2 * x > y || (2 * x == y && q % 2)))) { x -= y; q++; } diff --git a/lib/libm/remquol.c b/lib/libm/remquol.c index 1a58f2d3..906bb58d 100644 --- a/lib/libm/remquol.c +++ b/lib/libm/remquol.c @@ -103,8 +103,7 @@ long double remquol(long double x, long double y, int *quo) if ((xhi | xlo) == 0) ex = -120; else - for (; xhi >> 48 == 0; - xhi = 2 * xhi + (xlo >> 63), xlo = 2 * xlo, ex--) + for (; xhi >> 48 == 0; xhi = 2 * xhi + (xlo >> 63), xlo = 2 * xlo, ex--) ; ux.i2.hi = xhi; ux.i2.lo = xlo; @@ -120,8 +119,7 @@ long double remquol(long double x, long double y, int *quo) x = ux.f; if (sy) y = -y; - if (ex == ey || - (ex + 1 == ey && (2 * x > y || (2 * x == y && q % 2)))) { + if (ex == ey || (ex + 1 == ey && (2 * x > y || (2 * x == y && q % 2)))) { x -= y; q++; } diff --git a/lib/libm/sin.c b/lib/libm/sin.c index 4eff1001..24be2599 100644 --- a/lib/libm/sin.c +++ b/lib/libm/sin.c @@ -59,8 +59,7 @@ double sin(double x) if (ix <= 0x3fe921fb) { if (ix < 0x3e500000) { /* |x| < 2**-26 */ /* raise inexact if x != 0 and underflow if subnormal*/ - FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : - x + 0x1p120f); + FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : x + 0x1p120f); return x; } return __sin(x, 0.0, 0); diff --git a/lib/libm/sincos.c b/lib/libm/sincos.c index c7300d7b..6ffbe06e 100644 --- a/lib/libm/sincos.c +++ b/lib/libm/sincos.c @@ -29,8 +29,7 @@ void sincos(double x, double *sin, double *cos) /* if |x| < 2**-27 * sqrt(2) */ if (ix < 0x3e46a09e) { /* raise inexact if x!=0 and underflow if subnormal */ - FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : - x + 0x1p120f); + FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : x + 0x1p120f); *sin = x; *cos = 1.0; return; diff --git a/lib/libm/sincosf.c b/lib/libm/sincosf.c index ea4bc567..089c4aa8 100644 --- a/lib/libm/sincosf.c +++ b/lib/libm/sincosf.c @@ -42,8 +42,7 @@ void sincosf(float x, float *sin, float *cos) /* |x| < 2**-12 */ if (ix < 0x39800000) { /* raise inexact if x!=0 and underflow if subnormal */ - FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : - x + 0x1p120f); + FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : x + 0x1p120f); *sin = x; *cos = 1.0f; return; diff --git a/lib/libm/sinf.c b/lib/libm/sinf.c index 28513976..e1a3209d 100644 --- a/lib/libm/sinf.c +++ b/lib/libm/sinf.c @@ -38,8 +38,7 @@ float sinf(float x) if (ix <= 0x3f490fda) { /* |x| ~<= pi/4 */ if (ix < 0x39800000) { /* |x| < 2**-12 */ /* raise inexact if x!=0 and underflow if subnormal */ - FORCE_EVAL(ix < 0x00800000 ? x / 0x1p120f : - x + 0x1p120f); + FORCE_EVAL(ix < 0x00800000 ? x / 0x1p120f : x + 0x1p120f); return x; } return __sindf(x); diff --git a/lib/libm/sinhl.c b/lib/libm/sinhl.c index fa35e870..0cfdeecc 100644 --- a/lib/libm/sinhl.c +++ b/lib/libm/sinhl.c @@ -23,8 +23,7 @@ long double sinhl(long double x) absx = u.f; /* |x| < log(LDBL_MAX) */ - if (ex < 0x3fff + 13 || - (ex == 0x3fff + 13 && u.i.m >> 32 < 0xb17217f7)) { + if (ex < 0x3fff + 13 || (ex == 0x3fff + 13 && u.i.m >> 32 < 0xb17217f7)) { t = expm1l(absx); if (ex < 0x3fff) { if (ex < 0x3fff - 32) diff --git a/lib/libm/sqrt_data.c b/lib/libm/sqrt_data.c index 4dc20a17..10a091af 100644 --- a/lib/libm/sqrt_data.c +++ b/lib/libm/sqrt_data.c @@ -3,19 +3,14 @@ #include // for uint16_t const uint16_t __rsqrt_tab[128] = { - 0xb451, 0xb2f0, 0xb196, 0xb044, 0xaef9, 0xadb6, 0xac79, 0xab43, 0xaa14, - 0xa8eb, 0xa7c8, 0xa6aa, 0xa592, 0xa480, 0xa373, 0xa26b, 0xa168, 0xa06a, - 0x9f70, 0x9e7b, 0x9d8a, 0x9c9d, 0x9bb5, 0x9ad1, 0x99f0, 0x9913, 0x983a, - 0x9765, 0x9693, 0x95c4, 0x94f8, 0x9430, 0x936b, 0x92a9, 0x91ea, 0x912e, - 0x9075, 0x8fbe, 0x8f0a, 0x8e59, 0x8daa, 0x8cfe, 0x8c54, 0x8bac, 0x8b07, - 0x8a64, 0x89c4, 0x8925, 0x8889, 0x87ee, 0x8756, 0x86c0, 0x862b, 0x8599, - 0x8508, 0x8479, 0x83ec, 0x8361, 0x82d8, 0x8250, 0x81c9, 0x8145, 0x80c2, - 0x8040, 0xff02, 0xfd0e, 0xfb25, 0xf947, 0xf773, 0xf5aa, 0xf3ea, 0xf234, - 0xf087, 0xeee3, 0xed47, 0xebb3, 0xea27, 0xe8a3, 0xe727, 0xe5b2, 0xe443, - 0xe2dc, 0xe17a, 0xe020, 0xdecb, 0xdd7d, 0xdc34, 0xdaf1, 0xd9b3, 0xd87b, - 0xd748, 0xd61a, 0xd4f1, 0xd3cd, 0xd2ad, 0xd192, 0xd07b, 0xcf69, 0xce5b, - 0xcd51, 0xcc4a, 0xcb48, 0xca4a, 0xc94f, 0xc858, 0xc764, 0xc674, 0xc587, - 0xc49d, 0xc3b7, 0xc2d4, 0xc1f4, 0xc116, 0xc03c, 0xbf65, 0xbe90, 0xbdbe, - 0xbcef, 0xbc23, 0xbb59, 0xba91, 0xb9cc, 0xb90a, 0xb84a, 0xb78c, 0xb6d0, - 0xb617, 0xb560, + 0xb451, 0xb2f0, 0xb196, 0xb044, 0xaef9, 0xadb6, 0xac79, 0xab43, 0xaa14, 0xa8eb, 0xa7c8, 0xa6aa, 0xa592, + 0xa480, 0xa373, 0xa26b, 0xa168, 0xa06a, 0x9f70, 0x9e7b, 0x9d8a, 0x9c9d, 0x9bb5, 0x9ad1, 0x99f0, 0x9913, + 0x983a, 0x9765, 0x9693, 0x95c4, 0x94f8, 0x9430, 0x936b, 0x92a9, 0x91ea, 0x912e, 0x9075, 0x8fbe, 0x8f0a, + 0x8e59, 0x8daa, 0x8cfe, 0x8c54, 0x8bac, 0x8b07, 0x8a64, 0x89c4, 0x8925, 0x8889, 0x87ee, 0x8756, 0x86c0, + 0x862b, 0x8599, 0x8508, 0x8479, 0x83ec, 0x8361, 0x82d8, 0x8250, 0x81c9, 0x8145, 0x80c2, 0x8040, 0xff02, + 0xfd0e, 0xfb25, 0xf947, 0xf773, 0xf5aa, 0xf3ea, 0xf234, 0xf087, 0xeee3, 0xed47, 0xebb3, 0xea27, 0xe8a3, + 0xe727, 0xe5b2, 0xe443, 0xe2dc, 0xe17a, 0xe020, 0xdecb, 0xdd7d, 0xdc34, 0xdaf1, 0xd9b3, 0xd87b, 0xd748, + 0xd61a, 0xd4f1, 0xd3cd, 0xd2ad, 0xd192, 0xd07b, 0xcf69, 0xce5b, 0xcd51, 0xcc4a, 0xcb48, 0xca4a, 0xc94f, + 0xc858, 0xc764, 0xc674, 0xc587, 0xc49d, 0xc3b7, 0xc2d4, 0xc1f4, 0xc116, 0xc03c, 0xbf65, 0xbe90, 0xbdbe, + 0xbcef, 0xbc23, 0xbb59, 0xba91, 0xb9cc, 0xb90a, 0xb84a, 0xb78c, 0xb6d0, 0xb617, 0xb560, }; diff --git a/lib/libm/sqrtl.c b/lib/libm/sqrtl.c index d71d455e..7afc601c 100644 --- a/lib/libm/sqrtl.c +++ b/lib/libm/sqrtl.c @@ -150,8 +150,7 @@ static inline u128 mul64_128(uint64_t a, uint64_t b) uint64_t alo = a & 0xffffffff; uint64_t bhi = b >> 32; uint64_t blo = b & 0xffffffff; - uint64_t lo1 = ((ahi * blo) & 0xffffffff) + ((alo * bhi) & 0xffffffff) + - (alo * blo >> 32); + uint64_t lo1 = ((ahi * blo) & 0xffffffff) + ((alo * bhi) & 0xffffffff) + (alo * blo >> 32); uint64_t lo2 = (alo * blo) & 0xffffffff; r.hi = ahi * bhi + (ahi * blo >> 32) + (alo * bhi >> 32) + (lo1 >> 32); r.lo = (lo1 << 32) + lo2; @@ -243,8 +242,7 @@ long double sqrtl(long double x) long double y; u128 d2, d1, d0; - d0 = sub128(lsh(ml, 2 * (LDBL_MANT_DIG - 1) - 126), - mul128_tail(sl, sl)); + d0 = sub128(lsh(ml, 2 * (LDBL_MANT_DIG - 1) - 126), mul128_tail(sl, sl)); d1 = sub128(sl, d0); d2 = add128(add64(sl, 1), d1); sl = add64(sl, d1.hi >> 63); diff --git a/lib/libm/tan.c b/lib/libm/tan.c index 5f37becc..aa3015b5 100644 --- a/lib/libm/tan.c +++ b/lib/libm/tan.c @@ -57,8 +57,7 @@ double tan(double x) if (ix <= 0x3fe921fb) { if (ix < 0x3e400000) { /* |x| < 2**-27 */ /* raise inexact if x!=0 and underflow if subnormal */ - FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : - x + 0x1p120f); + FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : x + 0x1p120f); return x; } return __tan(x, 0.0, 0); diff --git a/lib/libm/tanf.c b/lib/libm/tanf.c index f005908f..9de9ee57 100644 --- a/lib/libm/tanf.c +++ b/lib/libm/tanf.c @@ -39,8 +39,7 @@ float tanf(float x) if (ix <= 0x3f490fda) { /* |x| ~<= pi/4 */ if (ix < 0x39800000) { /* |x| < 2**-12 */ /* raise inexact if x!=0 and underflow if subnormal */ - FORCE_EVAL(ix < 0x00800000 ? x / 0x1p120f : - x + 0x1p120f); + FORCE_EVAL(ix < 0x00800000 ? x / 0x1p120f : x + 0x1p120f); return x; } return __tandf(x, 0); diff --git a/lib/libm/tgamma.c b/lib/libm/tgamma.c index 69759fd8..b72ede42 100644 --- a/lib/libm/tgamma.c +++ b/lib/libm/tgamma.c @@ -62,23 +62,16 @@ static double sinpi(double x) // static const double g = 6.024680040776729583740234375; static const double gmhalf = 5.524680040776729583740234375; static const double Snum[N + 1] = { - 23531376880.410759688572007674451636754734846804940, - 42919803642.649098768957899047001988850926355848959, - 35711959237.355668049440185451547166705960488635843, - 17921034426.037209699919755754458931112671403265390, - 6039542586.3520280050642916443072979210699388420708, - 1439720407.3117216736632230727949123939715485786772, - 248874557.86205415651146038641322942321632125127801, - 31426415.585400194380614231628318205362874684987640, - 2876370.6289353724412254090516208496135991145378768, - 186056.26539522349504029498971604569928220784236328, - 8071.6720023658162106380029022722506138218516325024, - 210.82427775157934587250973392071336271166969580291, + 23531376880.410759688572007674451636754734846804940, 42919803642.649098768957899047001988850926355848959, + 35711959237.355668049440185451547166705960488635843, 17921034426.037209699919755754458931112671403265390, + 6039542586.3520280050642916443072979210699388420708, 1439720407.3117216736632230727949123939715485786772, + 248874557.86205415651146038641322942321632125127801, 31426415.585400194380614231628318205362874684987640, + 2876370.6289353724412254090516208496135991145378768, 186056.26539522349504029498971604569928220784236328, + 8071.6720023658162106380029022722506138218516325024, 210.82427775157934587250973392071336271166969580291, 2.5066282746310002701649081771338373386264310793408, }; static const double Sden[N + 1] = { - 0, 39916800, 120543840, 150917976, 105258076, 45995730, 13339535, - 2637558, 357423, 32670, 1925, 66, 1, + 0, 39916800, 120543840, 150917976, 105258076, 45995730, 13339535, 2637558, 357423, 32670, 1925, 66, 1, }; /* n! for small integer n */ static const double fact[] = { diff --git a/lib/libm/tgammal.c b/lib/libm/tgammal.c index 54270091..ead0f69d 100644 --- a/lib/libm/tgammal.c +++ b/lib/libm/tgammal.c @@ -68,17 +68,14 @@ Peak error = 1.83e-20 Relative error spread = 8.4e-23 */ static const long double P[8] = { - 4.212760487471622013093E-5L, 4.542931960608009155600E-4L, - 4.092666828394035500949E-3L, 2.385363243461108252554E-2L, - 1.113062816019361559013E-1L, 3.629515436640239168939E-1L, + 4.212760487471622013093E-5L, 4.542931960608009155600E-4L, 4.092666828394035500949E-3L, + 2.385363243461108252554E-2L, 1.113062816019361559013E-1L, 3.629515436640239168939E-1L, 8.378004301573126728826E-1L, 1.000000000000000000009E0L, }; static const long double Q[9] = { - -1.397148517476170440917E-5L, 2.346584059160635244282E-4L, - -1.237799246653152231188E-3L, -7.955933682494738320586E-4L, - 2.773706565840072979165E-2L, -4.633887671244534213831E-2L, - -2.243510905670329164562E-1L, 4.150160950588455434583E-1L, - 9.999999999999999999908E-1L, + -1.397148517476170440917E-5L, 2.346584059160635244282E-4L, -1.237799246653152231188E-3L, + -7.955933682494738320586E-4L, 2.773706565840072979165E-2L, -4.633887671244534213831E-2L, + -2.243510905670329164562E-1L, 4.150160950588455434583E-1L, 9.999999999999999999908E-1L, }; /* @@ -117,11 +114,9 @@ Peak error = 9.44e-21 Relative error spread = 8.8e-4 */ static const long double STIR[9] = { - 7.147391378143610789273E-4L, -2.363848809501759061727E-5L, - -5.950237554056330156018E-4L, 6.989332260623193171870E-5L, - 7.840334842744753003862E-4L, -2.294719747873185405699E-4L, - -2.681327161876304418288E-3L, 3.472222222230075327854E-3L, - 8.333333333333331800504E-2L, + 7.147391378143610789273E-4L, -2.363848809501759061727E-5L, -5.950237554056330156018E-4L, + 6.989332260623193171870E-5L, 7.840334842744753003862E-4L, -2.294719747873185405699E-4L, + -2.681327161876304418288E-3L, 3.472222222230075327854E-3L, 8.333333333333331800504E-2L, }; #define MAXSTIR 1024.0L @@ -133,11 +128,9 @@ static const long double SQTPI = 2.50662827463100050242E0L; * Peak relative error 4.2e-23 */ static const long double S[9] = { - -1.193945051381510095614E-3L, 7.220599478036909672331E-3L, - -9.622023360406271645744E-3L, -4.219773360705915470089E-2L, - 1.665386113720805206758E-1L, -4.200263503403344054473E-2L, - -6.558780715202540684668E-1L, 5.772156649015328608253E-1L, - 1.000000000000000000000E0L, + -1.193945051381510095614E-3L, 7.220599478036909672331E-3L, -9.622023360406271645744E-3L, + -4.219773360705915470089E-2L, 1.665386113720805206758E-1L, -4.200263503403344054473E-2L, + -6.558780715202540684668E-1L, 5.772156649015328608253E-1L, 1.000000000000000000000E0L, }; /* 1/tgamma(-x) = z P(z) @@ -147,11 +140,9 @@ static const long double S[9] = { * Relative error spread = 2.5e-24 */ static const long double SN[9] = { - 1.133374167243894382010E-3L, 7.220837261893170325704E-3L, - 9.621911155035976733706E-3L, -4.219773343731191721664E-2L, - -1.665386113944413519335E-1L, -4.200263503402112910504E-2L, - 6.558780715202536547116E-1L, 5.772156649015328608727E-1L, - -1.000000000000000000000E0L, + 1.133374167243894382010E-3L, 7.220837261893170325704E-3L, 9.621911155035976733706E-3L, + -4.219773343731191721664E-2L, -1.665386113944413519335E-1L, -4.200263503402112910504E-2L, + 6.558780715202536547116E-1L, 5.772156649015328608727E-1L, -1.000000000000000000000E0L, }; static const long double PIL = 3.1415926535897932384626L; @@ -166,10 +157,7 @@ static long double stirf(long double x) /* For large x, use rational coefficients from the analytical expansion. */ if (x > 1024.0) - w = (((((6.97281375836585777429E-5L * w + - 7.84039221720066627474E-4L) * - w - - 2.29472093621399176955E-4L) * + w = (((((6.97281375836585777429E-5L * w + 7.84039221720066627474E-4L) * w - 2.29472093621399176955E-4L) * w - 2.68132716049382716049E-3L) * w + -- cgit v1.2.3