From: Paul Zimmermann <Paul.Zimmermann@inria.fr>
To: Szabolcs Nagy <nsz@port70.net>
Cc: musl@lists.openwall.com
Subject: [musl] Re: [PATCH 1/2] math: fix ld80 acoshl(x) for x < 0
Date: Sat, 19 Aug 2023 08:10:56 +0200 [thread overview]
Message-ID: <p9u0wmxr8sun.fsf@coriandre.loria.fr> (raw)
In-Reply-To: <20230818211600.GE3448312@port70.net> (message from Szabolcs Nagy on Fri, 18 Aug 2023 23:16:00 +0200)
Dear Szabolcs,
ok for me, I now get a largest error of 2.99 ulp:
NEW acosh 0 -1 0x1.1ecdb5b8f0c5d79p+0l [3] [2.99] 2.98085 2.980840623325726
Thank you for fixing that rapidly!
Paul
> Date: Fri, 18 Aug 2023 23:16:00 +0200
> From: Szabolcs Nagy <nsz@port70.net>
> Cc: musl@lists.openwall.com
>
> acosh(x) is nan for x < 1, but x < 0 cases were not handled specially
> and acoshl gave wrong result for some -0x1p32 < x < -2 values, e.g.:
>
> acoshl(-0x1p20) returned -inf,
> acoshl(-0x1.4p20) returned -0x1.db365758403aa9acp+0L,
>
> fixed by checking the sign bit and handling it specially.
>
> reported by Paul Zimmermann.
> ---
> src/math/acoshl.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/src/math/acoshl.c b/src/math/acoshl.c
> index 8d4b43f6..943cec17 100644
> --- a/src/math/acoshl.c
> +++ b/src/math/acoshl.c
> @@ -10,14 +10,18 @@ long double acoshl(long double x)
> long double acoshl(long double x)
> {
> union ldshape u = {x};
> - int e = u.i.se & 0x7fff;
> + int e = u.i.se;
>
> if (e < 0x3fff + 1)
> - /* |x| < 2, invalid if x < 1 or nan */
> + /* 0 <= x < 2, invalid if x < 1 */
> return log1pl(x-1 + sqrtl((x-1)*(x-1)+2*(x-1)));
> if (e < 0x3fff + 32)
> - /* |x| < 0x1p32 */
> + /* 2 <= x < 0x1p32 */
> return logl(2*x - 1/(x+sqrtl(x*x-1)));
> + if (e & 0x8000)
> + /* x < 0 or x = -0, invalid */
> + return (x - x) / (x - x);
> + /* 0x1p32 <= x or nan */
> return logl(x) + 0.693147180559945309417232121458176568L;
> }
> #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
> --
> 2.41.0
>
>
next prev parent reply other threads:[~2023-08-19 6:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-16 14:39 [musl] musl 1.2.4 Paul Zimmermann
2023-08-17 15:57 ` Szabolcs Nagy
2023-08-18 21:16 ` [musl] [PATCH 1/2] math: fix ld80 acoshl(x) for x < 0 Szabolcs Nagy
2023-08-19 6:10 ` Paul Zimmermann [this message]
2023-08-18 21:17 ` [musl] [PATCH 2/2] math: fix ld80 powl(x,huge) and powl(LDBL_MAX,small) Szabolcs Nagy
2023-08-19 6:14 ` [musl] " Paul Zimmermann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=p9u0wmxr8sun.fsf@coriandre.loria.fr \
--to=paul.zimmermann@inria.fr \
--cc=musl@lists.openwall.com \
--cc=nsz@port70.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).