From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 43974 invoked by alias); 5 Aug 2015 13:11:15 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 43950 invoked by uid 89); 5 Aug 2015 13:11:14 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-wi0-f179.google.com Received: from mail-wi0-f179.google.com (HELO mail-wi0-f179.google.com) (209.85.212.179) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 05 Aug 2015 13:11:14 +0000 Received: by wijp15 with SMTP id p15so47957119wij.0; Wed, 05 Aug 2015 06:11:10 -0700 (PDT) X-Received: by 10.180.87.99 with SMTP id w3mr19131248wiz.4.1438780270921; Wed, 05 Aug 2015 06:11:10 -0700 (PDT) Received: from pc86.home (ALyon-654-1-463-3.w109-213.abo.wanadoo.fr. [109.213.239.3]) by smtp.gmail.com with ESMTPSA id c3sm4127262wja.3.2015.08.05.06.11.06 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 05 Aug 2015 06:11:09 -0700 (PDT) Content-Type: multipart/mixed; boundary="Apple-Mail=_078BF9B7-D8B3-45EF-8855-D99F2EE43CB6" Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2102\)) Subject: Re: [libquadmath, patch] Add logbq() to libquadmath From: FX In-Reply-To: Date: Wed, 05 Aug 2015 13:11:00 -0000 Cc: GNU GFortran , GCC Patches Message-Id: References: To: =?utf-8?Q?Dominique_d=27Humi=C3=A8res?= X-SW-Source: 2015-08/txt/msg00269.txt.bz2 --Apple-Mail=_078BF9B7-D8B3-45EF-8855-D99F2EE43CB6 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Content-length: 376 > AFAICT there is something missing in the patch: I do not see any compilat= ion of math/logbq.c and indeed no trace of logbq in libquadmath. What I am = missing? Maybe you didn=E2=80=99t regenerate the Makefile.in? The patch was sent without this regenerated file, as is (as I understand) t= he custom on gcc-patches. Attached is the full diff, including Makefile.in. FX --Apple-Mail=_078BF9B7-D8B3-45EF-8855-D99F2EE43CB6 Content-Disposition: attachment; filename=x.diff Content-Type: application/octet-stream; name="x.diff" Content-Transfer-Encoding: 7bit Content-length: 8762 Index: Makefile.am =================================================================== --- Makefile.am (revision 226429) +++ Makefile.am (working copy) @@ -57,7 +57,7 @@ libquadmath_la_SOURCES = \ math/erfq.c math/logq.c math/sqrtq.c math/expm1q.c math/lroundq.c \ math/tanhq.c math/expq.c math/modfq.c math/tanq.c math/fabsq.c \ math/nanq.c math/tgammaq.c math/finiteq.c math/nextafterq.c \ - math/truncq.c math/floorq.c math/powq.c math/fmaq.c \ + math/truncq.c math/floorq.c math/powq.c math/fmaq.c math/logbq.c \ math/cacoshq.c math/cacosq.c math/casinhq.c math/casinq.c \ math/catanhq.c math/catanq.c math/cimagq.c math/conjq.c math/cprojq.c \ math/crealq.c math/fdimq.c math/fmaxq.c math/fminq.c math/ilogbq.c \ Index: Makefile.in =================================================================== --- Makefile.in (revision 226429) +++ Makefile.in (working copy) @@ -140,23 +140,24 @@ am__dirstamp = $(am__leading_dot)dirstam @BUILD_LIBQUADMATH_TRUE@ math/tgammaq.lo math/finiteq.lo \ @BUILD_LIBQUADMATH_TRUE@ math/nextafterq.lo math/truncq.lo \ @BUILD_LIBQUADMATH_TRUE@ math/floorq.lo math/powq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/fmaq.lo math/cacoshq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/cacosq.lo math/casinhq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/casinq.lo math/catanhq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/catanq.lo math/cimagq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/conjq.lo math/cprojq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/crealq.lo math/fdimq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/fmaxq.lo math/fminq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/ilogbq.lo math/llrintq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/log2q.lo math/lrintq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/nearbyintq.lo math/remquoq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/ccoshq.lo math/cexpq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/clog10q.lo math/clogq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/csinq.lo math/csinhq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/csqrtq.lo math/ctanq.lo \ -@BUILD_LIBQUADMATH_TRUE@ math/ctanhq.lo printf/addmul_1.lo \ -@BUILD_LIBQUADMATH_TRUE@ printf/add_n.lo printf/cmp.lo \ -@BUILD_LIBQUADMATH_TRUE@ printf/divrem.lo printf/flt1282mpn.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/fmaq.lo math/logbq.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/cacoshq.lo math/cacosq.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/casinhq.lo math/casinq.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/catanhq.lo math/catanq.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/cimagq.lo math/conjq.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/cprojq.lo math/crealq.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/fdimq.lo math/fmaxq.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/fminq.lo math/ilogbq.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/llrintq.lo math/log2q.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/lrintq.lo math/nearbyintq.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/remquoq.lo math/ccoshq.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/cexpq.lo math/clog10q.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/clogq.lo math/csinq.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/csinhq.lo math/csqrtq.lo \ +@BUILD_LIBQUADMATH_TRUE@ math/ctanq.lo math/ctanhq.lo \ +@BUILD_LIBQUADMATH_TRUE@ printf/addmul_1.lo printf/add_n.lo \ +@BUILD_LIBQUADMATH_TRUE@ printf/cmp.lo printf/divrem.lo \ +@BUILD_LIBQUADMATH_TRUE@ printf/flt1282mpn.lo \ @BUILD_LIBQUADMATH_TRUE@ printf/fpioconst.lo printf/lshift.lo \ @BUILD_LIBQUADMATH_TRUE@ printf/mul_1.lo printf/mul_n.lo \ @BUILD_LIBQUADMATH_TRUE@ printf/mul.lo printf/printf_fphex.lo \ @@ -368,7 +369,7 @@ AUTOMAKE_OPTIONS = 1.8 foreign @BUILD_LIBQUADMATH_TRUE@ math/erfq.c math/logq.c math/sqrtq.c math/expm1q.c math/lroundq.c \ @BUILD_LIBQUADMATH_TRUE@ math/tanhq.c math/expq.c math/modfq.c math/tanq.c math/fabsq.c \ @BUILD_LIBQUADMATH_TRUE@ math/nanq.c math/tgammaq.c math/finiteq.c math/nextafterq.c \ -@BUILD_LIBQUADMATH_TRUE@ math/truncq.c math/floorq.c math/powq.c math/fmaq.c \ +@BUILD_LIBQUADMATH_TRUE@ math/truncq.c math/floorq.c math/powq.c math/fmaq.c math/logbq.c \ @BUILD_LIBQUADMATH_TRUE@ math/cacoshq.c math/cacosq.c math/casinhq.c math/casinq.c \ @BUILD_LIBQUADMATH_TRUE@ math/catanhq.c math/catanq.c math/cimagq.c math/conjq.c math/cprojq.c \ @BUILD_LIBQUADMATH_TRUE@ math/crealq.c math/fdimq.c math/fmaxq.c math/fminq.c math/ilogbq.c \ @@ -607,6 +608,7 @@ math/truncq.lo: math/$(am__dirstamp) mat math/floorq.lo: math/$(am__dirstamp) math/$(DEPDIR)/$(am__dirstamp) math/powq.lo: math/$(am__dirstamp) math/$(DEPDIR)/$(am__dirstamp) math/fmaq.lo: math/$(am__dirstamp) math/$(DEPDIR)/$(am__dirstamp) +math/logbq.lo: math/$(am__dirstamp) math/$(DEPDIR)/$(am__dirstamp) math/cacoshq.lo: math/$(am__dirstamp) math/$(DEPDIR)/$(am__dirstamp) math/cacosq.lo: math/$(am__dirstamp) math/$(DEPDIR)/$(am__dirstamp) math/casinhq.lo: math/$(am__dirstamp) math/$(DEPDIR)/$(am__dirstamp) @@ -809,6 +811,8 @@ mostlyclean-compile: -rm -f math/log1pq.lo -rm -f math/log2q.$(OBJEXT) -rm -f math/log2q.lo + -rm -f math/logbq.$(OBJEXT) + -rm -f math/logbq.lo -rm -f math/logq.$(OBJEXT) -rm -f math/logq.lo -rm -f math/lrintq.$(OBJEXT) @@ -967,6 +971,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/log10q.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/log1pq.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/log2q.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/logbq.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/logq.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/lrintq.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/lroundq.Plo@am__quote@ Index: libquadmath.texi =================================================================== --- libquadmath.texi (revision 226429) +++ libquadmath.texi (working copy) @@ -180,6 +180,7 @@ The following mathematical functions are @item @code{lgammaq}: logarithmic gamma function @item @code{llrintq}: round to nearest integer value @item @code{llroundq}: round to nearest integer value away from zero +@item @code{logbq}: get exponent of the value @item @code{logq}: natural logarithm function @item @code{log10q}: base 10 logarithm function @item @code{log1pq}: compute natural logarithm of the value plus one Index: math/logbq.c =================================================================== --- math/logbq.c (revision 0) +++ math/logbq.c (working copy) @@ -0,0 +1,47 @@ +/* s_logbl.c -- long double version of s_logb.c. + * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz. + */ + +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * long double logbl(x) + * IEEE 754 logb. Included to pass IEEE test suite. Not recommend. + * Use ilogb instead. + */ + +#include "quadmath-imp.h" + +__float128 +logbq (__float128 x) +{ + int64_t lx, hx, ex; + + GET_FLT128_WORDS64 (hx, lx, x); + hx &= 0x7fffffffffffffffLL; /* high |x| */ + if ((hx | lx) == 0) + return -1.0 / fabsq (x); + if (hx >= 0x7fff000000000000LL) + return x * x; + if ((ex = hx >> 48) == 0) /* IEEE 754 logb */ + { + /* POSIX specifies that denormal number is treated as + though it were normalized. */ + int ma; + if (hx == 0) + ma = __builtin_clzll (lx) + 64; + else + ma = __builtin_clzll (hx); + ex -= ma - 16; + } + return (__float128) (ex - 16383); +} Index: quadmath.h =================================================================== --- quadmath.h (revision 226429) +++ quadmath.h (working copy) @@ -76,6 +76,7 @@ extern __float128 ldexpq (__float128, in extern __float128 lgammaq (__float128) __quadmath_throw; extern long long int llrintq (__float128) __quadmath_throw; extern long long int llroundq (__float128) __quadmath_throw; +extern __float128 logbq (__float128) __quadmath_throw; extern __float128 logq (__float128) __quadmath_throw; extern __float128 log10q (__float128) __quadmath_throw; extern __float128 log2q (__float128) __quadmath_throw; Index: quadmath.map =================================================================== --- quadmath.map (revision 226429) +++ quadmath.map (working copy) @@ -96,3 +96,8 @@ QUADMATH_1.0 { local: *; }; + +QUADMATH_1.1 { + global: + logbq; +} QUADMATH_1.0; Index: quadmath_weak.h =================================================================== --- quadmath_weak.h (revision 226429) +++ quadmath_weak.h (working copy) @@ -72,6 +72,7 @@ __qmath3 (ldexpq) __qmath3 (lgammaq) __qmath3 (llrintq) __qmath3 (llroundq) +__qmath3 (logbq) __qmath3 (logq) __qmath3 (log10q) __qmath3 (log1pq) --Apple-Mail=_078BF9B7-D8B3-45EF-8855-D99F2EE43CB6--