From: FX <fxcoudert@gmail.com>
To: gcc-patches <gcc-patches@gcc.gnu.org>
Cc: gfortran <fortran@gcc.gnu.org>, Tobias Burnus <burnus@net-b.de>,
Jakub Jelinek <jakub@redhat.com>
Subject: Re: [libquadmath, patch] Add logbq() to libquadmath
Date: Sun, 09 Aug 2015 06:27:00 -0000 [thread overview]
Message-ID: <4CDF46E0-35E0-48D0-A4EA-C90D79959AB2@gmail.com> (raw)
In-Reply-To: <E23F9E05-5B2F-4288-A067-5812BB630BD0@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 453 bytes --]
ping
In the apparent absence of the libquadmath maintainers, could a global reviewer approve this rather simple patch, please?
> The attached patch adds logbq() to libquadmath, with code lifted from glibc.
> It is made necessary by an upcoming patch for gfortran, adding full support for the IEEE modules on __float128, and requires logbq().
>
> Bootstrapped and regtested on x86_64-apple-darwin14.
> OK to commit to trunk?
>
> FX
[-- Attachment #2: logbq.diff --]
[-- Type: application/octet-stream, Size: 4004 bytes --]
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: 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)
[-- Attachment #3: logbq.ChangeLog --]
[-- Type: application/octet-stream, Size: 301 bytes --]
2015-08-03 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
* Makefile.am (libquadmath_la_SOURCES):
* Makefile.in: Regenerate.
* libquadmath.texi: Document logbq.
* quadmath.h: Add logbq prototype.
* quadmath.map: Add logbq.
* quadmath_weak.h: Add logbq prototype.
* math/logbq.c: New file
next prev parent reply other threads:[~2015-08-09 6:27 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-03 21:04 FX
2015-08-09 6:27 ` FX [this message]
2015-08-09 7:08 ` Paul Richard Thomas
2015-08-09 7:13 ` Paul Richard Thomas
2015-08-09 7:09 ` Richard Biener
2015-08-09 8:47 ` FX
2015-08-05 11:43 Dominique d'Humières
2015-08-05 13:11 ` FX
2015-08-05 13:43 ` Dominique d'Humières
2015-08-06 8:39 ` FX
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=4CDF46E0-35E0-48D0-A4EA-C90D79959AB2@gmail.com \
--to=fxcoudert@gmail.com \
--cc=burnus@net-b.de \
--cc=fortran@gcc.gnu.org \
--cc=gcc-patches@gcc.gnu.org \
--cc=jakub@redhat.com \
/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.
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 read-only IMAP folder(s) and NNTP newsgroup(s).