From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sourceware.org (Postfix) with ESMTPS id 565B73858013 for ; Thu, 10 Feb 2022 17:29:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 565B73858013 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=inria.fr Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=inria.fr DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=date:message-id:from:to:cc:in-reply-to:subject: references; bh=vca45GjexD4rDW0Xw2tRrn1+XPkdEKVPREO45QMI/pk=; b=o0CZR6YQJXNvXxvBw0i6CtxmHHLxG/SuZfS3UIsKNlU2TzeeTiUhcixc qQ73ybUkFpC7ljvRB9VLPBzlN2nmRGrqfBgLpTCzDCIioKNZ9AzbLgyNJ /Gq2D/PR+phw2F5KIkin7mUAmjVltX3i6ONlbl41TgiROvNKbyKZIco3U s=; X-IronPort-AV: E=Sophos;i="5.88,359,1635199200"; d="scan'208";a="5590558" Received: from tomate.loria.fr (HELO tomate) ([152.81.10.51]) by mail3-relais-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Feb 2022 18:29:46 +0100 Date: Thu, 10 Feb 2022 18:29:45 +0100 Message-Id: From: Paul Zimmermann To: andoni.arregui@gtd-gmbh.de Cc: newlib@sourceware.org In-Reply-To: <196bfdd68bf758c566a466e27dd9ded817a50b44.camel@gtd-gmbh.de> (message from Andoni Arregi on Thu, 10 Feb 2022 17:12:40 +0100) Subject: Re: [PATCH 2/2] Add a missing default case in lgamma References: <99cdb95d3263da03844fa0343c22d9e4ab87375e.camel@gtd-gmbh.de> <196bfdd68bf758c566a466e27dd9ded817a50b44.camel@gtd-gmbh.de> X-Spam-Status: No, score=-9.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2022 17:29:49 -0000 Dear Andoni, unless I did a mistake, I still get the same error (7.50e+06 ulps) than before this patch (after applying the other one), when I do an exhaustive search on all binary32 inputs: Using RedHat newlib MPFR library: 4.1.0 MPFR header: 4.1.0 (based on 4.1.0) Checking function mylgammaf with MPFR_RNDN libm wrong by up to 7.50e+06 ulp(s) [7497618] for x=-0x1.3a7fcap+1 mylgamma gives -0x1p-24 mpfr_mylgamma gives -0x1.e4cf24p-24 Total: errors=509423944 (11.91%) errors2=11684280 maxerr=7.50e+06 ulp(s) What result do you get for x=-0x1.3a7fcap+1? Best regards, Paul > From: Andoni Arregi > Date: Thu, 10 Feb 2022 17:12:40 +0100 > > The missing default case leads to large errors for |x| in range > [2.0, 3.0[. > In case of i=2, i.e., in the range between [2,3[, the computation > "r += logf(z)" is not performed and hence the result was wrong. > The added default case resolves this issue. > (Courtesy of Andreas Jung, ESA) > --- > newlib/libm/math/er_lgamma.c | 1 + > newlib/libm/math/erf_lgamma.c | 1 + > 2 files changed, 2 insertions(+) > > diff --git a/newlib/libm/math/er_lgamma.c b/newlib/libm/math/er_lgamma.c > index 5c88548fb..65727c6ab 100644 > --- a/newlib/libm/math/er_lgamma.c > +++ b/newlib/libm/math/er_lgamma.c > @@ -302,6 +302,7 @@ static double zero= 0.00000000000000000000e+00; > case 5: z *= (y+4.0); /* FALLTHRU */ > case 4: z *= (y+3.0); /* FALLTHRU */ > case 3: z *= (y+2.0); /* FALLTHRU */ > + default: > r += __ieee754_log(z); break; > } > /* 8.0 <= x < 2**58 */ > diff --git a/newlib/libm/math/erf_lgamma.c b/newlib/libm/math/erf_lgamma.c > index 84d02159b..e7311cacf 100644 > --- a/newlib/libm/math/erf_lgamma.c > +++ b/newlib/libm/math/erf_lgamma.c > @@ -238,6 +238,7 @@ static float zero= 0.0000000000e+00; > case 5: z *= (y+(float)4.0); /* FALLTHRU */ > case 4: z *= (y+(float)3.0); /* FALLTHRU */ > case 3: z *= (y+(float)2.0); /* FALLTHRU */ > + default: > r += __ieee754_logf(z); break; > } > /* 8.0 <= x < 2**58 */ > -- > 2.35.1