From patchwork Thu Aug 18 19:42:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Paul E. Murphy" X-Patchwork-Id: 14767 Received: (qmail 30134 invoked by alias); 18 Aug 2016 19:43:08 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 30039 invoked by uid 89); 18 Aug 2016 19:43:07 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=1.7 required=5.0 tests=AWL, BAYES_50, KAM_LAZY_DOMAIN_SECURITY, KAM_LOTSOFHASH, RCVD_IN_DNSWL_LOW, RCVD_IN_SEMBACKSCATTER autolearn=no version=3.3.2 spammy=5110, 3017, 1819, t1 X-HELO: mx0a-001b2d01.pphosted.com X-IBM-Helo: d03dlp02.boulder.ibm.com X-IBM-MailFrom: murphyp@linux.vnet.ibm.com From: "Paul E. Murphy" To: libc-alpha@sourceware.org Subject: [PATCHv2 3/5] ldbl-128: Rename 'long double' to '_Float128' Date: Thu, 18 Aug 2016 14:42:30 -0500 In-Reply-To: References: In-Reply-To: References: X-TM-AS-GCONF: 00 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16081819-0020-0000-0000-00000995E0AD X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00005613; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000181; SDB=6.00746528; UDB=6.00351972; IPR=6.00519063; BA=6.00004668; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00012381; XFM=3.00000011; UTC=2016-08-18 19:42:40 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16081819-0021-0000-0000-000054B09FBD Message-Id: <6f82866bc70d2bb214e2ba5fa08075bba095f1e8.1471548450.git.murphyp@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-08-18_09:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1604210000 definitions=main-1608180252 Add a layer of macro indirection for long double files which need to be built using another typename. Likewise, add the L(num) macro used in a later patch to override real constants. These macros are only defined through the ldbl-128 math_ldbl.h header, thereby implicitly restricting these macros to machines which back long double with an IEEE binary128 format. Likewise, appropriate changes are made for the few files which indirectly include such ldbl-128 files. These changes produce identical binaries for s390x, aarch64, and ppc64. * sysdeps/ieee754/ldbl-128/math_ldbl.h: [!defined (FLT128_MANT_DIG)] (_Float128): Define as long double for compilers which do not support this type. (L): New macro to append the correct type-suffix depending on whether _Float128 is a macro redirection to long double. * sysdeps/ieee754/ldbl-128/e_acoshl.c: Rename long double ldouble_t and ensure math_private.h gets added as needed. * sysdeps/ieee754/ldbl-128/e_acosl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_atan2l.c: Likewise. * sysdeps/ieee754/ldbl-128/e_atanhl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_coshl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_exp10l.c: Likewise. * sysdeps/ieee754/ldbl-128/e_expl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_fmodl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_gammal_r.c: Likewise. * sysdeps/ieee754/ldbl-128/e_hypotl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_ilogbl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_j0l.c: Likewise. * sysdeps/ieee754/ldbl-128/e_j1l.c: Likewise. * sysdeps/ieee754/ldbl-128/e_jnl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_lgammal_r.c: Likewise. * sysdeps/ieee754/ldbl-128/e_log10l.c: Likewise. * sysdeps/ieee754/ldbl-128/e_log2l.c: Likewise. * sysdeps/ieee754/ldbl-128/e_logl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_powl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_rem_pio2l.c: Likewise. * sysdeps/ieee754/ldbl-128/e_remainderl.c: Likewise. * sysdeps/ieee754/ldbl-128/e_sinhl.c: Likewise. * sysdeps/ieee754/ldbl-128/gamma_productl.c: Likewise. * sysdeps/ieee754/ldbl-128/k_cosl.c: Likewise. * sysdeps/ieee754/ldbl-128/k_sincosl.c: Likewise. * sysdeps/ieee754/ldbl-128/k_sinl.c: Likewise. * sysdeps/ieee754/ldbl-128/k_tanl.c: Likewise. * sysdeps/ieee754/ldbl-128/lgamma_negl.c: Likewise. * sysdeps/ieee754/ldbl-128/lgamma_productl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_asinhl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_atanl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_cbrtl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_ceill.c: Likewise. * sysdeps/ieee754/ldbl-128/s_copysignl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_cosl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_erfl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_expm1l.c: Likewise. * sysdeps/ieee754/ldbl-128/s_fabsl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_finitel.c: Likewise. * sysdeps/ieee754/ldbl-128/s_floorl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_fmal.c: Likewise. * sysdeps/ieee754/ldbl-128/s_fpclassifyl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_frexpl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_isinfl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_isnanl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_issignalingl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_llrintl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_llroundl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_log1pl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_logbl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_lrintl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_lroundl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_modfl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_nearbyintl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_nextafterl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_nextupl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_remquol.c: Likewise. * sysdeps/ieee754/ldbl-128/s_rintl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_roundl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_scalblnl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_scalbnl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_signbitl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_sincosl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_sinl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_tanhl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_tanl.c: Likewise. * sysdeps/ieee754/ldbl-128/s_truncl.c: Likewise. * sysdeps/ieee754/ldbl-128/t_expl.h: Likewise. * sysdeps/ieee754/ldbl-128/t_sincosl.c: Likewise. * sysdeps/ieee754/ldbl-128/x2y2m1l.c: Likewise. * sysdeps/ieee754/ldbl-128/e_asinl.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/e_expl.c (L): Define using long double semantics. (_Float128): Likewise. * sysdeps/ieee754/ldbl-128ibm/e_j0l.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/e_j1l.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c: Likewise. * sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c: Likewise. --- sysdeps/ieee754/ldbl-128/e_acoshl.c | 8 +- sysdeps/ieee754/ldbl-128/e_acosl.c | 8 +- sysdeps/ieee754/ldbl-128/e_asinl.c | 10 +- sysdeps/ieee754/ldbl-128/e_atan2l.c | 8 +- sysdeps/ieee754/ldbl-128/e_atanhl.c | 10 +- sysdeps/ieee754/ldbl-128/e_coshl.c | 8 +- sysdeps/ieee754/ldbl-128/e_exp10l.c | 12 +- sysdeps/ieee754/ldbl-128/e_expl.c | 8 +- sysdeps/ieee754/ldbl-128/e_fmodl.c | 6 +- sysdeps/ieee754/ldbl-128/e_gammal_r.c | 50 ++++----- sysdeps/ieee754/ldbl-128/e_hypotl.c | 6 +- sysdeps/ieee754/ldbl-128/e_ilogbl.c | 2 +- sysdeps/ieee754/ldbl-128/e_j0l.c | 104 +++++++++--------- sysdeps/ieee754/ldbl-128/e_j1l.c | 104 +++++++++--------- sysdeps/ieee754/ldbl-128/e_jnl.c | 44 ++++---- sysdeps/ieee754/ldbl-128/e_lgammal_r.c | 170 ++++++++++++++--------------- sysdeps/ieee754/ldbl-128/e_log10l.c | 30 ++--- sysdeps/ieee754/ldbl-128/e_log2l.c | 30 ++--- sysdeps/ieee754/ldbl-128/e_logl.c | 12 +- sysdeps/ieee754/ldbl-128/e_powl.c | 32 +++--- sysdeps/ieee754/ldbl-128/e_rem_pio2l.c | 10 +- sysdeps/ieee754/ldbl-128/e_remainderl.c | 8 +- sysdeps/ieee754/ldbl-128/e_sinhl.c | 8 +- sysdeps/ieee754/ldbl-128/gamma_productl.c | 8 +- sysdeps/ieee754/ldbl-128/k_cosl.c | 10 +- sysdeps/ieee754/ldbl-128/k_sincosl.c | 8 +- sysdeps/ieee754/ldbl-128/k_sinl.c | 10 +- sysdeps/ieee754/ldbl-128/k_tanl.c | 10 +- sysdeps/ieee754/ldbl-128/lgamma_negl.c | 82 +++++++------- sysdeps/ieee754/ldbl-128/lgamma_productl.c | 24 ++-- sysdeps/ieee754/ldbl-128/math_ldbl.h | 13 +++ sysdeps/ieee754/ldbl-128/s_asinhl.c | 8 +- sysdeps/ieee754/ldbl-128/s_atanl.c | 12 +- sysdeps/ieee754/ldbl-128/s_cbrtl.c | 14 +-- sysdeps/ieee754/ldbl-128/s_ceill.c | 2 +- sysdeps/ieee754/ldbl-128/s_copysignl.c | 4 +- sysdeps/ieee754/ldbl-128/s_cosl.c | 4 +- sysdeps/ieee754/ldbl-128/s_erfl.c | 140 ++++++++++++------------ sysdeps/ieee754/ldbl-128/s_expm1l.c | 8 +- sysdeps/ieee754/ldbl-128/s_fabsl.c | 2 +- sysdeps/ieee754/ldbl-128/s_finitel.c | 2 +- sysdeps/ieee754/ldbl-128/s_floorl.c | 2 +- sysdeps/ieee754/ldbl-128/s_fmal.c | 28 ++--- sysdeps/ieee754/ldbl-128/s_fpclassifyl.c | 2 +- sysdeps/ieee754/ldbl-128/s_frexpl.c | 4 +- sysdeps/ieee754/ldbl-128/s_isinfl.c | 2 +- sysdeps/ieee754/ldbl-128/s_isnanl.c | 2 +- sysdeps/ieee754/ldbl-128/s_issignalingl.c | 2 +- sysdeps/ieee754/ldbl-128/s_llrintl.c | 16 +-- sysdeps/ieee754/ldbl-128/s_llroundl.c | 6 +- sysdeps/ieee754/ldbl-128/s_log1pl.c | 18 +-- sysdeps/ieee754/ldbl-128/s_logbl.c | 6 +- sysdeps/ieee754/ldbl-128/s_lrintl.c | 18 +-- sysdeps/ieee754/ldbl-128/s_lroundl.c | 6 +- sysdeps/ieee754/ldbl-128/s_modfl.c | 4 +- sysdeps/ieee754/ldbl-128/s_nearbyintl.c | 6 +- sysdeps/ieee754/ldbl-128/s_nextafterl.c | 8 +- sysdeps/ieee754/ldbl-128/s_nextupl.c | 4 +- sysdeps/ieee754/ldbl-128/s_remquol.c | 8 +- sysdeps/ieee754/ldbl-128/s_rintl.c | 6 +- sysdeps/ieee754/ldbl-128/s_roundl.c | 4 +- sysdeps/ieee754/ldbl-128/s_scalblnl.c | 6 +- sysdeps/ieee754/ldbl-128/s_scalbnl.c | 4 +- sysdeps/ieee754/ldbl-128/s_signbitl.c | 3 +- sysdeps/ieee754/ldbl-128/s_sincosl.c | 4 +- sysdeps/ieee754/ldbl-128/s_sinl.c | 4 +- sysdeps/ieee754/ldbl-128/s_tanhl.c | 8 +- sysdeps/ieee754/ldbl-128/s_tanl.c | 4 +- sysdeps/ieee754/ldbl-128/s_truncl.c | 4 +- sysdeps/ieee754/ldbl-128/t_expl.h | 2 +- sysdeps/ieee754/ldbl-128/t_sincosl.c | 5 +- sysdeps/ieee754/ldbl-128/x2y2m1l.c | 16 +-- sysdeps/ieee754/ldbl-128ibm/e_expl.c | 4 + sysdeps/ieee754/ldbl-128ibm/e_j0l.c | 2 + sysdeps/ieee754/ldbl-128ibm/e_j1l.c | 2 + sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c | 2 + sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c | 4 + 77 files changed, 653 insertions(+), 622 deletions(-) diff --git a/sysdeps/ieee754/ldbl-128/e_acoshl.c b/sysdeps/ieee754/ldbl-128/e_acoshl.c index 6234289..9ddb9c5 100644 --- a/sysdeps/ieee754/ldbl-128/e_acoshl.c +++ b/sysdeps/ieee754/ldbl-128/e_acoshl.c @@ -30,14 +30,14 @@ #include #include -static const long double +static const _Float128 one = 1.0, ln2 = 0.6931471805599453094172321214581766L; -long double -__ieee754_acoshl(long double x) +_Float128 +__ieee754_acoshl(_Float128 x) { - long double t; + _Float128 t; u_int64_t lx; int64_t hx; GET_LDOUBLE_WORDS64(hx,lx,x); diff --git a/sysdeps/ieee754/ldbl-128/e_acosl.c b/sysdeps/ieee754/ldbl-128/e_acosl.c index 8c8ec93..a89a953 100644 --- a/sysdeps/ieee754/ldbl-128/e_acosl.c +++ b/sysdeps/ieee754/ldbl-128/e_acosl.c @@ -57,7 +57,7 @@ #include #include -static const long double +static const _Float128 one = 1.0L, pio2_hi = 1.5707963267948966192313216916397514420986L, pio2_lo = 4.3359050650618905123985220130216759843812E-35L, @@ -148,10 +148,10 @@ static const long double qS8 = -4.175375777334867025769346564600396877176E1L; /* 1.000000000000000000000000000000000000000E0 */ -long double -__ieee754_acosl (long double x) +_Float128 +__ieee754_acosl (_Float128 x) { - long double z, r, w, p, q, s, t, f2; + _Float128 z, r, w, p, q, s, t, f2; int32_t ix, sign; ieee854_long_double_shape_type u; diff --git a/sysdeps/ieee754/ldbl-128/e_asinl.c b/sysdeps/ieee754/ldbl-128/e_asinl.c index 4a8ed4c..cb556c2 100644 --- a/sysdeps/ieee754/ldbl-128/e_asinl.c +++ b/sysdeps/ieee754/ldbl-128/e_asinl.c @@ -63,7 +63,7 @@ #include #include -static const long double +static const _Float128 one = 1.0L, huge = 1.0e+4932L, pio2_hi = 1.5707963267948966192313216916397514420986L, @@ -128,10 +128,10 @@ static const long double -long double -__ieee754_asinl (long double x) +_Float128 +__ieee754_asinl (_Float128 x) { - long double t, w, p, q, c, r, s; + _Float128 t, w, p, q, c, r, s; int32_t ix, sign, flag; ieee854_long_double_shape_type u; @@ -153,7 +153,7 @@ __ieee754_asinl (long double x) if (ix < 0x3fc60000) /* |x| < 2**-57 */ { math_check_force_underflow (x); - long double force_inexact = huge + x; + _Float128 force_inexact = huge + x; math_force_eval (force_inexact); return x; /* return x with inexact if x!=0 */ } diff --git a/sysdeps/ieee754/ldbl-128/e_atan2l.c b/sysdeps/ieee754/ldbl-128/e_atan2l.c index d31ee70..5209007 100644 --- a/sysdeps/ieee754/ldbl-128/e_atan2l.c +++ b/sysdeps/ieee754/ldbl-128/e_atan2l.c @@ -43,7 +43,7 @@ #include #include -static const long double +static const _Float128 tiny = 1.0e-4900L, zero = 0.0, pi_o_4 = 7.85398163397448309615660845819875699e-01L, /* 3ffe921fb54442d18469898cc51701b8 */ @@ -51,10 +51,10 @@ pi_o_2 = 1.57079632679489661923132169163975140e+00L, /* 3fff921fb54442d18469898 pi = 3.14159265358979323846264338327950280e+00L, /* 4000921fb54442d18469898cc51701b8 */ pi_lo = 8.67181013012378102479704402604335225e-35L; /* 3f8dcd129024e088a67cc74020bbea64 */ -long double -__ieee754_atan2l(long double y, long double x) +_Float128 +__ieee754_atan2l(_Float128 y, _Float128 x) { - long double z; + _Float128 z; int64_t k,m,hx,hy,ix,iy; u_int64_t lx,ly; diff --git a/sysdeps/ieee754/ldbl-128/e_atanhl.c b/sysdeps/ieee754/ldbl-128/e_atanhl.c index 7fa53ef..05cf956 100644 --- a/sysdeps/ieee754/ldbl-128/e_atanhl.c +++ b/sysdeps/ieee754/ldbl-128/e_atanhl.c @@ -36,14 +36,14 @@ #include #include -static const long double one = 1.0L, huge = 1e4900L; +static const _Float128 one = 1.0L, huge = 1e4900L; -static const long double zero = 0.0L; +static const _Float128 zero = 0.0L; -long double -__ieee754_atanhl(long double x) +_Float128 +__ieee754_atanhl(_Float128 x) { - long double t; + _Float128 t; u_int32_t jx, ix; ieee854_long_double_shape_type u; diff --git a/sysdeps/ieee754/ldbl-128/e_coshl.c b/sysdeps/ieee754/ldbl-128/e_coshl.c index 488c318..0ea0693 100644 --- a/sysdeps/ieee754/ldbl-128/e_coshl.c +++ b/sysdeps/ieee754/ldbl-128/e_coshl.c @@ -54,13 +54,13 @@ #include #include -static const long double one = 1.0, half = 0.5, huge = 1.0e4900L, +static const _Float128 one = 1.0, half = 0.5, huge = 1.0e4900L, ovf_thresh = 1.1357216553474703894801348310092223067821E4L; -long double -__ieee754_coshl (long double x) +_Float128 +__ieee754_coshl (_Float128 x) { - long double t, w; + _Float128 t, w; int32_t ex; ieee854_long_double_shape_type u; diff --git a/sysdeps/ieee754/ldbl-128/e_exp10l.c b/sysdeps/ieee754/ldbl-128/e_exp10l.c index 9870025..6986c72 100644 --- a/sysdeps/ieee754/ldbl-128/e_exp10l.c +++ b/sysdeps/ieee754/ldbl-128/e_exp10l.c @@ -19,15 +19,15 @@ #include #include -static const long double log10_high = 0x2.4d763776aaa2bp0L; -static const long double log10_low = 0x5.ba95b58ae0b4c28a38a3fb3e7698p-60L; +static const _Float128 log10_high = 0x2.4d763776aaa2bp0L; +static const _Float128 log10_low = 0x5.ba95b58ae0b4c28a38a3fb3e7698p-60L; -long double -__ieee754_exp10l (long double arg) +_Float128 +__ieee754_exp10l (_Float128 arg) { ieee854_long_double_shape_type u; - long double arg_high, arg_low; - long double exp_high, exp_low; + _Float128 arg_high, arg_low; + _Float128 exp_high, exp_low; if (!isfinite (arg)) return __ieee754_expl (arg); diff --git a/sysdeps/ieee754/ldbl-128/e_expl.c b/sysdeps/ieee754/ldbl-128/e_expl.c index 7b71e64..5de3572 100644 --- a/sysdeps/ieee754/ldbl-128/e_expl.c +++ b/sysdeps/ieee754/ldbl-128/e_expl.c @@ -68,7 +68,7 @@ #include #include "t_expl.h" -static const long double C[] = { +static const _Float128 C[] = { /* Smallest integer x for which e^x overflows. */ #define himark C[0] 11356.523406294143949491931077970765L, @@ -132,14 +132,14 @@ static const long double C[] = { 1.98412698413981650382436541785404286E-04L, }; -long double -__ieee754_expl (long double x) +_Float128 +__ieee754_expl (_Float128 x) { /* Check for usual case. */ if (isless (x, himark) && isgreater (x, lomark)) { int tval1, tval2, unsafe, n_i; - long double x22, n, t, result, xl; + _Float128 x22, n, t, result, xl; union ieee854_long_double ex2_u, scale_u; fenv_t oldenv; diff --git a/sysdeps/ieee754/ldbl-128/e_fmodl.c b/sysdeps/ieee754/ldbl-128/e_fmodl.c index 3328003..f27cd4f 100644 --- a/sysdeps/ieee754/ldbl-128/e_fmodl.c +++ b/sysdeps/ieee754/ldbl-128/e_fmodl.c @@ -21,10 +21,10 @@ #include #include -static const long double one = 1.0, Zero[] = {0.0, -0.0,}; +static const _Float128 one = 1.0, Zero[] = {0.0, -0.0,}; -long double -__ieee754_fmodl (long double x, long double y) +_Float128 +__ieee754_fmodl (_Float128 x, _Float128 y) { int64_t n,hx,hy,hz,ix,iy,sx,i; u_int64_t lx,ly,lz; diff --git a/sysdeps/ieee754/ldbl-128/e_gammal_r.c b/sysdeps/ieee754/ldbl-128/e_gammal_r.c index d0286e3..43282fe 100644 --- a/sysdeps/ieee754/ldbl-128/e_gammal_r.c +++ b/sysdeps/ieee754/ldbl-128/e_gammal_r.c @@ -25,7 +25,7 @@ /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) inside exp in Stirling's approximation to gamma function. */ -static const long double gamma_coeff[] = +static const _Float128 gamma_coeff[] = { 0x1.5555555555555555555555555555p-4L, -0xb.60b60b60b60b60b60b60b60b60b8p-12L, @@ -49,8 +49,8 @@ static const long double gamma_coeff[] = 2^(*EXP2_ADJ), where R is the return value and *EXP2_ADJ is set to avoid overflow or underflow in intermediate calculations. */ -static long double -gammal_positive (long double x, int *exp2_adj) +static _Float128 +gammal_positive (_Float128 x, int *exp2_adj) { int local_signgam; if (x < 0.5L) @@ -67,24 +67,24 @@ gammal_positive (long double x, int *exp2_adj) { /* Adjust into the range for using exp (lgamma). */ *exp2_adj = 0; - long double n = __ceill (x - 1.5L); - long double x_adj = x - n; - long double eps; - long double prod = __gamma_productl (x_adj, 0, n, &eps); + _Float128 n = __ceill (x - 1.5L); + _Float128 x_adj = x - n; + _Float128 eps; + _Float128 prod = __gamma_productl (x_adj, 0, n, &eps); return (__ieee754_expl (__ieee754_lgammal_r (x_adj, &local_signgam)) * prod * (1.0L + eps)); } else { - long double eps = 0; - long double x_eps = 0; - long double x_adj = x; - long double prod = 1; + _Float128 eps = 0; + _Float128 x_eps = 0; + _Float128 x_adj = x; + _Float128 prod = 1; if (x < 24.0L) { /* Adjust into the range for applying Stirling's approximation. */ - long double n = __ceill (24.0L - x); + _Float128 n = __ceill (24.0L - x); x_adj = x + n; x_eps = (x - (x_adj - n)); prod = __gamma_productl (x_adj - n, x_eps, n, &eps); @@ -93,25 +93,25 @@ gammal_positive (long double x, int *exp2_adj) Compute gamma (X_ADJ + X_EPS) using Stirling's approximation, starting by computing pow (X_ADJ, X_ADJ) with a power of 2 factored out. */ - long double exp_adj = -eps; - long double x_adj_int = __roundl (x_adj); - long double x_adj_frac = x_adj - x_adj_int; + _Float128 exp_adj = -eps; + _Float128 x_adj_int = __roundl (x_adj); + _Float128 x_adj_frac = x_adj - x_adj_int; int x_adj_log2; - long double x_adj_mant = __frexpl (x_adj, &x_adj_log2); + _Float128 x_adj_mant = __frexpl (x_adj, &x_adj_log2); if (x_adj_mant < M_SQRT1_2l) { x_adj_log2--; x_adj_mant *= 2.0L; } *exp2_adj = x_adj_log2 * (int) x_adj_int; - long double ret = (__ieee754_powl (x_adj_mant, x_adj) + _Float128 ret = (__ieee754_powl (x_adj_mant, x_adj) * __ieee754_exp2l (x_adj_log2 * x_adj_frac) * __ieee754_expl (-x_adj) * __ieee754_sqrtl (2 * M_PIl / x_adj) / prod); exp_adj += x_eps * __ieee754_logl (x_adj); - long double bsum = gamma_coeff[NCOEFF - 1]; - long double x_adj2 = x_adj * x_adj; + _Float128 bsum = gamma_coeff[NCOEFF - 1]; + _Float128 x_adj2 = x_adj * x_adj; for (size_t i = 1; i <= NCOEFF - 1; i++) bsum = bsum / x_adj2 + gamma_coeff[NCOEFF - 1 - i]; exp_adj += bsum / x_adj; @@ -119,12 +119,12 @@ gammal_positive (long double x, int *exp2_adj) } } -long double -__ieee754_gammal_r (long double x, int *signgamp) +_Float128 +__ieee754_gammal_r (_Float128 x, int *signgamp) { int64_t hx; u_int64_t lx; - long double ret; + _Float128 ret; GET_LDOUBLE_WORDS64 (hx, lx, x); @@ -177,17 +177,17 @@ __ieee754_gammal_r (long double x, int *signgamp) } else { - long double tx = __truncl (x); + _Float128 tx = __truncl (x); *signgamp = (tx == 2.0L * __truncl (tx / 2.0L)) ? -1 : 1; if (x <= -1775.0L) /* Underflow. */ ret = LDBL_MIN * LDBL_MIN; else { - long double frac = tx - x; + _Float128 frac = tx - x; if (frac > 0.5L) frac = 1.0L - frac; - long double sinpix = (frac <= 0.25L + _Float128 sinpix = (frac <= 0.25L ? __sinl (M_PIl * frac) : __cosl (M_PIl * (0.5L - frac))); int exp2_adj; diff --git a/sysdeps/ieee754/ldbl-128/e_hypotl.c b/sysdeps/ieee754/ldbl-128/e_hypotl.c index 80e5e38..df7551b 100644 --- a/sysdeps/ieee754/ldbl-128/e_hypotl.c +++ b/sysdeps/ieee754/ldbl-128/e_hypotl.c @@ -48,10 +48,10 @@ #include #include -long double -__ieee754_hypotl(long double x, long double y) +_Float128 +__ieee754_hypotl(_Float128 x, _Float128 y) { - long double a,b,t1,t2,y1,y2,w; + _Float128 a,b,t1,t2,y1,y2,w; int64_t j,k,ha,hb; GET_LDOUBLE_MSW64(ha,x); diff --git a/sysdeps/ieee754/ldbl-128/e_ilogbl.c b/sysdeps/ieee754/ldbl-128/e_ilogbl.c index 0a47649..9effe63 100644 --- a/sysdeps/ieee754/ldbl-128/e_ilogbl.c +++ b/sysdeps/ieee754/ldbl-128/e_ilogbl.c @@ -28,7 +28,7 @@ static char rcsid[] = "$NetBSD: $"; #include #include -int __ieee754_ilogbl (long double x) +int __ieee754_ilogbl (_Float128 x) { int64_t hx,lx; int ix; diff --git a/sysdeps/ieee754/ldbl-128/e_j0l.c b/sysdeps/ieee754/ldbl-128/e_j0l.c index ddc8214..140aa39 100644 --- a/sysdeps/ieee754/ldbl-128/e_j0l.c +++ b/sysdeps/ieee754/ldbl-128/e_j0l.c @@ -96,16 +96,16 @@ #include /* 1 / sqrt(pi) */ -static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L; +static const _Float128 ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L; /* 2 / pi */ -static const long double TWOOPI = 6.3661977236758134307553505349005744813784E-1L; -static const long double zero = 0.0L; +static const _Float128 TWOOPI = 6.3661977236758134307553505349005744813784E-1L; +static const _Float128 zero = 0.0L; /* J0(x) = 1 - x^2/4 + x^2 x^2 R(x^2) Peak relative error 3.4e-37 0 <= x <= 2 */ #define NJ0_2N 6 -static const long double J0_2N[NJ0_2N + 1] = { +static const _Float128 J0_2N[NJ0_2N + 1] = { 3.133239376997663645548490085151484674892E16L, -5.479944965767990821079467311839107722107E14L, 6.290828903904724265980249871997551894090E12L, @@ -115,7 +115,7 @@ static const long double J0_2N[NJ0_2N + 1] = { 1.562826808020631846245296572935547005859E2L, }; #define NJ0_2D 6 -static const long double J0_2D[NJ0_2D + 1] = { +static const _Float128 J0_2D[NJ0_2D + 1] = { 2.005273201278504733151033654496928968261E18L, 2.063038558793221244373123294054149790864E16L, 1.053350447931127971406896594022010524994E14L, @@ -130,7 +130,7 @@ static const long double J0_2D[NJ0_2D + 1] = { 0 <= 1/x <= .0625 Peak relative error 3.3e-36 */ #define NP16_IN 9 -static const long double P16_IN[NP16_IN + 1] = { +static const _Float128 P16_IN[NP16_IN + 1] = { -1.901689868258117463979611259731176301065E-16L, -1.798743043824071514483008340803573980931E-13L, -6.481746687115262291873324132944647438959E-11L, @@ -143,7 +143,7 @@ static const long double P16_IN[NP16_IN + 1] = { -1.271468546258855781530458854476627766233E-1L, }; #define NP16_ID 9 -static const long double P16_ID[NP16_ID + 1] = { +static const _Float128 P16_ID[NP16_ID + 1] = { 2.704625590411544837659891569420764475007E-15L, 2.562526347676857624104306349421985403573E-12L, 9.259137589952741054108665570122085036246E-10L, @@ -161,7 +161,7 @@ static const long double P16_ID[NP16_ID + 1] = { 0.0625 <= 1/x <= 0.125 Peak relative error 2.4e-35 */ #define NP8_16N 10 -static const long double P8_16N[NP8_16N + 1] = { +static const _Float128 P8_16N[NP8_16N + 1] = { -2.335166846111159458466553806683579003632E-15L, -1.382763674252402720401020004169367089975E-12L, -3.192160804534716696058987967592784857907E-10L, @@ -175,7 +175,7 @@ static const long double P8_16N[NP8_16N + 1] = { -1.670703190068873186016102289227646035035E-1L, }; #define NP8_16D 10 -static const long double P8_16D[NP8_16D + 1] = { +static const _Float128 P8_16D[NP8_16D + 1] = { 3.321126181135871232648331450082662856743E-14L, 1.971894594837650840586859228510007703641E-11L, 4.571144364787008285981633719513897281690E-9L, @@ -194,7 +194,7 @@ static const long double P8_16D[NP8_16D + 1] = { 0.125 <= 1/x <= 0.1875 Peak relative error 2.7e-35 */ #define NP5_8N 10 -static const long double P5_8N[NP5_8N + 1] = { +static const _Float128 P5_8N[NP5_8N + 1] = { -1.270478335089770355749591358934012019596E-12L, -4.007588712145412921057254992155810347245E-10L, -4.815187822989597568124520080486652009281E-8L, @@ -208,7 +208,7 @@ static const long double P5_8N[NP5_8N + 1] = { -8.920026499909994671248893388013790366712E-3L, }; #define NP5_8D 9 -static const long double P5_8D[NP5_8D + 1] = { +static const _Float128 P5_8D[NP5_8D + 1] = { 1.806902521016705225778045904631543990314E-11L, 5.728502760243502431663549179135868966031E-9L, 6.938168504826004255287618819550667978450E-7L, @@ -226,7 +226,7 @@ static const long double P5_8D[NP5_8D + 1] = { Peak relative error 3.5e-35 0.1875 <= 1/x <= 0.25 */ #define NP4_5N 9 -static const long double P4_5N[NP4_5N + 1] = { +static const _Float128 P4_5N[NP4_5N + 1] = { -9.791405771694098960254468859195175708252E-10L, -1.917193059944531970421626610188102836352E-7L, -1.393597539508855262243816152893982002084E-5L, @@ -239,7 +239,7 @@ static const long double P4_5N[NP4_5N + 1] = { -2.251804386252969656586810309252357233320E-1L, }; #define NP4_5D 9 -static const long double P4_5D[NP4_5D + 1] = { +static const _Float128 P4_5D[NP4_5D + 1] = { 1.392555487577717669739688337895791213139E-8L, 2.748886559120659027172816051276451376854E-6L, 2.024717710644378047477189849678576659290E-4L, @@ -257,7 +257,7 @@ static const long double P4_5D[NP4_5D + 1] = { Peak relative error 2.3e-36 0.25 <= 1/x <= 0.3125 */ #define NP3r2_4N 9 -static const long double P3r2_4N[NP3r2_4N + 1] = { +static const _Float128 P3r2_4N[NP3r2_4N + 1] = { -2.589155123706348361249809342508270121788E-8L, -3.746254369796115441118148490849195516593E-6L, -1.985595497390808544622893738135529701062E-4L, @@ -270,7 +270,7 @@ static const long double P3r2_4N[NP3r2_4N + 1] = { -2.518966692256192789269859830255724429375E-1L, }; #define NP3r2_4D 9 -static const long double P3r2_4D[NP3r2_4D + 1] = { +static const _Float128 P3r2_4D[NP3r2_4D + 1] = { 3.682353957237979993646169732962573930237E-7L, 5.386741661883067824698973455566332102029E-5L, 2.906881154171822780345134853794241037053E-3L, @@ -288,7 +288,7 @@ static const long double P3r2_4D[NP3r2_4D + 1] = { Peak relative error 1.0e-35 0.3125 <= 1/x <= 0.375 */ #define NP2r7_3r2N 9 -static const long double P2r7_3r2N[NP2r7_3r2N + 1] = { +static const _Float128 P2r7_3r2N[NP2r7_3r2N + 1] = { -1.917322340814391131073820537027234322550E-7L, -1.966595744473227183846019639723259011906E-5L, -7.177081163619679403212623526632690465290E-4L, @@ -301,7 +301,7 @@ static const long double P2r7_3r2N[NP2r7_3r2N + 1] = { -4.098025357743657347681137871388402849581E-3L, }; #define NP2r7_3r2D 8 -static const long double P2r7_3r2D[NP2r7_3r2D + 1] = { +static const _Float128 P2r7_3r2D[NP2r7_3r2D + 1] = { 2.726858489303036441686496086962545034018E-6L, 2.840430827557109238386808968234848081424E-4L, 1.063826772041781947891481054529454088832E-2L, @@ -318,7 +318,7 @@ static const long double P2r7_3r2D[NP2r7_3r2D + 1] = { Peak relative error 1.3e-36 0.3125 <= 1/x <= 0.4375 */ #define NP2r3_2r7N 9 -static const long double P2r3_2r7N[NP2r3_2r7N + 1] = { +static const _Float128 P2r3_2r7N[NP2r3_2r7N + 1] = { -1.594642785584856746358609622003310312622E-6L, -1.323238196302221554194031733595194539794E-4L, -3.856087818696874802689922536987100372345E-3L, @@ -331,7 +331,7 @@ static const long double P2r3_2r7N[NP2r3_2r7N + 1] = { -3.246859189246653459359775001466924610236E-3L, }; #define NP2r3_2r7D 8 -static const long double P2r3_2r7D[NP2r3_2r7D + 1] = { +static const _Float128 P2r3_2r7D[NP2r3_2r7D + 1] = { 2.267936634217251403663034189684284173018E-5L, 1.918112982168673386858072491437971732237E-3L, 5.771704085468423159125856786653868219522E-2L, @@ -348,7 +348,7 @@ static const long double P2r3_2r7D[NP2r3_2r7D + 1] = { Peak relative error 1.2e-35 0.4375 <= 1/x <= 0.5 */ #define NP2_2r3N 8 -static const long double P2_2r3N[NP2_2r3N + 1] = { +static const _Float128 P2_2r3N[NP2_2r3N + 1] = { -1.001042324337684297465071506097365389123E-4L, -6.289034524673365824853547252689991418981E-3L, -1.346527918018624234373664526930736205806E-1L, @@ -360,7 +360,7 @@ static const long double P2_2r3N[NP2_2r3N + 1] = { -3.000348318524471807839934764596331810608E-1L, }; #define NP2_2r3D 8 -static const long double P2_2r3D[NP2_2r3D + 1] = { +static const _Float128 P2_2r3D[NP2_2r3D + 1] = { 1.423705538269770974803901422532055612980E-3L, 9.171476630091439978533535167485230575894E-2L, 2.049776318166637248868444600215942828537E0L, @@ -378,7 +378,7 @@ static const long double P2_2r3D[NP2_2r3D + 1] = { Peak relative error 2.2e-35 0 <= 1/x <= .0625 */ #define NQ16_IN 10 -static const long double Q16_IN[NQ16_IN + 1] = { +static const _Float128 Q16_IN[NQ16_IN + 1] = { 2.343640834407975740545326632205999437469E-18L, 2.667978112927811452221176781536278257448E-15L, 1.178415018484555397390098879501969116536E-12L, @@ -392,7 +392,7 @@ static const long double Q16_IN[NQ16_IN + 1] = { 1.107891967702173292405380993183694932208E-2L, }; #define NQ16_ID 9 -static const long double Q16_ID[NQ16_ID + 1] = { +static const _Float128 Q16_ID[NQ16_ID + 1] = { 3.199850952578356211091219295199301766718E-17L, 3.652601488020654842194486058637953363918E-14L, 1.620179741394865258354608590461839031281E-11L, @@ -411,7 +411,7 @@ static const long double Q16_ID[NQ16_ID + 1] = { Peak relative error 5.1e-36 0.0625 <= 1/x <= 0.125 */ #define NQ8_16N 11 -static const long double Q8_16N[NQ8_16N + 1] = { +static const _Float128 Q8_16N[NQ8_16N + 1] = { 1.001954266485599464105669390693597125904E-17L, 7.545499865295034556206475956620160007849E-15L, 2.267838684785673931024792538193202559922E-12L, @@ -426,7 +426,7 @@ static const long double Q8_16N[NQ8_16N + 1] = { 7.598886310387075708640370806458926458301E-2L, }; #define NQ8_16D 11 -static const long double Q8_16D[NQ8_16D + 1] = { +static const _Float128 Q8_16D[NQ8_16D + 1] = { 1.368001558508338469503329967729951830843E-16L, 1.034454121857542147020549303317348297289E-13L, 3.128109209247090744354764050629381674436E-11L, @@ -447,7 +447,7 @@ static const long double Q8_16D[NQ8_16D + 1] = { Peak relative error 3.9e-35 0.125 <= 1/x <= 0.1875 */ #define NQ5_8N 10 -static const long double Q5_8N[NQ5_8N + 1] = { +static const _Float128 Q5_8N[NQ5_8N + 1] = { 1.750399094021293722243426623211733898747E-13L, 6.483426211748008735242909236490115050294E-11L, 9.279430665656575457141747875716899958373E-9L, @@ -461,7 +461,7 @@ static const long double Q5_8N[NQ5_8N + 1] = { 8.383984859679804095463699702165659216831E-2L, }; #define NQ5_8D 10 -static const long double Q5_8D[NQ5_8D + 1] = { +static const _Float128 Q5_8D[NQ5_8D + 1] = { 2.389878229704327939008104855942987615715E-12L, 8.926142817142546018703814194987786425099E-10L, 1.294065862406745901206588525833274399038E-7L, @@ -481,7 +481,7 @@ static const long double Q5_8D[NQ5_8D + 1] = { Peak relative error 3.2e-35 0.1875 <= 1/x <= 0.25 */ #define NQ4_5N 10 -static const long double Q4_5N[NQ4_5N + 1] = { +static const _Float128 Q4_5N[NQ4_5N + 1] = { 2.233870042925895644234072357400122854086E-11L, 5.146223225761993222808463878999151699792E-9L, 4.459114531468296461688753521109797474523E-7L, @@ -495,7 +495,7 @@ static const long double Q4_5N[NQ4_5N + 1] = { 1.941595365256460232175236758506411486667E-3L, }; #define NQ4_5D 9 -static const long double Q4_5D[NQ4_5D + 1] = { +static const _Float128 Q4_5D[NQ4_5D + 1] = { 3.049977232266999249626430127217988047453E-10L, 7.120883230531035857746096928889676144099E-8L, 6.301786064753734446784637919554359588859E-6L, @@ -514,7 +514,7 @@ static const long double Q4_5D[NQ4_5D + 1] = { Peak relative error 1.4e-36 0.25 <= 1/x <= 0.3125 */ #define NQ3r2_4N 10 -static const long double Q3r2_4N[NQ3r2_4N + 1] = { +static const _Float128 Q3r2_4N[NQ3r2_4N + 1] = { 6.126167301024815034423262653066023684411E-10L, 1.043969327113173261820028225053598975128E-7L, 6.592927270288697027757438170153763220190E-6L, @@ -528,7 +528,7 @@ static const long double Q3r2_4N[NQ3r2_4N + 1] = { 1.229509543620976530030153018986910810747E-3L, }; #define NQ3r2_4D 9 -static const long double Q3r2_4D[NQ3r2_4D + 1] = { +static const _Float128 Q3r2_4D[NQ3r2_4D + 1] = { 8.364260446128475461539941389210166156568E-9L, 1.451301850638956578622154585560759862764E-6L, 9.431830010924603664244578867057141839463E-5L, @@ -547,7 +547,7 @@ static const long double Q3r2_4D[NQ3r2_4D + 1] = { Peak relative error 3.8e-36 0.3125 <= 1/x <= 0.375 */ #define NQ2r7_3r2N 9 -static const long double Q2r7_3r2N[NQ2r7_3r2N + 1] = { +static const _Float128 Q2r7_3r2N[NQ2r7_3r2N + 1] = { 7.584861620402450302063691901886141875454E-8L, 9.300939338814216296064659459966041794591E-6L, 4.112108906197521696032158235392604947895E-4L, @@ -560,7 +560,7 @@ static const long double Q2r7_3r2N[NQ2r7_3r2N + 1] = { 9.805848115375053300608712721986235900715E-2L, }; #define NQ2r7_3r2D 9 -static const long double Q2r7_3r2D[NQ2r7_3r2D + 1] = { +static const _Float128 Q2r7_3r2D[NQ2r7_3r2D + 1] = { 1.035586492113036586458163971239438078160E-6L, 1.301999337731768381683593636500979713689E-4L, 5.993695702564527062553071126719088859654E-3L, @@ -579,7 +579,7 @@ static const long double Q2r7_3r2D[NQ2r7_3r2D + 1] = { Peak relative error 2.2e-35 0.375 <= 1/x <= 0.4375 */ #define NQ2r3_2r7N 9 -static const long double Q2r3_2r7N[NQ2r3_2r7N + 1] = { +static const _Float128 Q2r3_2r7N[NQ2r3_2r7N + 1] = { 4.455027774980750211349941766420190722088E-7L, 4.031998274578520170631601850866780366466E-5L, 1.273987274325947007856695677491340636339E-3L, @@ -592,7 +592,7 @@ static const long double Q2r3_2r7N[NQ2r3_2r7N + 1] = { 7.261345286655345047417257611469066147561E-4L, }; #define NQ2r3_2r7D 8 -static const long double Q2r3_2r7D[NQ2r3_2r7D + 1] = { +static const _Float128 Q2r3_2r7D[NQ2r3_2r7D + 1] = { 6.082600739680555266312417978064954793142E-6L, 5.693622538165494742945717226571441747567E-4L, 1.901625907009092204458328768129666975975E-2L, @@ -610,7 +610,7 @@ static const long double Q2r3_2r7D[NQ2r3_2r7D + 1] = { Peak relative error 3.1e-36 0.4375 <= 1/x <= 0.5 */ #define NQ2_2r3N 9 -static const long double Q2_2r3N[NQ2_2r3N + 1] = { +static const _Float128 Q2_2r3N[NQ2_2r3N + 1] = { 2.817566786579768804844367382809101929314E-6L, 2.122772176396691634147024348373539744935E-4L, 5.501378031780457828919593905395747517585E-3L, @@ -623,7 +623,7 @@ static const long double Q2_2r3N[NQ2_2r3N + 1] = { 5.317668723070450235320878117210807236375E-4L, }; #define NQ2_2r3D 8 -static const long double Q2_2r3D[NQ2_2r3D + 1] = { +static const _Float128 Q2_2r3D[NQ2_2r3D + 1] = { 3.846924354014260866793741072933159380158E-5L, 3.017562820057704325510067178327449946763E-3L, 8.356305620686867949798885808540444210935E-2L, @@ -639,10 +639,10 @@ static const long double Q2_2r3D[NQ2_2r3D + 1] = { /* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */ -static long double -neval (long double x, const long double *p, int n) +static _Float128 +neval (_Float128 x, const _Float128 *p, int n) { - long double y; + _Float128 y; p += n; y = *p--; @@ -657,10 +657,10 @@ neval (long double x, const long double *p, int n) /* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */ -static long double -deval (long double x, const long double *p, int n) +static _Float128 +deval (_Float128 x, const _Float128 *p, int n) { - long double y; + _Float128 y; p += n; y = x + *p--; @@ -675,10 +675,10 @@ deval (long double x, const long double *p, int n) /* Bessel function of the first kind, order zero. */ -long double -__ieee754_j0l (long double x) +_Float128 +__ieee754_j0l (_Float128 x) { - long double xx, xinv, z, p, q, c, s, cc, ss; + _Float128 xx, xinv, z, p, q, c, s, cc, ss; if (! isfinite (x)) { @@ -796,7 +796,7 @@ strong_alias (__ieee754_j0l, __j0l_finite) Peak absolute error 1.7e-36 (relative where Y0 > 1) 0 <= x <= 2 */ #define NY0_2N 7 -static long double Y0_2N[NY0_2N + 1] = { +static _Float128 Y0_2N[NY0_2N + 1] = { -1.062023609591350692692296993537002558155E19L, 2.542000883190248639104127452714966858866E19L, -1.984190771278515324281415820316054696545E18L, @@ -807,7 +807,7 @@ static long double Y0_2N[NY0_2N + 1] = { 8.230845651379566339707130644134372793322E6L, }; #define NY0_2D 7 -static long double Y0_2D[NY0_2D + 1] = { +static _Float128 Y0_2D[NY0_2D + 1] = { 1.438972634353286978700329883122253752192E20L, 1.856409101981569254247700169486907405500E18L, 1.219693352678218589553725579802986255614E16L, @@ -819,14 +819,14 @@ static long double Y0_2D[NY0_2D + 1] = { /* 1.000000000000000000000000000000000000000E0 */ }; -static const long double U0 = -7.3804295108687225274343927948483016310862e-02L; +static const _Float128 U0 = -7.3804295108687225274343927948483016310862e-02L; /* Bessel function of the second kind, order zero. */ -long double - __ieee754_y0l(long double x) +_Float128 + __ieee754_y0l(_Float128 x) { - long double xx, xinv, z, p, q, c, s, cc, ss; + _Float128 xx, xinv, z, p, q, c, s, cc, ss; if (! isfinite (x)) { diff --git a/sysdeps/ieee754/ldbl-128/e_j1l.c b/sysdeps/ieee754/ldbl-128/e_j1l.c index 3265204..90b1425 100644 --- a/sysdeps/ieee754/ldbl-128/e_j1l.c +++ b/sysdeps/ieee754/ldbl-128/e_j1l.c @@ -101,16 +101,16 @@ #include /* 1 / sqrt(pi) */ -static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L; +static const _Float128 ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L; /* 2 / pi */ -static const long double TWOOPI = 6.3661977236758134307553505349005744813784E-1L; -static const long double zero = 0.0L; +static const _Float128 TWOOPI = 6.3661977236758134307553505349005744813784E-1L; +static const _Float128 zero = 0.0L; /* J1(x) = .5x + x x^2 R(x^2) Peak relative error 1.9e-35 0 <= x <= 2 */ #define NJ0_2N 6 -static const long double J0_2N[NJ0_2N + 1] = { +static const _Float128 J0_2N[NJ0_2N + 1] = { -5.943799577386942855938508697619735179660E16L, 1.812087021305009192259946997014044074711E15L, -2.761698314264509665075127515729146460895E13L, @@ -120,7 +120,7 @@ static const long double J0_2N[NJ0_2N + 1] = { -1.559552840946694171346552770008812083969E3L }; #define NJ0_2D 6 -static const long double J0_2D[NJ0_2D + 1] = { +static const _Float128 J0_2D[NJ0_2D + 1] = { 9.510079323819108569501613916191477479397E17L, 1.063193817503280529676423936545854693915E16L, 5.934143516050192600795972192791775226920E13L, @@ -135,7 +135,7 @@ static const long double J0_2D[NJ0_2D + 1] = { 0 <= 1/x <= .0625 Peak relative error 3.6e-36 */ #define NP16_IN 9 -static const long double P16_IN[NP16_IN + 1] = { +static const _Float128 P16_IN[NP16_IN + 1] = { 5.143674369359646114999545149085139822905E-16L, 4.836645664124562546056389268546233577376E-13L, 1.730945562285804805325011561498453013673E-10L, @@ -148,7 +148,7 @@ static const long double P16_IN[NP16_IN + 1] = { 3.032580002220628812728954785118117124520E-1L, }; #define NP16_ID 9 -static const long double P16_ID[NP16_ID + 1] = { +static const _Float128 P16_ID[NP16_ID + 1] = { 4.389268795186898018132945193912677177553E-15L, 4.132671824807454334388868363256830961655E-12L, 1.482133328179508835835963635130894413136E-9L, @@ -166,7 +166,7 @@ static const long double P16_ID[NP16_ID + 1] = { 0.0625 <= 1/x <= 0.125 Peak relative error 1.9e-36 */ #define NP8_16N 11 -static const long double P8_16N[NP8_16N + 1] = { +static const _Float128 P8_16N[NP8_16N + 1] = { 2.984612480763362345647303274082071598135E-16L, 1.923651877544126103941232173085475682334E-13L, 4.881258879388869396043760693256024307743E-11L, @@ -181,7 +181,7 @@ static const long double P8_16N[NP8_16N + 1] = { 2.991314703282528370270179989044994319374E-2L, }; #define NP8_16D 10 -static const long double P8_16D[NP8_16D + 1] = { +static const _Float128 P8_16D[NP8_16D + 1] = { 2.546869316918069202079580939942463010937E-15L, 1.644650111942455804019788382157745229955E-12L, 4.185430770291694079925607420808011147173E-10L, @@ -200,7 +200,7 @@ static const long double P8_16D[NP8_16D + 1] = { 0.125 <= 1/x <= 0.1875 Peak relative error 1.3e-36 */ #define NP5_8N 10 -static const long double P5_8N[NP5_8N + 1] = { +static const _Float128 P5_8N[NP5_8N + 1] = { 2.837678373978003452653763806968237227234E-12L, 9.726641165590364928442128579282742354806E-10L, 1.284408003604131382028112171490633956539E-7L, @@ -214,7 +214,7 @@ static const long double P5_8N[NP5_8N + 1] = { 5.465927698800862172307352821870223855365E-1L }; #define NP5_8D 10 -static const long double P5_8D[NP5_8D + 1] = { +static const _Float128 P5_8D[NP5_8D + 1] = { 2.421485545794616609951168511612060482715E-11L, 8.329862750896452929030058039752327232310E-9L, 1.106137992233383429630592081375289010720E-6L, @@ -233,7 +233,7 @@ static const long double P5_8D[NP5_8D + 1] = { Peak relative error 1.4e-36 0.1875 <= 1/x <= 0.25 */ #define NP4_5N 10 -static const long double P4_5N[NP4_5N + 1] = { +static const _Float128 P4_5N[NP4_5N + 1] = { 1.846029078268368685834261260420933914621E-10L, 3.916295939611376119377869680335444207768E-8L, 3.122158792018920627984597530935323997312E-6L, @@ -247,7 +247,7 @@ static const long double P4_5N[NP4_5N + 1] = { 1.804473805689725610052078464951722064757E-2L, }; #define NP4_5D 9 -static const long double P4_5D[NP4_5D + 1] = { +static const _Float128 P4_5D[NP4_5D + 1] = { 1.575278146806816970152174364308980863569E-9L, 3.361289173657099516191331123405675054321E-7L, 2.704692281550877810424745289838790693708E-5L, @@ -265,7 +265,7 @@ static const long double P4_5D[NP4_5D + 1] = { Peak relative error 3.0e-36 0.25 <= 1/x <= 0.3125 */ #define NP3r2_4N 9 -static const long double P3r2_4N[NP3r2_4N + 1] = { +static const _Float128 P3r2_4N[NP3r2_4N + 1] = { 8.240803130988044478595580300846665863782E-8L, 1.179418958381961224222969866406483744580E-5L, 6.179787320956386624336959112503824397755E-4L, @@ -278,7 +278,7 @@ static const long double P3r2_4N[NP3r2_4N + 1] = { 7.299530852495776936690976966995187714739E-1L, }; #define NP3r2_4D 9 -static const long double P3r2_4D[NP3r2_4D + 1] = { +static const _Float128 P3r2_4D[NP3r2_4D + 1] = { 7.032152009675729604487575753279187576521E-7L, 1.015090352324577615777511269928856742848E-4L, 5.394262184808448484302067955186308730620E-3L, @@ -296,7 +296,7 @@ static const long double P3r2_4D[NP3r2_4D + 1] = { Peak relative error 1.0e-35 0.3125 <= 1/x <= 0.375 */ #define NP2r7_3r2N 9 -static const long double P2r7_3r2N[NP2r7_3r2N + 1] = { +static const _Float128 P2r7_3r2N[NP2r7_3r2N + 1] = { 4.599033469240421554219816935160627085991E-7L, 4.665724440345003914596647144630893997284E-5L, 1.684348845667764271596142716944374892756E-3L, @@ -309,7 +309,7 @@ static const long double P2r7_3r2N[NP2r7_3r2N + 1] = { 1.316470424456061252962568223251247207325E-2L, }; #define NP2r7_3r2D 8 -static const long double P2r7_3r2D[NP2r7_3r2D + 1] = { +static const _Float128 P2r7_3r2D[NP2r7_3r2D + 1] = { 3.924508608545520758883457108453520099610E-6L, 4.029707889408829273226495756222078039823E-4L, 1.484629715787703260797886463307469600219E-2L, @@ -326,7 +326,7 @@ static const long double P2r7_3r2D[NP2r7_3r2D + 1] = { Peak relative error 1.7e-36 0.3125 <= 1/x <= 0.4375 */ #define NP2r3_2r7N 9 -static const long double P2r3_2r7N[NP2r3_2r7N + 1] = { +static const _Float128 P2r3_2r7N[NP2r3_2r7N + 1] = { 3.916766777108274628543759603786857387402E-6L, 3.212176636756546217390661984304645137013E-4L, 9.255768488524816445220126081207248947118E-3L, @@ -339,7 +339,7 @@ static const long double P2r3_2r7N[NP2r3_2r7N + 1] = { 1.109902737860249670981355149101343427885E-2L, }; #define NP2r3_2r7D 8 -static const long double P2r3_2r7D[NP2r3_2r7D + 1] = { +static const _Float128 P2r3_2r7D[NP2r3_2r7D + 1] = { 3.342307880794065640312646341190547184461E-5L, 2.782182891138893201544978009012096558265E-3L, 8.221304931614200702142049236141249929207E-2L, @@ -356,7 +356,7 @@ static const long double P2r3_2r7D[NP2r3_2r7D + 1] = { Peak relative error 1.7e-35 0.4375 <= 1/x <= 0.5 */ #define NP2_2r3N 8 -static const long double P2_2r3N[NP2_2r3N + 1] = { +static const _Float128 P2_2r3N[NP2_2r3N + 1] = { 3.397930802851248553545191160608731940751E-4L, 2.104020902735482418784312825637833698217E-2L, 4.442291771608095963935342749477836181939E-1L, @@ -368,7 +368,7 @@ static const long double P2_2r3N[NP2_2r3N + 1] = { 9.455702270242780642835086549285560316461E-1L, }; #define NP2_2r3D 8 -static const long double P2_2r3D[NP2_2r3D + 1] = { +static const _Float128 P2_2r3D[NP2_2r3D + 1] = { 2.899568897241432883079888249845707400614E-3L, 1.831107138190848460767699919531132426356E-1L, 3.999350044057883839080258832758908825165E0L, @@ -386,7 +386,7 @@ static const long double P2_2r3D[NP2_2r3D + 1] = { Peak relative error 8.0e-36 0 <= 1/x <= .0625 */ #define NQ16_IN 10 -static const long double Q16_IN[NQ16_IN + 1] = { +static const _Float128 Q16_IN[NQ16_IN + 1] = { -3.917420835712508001321875734030357393421E-18L, -4.440311387483014485304387406538069930457E-15L, -1.951635424076926487780929645954007139616E-12L, @@ -400,7 +400,7 @@ static const long double Q16_IN[NQ16_IN + 1] = { -1.922298704033332356899546792898156493887E-2L, }; #define NQ16_ID 9 -static const long double Q16_ID[NQ16_ID + 1] = { +static const _Float128 Q16_ID[NQ16_ID + 1] = { 3.820418034066293517479619763498400162314E-17L, 4.340702810799239909648911373329149354911E-14L, 1.914985356383416140706179933075303538524E-11L, @@ -419,7 +419,7 @@ static const long double Q16_ID[NQ16_ID + 1] = { Peak relative error 1.9e-36 0.0625 <= 1/x <= 0.125 */ #define NQ8_16N 11 -static const long double Q8_16N[NQ8_16N + 1] = { +static const _Float128 Q8_16N[NQ8_16N + 1] = { -2.028630366670228670781362543615221542291E-17L, -1.519634620380959966438130374006858864624E-14L, -4.540596528116104986388796594639405114524E-12L, @@ -434,7 +434,7 @@ static const long double Q8_16N[NQ8_16N + 1] = { -1.365364204556573800719985118029601401323E-1L, }; #define NQ8_16D 11 -static const long double Q8_16D[NQ8_16D + 1] = { +static const _Float128 Q8_16D[NQ8_16D + 1] = { 1.978397614733632533581207058069628242280E-16L, 1.487361156806202736877009608336766720560E-13L, 4.468041406888412086042576067133365913456E-11L, @@ -455,7 +455,7 @@ static const long double Q8_16D[NQ8_16D + 1] = { Peak relative error 1.5e-35 0.125 <= 1/x <= 0.1875 */ #define NQ5_8N 10 -static const long double Q5_8N[NQ5_8N + 1] = { +static const _Float128 Q5_8N[NQ5_8N + 1] = { -3.656082407740970534915918390488336879763E-13L, -1.344660308497244804752334556734121771023E-10L, -1.909765035234071738548629788698150760791E-8L, @@ -469,7 +469,7 @@ static const long double Q5_8N[NQ5_8N + 1] = { -1.549000892545288676809660828213589804884E-1L, }; #define NQ5_8D 10 -static const long double Q5_8D[NQ5_8D + 1] = { +static const _Float128 Q5_8D[NQ5_8D + 1] = { 3.565550843359501079050699598913828460036E-12L, 1.321016015556560621591847454285330528045E-9L, 1.897542728662346479999969679234270605975E-7L, @@ -489,7 +489,7 @@ static const long double Q5_8D[NQ5_8D + 1] = { Peak relative error 1.3e-35 0.1875 <= 1/x <= 0.25 */ #define NQ4_5N 10 -static const long double Q4_5N[NQ4_5N + 1] = { +static const _Float128 Q4_5N[NQ4_5N + 1] = { -4.079513568708891749424783046520200903755E-11L, -9.326548104106791766891812583019664893311E-9L, -8.016795121318423066292906123815687003356E-7L, @@ -503,7 +503,7 @@ static const long double Q4_5N[NQ4_5N + 1] = { -4.320429862021265463213168186061696944062E-3L, }; #define NQ4_5D 9 -static const long double Q4_5D[NQ4_5D + 1] = { +static const _Float128 Q4_5D[NQ4_5D + 1] = { 3.978497042580921479003851216297330701056E-10L, 9.203304163828145809278568906420772246666E-8L, 8.059685467088175644915010485174545743798E-6L, @@ -522,7 +522,7 @@ static const long double Q4_5D[NQ4_5D + 1] = { Peak relative error 2.1e-35 0.25 <= 1/x <= 0.3125 */ #define NQ3r2_4N 9 -static const long double Q3r2_4N[NQ3r2_4N + 1] = { +static const _Float128 Q3r2_4N[NQ3r2_4N + 1] = { -1.087480809271383885936921889040388133627E-8L, -1.690067828697463740906962973479310170932E-6L, -9.608064416995105532790745641974762550982E-5L, @@ -535,7 +535,7 @@ static const long double Q3r2_4N[NQ3r2_4N + 1] = { -1.812932453006641348145049323713469043328E-1L, }; #define NQ3r2_4D 9 -static const long double Q3r2_4D[NQ3r2_4D + 1] = { +static const _Float128 Q3r2_4D[NQ3r2_4D + 1] = { 1.060552717496912381388763753841473407026E-7L, 1.676928002024920520786883649102388708024E-5L, 9.803481712245420839301400601140812255737E-4L, @@ -554,7 +554,7 @@ static const long double Q3r2_4D[NQ3r2_4D + 1] = { Peak relative error 1.6e-36 0.3125 <= 1/x <= 0.375 */ #define NQ2r7_3r2N 9 -static const long double Q2r7_3r2N[NQ2r7_3r2N + 1] = { +static const _Float128 Q2r7_3r2N[NQ2r7_3r2N + 1] = { -1.723405393982209853244278760171643219530E-7L, -2.090508758514655456365709712333460087442E-5L, -9.140104013370974823232873472192719263019E-4L, @@ -567,7 +567,7 @@ static const long double Q2r7_3r2N[NQ2r7_3r2N + 1] = { -1.930796319299022954013840684651016077770E-1L, }; #define NQ2r7_3r2D 9 -static const long double Q2r7_3r2D[NQ2r7_3r2D + 1] = { +static const _Float128 Q2r7_3r2D[NQ2r7_3r2D + 1] = { 1.680730662300831976234547482334347983474E-6L, 2.084241442440551016475972218719621841120E-4L, 9.445316642108367479043541702688736295579E-3L, @@ -586,7 +586,7 @@ static const long double Q2r7_3r2D[NQ2r7_3r2D + 1] = { Peak relative error 9.5e-36 0.375 <= 1/x <= 0.4375 */ #define NQ2r3_2r7N 9 -static const long double Q2r3_2r7N[NQ2r3_2r7N + 1] = { +static const _Float128 Q2r3_2r7N[NQ2r3_2r7N + 1] = { -8.603042076329122085722385914954878953775E-7L, -7.701746260451647874214968882605186675720E-5L, -2.407932004380727587382493696877569654271E-3L, @@ -599,7 +599,7 @@ static const long double Q2r3_2r7N[NQ2r3_2r7N + 1] = { -1.890595651683552228232308756569450822905E-3L, }; #define NQ2r3_2r7D 8 -static const long double Q2r3_2r7D[NQ2r3_2r7D + 1] = { +static const _Float128 Q2r3_2r7D[NQ2r3_2r7D + 1] = { 8.390017524798316921170710533381568175665E-6L, 7.738148683730826286477254659973968763659E-4L, 2.541480810958665794368759558791634341779E-2L, @@ -617,7 +617,7 @@ static const long double Q2r3_2r7D[NQ2r3_2r7D + 1] = { Peak relative error 1.4e-36 0.4375 <= 1/x <= 0.5 */ #define NQ2_2r3N 9 -static const long double Q2_2r3N[NQ2_2r3N + 1] = { +static const _Float128 Q2_2r3N[NQ2_2r3N + 1] = { -5.552507516089087822166822364590806076174E-6L, -4.135067659799500521040944087433752970297E-4L, -1.059928728869218962607068840646564457980E-2L, @@ -630,7 +630,7 @@ static const long double Q2_2r3N[NQ2_2r3N + 1] = { -1.458550613639093752909985189067233504148E-3L, }; #define NQ2_2r3D 8 -static const long double Q2_2r3D[NQ2_2r3D + 1] = { +static const _Float128 Q2_2r3D[NQ2_2r3D + 1] = { 5.415024336507980465169023996403597916115E-5L, 4.179246497380453022046357404266022870788E-3L, 1.136306384261959483095442402929502368598E-1L, @@ -646,10 +646,10 @@ static const long double Q2_2r3D[NQ2_2r3D + 1] = { /* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */ -static long double -neval (long double x, const long double *p, int n) +static _Float128 +neval (_Float128 x, const _Float128 *p, int n) { - long double y; + _Float128 y; p += n; y = *p--; @@ -664,10 +664,10 @@ neval (long double x, const long double *p, int n) /* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */ -static long double -deval (long double x, const long double *p, int n) +static _Float128 +deval (_Float128 x, const _Float128 *p, int n) { - long double y; + _Float128 y; p += n; y = x + *p--; @@ -682,10 +682,10 @@ deval (long double x, const long double *p, int n) /* Bessel function of the first kind, order one. */ -long double -__ieee754_j1l (long double x) +_Float128 +__ieee754_j1l (_Float128 x) { - long double xx, xinv, z, p, q, c, s, cc, ss; + _Float128 xx, xinv, z, p, q, c, s, cc, ss; if (! isfinite (x)) { @@ -699,7 +699,7 @@ __ieee754_j1l (long double x) xx = fabsl (x); if (xx <= 0x1p-58L) { - long double ret = x * 0.5L; + _Float128 ret = x * 0.5L; math_check_force_underflow (ret); if (ret == 0) __set_errno (ERANGE); @@ -815,7 +815,7 @@ strong_alias (__ieee754_j1l, __j1l_finite) Peak relative error 6.2e-38 0 <= x <= 2 */ #define NY0_2N 7 -static long double Y0_2N[NY0_2N + 1] = { +static _Float128 Y0_2N[NY0_2N + 1] = { -6.804415404830253804408698161694720833249E19L, 1.805450517967019908027153056150465849237E19L, -8.065747497063694098810419456383006737312E17L, @@ -826,7 +826,7 @@ static long double Y0_2N[NY0_2N + 1] = { 9.541172044989995856117187515882879304461E5L, }; #define NY0_2D 7 -static long double Y0_2D[NY0_2D + 1] = { +static _Float128 Y0_2D[NY0_2D + 1] = { 3.470629591820267059538637461549677594549E20L, 4.120796439009916326855848107545425217219E18L, 2.477653371652018249749350657387030814542E16L, @@ -841,10 +841,10 @@ static long double Y0_2D[NY0_2D + 1] = { /* Bessel function of the second kind, order one. */ -long double -__ieee754_y1l (long double x) +_Float128 +__ieee754_y1l (_Float128 x) { - long double xx, xinv, z, p, q, c, s, cc, ss; + _Float128 xx, xinv, z, p, q, c, s, cc, ss; if (! isfinite (x)) { diff --git a/sysdeps/ieee754/ldbl-128/e_jnl.c b/sysdeps/ieee754/ldbl-128/e_jnl.c index 98669e6..1ff2a8f 100644 --- a/sysdeps/ieee754/ldbl-128/e_jnl.c +++ b/sysdeps/ieee754/ldbl-128/e_jnl.c @@ -61,20 +61,20 @@ #include #include -static const long double +static const _Float128 invsqrtpi = 5.6418958354775628694807945156077258584405E-1L, two = 2.0e0L, one = 1.0e0L, zero = 0.0L; -long double -__ieee754_jnl (int n, long double x) +_Float128 +__ieee754_jnl (int n, _Float128 x) { u_int32_t se; int32_t i, ix, sgn; - long double a, b, temp, di, ret; - long double z, w; + _Float128 a, b, temp, di, ret; + _Float128 z, w; ieee854_long_double_shape_type u; @@ -110,7 +110,7 @@ __ieee754_jnl (int n, long double x) SET_RESTORE_ROUNDL (FE_TONEAREST); if (x == 0.0L || ix >= 0x7fff0000) /* if x is 0 or inf */ return sgn == 1 ? -zero : zero; - else if ((long double) n <= x) + else if ((_Float128) n <= x) { /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */ if (ix >= 0x412D0000) @@ -131,8 +131,8 @@ __ieee754_jnl (int n, long double x) * 2 -s+c -c-s * 3 s+c c-s */ - long double s; - long double c; + _Float128 s; + _Float128 c; __sincosl (x, &s, &c); switch (n & 3) { @@ -158,7 +158,7 @@ __ieee754_jnl (int n, long double x) for (i = 1; i < n; i++) { temp = b; - b = b * ((long double) (i + i) / x) - a; /* avoid underflow */ + b = b * ((_Float128) (i + i) / x) - a; /* avoid underflow */ a = temp; } } @@ -178,7 +178,7 @@ __ieee754_jnl (int n, long double x) b = temp; for (a = one, i = 2; i <= n; i++) { - a *= (long double) i; /* a = n! */ + a *= (_Float128) i; /* a = n! */ b *= temp; /* b = (x/2)^n */ } b = b / a; @@ -215,11 +215,11 @@ __ieee754_jnl (int n, long double x) * When Q(k) > 1e17 good for quadruple */ /* determine k */ - long double t, v; - long double q0, q1, h, tmp; + _Float128 t, v; + _Float128 q0, q1, h, tmp; int32_t k, m; - w = (n + n) / (long double) x; - h = 2.0L / (long double) x; + w = (n + n) / (_Float128) x; + h = 2.0L / (_Float128) x; q0 = w; z = w + h; q1 = w * z - 1.0L; @@ -251,7 +251,7 @@ __ieee754_jnl (int n, long double x) if (tmp < 1.1356523406294143949491931077970765006170e+04L) { - for (i = n - 1, di = (long double) (i + i); i > 0; i--) + for (i = n - 1, di = (_Float128) (i + i); i > 0; i--) { temp = b; b *= di; @@ -262,7 +262,7 @@ __ieee754_jnl (int n, long double x) } else { - for (i = n - 1, di = (long double) (i + i); i > 0; i--) + for (i = n - 1, di = (_Float128) (i + i); i > 0; i--) { temp = b; b *= di; @@ -306,13 +306,13 @@ __ieee754_jnl (int n, long double x) } strong_alias (__ieee754_jnl, __jnl_finite) -long double -__ieee754_ynl (int n, long double x) +_Float128 +__ieee754_ynl (int n, _Float128 x) { u_int32_t se; int32_t i, ix; int32_t sign; - long double a, b, temp, ret; + _Float128 a, b, temp, ret; ieee854_long_double_shape_type u; u.value = x; @@ -367,8 +367,8 @@ __ieee754_ynl (int n, long double x) * 2 -s+c -c-s * 3 s+c c-s */ - long double s; - long double c; + _Float128 s; + _Float128 c; __sincosl (x, &s, &c); switch (n & 3) { @@ -397,7 +397,7 @@ __ieee754_ynl (int n, long double x) for (i = 1; i < n && se != 0xffff0000; i++) { temp = b; - b = ((long double) (i + i) / x) * b - a; + b = ((_Float128) (i + i) / x) * b - a; u.value = b; se = u.parts32.w0 & 0xffff0000; a = temp; diff --git a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c index 5b513ea..5a5e833 100644 --- a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c +++ b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c @@ -72,21 +72,21 @@ #include #include -static const long double PIL = 3.1415926535897932384626433832795028841972E0L; +static const _Float128 PIL = 3.1415926535897932384626433832795028841972E0L; #if LDBL_MANT_DIG == 106 -static const long double MAXLGM = 0x5.d53649e2d469dbc1f01e99fd66p+1012L; +static const _Float128 MAXLGM = 0x5.d53649e2d469dbc1f01e99fd66p+1012L; #else -static const long double MAXLGM = 1.0485738685148938358098967157129705071571E4928L; +static const _Float128 MAXLGM = 1.0485738685148938358098967157129705071571E4928L; #endif -static const long double one = 1.0L; -static const long double huge = LDBL_MAX; +static const _Float128 one = 1.0L; +static const _Float128 huge = LDBL_MAX; /* log gamma(x) = ( x - 0.5 ) * log(x) - x + LS2PI + 1/x P(1/x^2) 1/x <= 0.0741 (x >= 13.495...) Peak relative error 1.5e-36 */ -static const long double ls2pi = 9.1893853320467274178032973640561763986140E-1L; +static const _Float128 ls2pi = 9.1893853320467274178032973640561763986140E-1L; #define NRASY 12 -static const long double RASY[NRASY + 1] = +static const _Float128 RASY[NRASY + 1] = { 8.333333333333333333333333333310437112111E-2L, -2.777777777777777777777774789556228296902E-3L, @@ -108,10 +108,10 @@ static const long double RASY[NRASY + 1] = -0.5 <= x <= 0.5 12.5 <= x+13 <= 13.5 Peak relative error 1.1e-36 */ -static const long double lgam13a = 1.9987213134765625E1L; -static const long double lgam13b = 1.3608962611495173623870550785125024484248E-6L; +static const _Float128 lgam13a = 1.9987213134765625E1L; +static const _Float128 lgam13b = 1.3608962611495173623870550785125024484248E-6L; #define NRN13 7 -static const long double RN13[NRN13 + 1] = +static const _Float128 RN13[NRN13 + 1] = { 8.591478354823578150238226576156275285700E11L, 2.347931159756482741018258864137297157668E11L, @@ -123,7 +123,7 @@ static const long double RN13[NRN13 + 1] = 6.850783280018706668924952057996075215223E0L }; #define NRD13 6 -static const long double RD13[NRD13 + 1] = +static const _Float128 RD13[NRD13 + 1] = { 3.401225382297342302296607039352935541669E11L, 8.756765276918037910363513243563234551784E10L, @@ -140,10 +140,10 @@ static const long double RD13[NRD13 + 1] = -0.5 <= x <= 0.5 11.5 <= x+12 <= 12.5 Peak relative error 4.1e-36 */ -static const long double lgam12a = 1.75023040771484375E1L; -static const long double lgam12b = 3.7687254483392876529072161996717039575982E-6L; +static const _Float128 lgam12a = 1.75023040771484375E1L; +static const _Float128 lgam12b = 3.7687254483392876529072161996717039575982E-6L; #define NRN12 7 -static const long double RN12[NRN12 + 1] = +static const _Float128 RN12[NRN12 + 1] = { 4.709859662695606986110997348630997559137E11L, 1.398713878079497115037857470168777995230E11L, @@ -155,7 +155,7 @@ static const long double RN12[NRN12 + 1] = 6.769610657004672719224614163196946862747E0L }; #define NRD12 6 -static const long double RD12[NRD12 + 1] = +static const _Float128 RD12[NRD12 + 1] = { 1.928167007860968063912467318985802726613E11L, 5.383198282277806237247492369072266389233E10L, @@ -172,10 +172,10 @@ static const long double RD12[NRD12 + 1] = -0.5 <= x <= 0.5 10.5 <= x+11 <= 11.5 Peak relative error 1.8e-35 */ -static const long double lgam11a = 1.5104400634765625E1L; -static const long double lgam11b = 1.1938309890295225709329251070371882250744E-5L; +static const _Float128 lgam11a = 1.5104400634765625E1L; +static const _Float128 lgam11b = 1.1938309890295225709329251070371882250744E-5L; #define NRN11 7 -static const long double RN11[NRN11 + 1] = +static const _Float128 RN11[NRN11 + 1] = { 2.446960438029415837384622675816736622795E11L, 7.955444974446413315803799763901729640350E10L, @@ -187,7 +187,7 @@ static const long double RN11[NRN11 + 1] = 6.681356101133728289358838690666225691363E0L }; #define NRD11 6 -static const long double RD11[NRD11 + 1] = +static const _Float128 RD11[NRD11 + 1] = { 1.040483786179428590683912396379079477432E11L, 3.172251138489229497223696648369823779729E10L, @@ -204,10 +204,10 @@ static const long double RD11[NRD11 + 1] = -0.5 <= x <= 0.5 9.5 <= x+10 <= 10.5 Peak relative error 5.4e-37 */ -static const long double lgam10a = 1.280181884765625E1L; -static const long double lgam10b = 8.6324252196112077178745667061642811492557E-6L; +static const _Float128 lgam10a = 1.280181884765625E1L; +static const _Float128 lgam10b = 8.6324252196112077178745667061642811492557E-6L; #define NRN10 7 -static const long double RN10[NRN10 + 1] = +static const _Float128 RN10[NRN10 + 1] = { -1.239059737177249934158597996648808363783E14L, -4.725899566371458992365624673357356908719E13L, @@ -219,7 +219,7 @@ static const long double RN10[NRN10 + 1] = -2.350975266781548931856017239843273049384E4L }; #define NRD10 7 -static const long double RD10[NRD10 + 1] = +static const _Float128 RD10[NRD10 + 1] = { -5.502645997581822567468347817182347679552E13L, -1.970266640239849804162284805400136473801E13L, @@ -237,10 +237,10 @@ static const long double RD10[NRD10 + 1] = -0.5 <= x <= 0.5 8.5 <= x+9 <= 9.5 Peak relative error 3.6e-36 */ -static const long double lgam9a = 1.06045989990234375E1L; -static const long double lgam9b = 3.9037218127284172274007216547549861681400E-6L; +static const _Float128 lgam9a = 1.06045989990234375E1L; +static const _Float128 lgam9b = 3.9037218127284172274007216547549861681400E-6L; #define NRN9 7 -static const long double RN9[NRN9 + 1] = +static const _Float128 RN9[NRN9 + 1] = { -4.936332264202687973364500998984608306189E13L, -2.101372682623700967335206138517766274855E13L, @@ -252,7 +252,7 @@ static const long double RN9[NRN9 + 1] = -2.036280038903695980912289722995505277253E4L }; #define NRD9 7 -static const long double RD9[NRD9 + 1] = +static const _Float128 RD9[NRD9 + 1] = { -2.306006080437656357167128541231915480393E13L, -9.183606842453274924895648863832233799950E12L, @@ -270,10 +270,10 @@ static const long double RD9[NRD9 + 1] = -0.5 <= x <= 0.5 7.5 <= x+8 <= 8.5 Peak relative error 2.4e-37 */ -static const long double lgam8a = 8.525146484375E0L; -static const long double lgam8b = 1.4876690414300165531036347125050759667737E-5L; +static const _Float128 lgam8a = 8.525146484375E0L; +static const _Float128 lgam8b = 1.4876690414300165531036347125050759667737E-5L; #define NRN8 8 -static const long double RN8[NRN8 + 1] = +static const _Float128 RN8[NRN8 + 1] = { 6.600775438203423546565361176829139703289E11L, 3.406361267593790705240802723914281025800E11L, @@ -286,7 +286,7 @@ static const long double RN8[NRN8 + 1] = 6.596977510622195827183948478627058738034E0L }; #define NRD8 7 -static const long double RD8[NRD8 + 1] = +static const _Float128 RD8[NRD8 + 1] = { 3.274776546520735414638114828622673016920E11L, 1.581811207929065544043963828487733970107E11L, @@ -304,10 +304,10 @@ static const long double RD8[NRD8 + 1] = -0.5 <= x <= 0.5 6.5 <= x+7 <= 7.5 Peak relative error 3.2e-36 */ -static const long double lgam7a = 6.5792388916015625E0L; -static const long double lgam7b = 1.2320408538495060178292903945321122583007E-5L; +static const _Float128 lgam7a = 6.5792388916015625E0L; +static const _Float128 lgam7b = 1.2320408538495060178292903945321122583007E-5L; #define NRN7 8 -static const long double RN7[NRN7 + 1] = +static const _Float128 RN7[NRN7 + 1] = { 2.065019306969459407636744543358209942213E11L, 1.226919919023736909889724951708796532847E11L, @@ -320,7 +320,7 @@ static const long double RN7[NRN7 + 1] = 6.460280377802030953041566617300902020435E0L }; #define NRD7 7 -static const long double RD7[NRD7 + 1] = +static const _Float128 RD7[NRD7 + 1] = { 1.102646614598516998880874785339049304483E11L, 6.099297512712715445879759589407189290040E10L, @@ -338,10 +338,10 @@ static const long double RD7[NRD7 + 1] = -0.5 <= x <= 0.5 5.5 <= x+6 <= 6.5 Peak relative error 6.2e-37 */ -static const long double lgam6a = 4.7874908447265625E0L; -static const long double lgam6b = 8.9805548349424770093452324304839959231517E-7L; +static const _Float128 lgam6a = 4.7874908447265625E0L; +static const _Float128 lgam6b = 8.9805548349424770093452324304839959231517E-7L; #define NRN6 8 -static const long double RN6[NRN6 + 1] = +static const _Float128 RN6[NRN6 + 1] = { -3.538412754670746879119162116819571823643E13L, -2.613432593406849155765698121483394257148E13L, @@ -354,7 +354,7 @@ static const long double RN6[NRN6 + 1] = -1.576834867378554185210279285358586385266E4L }; #define NRD6 8 -static const long double RD6[NRD6 + 1] = +static const _Float128 RD6[NRD6 + 1] = { -2.073955870771283609792355579558899389085E13L, -1.421592856111673959642750863283919318175E13L, @@ -373,10 +373,10 @@ static const long double RD6[NRD6 + 1] = -0.5 <= x <= 0.5 4.5 <= x+5 <= 5.5 Peak relative error 3.4e-37 */ -static const long double lgam5a = 3.17803955078125E0L; -static const long double lgam5b = 1.4279566695619646941601297055408873990961E-5L; +static const _Float128 lgam5a = 3.17803955078125E0L; +static const _Float128 lgam5b = 1.4279566695619646941601297055408873990961E-5L; #define NRN5 9 -static const long double RN5[NRN5 + 1] = +static const _Float128 RN5[NRN5 + 1] = { 2.010952885441805899580403215533972172098E11L, 1.916132681242540921354921906708215338584E11L, @@ -390,7 +390,7 @@ static const long double RN5[NRN5 + 1] = 6.330318119566998299106803922739066556550E0L }; #define NRD5 8 -static const long double RD5[NRD5 + 1] = +static const _Float128 RD5[NRD5 + 1] = { 1.335189758138651840605141370223112376176E11L, 1.174130445739492885895466097516530211283E11L, @@ -409,10 +409,10 @@ static const long double RD5[NRD5 + 1] = -0.5 <= x <= 0.5 3.5 <= x+4 <= 4.5 Peak relative error 6.7e-37 */ -static const long double lgam4a = 1.791748046875E0L; -static const long double lgam4b = 1.1422353055000812477358380702272722990692E-5L; +static const _Float128 lgam4a = 1.791748046875E0L; +static const _Float128 lgam4b = 1.1422353055000812477358380702272722990692E-5L; #define NRN4 9 -static const long double RN4[NRN4 + 1] = +static const _Float128 RN4[NRN4 + 1] = { -1.026583408246155508572442242188887829208E13L, -1.306476685384622809290193031208776258809E13L, @@ -426,7 +426,7 @@ static const long double RN4[NRN4 + 1] = -1.180509051468390914200720003907727988201E4L }; #define NRD4 9 -static const long double RD4[NRD4 + 1] = +static const _Float128 RD4[NRD4 + 1] = { -8.172669122056002077809119378047536240889E12L, -9.477592426087986751343695251801814226960E12L, @@ -446,11 +446,11 @@ static const long double RD4[NRD4 + 1] = -0.25 <= x <= 0.5 2.75 <= x+3 <= 3.5 Peak relative error 6.0e-37 */ -static const long double lgam3a = 6.93145751953125E-1L; -static const long double lgam3b = 1.4286068203094172321214581765680755001344E-6L; +static const _Float128 lgam3a = 6.93145751953125E-1L; +static const _Float128 lgam3b = 1.4286068203094172321214581765680755001344E-6L; #define NRN3 9 -static const long double RN3[NRN3 + 1] = +static const _Float128 RN3[NRN3 + 1] = { -4.813901815114776281494823863935820876670E11L, -8.425592975288250400493910291066881992620E11L, @@ -464,7 +464,7 @@ static const long double RN3[NRN3 + 1] = -8.333374463411801009783402800801201603736E3L }; #define NRD3 9 -static const long double RD3[NRD3 + 1] = +static const _Float128 RD3[NRD3 + 1] = { -5.216713843111675050627304523368029262450E11L, -8.014292925418308759369583419234079164391E11L, @@ -483,10 +483,10 @@ static const long double RD3[NRD3 + 1] = /* log gamma(x+2.5) = log gamma(2.5) + x P(x)/Q(x) -0.125 <= x <= 0.25 2.375 <= x+2.5 <= 2.75 */ -static const long double lgam2r5a = 2.8466796875E-1L; -static const long double lgam2r5b = 1.4901722919159632494669682701924320137696E-5L; +static const _Float128 lgam2r5a = 2.8466796875E-1L; +static const _Float128 lgam2r5b = 1.4901722919159632494669682701924320137696E-5L; #define NRN2r5 8 -static const long double RN2r5[NRN2r5 + 1] = +static const _Float128 RN2r5[NRN2r5 + 1] = { -4.676454313888335499356699817678862233205E9L, -9.361888347911187924389905984624216340639E9L, @@ -499,7 +499,7 @@ static const long double RN2r5[NRN2r5 + 1] = -4.717341584067827676530426007495274711306E3L }; #define NRD2r5 8 -static const long double RD2r5[NRD2r5 + 1] = +static const _Float128 RD2r5[NRD2r5 + 1] = { -6.650657966618993679456019224416926875619E9L, -1.099511409330635807899718829033488771623E10L, @@ -519,7 +519,7 @@ static const long double RD2r5[NRD2r5 + 1] = 1.875 <= x+2 <= 2.375 Peak relative error 4.6e-36 */ #define NRN2 9 -static const long double RN2[NRN2 + 1] = +static const _Float128 RN2[NRN2 + 1] = { -3.716661929737318153526921358113793421524E9L, -1.138816715030710406922819131397532331321E10L, @@ -533,7 +533,7 @@ static const long double RN2[NRN2 + 1] = -4.778761333044147141559311805999540765612E3L }; #define NRD2 9 -static const long double RD2[NRD2 + 1] = +static const _Float128 RD2[NRD2 + 1] = { -8.790916836764308497770359421351673950111E9L, -2.023108608053212516399197678553737477486E10L, @@ -553,10 +553,10 @@ static const long double RD2[NRD2 + 1] = -0.125 <= x <= +0.125 1.625 <= x+1.75 <= 1.875 Peak relative error 9.2e-37 */ -static const long double lgam1r75a = -8.441162109375E-2L; -static const long double lgam1r75b = 1.0500073264444042213965868602268256157604E-5L; +static const _Float128 lgam1r75a = -8.441162109375E-2L; +static const _Float128 lgam1r75b = 1.0500073264444042213965868602268256157604E-5L; #define NRN1r75 8 -static const long double RN1r75[NRN1r75 + 1] = +static const _Float128 RN1r75[NRN1r75 + 1] = { -5.221061693929833937710891646275798251513E7L, -2.052466337474314812817883030472496436993E8L, @@ -569,7 +569,7 @@ static const long double RN1r75[NRN1r75 + 1] = -2.698453601378319296159355612094598695530E3L }; #define NRD1r75 8 -static const long double RD1r75[NRD1r75 + 1] = +static const _Float128 RD1r75[NRD1r75 + 1] = { -2.109754689501705828789976311354395393605E8L, -5.036651829232895725959911504899241062286E8L, @@ -588,12 +588,12 @@ static const long double RD1r75[NRD1r75 + 1] = -0.0867 <= x <= +0.1634 1.374932... <= x+x0 <= 1.625032... Peak relative error 4.0e-36 */ -static const long double x0a = 1.4616241455078125L; -static const long double x0b = 7.9994605498412626595423257213002588621246E-6L; -static const long double y0a = -1.21490478515625E-1L; -static const long double y0b = 4.1879797753919044854428223084178486438269E-6L; +static const _Float128 x0a = 1.4616241455078125L; +static const _Float128 x0b = 7.9994605498412626595423257213002588621246E-6L; +static const _Float128 y0a = -1.21490478515625E-1L; +static const _Float128 y0b = 4.1879797753919044854428223084178486438269E-6L; #define NRN1r5 8 -static const long double RN1r5[NRN1r5 + 1] = +static const _Float128 RN1r5[NRN1r5 + 1] = { 6.827103657233705798067415468881313128066E5L, 1.910041815932269464714909706705242148108E6L, @@ -606,7 +606,7 @@ static const long double RN1r5[NRN1r5 + 1] = 5.040631576303952022968949605613514584950E0L }; #define NRD1r5 8 -static const long double RD1r5[NRD1r5 + 1] = +static const _Float128 RD1r5[NRD1r5 + 1] = { 1.411036368843183477558773688484699813355E6L, 4.378121767236251950226362443134306184849E6L, @@ -625,10 +625,10 @@ static const long double RD1r5[NRD1r5 + 1] = -.125 <= x <= +.125 1.125 <= x+1.25 <= 1.375 Peak relative error = 4.9e-36 */ -static const long double lgam1r25a = -9.82818603515625E-2L; -static const long double lgam1r25b = 1.0023929749338536146197303364159774377296E-5L; +static const _Float128 lgam1r25a = -9.82818603515625E-2L; +static const _Float128 lgam1r25b = 1.0023929749338536146197303364159774377296E-5L; #define NRN1r25 9 -static const long double RN1r25[NRN1r25 + 1] = +static const _Float128 RN1r25[NRN1r25 + 1] = { -9.054787275312026472896002240379580536760E4L, -8.685076892989927640126560802094680794471E4L, @@ -642,7 +642,7 @@ static const long double RN1r25[NRN1r25 + 1] = 4.907821957946273805080625052510832015792E0L }; #define NRD1r25 8 -static const long double RD1r25[NRD1r25 + 1] = +static const _Float128 RD1r25[NRD1r25 + 1] = { 3.980939377333448005389084785896660309000E5L, 1.429634893085231519692365775184490465542E6L, @@ -662,7 +662,7 @@ static const long double RD1r25[NRD1r25 + 1] = 1.0 <= x+1 <= 1.125 Peak relative error 1.1e-35 */ #define NRN1 8 -static const long double RN1[NRN1 + 1] = +static const _Float128 RN1[NRN1 + 1] = { -9.987560186094800756471055681088744738818E3L, -2.506039379419574361949680225279376329742E4L, @@ -675,7 +675,7 @@ static const long double RN1[NRN1 + 1] = 4.516830313569454663374271993200291219855E0L }; #define NRD1 7 -static const long double RD1[NRD1 + 1] = +static const _Float128 RD1[NRD1 + 1] = { 1.730299573175751778863269333703788214547E4L, 6.807080914851328611903744668028014678148E4L, @@ -694,7 +694,7 @@ static const long double RD1[NRD1 + 1] = 0.875 <= x+1 <= 1.0 Peak relative error 7.0e-37 */ #define NRNr9 8 -static const long double RNr9[NRNr9 + 1] = +static const _Float128 RNr9[NRNr9 + 1] = { 4.441379198241760069548832023257571176884E5L, 1.273072988367176540909122090089580368732E6L, @@ -707,7 +707,7 @@ static const long double RNr9[NRNr9 + 1] = -1.032901669542994124131223797515913955938E3L, }; #define NRDr9 8 -static const long double RDr9[NRDr9 + 1] = +static const _Float128 RDr9[NRDr9 + 1] = { -7.694488331323118759486182246005193998007E5L, -3.301918855321234414232308938454112213751E6L, @@ -724,10 +724,10 @@ static const long double RDr9[NRDr9 + 1] = /* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */ -static long double -neval (long double x, const long double *p, int n) +static _Float128 +neval (_Float128 x, const _Float128 *p, int n) { - long double y; + _Float128 y; p += n; y = *p--; @@ -742,10 +742,10 @@ neval (long double x, const long double *p, int n) /* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */ -static long double -deval (long double x, const long double *p, int n) +static _Float128 +deval (_Float128 x, const _Float128 *p, int n) { - long double y; + _Float128 y; p += n; y = x + *p--; @@ -758,10 +758,10 @@ deval (long double x, const long double *p, int n) } -long double -__ieee754_lgammal_r (long double x, int *signgamp) +_Float128 +__ieee754_lgammal_r (_Float128 x, int *signgamp) { - long double p, q, w, z, nx; + _Float128 p, q, w, z, nx; int i, nn; *signgamp = 1; @@ -783,7 +783,7 @@ __ieee754_lgammal_r (long double x, int *signgamp) p = __floorl (q); if (p == q) return (one / (p - p)); - long double halfp = p * 0.5L; + _Float128 halfp = p * 0.5L; if (halfp == __floorl (halfp)) *signgamp = -1; else diff --git a/sysdeps/ieee754/ldbl-128/e_log10l.c b/sysdeps/ieee754/ldbl-128/e_log10l.c index 618255f..99d7caf 100644 --- a/sysdeps/ieee754/ldbl-128/e_log10l.c +++ b/sysdeps/ieee754/ldbl-128/e_log10l.c @@ -68,7 +68,7 @@ * Theoretical peak relative error = 5.3e-37, * relative peak error spread = 2.3e-14 */ -static const long double P[13] = +static const _Float128 P[13] = { 1.313572404063446165910279910527789794488E4L, 7.771154681358524243729929227226708890930E4L, @@ -84,7 +84,7 @@ static const long double P[13] = 4.998469661968096229986658302195402690910E-1L, 1.538612243596254322971797716843006400388E-6L }; -static const long double Q[12] = +static const _Float128 Q[12] = { 3.940717212190338497730839731583397586124E4L, 2.626900195321832660448791748036714883242E5L, @@ -107,7 +107,7 @@ static const long double Q[12] = * Theoretical peak relative error = 1.1e-35, * relative peak error spread 1.1e-9 */ -static const long double R[6] = +static const _Float128 R[6] = { 1.418134209872192732479751274970992665513E5L, -8.977257995689735303686582344659576526998E4L, @@ -116,7 +116,7 @@ static const long double R[6] = 8.057002716646055371965756206836056074715E1L, -8.828896441624934385266096344596648080902E-1L }; -static const long double S[6] = +static const _Float128 S[6] = { 1.701761051846631278975701529965589676574E6L, -1.332535117259762928288745111081235577029E6L, @@ -127,7 +127,7 @@ static const long double S[6] = /* 1.000000000000000000000000000000000000000E0L, */ }; -static const long double +static const _Float128 /* log10(2) */ L102A = 0.3125L, L102B = -1.14700043360188047862611052755069732318101185E-2L, @@ -141,10 +141,10 @@ SQRTH = 7.071067811865475244008443621048490392848359E-1L; /* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */ -static long double -neval (long double x, const long double *p, int n) +static _Float128 +neval (_Float128 x, const _Float128 *p, int n) { - long double y; + _Float128 y; p += n; y = *p--; @@ -159,10 +159,10 @@ neval (long double x, const long double *p, int n) /* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */ -static long double -deval (long double x, const long double *p, int n) +static _Float128 +deval (_Float128 x, const _Float128 *p, int n) { - long double y; + _Float128 y; p += n; y = x + *p--; @@ -176,11 +176,11 @@ deval (long double x, const long double *p, int n) -long double -__ieee754_log10l (long double x) +_Float128 +__ieee754_log10l (_Float128 x) { - long double z; - long double y; + _Float128 z; + _Float128 y; int e; int64_t hx, lx; diff --git a/sysdeps/ieee754/ldbl-128/e_log2l.c b/sysdeps/ieee754/ldbl-128/e_log2l.c index 6b1faa0..c83ec4c 100644 --- a/sysdeps/ieee754/ldbl-128/e_log2l.c +++ b/sysdeps/ieee754/ldbl-128/e_log2l.c @@ -67,7 +67,7 @@ * Theoretical peak relative error = 5.3e-37, * relative peak error spread = 2.3e-14 */ -static const long double P[13] = +static const _Float128 P[13] = { 1.313572404063446165910279910527789794488E4L, 7.771154681358524243729929227226708890930E4L, @@ -83,7 +83,7 @@ static const long double P[13] = 4.998469661968096229986658302195402690910E-1L, 1.538612243596254322971797716843006400388E-6L }; -static const long double Q[12] = +static const _Float128 Q[12] = { 3.940717212190338497730839731583397586124E4L, 2.626900195321832660448791748036714883242E5L, @@ -106,7 +106,7 @@ static const long double Q[12] = * Theoretical peak relative error = 1.1e-35, * relative peak error spread 1.1e-9 */ -static const long double R[6] = +static const _Float128 R[6] = { 1.418134209872192732479751274970992665513E5L, -8.977257995689735303686582344659576526998E4L, @@ -115,7 +115,7 @@ static const long double R[6] = 8.057002716646055371965756206836056074715E1L, -8.828896441624934385266096344596648080902E-1L }; -static const long double S[6] = +static const _Float128 S[6] = { 1.701761051846631278975701529965589676574E6L, -1.332535117259762928288745111081235577029E6L, @@ -126,7 +126,7 @@ static const long double S[6] = /* 1.000000000000000000000000000000000000000E0L, */ }; -static const long double +static const _Float128 /* log2(e) - 1 */ LOG2EA = 4.4269504088896340735992468100189213742664595E-1L, /* sqrt(2)/2 */ @@ -135,10 +135,10 @@ SQRTH = 7.071067811865475244008443621048490392848359E-1L; /* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */ -static long double -neval (long double x, const long double *p, int n) +static _Float128 +neval (_Float128 x, const _Float128 *p, int n) { - long double y; + _Float128 y; p += n; y = *p--; @@ -153,10 +153,10 @@ neval (long double x, const long double *p, int n) /* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */ -static long double -deval (long double x, const long double *p, int n) +static _Float128 +deval (_Float128 x, const _Float128 *p, int n) { - long double y; + _Float128 y; p += n; y = x + *p--; @@ -170,11 +170,11 @@ deval (long double x, const long double *p, int n) -long double -__ieee754_log2l (long double x) +_Float128 +__ieee754_log2l (_Float128 x) { - long double z; - long double y; + _Float128 z; + _Float128 y; int e; int64_t hx, lx; diff --git a/sysdeps/ieee754/ldbl-128/e_logl.c b/sysdeps/ieee754/ldbl-128/e_logl.c index cb43816..030918d 100644 --- a/sysdeps/ieee754/ldbl-128/e_logl.c +++ b/sysdeps/ieee754/ldbl-128/e_logl.c @@ -63,7 +63,7 @@ /* log(1+x) = x - .5 x^2 + x^3 l(x) -.0078125 <= x <= +.0078125 peak relative error 1.2e-37 */ -static const long double +static const _Float128 l3 = 3.333333333333333333333333333333336096926E-1L, l4 = -2.499999999999999999999999999486853077002E-1L, l5 = 1.999999999999999999999999998515277861905E-1L, @@ -81,7 +81,7 @@ l15 = 6.668057591071739754844678883223432347481E-2L; /* Lookup table of ln(t) - (t-1) t = 0.5 + (k+26)/128) k = 0, ..., 91 */ -static const long double logtbl[92] = { +static const _Float128 logtbl[92] = { -5.5345593589352099112142921677820359632418E-2L, -5.2108257402767124761784665198737642086148E-2L, -4.8991686870576856279407775480686721935120E-2L, @@ -178,14 +178,14 @@ static const long double logtbl[92] = { }; /* ln(2) = ln2a + ln2b with extended precision. */ -static const long double +static const _Float128 ln2a = 6.93145751953125e-1L, ln2b = 1.4286068203094172321214581765680755001344E-6L; -long double -__ieee754_logl(long double x) +_Float128 +__ieee754_logl(_Float128 x) { - long double z, y, w; + _Float128 z, y, w; ieee854_long_double_shape_type u, t; unsigned int m; int k, e; diff --git a/sysdeps/ieee754/ldbl-128/e_powl.c b/sysdeps/ieee754/ldbl-128/e_powl.c index 7f3037f..b090ebd 100644 --- a/sysdeps/ieee754/ldbl-128/e_powl.c +++ b/sysdeps/ieee754/ldbl-128/e_powl.c @@ -67,24 +67,24 @@ #include #include -static const long double bp[] = { +static const _Float128 bp[] = { 1.0L, 1.5L, }; /* log_2(1.5) */ -static const long double dp_h[] = { +static const _Float128 dp_h[] = { 0.0, 5.8496250072115607565592654282227158546448E-1L }; /* Low part of log_2(1.5) */ -static const long double dp_l[] = { +static const _Float128 dp_l[] = { 0.0, 1.0579781240112554492329533686862998106046E-16L }; -static const long double zero = 0.0L, +static const _Float128 zero = 0.0L, one = 1.0L, two = 2.0L, two113 = 1.0384593717069655257060992658440192E34L, @@ -95,7 +95,7 @@ static const long double zero = 0.0L, z = (x-1)/(x+1) 1 <= x <= 1.25 Peak relative error 2.3e-37 */ -static const long double LN[] = +static const _Float128 LN[] = { -3.0779177200290054398792536829702930623200E1L, 6.5135778082209159921251824580292116201640E1L, @@ -103,7 +103,7 @@ static const long double LN[] = 1.2510208195629420304615674658258363295208E1L, -9.9266909031921425609179910128531667336670E-1L }; -static const long double LD[] = +static const _Float128 LD[] = { -5.129862866715009066465422805058933131960E1L, 1.452015077564081884387441590064272782044E2L, @@ -116,7 +116,7 @@ static const long double LD[] = /* exp(x) = 1 + x - x / (1 - 2 / (x - x^2 R(x^2))) 0 <= x <= 0.5 Peak relative error 5.7e-38 */ -static const long double PN[] = +static const _Float128 PN[] = { 5.081801691915377692446852383385968225675E8L, 9.360895299872484512023336636427675327355E6L, @@ -124,7 +124,7 @@ static const long double PN[] = 5.201006511142748908655720086041570288182E1L, 9.088368420359444263703202925095675982530E-3L, }; -static const long double PD[] = +static const _Float128 PD[] = { 3.049081015149226615468111430031590411682E9L, 1.069833887183886839966085436512368982758E8L, @@ -133,7 +133,7 @@ static const long double PD[] = /* 1.0E0 */ }; -static const long double +static const _Float128 /* ln 2 */ lg2 = 6.9314718055994530941723212145817656807550E-1L, lg2_h = 6.9314718055994528622676398299518041312695E-1L, @@ -144,12 +144,12 @@ static const long double cp_h = 9.6179669392597555432899980587535537779331E-1L, cp_l = 5.0577616648125906047157785230014751039424E-17L; -long double -__ieee754_powl (long double x, long double y) +_Float128 +__ieee754_powl (_Float128 x, _Float128 y) { - long double z, ax, z_h, z_l, p_h, p_l; - long double y1, t1, t2, r, s, sgn, t, u, v, w; - long double s2, s_h, s_l, t_h, t_l, ay; + _Float128 z, ax, z_h, z_l, p_h, p_l; + _Float128 y1, t1, t2, r, s, sgn, t, u, v, w; + _Float128 s2, s_h, s_l, t_h, t_l, ay; int32_t i, j, k, yisint, n; u_int32_t ix, iy; int32_t hx, hy; @@ -363,7 +363,7 @@ __ieee754_powl (long double x, long double y) z_h = cp_h * p_h; /* cp_h+cp_l = 2/(3*log2) */ z_l = cp_l * p_h + p_l * cp + dp_l[k]; /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */ - t = (long double) n; + t = (_Float128) n; t1 = (((z_h + z_l) + dp_h[k]) + t); o.value = t1; o.parts32.w3 = 0; @@ -437,7 +437,7 @@ __ieee754_powl (long double x, long double y) if ((j >> 16) <= 0) { z = __scalbnl (z, n); /* subnormal output */ - long double force_underflow = z * z; + _Float128 force_underflow = z * z; math_force_eval (force_underflow); } else diff --git a/sysdeps/ieee754/ldbl-128/e_rem_pio2l.c b/sysdeps/ieee754/ldbl-128/e_rem_pio2l.c index 101a4c9..4a580b3 100644 --- a/sysdeps/ieee754/ldbl-128/e_rem_pio2l.c +++ b/sysdeps/ieee754/ldbl-128/e_rem_pio2l.c @@ -183,7 +183,7 @@ static const int32_t two_over_pi[] = { 0x7b7b89, 0x483d38, }; -static const long double c[] = { +static const _Float128 c[] = { /* 113 bits of pi/2 */ #define PI_2_1 c[0] 0x1.921fb54442d18469898cc51701b8p+0L, @@ -193,9 +193,9 @@ static const long double c[] = { 0x3.9a252049c1114cf98e804177d4c8p-116L, }; -int32_t __ieee754_rem_pio2l(long double x, long double *y) +int32_t __ieee754_rem_pio2l(_Float128 x, _Float128 *y) { - long double z, w, t; + _Float128 z, w, t; double tx[8]; int64_t exp, n, ix, hx; u_int64_t lx; @@ -255,8 +255,8 @@ int32_t __ieee754_rem_pio2l(long double x, long double *y) /* The result is now stored in 3 double values, we need to convert it into two long double values. */ - t = (long double) tx [6] + (long double) tx [7]; - w = (long double) tx [5]; + t = (_Float128) tx [6] + (_Float128) tx [7]; + w = (_Float128) tx [5]; if (hx >= 0) { diff --git a/sysdeps/ieee754/ldbl-128/e_remainderl.c b/sysdeps/ieee754/ldbl-128/e_remainderl.c index 88df6f5..b8ae3ff 100644 --- a/sysdeps/ieee754/ldbl-128/e_remainderl.c +++ b/sysdeps/ieee754/ldbl-128/e_remainderl.c @@ -24,15 +24,15 @@ #include #include -static const long double zero = 0.0L; +static const _Float128 zero = 0.0L; -long double -__ieee754_remainderl(long double x, long double p) +_Float128 +__ieee754_remainderl(_Float128 x, _Float128 p) { int64_t hx,hp; u_int64_t sx,lx,lp; - long double p_half; + _Float128 p_half; GET_LDOUBLE_WORDS64(hx,lx,x); GET_LDOUBLE_WORDS64(hp,lp,p); diff --git a/sysdeps/ieee754/ldbl-128/e_sinhl.c b/sysdeps/ieee754/ldbl-128/e_sinhl.c index 11974a3..886d803 100644 --- a/sysdeps/ieee754/ldbl-128/e_sinhl.c +++ b/sysdeps/ieee754/ldbl-128/e_sinhl.c @@ -57,13 +57,13 @@ #include #include -static const long double one = 1.0, shuge = 1.0e4931L, +static const _Float128 one = 1.0, shuge = 1.0e4931L, ovf_thresh = 1.1357216553474703894801348310092223067821E4L; -long double -__ieee754_sinhl (long double x) +_Float128 +__ieee754_sinhl (_Float128 x) { - long double t, w, h; + _Float128 t, w, h; u_int32_t jx, ix; ieee854_long_double_shape_type u; diff --git a/sysdeps/ieee754/ldbl-128/gamma_productl.c b/sysdeps/ieee754/ldbl-128/gamma_productl.c index 8ad0452..c4ddf8a 100644 --- a/sysdeps/ieee754/ldbl-128/gamma_productl.c +++ b/sysdeps/ieee754/ldbl-128/gamma_productl.c @@ -28,16 +28,16 @@ X is small enough that factors quadratic in it can be neglected. */ -long double -__gamma_productl (long double x, long double x_eps, int n, long double *eps) +_Float128 +__gamma_productl (_Float128 x, _Float128 x_eps, int n, _Float128 *eps) { SET_RESTORE_ROUNDL (FE_TONEAREST); - long double ret = x; + _Float128 ret = x; *eps = x_eps / x; for (int i = 1; i < n; i++) { *eps += x_eps / (x + i); - long double lo; + _Float128 lo; mul_splitl (&ret, &lo, ret, x + i); *eps += lo / ret; } diff --git a/sysdeps/ieee754/ldbl-128/k_cosl.c b/sysdeps/ieee754/ldbl-128/k_cosl.c index 3985b12..8863d2c 100644 --- a/sysdeps/ieee754/ldbl-128/k_cosl.c +++ b/sysdeps/ieee754/ldbl-128/k_cosl.c @@ -20,7 +20,7 @@ #include #include -static const long double c[] = { +static const _Float128 c[] = { #define ONE c[0] 1.00000000000000000000000000000000000E+00L, /* 3fff0000000000000000000000000000 */ @@ -74,12 +74,12 @@ static const long double c[] = { #define SINCOSL_COS_LO 1 #define SINCOSL_SIN_HI 2 #define SINCOSL_SIN_LO 3 -extern const long double __sincosl_table[]; +extern const _Float128 __sincosl_table[]; -long double -__kernel_cosl(long double x, long double y) +_Float128 +__kernel_cosl(_Float128 x, _Float128 y) { - long double h, l, z, sin_l, cos_l_m1; + _Float128 h, l, z, sin_l, cos_l_m1; int64_t ix; u_int32_t tix, hix, index; GET_LDOUBLE_MSW64 (ix, x); diff --git a/sysdeps/ieee754/ldbl-128/k_sincosl.c b/sysdeps/ieee754/ldbl-128/k_sincosl.c index 404df35..2a28733 100644 --- a/sysdeps/ieee754/ldbl-128/k_sincosl.c +++ b/sysdeps/ieee754/ldbl-128/k_sincosl.c @@ -21,7 +21,7 @@ #include #include -static const long double c[] = { +static const _Float128 c[] = { #define ONE c[0] 1.00000000000000000000000000000000000E+00L, /* 3fff0000000000000000000000000000 */ @@ -94,12 +94,12 @@ static const long double c[] = { #define SINCOSL_COS_LO 1 #define SINCOSL_SIN_HI 2 #define SINCOSL_SIN_LO 3 -extern const long double __sincosl_table[]; +extern const _Float128 __sincosl_table[]; void -__kernel_sincosl(long double x, long double y, long double *sinx, long double *cosx, int iy) +__kernel_sincosl(_Float128 x, _Float128 y, _Float128 *sinx, _Float128 *cosx, int iy) { - long double h, l, z, sin_l, cos_l_m1; + _Float128 h, l, z, sin_l, cos_l_m1; int64_t ix; u_int32_t tix, hix, index; GET_LDOUBLE_MSW64 (ix, x); diff --git a/sysdeps/ieee754/ldbl-128/k_sinl.c b/sysdeps/ieee754/ldbl-128/k_sinl.c index 6290b17..e49d869 100644 --- a/sysdeps/ieee754/ldbl-128/k_sinl.c +++ b/sysdeps/ieee754/ldbl-128/k_sinl.c @@ -21,7 +21,7 @@ #include #include -static const long double c[] = { +static const _Float128 c[] = { #define ONE c[0] 1.00000000000000000000000000000000000E+00L, /* 3fff0000000000000000000000000000 */ @@ -75,12 +75,12 @@ static const long double c[] = { #define SINCOSL_COS_LO 1 #define SINCOSL_SIN_HI 2 #define SINCOSL_SIN_LO 3 -extern const long double __sincosl_table[]; +extern const _Float128 __sincosl_table[]; -long double -__kernel_sinl(long double x, long double y, int iy) +_Float128 +__kernel_sinl(_Float128 x, _Float128 y, int iy) { - long double h, l, z, sin_l, cos_l_m1; + _Float128 h, l, z, sin_l, cos_l_m1; int64_t ix; u_int32_t tix, hix, index; GET_LDOUBLE_MSW64 (ix, x); diff --git a/sysdeps/ieee754/ldbl-128/k_tanl.c b/sysdeps/ieee754/ldbl-128/k_tanl.c index cd2bbf5..3a16e09 100644 --- a/sysdeps/ieee754/ldbl-128/k_tanl.c +++ b/sysdeps/ieee754/ldbl-128/k_tanl.c @@ -60,7 +60,7 @@ #include #include #include -static const long double +static const _Float128 one = 1.0L, pio4hi = 7.8539816339744830961566084581987569936977E-1L, pio4lo = 2.1679525325309452561992610065108379921906E-35L, @@ -83,10 +83,10 @@ static const long double /* 1.000000000000000000000000000000000000000E0 */ -long double -__kernel_tanl (long double x, long double y, int iy) +_Float128 +__kernel_tanl (_Float128 x, _Float128 y, int iy) { - long double z, r, v, w, s; + _Float128 z, r, v, w, s; int32_t ix, sign; ieee854_long_double_shape_type u, u1; @@ -134,7 +134,7 @@ __kernel_tanl (long double x, long double y, int iy) w = x + r; if (ix >= 0x3ffe5942) { - v = (long double) iy; + v = (_Float128) iy; w = (v - 2.0 * (x - (w * w / (w + v) - r))); /* SIGN is set for arguments that reach this code, but not otherwise, resulting in warnings that it may be used diff --git a/sysdeps/ieee754/ldbl-128/lgamma_negl.c b/sysdeps/ieee754/ldbl-128/lgamma_negl.c index df46199..a624fc1 100644 --- a/sysdeps/ieee754/ldbl-128/lgamma_negl.c +++ b/sysdeps/ieee754/ldbl-128/lgamma_negl.c @@ -20,7 +20,7 @@ #include #include -static const long double lgamma_zeros[][2] = +static const _Float128 lgamma_zeros[][2] = { { -0x2.74ff92c01f0d82abec9f315f1a08p+0L, 0xe.d3ccb7fb2658634a2b9f6b2ba81p-116L }, { -0x2.bf6821437b20197995a4b4641eaep+0L, -0xb.f4b00b4829f961e428533e6ad048p-116L }, @@ -120,14 +120,14 @@ static const long double lgamma_zeros[][2] = { -0x3.2p+4L, 0x3.766dedc259af040be140a68a6c04p-216L }, }; -static const long double e_hi = 0x2.b7e151628aed2a6abf7158809cf4p+0L; -static const long double e_lo = 0xf.3c762e7160f38b4da56a784d9048p-116L; +static const _Float128 e_hi = 0x2.b7e151628aed2a6abf7158809cf4p+0L; +static const _Float128 e_lo = 0xf.3c762e7160f38b4da56a784d9048p-116L; /* Coefficients B_2k / 2k(2k-1) of x^-(2k-1) in Stirling's approximation to lgamma function. */ -static const long double lgamma_coeff[] = +static const _Float128 lgamma_coeff[] = { 0x1.5555555555555555555555555555p-4L, -0xb.60b60b60b60b60b60b60b60b60b8p-12L, @@ -166,7 +166,7 @@ static const long double lgamma_coeff[] = polynomial is expressed in terms of x-xm, where xm is the midpoint of the interval for which the polynomial applies. */ -static const long double poly_coeff[] = +static const _Float128 poly_coeff[] = { /* Interval [-2.125, -2] (polynomial degree 23). */ -0x1.0b71c5c54d42eb6c17f30b7aa8f5p+0L, @@ -412,8 +412,8 @@ static const size_t poly_end[] = /* Compute sin (pi * X) for -0.25 <= X <= 0.5. */ -static long double -lg_sinpi (long double x) +static _Float128 +lg_sinpi (_Float128 x) { if (x <= 0.25L) return __sinl (M_PIl * x); @@ -423,8 +423,8 @@ lg_sinpi (long double x) /* Compute cos (pi * X) for -0.25 <= X <= 0.5. */ -static long double -lg_cospi (long double x) +static _Float128 +lg_cospi (_Float128 x) { if (x <= 0.25L) return __cosl (M_PIl * x); @@ -434,8 +434,8 @@ lg_cospi (long double x) /* Compute cot (pi * X) for -0.25 <= X <= 0.5. */ -static long double -lg_cotpi (long double x) +static _Float128 +lg_cotpi (_Float128 x) { return lg_cospi (x) / lg_sinpi (x); } @@ -443,34 +443,34 @@ lg_cotpi (long double x) /* Compute lgamma of a negative argument -50 < X < -2, setting *SIGNGAMP accordingly. */ -long double -__lgamma_negl (long double x, int *signgamp) +_Float128 +__lgamma_negl (_Float128 x, int *signgamp) { /* Determine the half-integer region X lies in, handle exact integers and determine the sign of the result. */ int i = __floorl (-2 * x); if ((i & 1) == 0 && i == -2 * x) return 1.0L / 0.0L; - long double xn = ((i & 1) == 0 ? -i / 2 : (-i - 1) / 2); + _Float128 xn = ((i & 1) == 0 ? -i / 2 : (-i - 1) / 2); i -= 4; *signgamp = ((i & 2) == 0 ? -1 : 1); SET_RESTORE_ROUNDL (FE_TONEAREST); /* Expand around the zero X0 = X0_HI + X0_LO. */ - long double x0_hi = lgamma_zeros[i][0], x0_lo = lgamma_zeros[i][1]; - long double xdiff = x - x0_hi - x0_lo; + _Float128 x0_hi = lgamma_zeros[i][0], x0_lo = lgamma_zeros[i][1]; + _Float128 xdiff = x - x0_hi - x0_lo; /* For arguments in the range -3 to -2, use polynomial approximations to an adjusted version of the gamma function. */ if (i < 2) { int j = __floorl (-8 * x) - 16; - long double xm = (-33 - 2 * j) * 0.0625L; - long double x_adj = x - xm; + _Float128 xm = (-33 - 2 * j) * 0.0625L; + _Float128 x_adj = x - xm; size_t deg = poly_deg[j]; size_t end = poly_end[j]; - long double g = poly_coeff[end]; + _Float128 g = poly_coeff[end]; for (size_t j = 1; j <= deg; j++) g = g * x_adj + poly_coeff[end - j]; return __log1pl (g * xdiff / (x - xn)); @@ -478,8 +478,8 @@ __lgamma_negl (long double x, int *signgamp) /* The result we want is log (sinpi (X0) / sinpi (X)) + log (gamma (1 - X0) / gamma (1 - X)). */ - long double x_idiff = fabsl (xn - x), x0_idiff = fabsl (xn - x0_hi - x0_lo); - long double log_sinpi_ratio; + _Float128 x_idiff = fabsl (xn - x), x0_idiff = fabsl (xn - x0_hi - x0_lo); + _Float128 log_sinpi_ratio; if (x0_idiff < x_idiff * 0.5L) /* Use log not log1p to avoid inaccuracy from log1p of arguments close to -1. */ @@ -490,29 +490,29 @@ __lgamma_negl (long double x, int *signgamp) /* Use log1p not log to avoid inaccuracy from log of arguments close to 1. X0DIFF2 has positive sign if X0 is further from XN than X is from XN, negative sign otherwise. */ - long double x0diff2 = ((i & 1) == 0 ? xdiff : -xdiff) * 0.5L; - long double sx0d2 = lg_sinpi (x0diff2); - long double cx0d2 = lg_cospi (x0diff2); + _Float128 x0diff2 = ((i & 1) == 0 ? xdiff : -xdiff) * 0.5L; + _Float128 sx0d2 = lg_sinpi (x0diff2); + _Float128 cx0d2 = lg_cospi (x0diff2); log_sinpi_ratio = __log1pl (2 * sx0d2 * (-sx0d2 + cx0d2 * lg_cotpi (x_idiff))); } - long double log_gamma_ratio; - long double y0 = 1 - x0_hi; - long double y0_eps = -x0_hi + (1 - y0) - x0_lo; - long double y = 1 - x; - long double y_eps = -x + (1 - y); + _Float128 log_gamma_ratio; + _Float128 y0 = 1 - x0_hi; + _Float128 y0_eps = -x0_hi + (1 - y0) - x0_lo; + _Float128 y = 1 - x; + _Float128 y_eps = -x + (1 - y); /* We now wish to compute LOG_GAMMA_RATIO = log (gamma (Y0 + Y0_EPS) / gamma (Y + Y_EPS)). XDIFF accurately approximates the difference Y0 + Y0_EPS - Y - Y_EPS. Use Stirling's approximation. First, we may need to adjust into the range where Stirling's approximation is sufficiently accurate. */ - long double log_gamma_adj = 0; + _Float128 log_gamma_adj = 0; if (i < 20) { int n_up = (21 - i) / 2; - long double ny0, ny0_eps, ny, ny_eps; + _Float128 ny0, ny0_eps, ny, ny_eps; ny0 = y0 + n_up; ny0_eps = y0 - (ny0 - n_up) + y0_eps; y0 = ny0; @@ -521,28 +521,28 @@ __lgamma_negl (long double x, int *signgamp) ny_eps = y - (ny - n_up) + y_eps; y = ny; y_eps = ny_eps; - long double prodm1 = __lgamma_productl (xdiff, y - n_up, y_eps, n_up); + _Float128 prodm1 = __lgamma_productl (xdiff, y - n_up, y_eps, n_up); log_gamma_adj = -__log1pl (prodm1); } - long double log_gamma_high + _Float128 log_gamma_high = (xdiff * __log1pl ((y0 - e_hi - e_lo + y0_eps) / e_hi) + (y - 0.5L + y_eps) * __log1pl (xdiff / y) + log_gamma_adj); /* Compute the sum of (B_2k / 2k(2k-1))(Y0^-(2k-1) - Y^-(2k-1)). */ - long double y0r = 1 / y0, yr = 1 / y; - long double y0r2 = y0r * y0r, yr2 = yr * yr; - long double rdiff = -xdiff / (y * y0); - long double bterm[NCOEFF]; - long double dlast = rdiff, elast = rdiff * yr * (yr + y0r); + _Float128 y0r = 1 / y0, yr = 1 / y; + _Float128 y0r2 = y0r * y0r, yr2 = yr * yr; + _Float128 rdiff = -xdiff / (y * y0); + _Float128 bterm[NCOEFF]; + _Float128 dlast = rdiff, elast = rdiff * yr * (yr + y0r); bterm[0] = dlast * lgamma_coeff[0]; for (size_t j = 1; j < NCOEFF; j++) { - long double dnext = dlast * y0r2 + elast; - long double enext = elast * yr2; + _Float128 dnext = dlast * y0r2 + elast; + _Float128 enext = elast * yr2; bterm[j] = dnext * lgamma_coeff[j]; dlast = dnext; elast = enext; } - long double log_gamma_low = 0; + _Float128 log_gamma_low = 0; for (size_t j = 0; j < NCOEFF; j++) log_gamma_low += bterm[NCOEFF - 1 - j]; log_gamma_ratio = log_gamma_high + log_gamma_low; diff --git a/sysdeps/ieee754/ldbl-128/lgamma_productl.c b/sysdeps/ieee754/ldbl-128/lgamma_productl.c index 9aa0137..38cc4bb 100644 --- a/sysdeps/ieee754/ldbl-128/lgamma_productl.c +++ b/sysdeps/ieee754/ldbl-128/lgamma_productl.c @@ -26,24 +26,24 @@ X_EPS / X is small enough that factors quadratic in it can be neglected. */ -long double -__lgamma_productl (long double t, long double x, long double x_eps, int n) +_Float128 +__lgamma_productl (_Float128 t, _Float128 x, _Float128 x_eps, int n) { - long double ret = 0, ret_eps = 0; + _Float128 ret = 0, ret_eps = 0; for (int i = 0; i < n; i++) { - long double xi = x + i; - long double quot = t / xi; - long double mhi, mlo; + _Float128 xi = x + i; + _Float128 quot = t / xi; + _Float128 mhi, mlo; mul_splitl (&mhi, &mlo, quot, xi); - long double quot_lo = (t - mhi - mlo) / xi - t * x_eps / (xi * xi); + _Float128 quot_lo = (t - mhi - mlo) / xi - t * x_eps / (xi * xi); /* We want (1 + RET + RET_EPS) * (1 + QUOT + QUOT_LO) - 1. */ - long double rhi, rlo; + _Float128 rhi, rlo; mul_splitl (&rhi, &rlo, ret, quot); - long double rpq = ret + quot; - long double rpq_eps = (ret - rpq) + quot; - long double nret = rpq + rhi; - long double nret_eps = (rpq - nret) + rhi; + _Float128 rpq = ret + quot; + _Float128 rpq_eps = (ret - rpq) + quot; + _Float128 nret = rpq + rhi; + _Float128 nret_eps = (rpq - nret) + rhi; ret_eps += (rpq_eps + nret_eps + rlo + ret_eps * quot + quot_lo + quot_lo * (ret + ret_eps)); ret = nret; diff --git a/sysdeps/ieee754/ldbl-128/math_ldbl.h b/sysdeps/ieee754/ldbl-128/math_ldbl.h index b3faa04..4c75a38 100644 --- a/sysdeps/ieee754/ldbl-128/math_ldbl.h +++ b/sysdeps/ieee754/ldbl-128/math_ldbl.h @@ -88,3 +88,16 @@ do { \ sh_u.value = (d); \ (v) = sh_u.parts64.lsw; \ } while (0) + +/* Use the _Float128 name in place of long double when its + semantics are equivalent to long double, and is supported + by the compiler. This is necessary to support building + ldbl-128 files as _Float128. +*/ +#include +#if !defined (FLT128_MANT_DIG) +# define _Float128 long double +# define L(x) x##L +#else +# define L(x) x##F128 +#endif diff --git a/sysdeps/ieee754/ldbl-128/s_asinhl.c b/sysdeps/ieee754/ldbl-128/s_asinhl.c index 5f3b9f2..dd592cd 100644 --- a/sysdeps/ieee754/ldbl-128/s_asinhl.c +++ b/sysdeps/ieee754/ldbl-128/s_asinhl.c @@ -33,15 +33,15 @@ static char rcsid[] = "$NetBSD: $"; #include #include -static const long double +static const _Float128 one = 1.0L, ln2 = 6.931471805599453094172321214581765681e-1L, huge = 1.0e+4900L; -long double -__asinhl (long double x) +_Float128 +__asinhl (_Float128 x) { - long double t, w; + _Float128 t, w; int32_t ix, sign; ieee854_long_double_shape_type u; diff --git a/sysdeps/ieee754/ldbl-128/s_atanl.c b/sysdeps/ieee754/ldbl-128/s_atanl.c index 35577a8..11519fc 100644 --- a/sysdeps/ieee754/ldbl-128/s_atanl.c +++ b/sysdeps/ieee754/ldbl-128/s_atanl.c @@ -64,7 +64,7 @@ #include /* arctan(k/8), k = 0, ..., 82 */ -static const long double atantbl[84] = { +static const _Float128 atantbl[84] = { 0.0000000000000000000000000000000000000000E0L, 1.2435499454676143503135484916387102557317E-1L, /* arctan(0.125) */ 2.4497866312686415417208248121127581091414E-1L, @@ -156,7 +156,7 @@ static const long double atantbl[84] = { |t| <= 0.09375 peak relative error 5.3e-37 */ -static const long double +static const _Float128 p0 = -4.283708356338736809269381409828726405572E1L, p1 = -8.636132499244548540964557273544599863825E1L, p2 = -5.713554848244551350855604111031839613216E1L, @@ -169,13 +169,13 @@ static const long double q4 = 2.173623741810414221251136181221172551416E1L; /* q5 = 1.000000000000000000000000000000000000000E0 */ -static const long double huge = 1.0e4930L; +static const _Float128 huge = 1.0e4930L; -long double -__atanl (long double x) +_Float128 +__atanl (_Float128 x) { int k, sign; - long double t, u, p, q; + _Float128 t, u, p, q; ieee854_long_double_shape_type s; s.value = x; diff --git a/sysdeps/ieee754/ldbl-128/s_cbrtl.c b/sysdeps/ieee754/ldbl-128/s_cbrtl.c index c3ae968..d93684e 100644 --- a/sysdeps/ieee754/ldbl-128/s_cbrtl.c +++ b/sysdeps/ieee754/ldbl-128/s_cbrtl.c @@ -57,17 +57,17 @@ Adapted for glibc October, 2001. #include #include -static const long double CBRT2 = 1.259921049894873164767210607278228350570251L; -static const long double CBRT4 = 1.587401051968199474751705639272308260391493L; -static const long double CBRT2I = 0.7937005259840997373758528196361541301957467L; -static const long double CBRT4I = 0.6299605249474365823836053036391141752851257L; +static const _Float128 CBRT2 = 1.259921049894873164767210607278228350570251L; +static const _Float128 CBRT4 = 1.587401051968199474751705639272308260391493L; +static const _Float128 CBRT2I = 0.7937005259840997373758528196361541301957467L; +static const _Float128 CBRT4I = 0.6299605249474365823836053036391141752851257L; -long double -__cbrtl (long double x) +_Float128 +__cbrtl (_Float128 x) { int e, rem, sign; - long double z; + _Float128 z; if (!isfinite (x)) return x + x; diff --git a/sysdeps/ieee754/ldbl-128/s_ceill.c b/sysdeps/ieee754/ldbl-128/s_ceill.c index 6b73673..8034795 100644 --- a/sysdeps/ieee754/ldbl-128/s_ceill.c +++ b/sysdeps/ieee754/ldbl-128/s_ceill.c @@ -27,7 +27,7 @@ static char rcsid[] = "$NetBSD: $"; #include #include -long double __ceill(long double x) +_Float128 __ceill(_Float128 x) { int64_t i0,i1,j0; u_int64_t i,j; diff --git a/sysdeps/ieee754/ldbl-128/s_copysignl.c b/sysdeps/ieee754/ldbl-128/s_copysignl.c index 19b6880..358ff5a 100644 --- a/sysdeps/ieee754/ldbl-128/s_copysignl.c +++ b/sysdeps/ieee754/ldbl-128/s_copysignl.c @@ -18,7 +18,7 @@ static char rcsid[] = "$NetBSD: $"; #endif /* - * copysignl(long double x, long double y) + * copysignl(_Float128 x, _Float128 y) * copysignl(x,y) returns a value with the magnitude of x and * with the sign bit of y. */ @@ -26,7 +26,7 @@ static char rcsid[] = "$NetBSD: $"; #include #include -long double __copysignl(long double x, long double y) +_Float128 __copysignl(_Float128 x, _Float128 y) { u_int64_t hx,hy; GET_LDOUBLE_MSW64(hx,x); diff --git a/sysdeps/ieee754/ldbl-128/s_cosl.c b/sysdeps/ieee754/ldbl-128/s_cosl.c index 2c3bff6..c003262 100644 --- a/sysdeps/ieee754/ldbl-128/s_cosl.c +++ b/sysdeps/ieee754/ldbl-128/s_cosl.c @@ -48,9 +48,9 @@ #include #include -long double __cosl(long double x) +_Float128 __cosl(_Float128 x) { - long double y[2],z=0.0L; + _Float128 y[2],z=0.0L; int64_t n, ix; /* High word of x. */ diff --git a/sysdeps/ieee754/ldbl-128/s_erfl.c b/sysdeps/ieee754/ldbl-128/s_erfl.c index dd275a7..c0d2256 100644 --- a/sysdeps/ieee754/ldbl-128/s_erfl.c +++ b/sysdeps/ieee754/ldbl-128/s_erfl.c @@ -103,10 +103,10 @@ /* Evaluate P[n] x^n + P[n-1] x^(n-1) + ... + P[0] */ -static long double -neval (long double x, const long double *p, int n) +static _Float128 +neval (_Float128 x, const _Float128 *p, int n) { - long double y; + _Float128 y; p += n; y = *p--; @@ -121,10 +121,10 @@ neval (long double x, const long double *p, int n) /* Evaluate x^n+1 + P[n] x^(n) + P[n-1] x^(n-1) + ... + P[0] */ -static long double -deval (long double x, const long double *p, int n) +static _Float128 +deval (_Float128 x, const _Float128 *p, int n) { - long double y; + _Float128 y; p += n; y = x + *p--; @@ -138,7 +138,7 @@ deval (long double x, const long double *p, int n) -static const long double +static const _Float128 tiny = 1e-4931L, one = 1.0L, two = 2.0L, @@ -150,7 +150,7 @@ tiny = 1e-4931L, 0 <= x <= 7/8 Peak relative error 1.8e-35 */ #define NTN1 8 -static const long double TN1[NTN1 + 1] = +static const _Float128 TN1[NTN1 + 1] = { -3.858252324254637124543172907442106422373E10L, 9.580319248590464682316366876952214879858E10L, @@ -163,7 +163,7 @@ static const long double TN1[NTN1 + 1] = 3.390868480059991640235675479463287886081E1L }; #define NTD1 8 -static const long double TD1[NTD1 + 1] = +static const _Float128 TD1[NTD1 + 1] = { -3.005357030696532927149885530689529032152E11L, -1.342602283126282827411658673839982164042E11L, @@ -181,9 +181,9 @@ static const long double TD1[NTD1 + 1] = /* erf(z+1) = erf_const + P(z)/Q(z) -.125 <= z <= 0 Peak relative error 7.3e-36 */ -static const long double erf_const = 0.845062911510467529296875L; +static const _Float128 erf_const = 0.845062911510467529296875L; #define NTN2 8 -static const long double TN2[NTN2 + 1] = +static const _Float128 TN2[NTN2 + 1] = { -4.088889697077485301010486931817357000235E1L, 7.157046430681808553842307502826960051036E3L, @@ -196,7 +196,7 @@ static const long double TN2[NTN2 + 1] = 5.127662277706787664956025545897050896203E-1L }; #define NTD2 8 -static const long double TD2[NTD2 + 1] = +static const _Float128 TD2[NTD2 + 1] = { 1.731026445926834008273768924015161048885E4L, 1.209682239007990370796112604286048173750E4L, @@ -215,7 +215,7 @@ static const long double TD2[NTD2 + 1] = 0 <= x < 0.125 Peak relative error 1.4e-35 */ #define NRNr13 8 -static const long double RNr13[NRNr13 + 1] = +static const _Float128 RNr13[NRNr13 + 1] = { -2.353707097641280550282633036456457014829E3L, 3.871159656228743599994116143079870279866E2L, @@ -228,7 +228,7 @@ static const long double RNr13[NRNr13 + 1] = -8.098602878463854789780108161581050357814E-2L }; #define NRDr13 7 -static const long double RDr13[NRDr13 + 1] = +static const _Float128 RDr13[NRDr13 + 1] = { 2.220448796306693503549505450626652881752E3L, 1.899133258779578688791041599040951431383E2L, @@ -241,15 +241,15 @@ static const long double RDr13[NRDr13 + 1] = /* 1.0E0 */ }; /* erfc(0.25) = C13a + C13b to extra precision. */ -static const long double C13a = 0.723663330078125L; -static const long double C13b = 1.0279753638067014931732235184287934646022E-5L; +static const _Float128 C13a = 0.723663330078125L; +static const _Float128 C13b = 1.0279753638067014931732235184287934646022E-5L; /* erfc(x + 0.375) = erfc(0.375) + x R(x) 0 <= x < 0.125 Peak relative error 1.2e-35 */ #define NRNr14 8 -static const long double RNr14[NRNr14 + 1] = +static const _Float128 RNr14[NRNr14 + 1] = { -2.446164016404426277577283038988918202456E3L, 6.718753324496563913392217011618096698140E2L, @@ -262,7 +262,7 @@ static const long double RNr14[NRNr14 + 1] = -2.230395570574153963203348263549700967918E-2L }; #define NRDr14 7 -static const long double RDr14[NRDr14 + 1] = +static const _Float128 RDr14[NRDr14 + 1] = { 2.495187439241869732696223349840963702875E3L, 2.503549449872925580011284635695738412162E2L, @@ -275,14 +275,14 @@ static const long double RDr14[NRDr14 + 1] = /* 1.0E0 */ }; /* erfc(0.375) = C14a + C14b to extra precision. */ -static const long double C14a = 0.5958709716796875L; -static const long double C14b = 1.2118885490201676174914080878232469565953E-5L; +static const _Float128 C14a = 0.5958709716796875L; +static const _Float128 C14b = 1.2118885490201676174914080878232469565953E-5L; /* erfc(x + 0.5) = erfc(0.5) + x R(x) 0 <= x < 0.125 Peak relative error 4.7e-36 */ #define NRNr15 8 -static const long double RNr15[NRNr15 + 1] = +static const _Float128 RNr15[NRNr15 + 1] = { -2.624212418011181487924855581955853461925E3L, 8.473828904647825181073831556439301342756E2L, @@ -295,7 +295,7 @@ static const long double RNr15[NRNr15 + 1] = 1.990253655948179713415957791776180406812E-2L }; #define NRDr15 7 -static const long double RDr15[NRDr15 + 1] = +static const _Float128 RDr15[NRDr15 + 1] = { 2.986190760847974943034021764693341524962E3L, 5.288262758961073066335410218650047725985E2L, @@ -308,14 +308,14 @@ static const long double RDr15[NRDr15 + 1] = /* 1.0E0 */ }; /* erfc(0.5) = C15a + C15b to extra precision. */ -static const long double C15a = 0.4794921875L; -static const long double C15b = 7.9346869534623172533461080354712635484242E-6L; +static const _Float128 C15a = 0.4794921875L; +static const _Float128 C15b = 7.9346869534623172533461080354712635484242E-6L; /* erfc(x + 0.625) = erfc(0.625) + x R(x) 0 <= x < 0.125 Peak relative error 5.1e-36 */ #define NRNr16 8 -static const long double RNr16[NRNr16 + 1] = +static const _Float128 RNr16[NRNr16 + 1] = { -2.347887943200680563784690094002722906820E3L, 8.008590660692105004780722726421020136482E2L, @@ -328,7 +328,7 @@ static const long double RNr16[NRNr16 + 1] = 2.022958279982138755020825717073966576670E-2L, }; #define NRDr16 7 -static const long double RDr16[NRDr16 + 1] = +static const _Float128 RDr16[NRDr16 + 1] = { 3.075166170024837215399323264868308087281E3L, 8.730468942160798031608053127270430036627E2L, @@ -341,14 +341,14 @@ static const long double RDr16[NRDr16 + 1] = /* 1.0E0 */ }; /* erfc(0.625) = C16a + C16b to extra precision. */ -static const long double C16a = 0.3767547607421875L; -static const long double C16b = 4.3570693945275513594941232097252997287766E-6L; +static const _Float128 C16a = 0.3767547607421875L; +static const _Float128 C16b = 4.3570693945275513594941232097252997287766E-6L; /* erfc(x + 0.75) = erfc(0.75) + x R(x) 0 <= x < 0.125 Peak relative error 1.7e-35 */ #define NRNr17 8 -static const long double RNr17[NRNr17 + 1] = +static const _Float128 RNr17[NRNr17 + 1] = { -1.767068734220277728233364375724380366826E3L, 6.693746645665242832426891888805363898707E2L, @@ -361,7 +361,7 @@ static const long double RNr17[NRNr17 + 1] = -1.488945487149634820537348176770282391202E-2L }; #define NRDr17 7 -static const long double RDr17[NRDr17 + 1] = +static const _Float128 RDr17[NRDr17 + 1] = { 2.748457523498150741964464942246913394647E3L, 1.020213390713477686776037331757871252652E3L, @@ -374,15 +374,15 @@ static const long double RDr17[NRDr17 + 1] = /* 1.0E0 */ }; /* erfc(0.75) = C17a + C17b to extra precision. */ -static const long double C17a = 0.2888336181640625L; -static const long double C17b = 1.0748182422368401062165408589222625794046E-5L; +static const _Float128 C17a = 0.2888336181640625L; +static const _Float128 C17b = 1.0748182422368401062165408589222625794046E-5L; /* erfc(x + 0.875) = erfc(0.875) + x R(x) 0 <= x < 0.125 Peak relative error 2.2e-35 */ #define NRNr18 8 -static const long double RNr18[NRNr18 + 1] = +static const _Float128 RNr18[NRNr18 + 1] = { -1.342044899087593397419622771847219619588E3L, 6.127221294229172997509252330961641850598E2L, @@ -395,7 +395,7 @@ static const long double RNr18[NRNr18 + 1] = -5.557645435858916025452563379795159124753E-2L }; #define NRDr18 7 -static const long double RDr18[NRDr18 + 1] = +static const _Float128 RDr18[NRDr18 + 1] = { 2.557518000661700588758505116291983092951E3L, 1.070171433382888994954602511991940418588E3L, @@ -408,14 +408,14 @@ static const long double RDr18[NRDr18 + 1] = /* 1.0E0 */ }; /* erfc(0.875) = C18a + C18b to extra precision. */ -static const long double C18a = 0.215911865234375L; -static const long double C18b = 1.3073705765341685464282101150637224028267E-5L; +static const _Float128 C18a = 0.215911865234375L; +static const _Float128 C18b = 1.3073705765341685464282101150637224028267E-5L; /* erfc(x + 1.0) = erfc(1.0) + x R(x) 0 <= x < 0.125 Peak relative error 1.6e-35 */ #define NRNr19 8 -static const long double RNr19[NRNr19 + 1] = +static const _Float128 RNr19[NRNr19 + 1] = { -1.139180936454157193495882956565663294826E3L, 6.134903129086899737514712477207945973616E2L, @@ -428,7 +428,7 @@ static const long double RNr19[NRNr19 + 1] = -8.629945436917752003058064731308767664446E-2L }; #define NRDr19 7 -static const long double RDr19[NRDr19 + 1] = +static const _Float128 RDr19[NRDr19 + 1] = { 2.744303447981132701432716278363418643778E3L, 1.266396359526187065222528050591302171471E3L, @@ -441,14 +441,14 @@ static const long double RDr19[NRDr19 + 1] = /* 1.0E0 */ }; /* erfc(1.0) = C19a + C19b to extra precision. */ -static const long double C19a = 0.15728759765625L; -static const long double C19b = 1.1609394035130658779364917390740703933002E-5L; +static const _Float128 C19a = 0.15728759765625L; +static const _Float128 C19b = 1.1609394035130658779364917390740703933002E-5L; /* erfc(x + 1.125) = erfc(1.125) + x R(x) 0 <= x < 0.125 Peak relative error 3.6e-36 */ #define NRNr20 8 -static const long double RNr20[NRNr20 + 1] = +static const _Float128 RNr20[NRNr20 + 1] = { -9.652706916457973956366721379612508047640E2L, 5.577066396050932776683469951773643880634E2L, @@ -461,7 +461,7 @@ static const long double RNr20[NRNr20 + 1] = -9.611744011489092894027478899545635991213E-2L }; #define NRDr20 7 -static const long double RDr20[NRDr20 + 1] = +static const _Float128 RDr20[NRDr20 + 1] = { 3.032829629520142564106649167182428189014E3L, 1.659648470721967719961167083684972196891E3L, @@ -474,14 +474,14 @@ static const long double RDr20[NRDr20 + 1] = /* 1.0E0 */ }; /* erfc(1.125) = C20a + C20b to extra precision. */ -static const long double C20a = 0.111602783203125L; -static const long double C20b = 8.9850951672359304215530728365232161564636E-6L; +static const _Float128 C20a = 0.111602783203125L; +static const _Float128 C20b = 8.9850951672359304215530728365232161564636E-6L; /* erfc(1/x) = 1/x exp (-1/x^2 - 0.5625 + R(1/x^2)) 7/8 <= 1/x < 1 Peak relative error 1.4e-35 */ #define NRNr8 9 -static const long double RNr8[NRNr8 + 1] = +static const _Float128 RNr8[NRNr8 + 1] = { 3.587451489255356250759834295199296936784E1L, 5.406249749087340431871378009874875889602E2L, @@ -495,7 +495,7 @@ static const long double RNr8[NRNr8 + 1] = 4.876422978828717219629814794707963640913E-2L }; #define NRDr8 8 -static const long double RDr8[NRDr8 + 1] = +static const _Float128 RDr8[NRDr8 + 1] = { 6.358593134096908350929496535931630140282E1L, 9.900253816552450073757174323424051765523E2L, @@ -513,7 +513,7 @@ static const long double RDr8[NRDr8 + 1] = 0.75 <= 1/x <= 0.875 Peak relative error 2.0e-36 */ #define NRNr7 9 -static const long double RNr7[NRNr7 + 1] = +static const _Float128 RNr7[NRNr7 + 1] = { 1.686222193385987690785945787708644476545E1L, 1.178224543567604215602418571310612066594E3L, @@ -527,7 +527,7 @@ static const long double RNr7[NRNr7 + 1] = 6.700393957480661937695573729183733234400E2L }; #define NRDr7 9 -static const long double RDr7[NRDr7 + 1] = +static const _Float128 RDr7[NRDr7 + 1] = { -1.709305024718358874701575813642933561169E3L, -3.280033887481333199580464617020514788369E4L, @@ -546,7 +546,7 @@ static const long double RDr7[NRDr7 + 1] = 5/8 <= 1/x < 3/4 Peak relative error 1.9e-35 */ #define NRNr6 9 -static const long double RNr6[NRNr6 + 1] = +static const _Float128 RNr6[NRNr6 + 1] = { 1.642076876176834390623842732352935761108E0L, 1.207150003611117689000664385596211076662E2L, @@ -560,7 +560,7 @@ static const long double RNr6[NRNr6 + 1] = 4.506934806567986810091824791963991057083E2L }; #define NRDr6 9 -static const long double RDr6[NRDr6 + 1] = +static const _Float128 RDr6[NRDr6 + 1] = { -1.664557643928263091879301304019826629067E2L, -3.800035902507656624590531122291160668452E3L, @@ -579,7 +579,7 @@ static const long double RDr6[NRDr6 + 1] = 1/2 <= 1/x < 5/8 Peak relative error 4.6e-36 */ #define NRNr5 10 -static const long double RNr5[NRNr5 + 1] = +static const _Float128 RNr5[NRNr5 + 1] = { -3.332258927455285458355550878136506961608E-3L, -2.697100758900280402659586595884478660721E-1L, @@ -594,7 +594,7 @@ static const long double RNr5[NRNr5 + 1] = -2.077715925587834606379119585995758954399E0L }; #define NRDr5 9 -static const long double RDr5[NRDr5 + 1] = +static const _Float128 RDr5[NRDr5 + 1] = { 3.377879570417399341550710467744693125385E-1L, 1.021963322742390735430008860602594456187E1L, @@ -613,7 +613,7 @@ static const long double RDr5[NRDr5 + 1] = 3/8 <= 1/x < 1/2 Peak relative error 2.0e-36 */ #define NRNr4 10 -static const long double RNr4[NRNr4 + 1] = +static const _Float128 RNr4[NRNr4 + 1] = { 3.258530712024527835089319075288494524465E-3L, 2.987056016877277929720231688689431056567E-1L, @@ -628,7 +628,7 @@ static const long double RNr4[NRNr4 + 1] = 2.127493573166454249221983582495245662319E2L }; #define NRDr4 10 -static const long double RDr4[NRDr4 + 1] = +static const _Float128 RDr4[NRDr4 + 1] = { -3.303141981514540274165450687270180479586E-1L, -1.353768629363605300707949368917687066724E1L, @@ -648,7 +648,7 @@ static const long double RDr4[NRDr4 + 1] = 1/4 <= 1/x < 3/8 Peak relative error 8.4e-37 */ #define NRNr3 11 -static const long double RNr3[NRNr3 + 1] = +static const _Float128 RNr3[NRNr3 + 1] = { -1.952401126551202208698629992497306292987E-6L, -2.130881743066372952515162564941682716125E-4L, @@ -664,7 +664,7 @@ static const long double RNr3[NRNr3 + 1] = -1.787995944187565676837847610706317833247E0L }; #define NRDr3 10 -static const long double RDr3[NRDr3 + 1] = +static const _Float128 RDr3[NRDr3 + 1] = { 1.979130686770349481460559711878399476903E-4L, 1.156941716128488266238105813374635099057E-2L, @@ -684,7 +684,7 @@ static const long double RDr3[NRDr3 + 1] = 1/8 <= 1/x < 1/4 Peak relative error 1.5e-36 */ #define NRNr2 11 -static const long double RNr2[NRNr2 + 1] = +static const _Float128 RNr2[NRNr2 + 1] = { -2.638914383420287212401687401284326363787E-8L, -3.479198370260633977258201271399116766619E-6L, @@ -700,7 +700,7 @@ static const long double RNr2[NRNr2 + 1] = -1.572436106228070195510230310658206154374E0L }; #define NRDr2 10 -static const long double RDr2[NRDr2 + 1] = +static const _Float128 RDr2[NRDr2 + 1] = { 2.675042728136731923554119302571867799673E-6L, 2.170997868451812708585443282998329996268E-4L, @@ -720,7 +720,7 @@ static const long double RDr2[NRDr2 + 1] = 1/128 <= 1/x < 1/8 Peak relative error 2.2e-36 */ #define NRNr1 9 -static const long double RNr1[NRNr1 + 1] = +static const _Float128 RNr1[NRNr1 + 1] = { -4.250780883202361946697751475473042685782E-8L, -5.375777053288612282487696975623206383019E-6L, @@ -734,7 +734,7 @@ static const long double RNr1[NRNr1 + 1] = -1.290865243944292370661544030414667556649E0L }; #define NRDr1 8 -static const long double RDr1[NRDr1 + 1] = +static const _Float128 RDr1[NRDr1 + 1] = { 4.308976661749509034845251315983612976224E-6L, 3.265390126432780184125233455960049294580E-4L, @@ -749,10 +749,10 @@ static const long double RDr1[NRDr1 + 1] = }; -long double -__erfl (long double x) +_Float128 +__erfl (_Float128 x) { - long double a, y, z; + _Float128 a, y, z; int32_t i, ix, sign; ieee854_long_double_shape_type u; @@ -763,7 +763,7 @@ __erfl (long double x) if (ix >= 0x7fff0000) { /* erf(nan)=nan */ i = ((sign & 0xffff0000) >> 31) << 1; - return (long double) (1 - i) + one / x; /* erf(+-inf)=+-1 */ + return (_Float128) (1 - i) + one / x; /* erf(+-inf)=+-1 */ } if (ix >= 0x3fff0000) /* |x| >= 1.0 */ @@ -784,7 +784,7 @@ __erfl (long double x) if (ix < 0x00080000) { /* Avoid spurious underflow. */ - long double ret = 0.0625 * (16.0 * x + (16.0 * efx) * x); + _Float128 ret = 0.0625 * (16.0 * x + (16.0 * efx) * x); math_check_force_underflow (ret); return ret; } @@ -804,10 +804,10 @@ __erfl (long double x) } weak_alias (__erfl, erfl) -long double -__erfcl (long double x) +_Float128 +__erfcl (_Float128 x) { - long double y, z, p, r; + _Float128 y, z, p, r; int32_t i, ix, sign; ieee854_long_double_shape_type u; @@ -819,7 +819,7 @@ __erfcl (long double x) if (ix >= 0x7fff0000) { /* erfc(nan)=nan */ /* erfc(+-inf)=0,2 */ - return (long double) (((u_int32_t) sign >> 31) << 1) + one / x; + return (_Float128) (((u_int32_t) sign >> 31) << 1) + one / x; } if (ix < 0x3ffd0000) /* |x| <1/4 */ @@ -925,7 +925,7 @@ __erfcl (long double x) __ieee754_expl ((z - x) * (z + x) + p); if ((sign & 0x80000000) == 0) { - long double ret = r / x; + _Float128 ret = r / x; if (ret == 0) __set_errno (ERANGE); return ret; diff --git a/sysdeps/ieee754/ldbl-128/s_expm1l.c b/sysdeps/ieee754/ldbl-128/s_expm1l.c index da902ef..8f9e838 100644 --- a/sysdeps/ieee754/ldbl-128/s_expm1l.c +++ b/sysdeps/ieee754/ldbl-128/s_expm1l.c @@ -62,7 +62,7 @@ -.5 ln 2 < x < .5 ln 2 Theoretical peak relative error = 8.1e-36 */ -static const long double +static const _Float128 P0 = 2.943520915569954073888921213330863757240E8L, P1 = -5.722847283900608941516165725053359168840E7L, P2 = 8.944630806357575461578107295909719817253E6L, @@ -88,10 +88,10 @@ static const long double minarg = -7.9018778583833765273564461846232128760607E1L, big = 1e4932L; -long double -__expm1l (long double x) +_Float128 +__expm1l (_Float128 x) { - long double px, qx, xx; + _Float128 px, qx, xx; int32_t ix, sign; ieee854_long_double_shape_type u; int k; diff --git a/sysdeps/ieee754/ldbl-128/s_fabsl.c b/sysdeps/ieee754/ldbl-128/s_fabsl.c index a1bb6c5..0ce6f73 100644 --- a/sysdeps/ieee754/ldbl-128/s_fabsl.c +++ b/sysdeps/ieee754/ldbl-128/s_fabsl.c @@ -24,7 +24,7 @@ static char rcsid[] = "$NetBSD: $"; #include #include -long double __fabsl(long double x) +_Float128 __fabsl(_Float128 x) { u_int64_t hx; GET_LDOUBLE_MSW64(hx,x); diff --git a/sysdeps/ieee754/ldbl-128/s_finitel.c b/sysdeps/ieee754/ldbl-128/s_finitel.c index 25450ba..7c69968 100644 --- a/sysdeps/ieee754/ldbl-128/s_finitel.c +++ b/sysdeps/ieee754/ldbl-128/s_finitel.c @@ -25,7 +25,7 @@ static char rcsid[] = "$NetBSD: $"; #include #include -int __finitel(long double x) +int __finitel(_Float128 x) { int64_t hx; GET_LDOUBLE_MSW64(hx,x); diff --git a/sysdeps/ieee754/ldbl-128/s_floorl.c b/sysdeps/ieee754/ldbl-128/s_floorl.c index 14a0efe..13ad084 100644 --- a/sysdeps/ieee754/ldbl-128/s_floorl.c +++ b/sysdeps/ieee754/ldbl-128/s_floorl.c @@ -27,7 +27,7 @@ static char rcsid[] = "$NetBSD: $"; #include #include -long double __floorl(long double x) +_Float128 __floorl(_Float128 x) { int64_t i0,i1,j0; u_int64_t i,j; diff --git a/sysdeps/ieee754/ldbl-128/s_fmal.c b/sysdeps/ieee754/ldbl-128/s_fmal.c index 728949c..df01ab7 100644 --- a/sysdeps/ieee754/ldbl-128/s_fmal.c +++ b/sysdeps/ieee754/ldbl-128/s_fmal.c @@ -28,8 +28,8 @@ double rounding. See a paper by Boldo and Melquiond: http://www.lri.fr/~melquion/doc/08-tc.pdf */ -long double -__fmal (long double x, long double y, long double z) +_Float128 +__fmal (_Float128 x, _Float128 y, _Float128 z) { union ieee854_long_double u, v, w; int adjust = 0; @@ -75,7 +75,7 @@ __fmal (long double x, long double y, long double z) < IEEE854_LONG_DOUBLE_BIAS - LDBL_MANT_DIG - 2) { int neg = u.ieee.negative ^ v.ieee.negative; - long double tiny = neg ? -0x1p-16494L : 0x1p-16494L; + _Float128 tiny = neg ? -0x1p-16494L : 0x1p-16494L; if (w.ieee.exponent >= 3) return tiny + z; /* Scaling up, adding TINY and scaling down produces the @@ -94,7 +94,7 @@ __fmal (long double x, long double y, long double z) && w.ieee.mantissa1 == 0 && w.ieee.mantissa0 == 0))) { - long double force_underflow = x * y; + _Float128 force_underflow = x * y; math_force_eval (force_underflow); } return v.d * 0x1p-114L; @@ -190,22 +190,22 @@ __fmal (long double x, long double y, long double z) /* Multiplication m1 + m2 = x * y using Dekker's algorithm. */ #define C ((1LL << (LDBL_MANT_DIG + 1) / 2) + 1) - long double x1 = x * C; - long double y1 = y * C; - long double m1 = x * y; + _Float128 x1 = x * C; + _Float128 y1 = y * C; + _Float128 m1 = x * y; x1 = (x - x1) + x1; y1 = (y - y1) + y1; - long double x2 = x - x1; - long double y2 = y - y1; - long double m2 = (((x1 * y1 - m1) + x1 * y2) + x2 * y1) + x2 * y2; + _Float128 x2 = x - x1; + _Float128 y2 = y - y1; + _Float128 m2 = (((x1 * y1 - m1) + x1 * y2) + x2 * y1) + x2 * y2; /* Addition a1 + a2 = z + m1 using Knuth's algorithm. */ - long double a1 = z + m1; - long double t1 = a1 - z; - long double t2 = a1 - t1; + _Float128 a1 = z + m1; + _Float128 t1 = a1 - z; + _Float128 t2 = a1 - t1; t1 = m1 - t1; t2 = z - t2; - long double a2 = t1 + t2; + _Float128 a2 = t1 + t2; /* Ensure the arithmetic is not scheduled after feclearexcept call. */ math_force_eval (m2); math_force_eval (a2); diff --git a/sysdeps/ieee754/ldbl-128/s_fpclassifyl.c b/sysdeps/ieee754/ldbl-128/s_fpclassifyl.c index c89686f..42203cf 100644 --- a/sysdeps/ieee754/ldbl-128/s_fpclassifyl.c +++ b/sysdeps/ieee754/ldbl-128/s_fpclassifyl.c @@ -24,7 +24,7 @@ int -__fpclassifyl (long double x) +__fpclassifyl (_Float128 x) { u_int64_t hx, lx; int retval = FP_NORMAL; diff --git a/sysdeps/ieee754/ldbl-128/s_frexpl.c b/sysdeps/ieee754/ldbl-128/s_frexpl.c index 70b2d3a..cbf1911 100644 --- a/sysdeps/ieee754/ldbl-128/s_frexpl.c +++ b/sysdeps/ieee754/ldbl-128/s_frexpl.c @@ -30,10 +30,10 @@ static char rcsid[] = "$NetBSD: $"; #include #include -static const long double +static const _Float128 two114 = 2.0769187434139310514121985316880384E+34L; /* 0x4071000000000000, 0 */ -long double __frexpl(long double x, int *eptr) +_Float128 __frexpl(_Float128 x, int *eptr) { u_int64_t hx, lx, ix; GET_LDOUBLE_WORDS64(hx,lx,x); diff --git a/sysdeps/ieee754/ldbl-128/s_isinfl.c b/sysdeps/ieee754/ldbl-128/s_isinfl.c index 0066a57..a41e8cf 100644 --- a/sysdeps/ieee754/ldbl-128/s_isinfl.c +++ b/sysdeps/ieee754/ldbl-128/s_isinfl.c @@ -17,7 +17,7 @@ static char rcsid[] = "$NetBSD: $"; #include int -__isinfl (long double x) +__isinfl (_Float128 x) { int64_t hx,lx; GET_LDOUBLE_WORDS64(hx,lx,x); diff --git a/sysdeps/ieee754/ldbl-128/s_isnanl.c b/sysdeps/ieee754/ldbl-128/s_isnanl.c index 297a669..80f97fe 100644 --- a/sysdeps/ieee754/ldbl-128/s_isnanl.c +++ b/sysdeps/ieee754/ldbl-128/s_isnanl.c @@ -25,7 +25,7 @@ static char rcsid[] = "$NetBSD: $"; #include #include -int __isnanl(long double x) +int __isnanl(_Float128 x) { int64_t hx,lx; GET_LDOUBLE_WORDS64(hx,lx,x); diff --git a/sysdeps/ieee754/ldbl-128/s_issignalingl.c b/sysdeps/ieee754/ldbl-128/s_issignalingl.c index c06f14d..6af1db4 100644 --- a/sysdeps/ieee754/ldbl-128/s_issignalingl.c +++ b/sysdeps/ieee754/ldbl-128/s_issignalingl.c @@ -20,7 +20,7 @@ #include int -__issignalingl (long double x) +__issignalingl (_Float128 x) { u_int64_t hxi, lxi __attribute__ ((unused)); GET_LDOUBLE_WORDS64 (hxi, lxi, x); diff --git a/sysdeps/ieee754/ldbl-128/s_llrintl.c b/sysdeps/ieee754/ldbl-128/s_llrintl.c index 84fc576..0e52757 100644 --- a/sysdeps/ieee754/ldbl-128/s_llrintl.c +++ b/sysdeps/ieee754/ldbl-128/s_llrintl.c @@ -26,19 +26,19 @@ #include #include -static const long double two112[2] = +static const _Float128 two112[2] = { 5.19229685853482762853049632922009600E+33L, /* 0x406F000000000000, 0 */ -5.19229685853482762853049632922009600E+33L /* 0xC06F000000000000, 0 */ }; long long int -__llrintl (long double x) +__llrintl (_Float128 x) { int32_t j0; u_int64_t i0,i1; - long double w; - long double t; + _Float128 w; + _Float128 t; long long int result; int sx; @@ -52,7 +52,7 @@ __llrintl (long double x) { #if defined FE_INVALID || defined FE_INEXACT /* X < LLONG_MAX + 1 implied by J0 < 63. */ - if (x > (long double) LLONG_MAX) + if (x > (_Float128) LLONG_MAX) { /* In the event of overflow we must raise the "invalid" exception, but not "inexact". */ @@ -83,8 +83,8 @@ __llrintl (long double x) FE_INVALID must be raised and the return value is unspecified. */ #if defined FE_INVALID || defined FE_INEXACT - if (x < (long double) LLONG_MIN - && x > (long double) LLONG_MIN - 1.0L) + if (x < (_Float128) LLONG_MIN + && x > (_Float128) LLONG_MIN - 1.0L) { /* If truncation produces LLONG_MIN, the cast will not raise the exception, but may raise "inexact". */ @@ -92,7 +92,7 @@ __llrintl (long double x) feraiseexcept (t == LLONG_MIN ? FE_INEXACT : FE_INVALID); return LLONG_MIN; } - else if (FIX_LDBL_LLONG_CONVERT_OVERFLOW && x != (long double) LLONG_MIN) + else if (FIX_LDBL_LLONG_CONVERT_OVERFLOW && x != (_Float128) LLONG_MIN) { feraiseexcept (FE_INVALID); return sx == 0 ? LLONG_MAX : LLONG_MIN; diff --git a/sysdeps/ieee754/ldbl-128/s_llroundl.c b/sysdeps/ieee754/ldbl-128/s_llroundl.c index bfc81cc..dd8fe1a 100644 --- a/sysdeps/ieee754/ldbl-128/s_llroundl.c +++ b/sysdeps/ieee754/ldbl-128/s_llroundl.c @@ -26,7 +26,7 @@ #include long long int -__llroundl (long double x) +__llroundl (_Float128 x) { int64_t j0; u_int64_t i1, i0; @@ -79,13 +79,13 @@ __llroundl (long double x) unspecified. */ #ifdef FE_INVALID if (FIX_LDBL_LLONG_CONVERT_OVERFLOW - && !(sign == -1 && x > (long double) LLONG_MIN - 0.5L)) + && !(sign == -1 && x > (_Float128) LLONG_MIN - 0.5L)) { feraiseexcept (FE_INVALID); return sign == 1 ? LLONG_MAX : LLONG_MIN; } else if (!FIX_LDBL_LLONG_CONVERT_OVERFLOW - && x <= (long double) LLONG_MIN - 0.5L) + && x <= (_Float128) LLONG_MIN - 0.5L) { /* If truncation produces LLONG_MIN, the cast will not raise the exception, but may raise "inexact". */ diff --git a/sysdeps/ieee754/ldbl-128/s_log1pl.c b/sysdeps/ieee754/ldbl-128/s_log1pl.c index b348f41..ec99efb 100644 --- a/sysdeps/ieee754/ldbl-128/s_log1pl.c +++ b/sysdeps/ieee754/ldbl-128/s_log1pl.c @@ -62,7 +62,7 @@ * Theoretical peak relative error = 5.3e-37, * relative peak error spread = 2.3e-14 */ -static const long double +static const _Float128 P12 = 1.538612243596254322971797716843006400388E-6L, P11 = 4.998469661968096229986658302195402690910E-1L, P10 = 2.321125933898420063925789532045674660756E1L, @@ -96,7 +96,7 @@ static const long double * Theoretical peak relative error = 1.1e-35, * relative peak error spread 1.1e-9 */ -static const long double +static const _Float128 R5 = -8.828896441624934385266096344596648080902E-1L, R4 = 8.057002716646055371965756206836056074715E1L, R3 = -2.024301798136027039250415126250455056397E3L, @@ -112,17 +112,17 @@ static const long double S0 = 1.701761051846631278975701529965589676574E6L; /* C1 + C2 = ln 2 */ -static const long double C1 = 6.93145751953125E-1L; -static const long double C2 = 1.428606820309417232121458176568075500134E-6L; +static const _Float128 C1 = 6.93145751953125E-1L; +static const _Float128 C2 = 1.428606820309417232121458176568075500134E-6L; -static const long double sqrth = 0.7071067811865475244008443621048490392848L; +static const _Float128 sqrth = 0.7071067811865475244008443621048490392848L; /* ln (2^16384 * (1 - 2^-113)) */ -static const long double zero = 0.0L; +static const _Float128 zero = 0.0L; -long double -__log1pl (long double xm1) +_Float128 +__log1pl (_Float128 xm1) { - long double x, y, z, r, s; + _Float128 x, y, z, r, s; ieee854_long_double_shape_type u; int32_t hx; int e; diff --git a/sysdeps/ieee754/ldbl-128/s_logbl.c b/sysdeps/ieee754/ldbl-128/s_logbl.c index b7c1ca1..24baae6 100644 --- a/sysdeps/ieee754/ldbl-128/s_logbl.c +++ b/sysdeps/ieee754/ldbl-128/s_logbl.c @@ -26,8 +26,8 @@ static char rcsid[] = "$NetBSD: $"; #include #include -long double -__logbl (long double x) +_Float128 +__logbl (_Float128 x) { int64_t lx, hx, ex; @@ -48,7 +48,7 @@ __logbl (long double x) ma = __builtin_clzll (hx); ex -= ma - 16; } - return (long double) (ex - 16383); + return (_Float128) (ex - 16383); } weak_alias (__logbl, logbl) diff --git a/sysdeps/ieee754/ldbl-128/s_lrintl.c b/sysdeps/ieee754/ldbl-128/s_lrintl.c index 23f828f..b961f5b 100644 --- a/sysdeps/ieee754/ldbl-128/s_lrintl.c +++ b/sysdeps/ieee754/ldbl-128/s_lrintl.c @@ -26,19 +26,19 @@ #include #include -static const long double two112[2] = +static const _Float128 two112[2] = { 5.19229685853482762853049632922009600E+33L, /* 0x406F000000000000, 0 */ -5.19229685853482762853049632922009600E+33L /* 0xC06F000000000000, 0 */ }; long int -__lrintl (long double x) +__lrintl (_Float128 x) { int32_t j0; u_int64_t i0,i1; - long double w; - long double t; + _Float128 w; + _Float128 t; long int result; int sx; @@ -55,7 +55,7 @@ __lrintl (long double x) #if defined FE_INVALID || defined FE_INEXACT /* X < LONG_MAX + 1 implied by J0 < 31. */ if (sizeof (long int) == 4 - && x > (long double) LONG_MAX) + && x > (_Float128) LONG_MAX) { /* In the event of overflow we must raise the "invalid" exception, but not "inexact". */ @@ -82,7 +82,7 @@ __lrintl (long double x) #if defined FE_INVALID || defined FE_INEXACT /* X < LONG_MAX + 1 implied by J0 < 63. */ if (sizeof (long int) == 8 - && x > (long double) LONG_MAX) + && x > (_Float128) LONG_MAX) { /* In the event of overflow we must raise the "invalid" exception, but not "inexact". */ @@ -112,8 +112,8 @@ __lrintl (long double x) FE_INVALID must be raised and the return value is unspecified. */ #if defined FE_INVALID || defined FE_INEXACT - if (x < (long double) LONG_MIN - && x > (long double) LONG_MIN - 1.0L) + if (x < (_Float128) LONG_MIN + && x > (_Float128) LONG_MIN - 1.0L) { /* If truncation produces LONG_MIN, the cast will not raise the exception, but may raise "inexact". */ @@ -121,7 +121,7 @@ __lrintl (long double x) feraiseexcept (t == LONG_MIN ? FE_INEXACT : FE_INVALID); return LONG_MIN; } - else if (FIX_LDBL_LONG_CONVERT_OVERFLOW && x != (long double) LONG_MIN) + else if (FIX_LDBL_LONG_CONVERT_OVERFLOW && x != (_Float128) LONG_MIN) { feraiseexcept (FE_INVALID); return sx == 0 ? LONG_MAX : LONG_MIN; diff --git a/sysdeps/ieee754/ldbl-128/s_lroundl.c b/sysdeps/ieee754/ldbl-128/s_lroundl.c index f032625..3a949c5 100644 --- a/sysdeps/ieee754/ldbl-128/s_lroundl.c +++ b/sysdeps/ieee754/ldbl-128/s_lroundl.c @@ -26,7 +26,7 @@ #include long int -__lroundl (long double x) +__lroundl (_Float128 x) { int64_t j0; u_int64_t i1, i0; @@ -88,13 +88,13 @@ __lroundl (long double x) unspecified. */ #ifdef FE_INVALID if (FIX_LDBL_LONG_CONVERT_OVERFLOW - && !(sign == -1 && x > (long double) LONG_MIN - 0.5L)) + && !(sign == -1 && x > (_Float128) LONG_MIN - 0.5L)) { feraiseexcept (FE_INVALID); return sign == 1 ? LONG_MAX : LONG_MIN; } else if (!FIX_LDBL_LONG_CONVERT_OVERFLOW - && x <= (long double) LONG_MIN - 0.5L) + && x <= (_Float128) LONG_MIN - 0.5L) { /* If truncation produces LONG_MIN, the cast will not raise the exception, but may raise "inexact". */ diff --git a/sysdeps/ieee754/ldbl-128/s_modfl.c b/sysdeps/ieee754/ldbl-128/s_modfl.c index 597a5c9..01e150b 100644 --- a/sysdeps/ieee754/ldbl-128/s_modfl.c +++ b/sysdeps/ieee754/ldbl-128/s_modfl.c @@ -30,9 +30,9 @@ static char rcsid[] = "$NetBSD: $"; #include #include -static const long double one = 1.0; +static const _Float128 one = 1.0; -long double __modfl(long double x, long double *iptr) +_Float128 __modfl(_Float128 x, _Float128 *iptr) { int64_t i0,i1,j0; u_int64_t i; diff --git a/sysdeps/ieee754/ldbl-128/s_nearbyintl.c b/sysdeps/ieee754/ldbl-128/s_nearbyintl.c index 2017c04..80cc6c9 100644 --- a/sysdeps/ieee754/ldbl-128/s_nearbyintl.c +++ b/sysdeps/ieee754/ldbl-128/s_nearbyintl.c @@ -27,18 +27,18 @@ #include #include -static const long double +static const _Float128 TWO112[2]={ 5.19229685853482762853049632922009600E+33L, /* 0x406F000000000000, 0 */ -5.19229685853482762853049632922009600E+33L /* 0xC06F000000000000, 0 */ }; -long double __nearbyintl(long double x) +_Float128 __nearbyintl(_Float128 x) { fenv_t env; int64_t i0,j0,sx; u_int64_t i1 __attribute__ ((unused)); - long double w,t; + _Float128 w,t; GET_LDOUBLE_WORDS64(i0,i1,x); sx = (((u_int64_t)i0)>>63); j0 = ((i0>>48)&0x7fff)-0x3fff; diff --git a/sysdeps/ieee754/ldbl-128/s_nextafterl.c b/sysdeps/ieee754/ldbl-128/s_nextafterl.c index 4e9a2ce..d29f58a 100644 --- a/sysdeps/ieee754/ldbl-128/s_nextafterl.c +++ b/sysdeps/ieee754/ldbl-128/s_nextafterl.c @@ -28,7 +28,7 @@ static char rcsid[] = "$NetBSD: $"; #include #include -long double __nextafterl(long double x, long double y) +_Float128 __nextafterl(_Float128 x, _Float128 y) { int64_t hx,hy,ix,iy; u_int64_t lx,ly; @@ -43,7 +43,7 @@ long double __nextafterl(long double x, long double y) return x+y; if(x==y) return y; /* x=y, return y */ if((ix|lx)==0) { /* x == 0 */ - long double u; + _Float128 u; SET_LDOUBLE_WORDS64(x,hy&0x8000000000000000ULL,1);/* return +-minsubnormal */ u = math_opt_barrier (x); u = u * u; @@ -69,12 +69,12 @@ long double __nextafterl(long double x, long double y) } hy = hx&0x7fff000000000000LL; if(hy==0x7fff000000000000LL) { - long double u = x + x; /* overflow */ + _Float128 u = x + x; /* overflow */ math_force_eval (u); __set_errno (ERANGE); } if(hy==0) { - long double u = x*x; /* underflow */ + _Float128 u = x*x; /* underflow */ math_force_eval (u); /* raise underflow flag */ __set_errno (ERANGE); } diff --git a/sysdeps/ieee754/ldbl-128/s_nextupl.c b/sysdeps/ieee754/ldbl-128/s_nextupl.c index 3ee47d8..9881804 100644 --- a/sysdeps/ieee754/ldbl-128/s_nextupl.c +++ b/sysdeps/ieee754/ldbl-128/s_nextupl.c @@ -20,8 +20,8 @@ #include /* Return the least floating-point number greater than X. */ -long double -__nextupl (long double x) +_Float128 +__nextupl (_Float128 x) { int64_t hx, ix; u_int64_t lx; diff --git a/sysdeps/ieee754/ldbl-128/s_remquol.c b/sysdeps/ieee754/ldbl-128/s_remquol.c index 7356f5f..f22026d 100644 --- a/sysdeps/ieee754/ldbl-128/s_remquol.c +++ b/sysdeps/ieee754/ldbl-128/s_remquol.c @@ -23,11 +23,11 @@ #include -static const long double zero = 0.0; +static const _Float128 zero = 0.0; -long double -__remquol (long double x, long double y, int *quo) +_Float128 +__remquol (_Float128 x, _Float128 y, int *quo) { int64_t hx,hy; u_int64_t sx,lx,ly,qs; @@ -87,7 +87,7 @@ __remquol (long double x, long double y, int *quo) } else { - long double y_half = 0.5L * y; + _Float128 y_half = 0.5L * y; if (x > y_half) { x -= y; diff --git a/sysdeps/ieee754/ldbl-128/s_rintl.c b/sysdeps/ieee754/ldbl-128/s_rintl.c index ae2142b..4109516 100644 --- a/sysdeps/ieee754/ldbl-128/s_rintl.c +++ b/sysdeps/ieee754/ldbl-128/s_rintl.c @@ -30,17 +30,17 @@ static char rcsid[] = "$NetBSD: $"; #include #include -static const long double +static const _Float128 TWO112[2]={ 5.19229685853482762853049632922009600E+33L, /* 0x406F000000000000, 0 */ -5.19229685853482762853049632922009600E+33L /* 0xC06F000000000000, 0 */ }; -long double __rintl(long double x) +_Float128 __rintl(_Float128 x) { int64_t i0,j0,sx; u_int64_t i1 __attribute__ ((unused)); - long double w,t; + _Float128 w,t; GET_LDOUBLE_WORDS64(i0,i1,x); sx = (((u_int64_t)i0)>>63); j0 = ((i0>>48)&0x7fff)-0x3fff; diff --git a/sysdeps/ieee754/ldbl-128/s_roundl.c b/sysdeps/ieee754/ldbl-128/s_roundl.c index 63ffd73..36db9dc 100644 --- a/sysdeps/ieee754/ldbl-128/s_roundl.c +++ b/sysdeps/ieee754/ldbl-128/s_roundl.c @@ -23,8 +23,8 @@ #include -long double -__roundl (long double x) +_Float128 +__roundl (_Float128 x) { int32_t j0; u_int64_t i1, i0; diff --git a/sysdeps/ieee754/ldbl-128/s_scalblnl.c b/sysdeps/ieee754/ldbl-128/s_scalblnl.c index 1e24197..1060cfe 100644 --- a/sysdeps/ieee754/ldbl-128/s_scalblnl.c +++ b/sysdeps/ieee754/ldbl-128/s_scalblnl.c @@ -19,7 +19,7 @@ static char rcsid[] = "$NetBSD: $"; #endif /* - * scalblnl (long double x, long int n) + * scalblnl (_Float128 x, long int n) * scalblnl(x,n) returns x* 2**n computed by exponent * manipulation rather than by actually performing an * exponentiation or a multiplication. @@ -28,13 +28,13 @@ static char rcsid[] = "$NetBSD: $"; #include #include -static const long double +static const _Float128 two114 = 2.0769187434139310514121985316880384E+34L, /* 0x4071000000000000, 0 */ twom114 = 4.8148248609680896326399448564623183E-35L, /* 0x3F8D000000000000, 0 */ huge = 1.0E+4900L, tiny = 1.0E-4900L; -long double __scalblnl (long double x, long int n) +_Float128 __scalblnl (_Float128 x, long int n) { int64_t k,hx,lx; GET_LDOUBLE_WORDS64(hx,lx,x); diff --git a/sysdeps/ieee754/ldbl-128/s_scalbnl.c b/sysdeps/ieee754/ldbl-128/s_scalbnl.c index a5cbd0d..6053106 100644 --- a/sysdeps/ieee754/ldbl-128/s_scalbnl.c +++ b/sysdeps/ieee754/ldbl-128/s_scalbnl.c @@ -28,13 +28,13 @@ static char rcsid[] = "$NetBSD: $"; #include #include -static const long double +static const _Float128 two114 = 2.0769187434139310514121985316880384E+34L, /* 0x4071000000000000, 0 */ twom114 = 4.8148248609680896326399448564623183E-35L, /* 0x3F8D000000000000, 0 */ huge = 1.0E+4900L, tiny = 1.0E-4900L; -long double __scalbnl (long double x, int n) +_Float128 __scalbnl (_Float128 x, int n) { int64_t k,hx,lx; GET_LDOUBLE_WORDS64(hx,lx,x); diff --git a/sysdeps/ieee754/ldbl-128/s_signbitl.c b/sysdeps/ieee754/ldbl-128/s_signbitl.c index ee5d77e..53ed4a5 100644 --- a/sysdeps/ieee754/ldbl-128/s_signbitl.c +++ b/sysdeps/ieee754/ldbl-128/s_signbitl.c @@ -18,9 +18,10 @@ . */ #include +#include int -__signbitl (long double x) +__signbitl (_Float128 x) { return __builtin_signbitl (x); } diff --git a/sysdeps/ieee754/ldbl-128/s_sincosl.c b/sysdeps/ieee754/ldbl-128/s_sincosl.c index 1abdb44..9130cdf 100644 --- a/sysdeps/ieee754/ldbl-128/s_sincosl.c +++ b/sysdeps/ieee754/ldbl-128/s_sincosl.c @@ -24,7 +24,7 @@ #include void -__sincosl (long double x, long double *sinx, long double *cosx) +__sincosl (_Float128 x, _Float128 *sinx, _Float128 *cosx) { int64_t ix; @@ -45,7 +45,7 @@ __sincosl (long double x, long double *sinx, long double *cosx) else { /* Argument reduction needed. */ - long double y[2]; + _Float128 y[2]; int n; n = __ieee754_rem_pio2l (x, y); diff --git a/sysdeps/ieee754/ldbl-128/s_sinl.c b/sysdeps/ieee754/ldbl-128/s_sinl.c index 582a53f..ad7a3de 100644 --- a/sysdeps/ieee754/ldbl-128/s_sinl.c +++ b/sysdeps/ieee754/ldbl-128/s_sinl.c @@ -48,9 +48,9 @@ #include #include -long double __sinl(long double x) +_Float128 __sinl(_Float128 x) { - long double y[2],z=0.0L; + _Float128 y[2],z=0.0L; int64_t n, ix; /* High word of x. */ diff --git a/sysdeps/ieee754/ldbl-128/s_tanhl.c b/sysdeps/ieee754/ldbl-128/s_tanhl.c index f7a1d20..ad418c0 100644 --- a/sysdeps/ieee754/ldbl-128/s_tanhl.c +++ b/sysdeps/ieee754/ldbl-128/s_tanhl.c @@ -45,12 +45,12 @@ #include #include -static const long double one = 1.0, two = 2.0, tiny = 1.0e-4900L; +static const _Float128 one = 1.0, two = 2.0, tiny = 1.0e-4900L; -long double -__tanhl (long double x) +_Float128 +__tanhl (_Float128 x) { - long double t, z; + _Float128 t, z; u_int32_t jx, ix; ieee854_long_double_shape_type u; diff --git a/sysdeps/ieee754/ldbl-128/s_tanl.c b/sysdeps/ieee754/ldbl-128/s_tanl.c index c7d6374..3d67631 100644 --- a/sysdeps/ieee754/ldbl-128/s_tanl.c +++ b/sysdeps/ieee754/ldbl-128/s_tanl.c @@ -48,9 +48,9 @@ #include #include -long double __tanl(long double x) +_Float128 __tanl(_Float128 x) { - long double y[2],z=0.0L; + _Float128 y[2],z=0.0L; int64_t n, ix; /* High word of x. */ diff --git a/sysdeps/ieee754/ldbl-128/s_truncl.c b/sysdeps/ieee754/ldbl-128/s_truncl.c index c71f0ab..72e74ab 100644 --- a/sysdeps/ieee754/ldbl-128/s_truncl.c +++ b/sysdeps/ieee754/ldbl-128/s_truncl.c @@ -23,8 +23,8 @@ #include -long double -__truncl (long double x) +_Float128 +__truncl (_Float128 x) { int32_t j0; u_int64_t i0, i1, sx; diff --git a/sysdeps/ieee754/ldbl-128/t_expl.h b/sysdeps/ieee754/ldbl-128/t_expl.h index a23d3d9..849d22f 100644 --- a/sysdeps/ieee754/ldbl-128/t_expl.h +++ b/sysdeps/ieee754/ldbl-128/t_expl.h @@ -29,7 +29,7 @@ __expl_table[T_EXPL_ARGN+2*i] == i/S+s where absl(s) <= 2^-54 and absl(r) <= 2^-212. */ -static const long double __expl_table [] = { +static const _Float128 __expl_table [] = { -3.47656250000000000584188889839535373E-01L, /* bffd640000000000002b1b04213cf000 */ 6.90417668990715641167244540876988960E-32L, /* 3f97667c3fdb588a6ae1af8748357a17 */ -3.43749999999999981853132895957607418E-01L, /* bffd5ffffffffffffac4ff5f4050b000 */ diff --git a/sysdeps/ieee754/ldbl-128/t_sincosl.c b/sysdeps/ieee754/ldbl-128/t_sincosl.c index de5fe0d..564d6d4 100644 --- a/sysdeps/ieee754/ldbl-128/t_sincosl.c +++ b/sysdeps/ieee754/ldbl-128/t_sincosl.c @@ -25,7 +25,10 @@ Computed using gmp. */ -const long double __sincosl_table[] = { +/* Include to grab typedefs and wrappers for _Float128 and such. */ +#include + +const _Float128 __sincosl_table[] = { /* x = 1.48437500000000000000000000000000000e-01L 3ffc3000000000000000000000000000 */ /* cos(x) = 0.fd2f5320e1b790209b4dda2f98f79caaa7b873aff1014b0fbc5243766d03cb006bc837c4358 */ diff --git a/sysdeps/ieee754/ldbl-128/x2y2m1l.c b/sysdeps/ieee754/ldbl-128/x2y2m1l.c index 4e97885..0f7f8bc 100644 --- a/sysdeps/ieee754/ldbl-128/x2y2m1l.c +++ b/sysdeps/ieee754/ldbl-128/x2y2m1l.c @@ -27,7 +27,7 @@ overflow occurs. */ static inline void -add_split (long double *hi, long double *lo, long double x, long double y) +add_split (_Float128 *hi, _Float128 *lo, _Float128 x, _Float128 y) { /* Apply Dekker's algorithm. */ *hi = x + y; @@ -40,8 +40,8 @@ add_split (long double *hi, long double *lo, long double x, long double y) static int compare (const void *p, const void *q) { - long double pld = fabsl (*(const long double *) p); - long double qld = fabsl (*(const long double *) q); + _Float128 pld = fabsl (*(const _Float128 *) p); + _Float128 qld = fabsl (*(const _Float128 *) q); if (pld < qld) return -1; else if (pld == qld) @@ -54,22 +54,22 @@ compare (const void *p, const void *q) It is given that 1 > X >= Y >= epsilon / 2, and that X^2 + Y^2 >= 0.5. */ -long double -__x2y2m1l (long double x, long double y) +_Float128 +__x2y2m1l (_Float128 x, _Float128 y) { - long double vals[5]; + _Float128 vals[5]; SET_RESTORE_ROUNDL (FE_TONEAREST); mul_splitl (&vals[1], &vals[0], x, x); mul_splitl (&vals[3], &vals[2], y, y); vals[4] = -1.0L; - qsort (vals, 5, sizeof (long double), compare); + qsort (vals, 5, sizeof (_Float128), compare); /* Add up the values so that each element of VALS has absolute value at most equal to the last set bit of the next nonzero element. */ for (size_t i = 0; i <= 3; i++) { add_split (&vals[i + 1], &vals[i], vals[i + 1], vals[i]); - qsort (vals + i + 1, 4 - i, sizeof (long double), compare); + qsort (vals + i + 1, 4 - i, sizeof (_Float128), compare); } /* Now any error from this addition will be small. */ return vals[4] + vals[3] + vals[2] + vals[1] + vals[0]; diff --git a/sysdeps/ieee754/ldbl-128ibm/e_expl.c b/sysdeps/ieee754/ldbl-128ibm/e_expl.c index ca3cbb5..5916caf 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_expl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_expl.c @@ -65,6 +65,10 @@ #include #include #include + +#define _Float128 long double +#define L(x) x ## L + #include static const long double C[] = { diff --git a/sysdeps/ieee754/ldbl-128ibm/e_j0l.c b/sysdeps/ieee754/ldbl-128ibm/e_j0l.c index 39a238a..00bce29 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_j0l.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_j0l.c @@ -1,3 +1,5 @@ /* Looks like we can use ieee854 e_j0l.c as is for IBM extended format. */ +#define _Float128 long double +#define L(x) x ## L #include diff --git a/sysdeps/ieee754/ldbl-128ibm/e_j1l.c b/sysdeps/ieee754/ldbl-128ibm/e_j1l.c index c86e24f..da9fd9e 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_j1l.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_j1l.c @@ -1,2 +1,4 @@ /* Looks like we can use ieee854 e_j1l.c as is for IBM extended format. */ +#define _Float128 long double +#define L(x) x ## L #include diff --git a/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c b/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c index 9bcaaf7..8ac8283 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c @@ -1,3 +1,5 @@ /* Looks like we can use ieee854 e_lgammal_r.c as is for IBM extended format. */ +#define _Float128 long double +#define L(x) x ## L #include diff --git a/sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c b/sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c index 010a671..64bfc46 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c @@ -2,5 +2,9 @@ #include #undef weak_alias #define weak_alias(n,a) + +#define _Float128 long double +#define L(x) x ## L + #include long_double_symbol (libm, __cbrtl, cbrtl);