From owner-freebsd-current@FreeBSD.ORG Tue Jul 10 09:51:40 2012 Return-Path: Delivered-To: freebsd-current@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E42001065672; Tue, 10 Jul 2012 09:51:40 +0000 (UTC) (envelope-from rhurlin@gwdg.de) Received: from amailer.gwdg.de (amailer.gwdg.de [134.76.10.18]) by mx1.freebsd.org (Postfix) with ESMTP id 6F39C8FC1B; Tue, 10 Jul 2012 09:51:40 +0000 (UTC) Received: from wald.nfv.gwdg.de ([134.76.242.31] helo=pc028.nfv) by mailer.gwdg.de with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1SoWSP-0004bF-Va; Tue, 10 Jul 2012 11:10:10 +0200 Message-ID: <4FFBF16D.2030007@gwdg.de> Date: Tue, 10 Jul 2012 11:10:05 +0200 From: Rainer Hurling User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:13.0) Gecko/20120627 Thunderbird/13.0.1 MIME-Version: 1.0 To: Steve Kargl References: <4FC3EBDA.2080502@missouri.edu> <20120528221731.GA76723@troutmask.apl.washington.edu> <4FC40449.3040602@missouri.edu> <20120528233035.GA77157@troutmask.apl.washington.edu> <4FC40DEA.8030703@missouri.edu> <20120529000756.GA77386@troutmask.apl.washington.edu> <4FC43C8F.5090509@missouri.edu> <20120529045612.GB4445@server.rulingia.com> <20120708124047.GA44061@zim.MIT.EDU> <210816F0-7ED7-4481-ABFF-C94A700A3EA0@bsdimp.com> <20120708233624.GA53462@troutmask.apl.washington.edu> In-Reply-To: <20120708233624.GA53462@troutmask.apl.washington.edu> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Authenticated: Id:rhurlin X-Spam-Level: - X-Virus-Scanned: (clean) by exiscan+sophie Cc: David Schultz , freebsd-current@FreeBSD.ORG, Peter Jeremy , Warner Losh Subject: Re: Use of C99 extra long double math functions after r236148 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jul 2012 09:51:41 -0000 On 09.07.2012 01:36 (UTC+2), Steve Kargl wrote: > On Sun, Jul 08, 2012 at 11:51:56AM -0600, Warner Losh wrote: >> >> On Jul 8, 2012, at 6:40 AM, David Schultz wrote: >> >>> On Tue, May 29, 2012, Peter Jeremy wrote: >>>> On 2012-May-28 15:54:06 -0700, Steve Kargl wrote: >>>>> Given that cephes was written years before C99 was even >>>>> conceived, I suspect all functions are sub-standard. >>>> >>>> Well, most of cephes was written before C99. The C99 parts of >>>> cephes were written to turn it into a complete C99 implementation. >>> >>> I'm a bit late to the party, but I thought I'd chime in with some >>> context. We did consider using Cephes years ago, and even got >>> permission from the author to release it under an acceptable license. >>> We later decided not to use it for technical reasons. >>> >>> By the way, virtually none of the people who have complained about the >>> missing functions actually need them. Mostly they just want to >>> compile some software that was written by a naive programmer who >>> thought it would be cool to use the most precise type available. The >>> complex functions are even less commonly needed, and the truth is that >>> they have no business being part of the C standard anyway. >>> >>> The question remains of what to do about the missing functions. Bruce >>> and Steve have been working on expl and logl for years. If those ever >>> get in the tree, the remaining long double functions are easy. Those >>> functions are basically done, modulo a bunch of cleanup and testing, >>> and I encourage any mathematically inclined folks who are interested >>> in pushing things along to get in touch with them. I'm not going to >>> have any time myself for a few months at least. >> >> Where can I find these? > > I've posted expl() a few times for the ld80 version. > I don't have an ld128 version, which is why I have > yet to submit a formal patch for expl(). I also > have an ld80 expm1l(). I have a copy of bde's ld80 > logl(). IIRC, bde wrote an ld128, but I don't have > nor do I know if it has been tested. Do you think your version from http://www.freebsd.org/cgi/query-pr.cgi?pr=152415 for expl() ld80 version could be the one getting into head? Would you be willing to commit it? As far as I understand from discussions on R mailing list (r-devel@r-project.org), they plan to reduce the emulation and/or workaround of long and complex math functions for FreeBSD and other systems with their next releases of R devel. So we could really need some progress with our C99 conform math functions ;-) >>> Lastly, there's the question of mediocre alternatives, such as >>> solutions that get the boundary cases wrong or don't handle 128-bit >>> floating point. For the exponential and logarithmic functions, Bruce >>> and Steve have already written good implementations, so there's no >>> reason to settle for less. As for the other long double functions, >>> bringing in some Cephes code in a separate directory as a temporary >>> fix might be the way to go. I don't like that solution, and Steve >>> raises some good technical points about why it isn't ideal; however, a >>> better solution is more than a decade overdue, and people are >>> justified in finding that unacceptable. >> >> Don't let the perfect be the enemy of the good. It is better to >> have OK implementations of these functions than none at all. > > You'll need to define OK, because some of the implementations > I've read are poor. I also hope that before anything is > committed to libm that the person doing the committing does > some rather thorough testing of the code. > >> We originally had so-so double support, but bruce spent many >> years optimizing them to make them very good. If we were >> just starting out, and hadn't let 10 years get behind us, I'd >> give the substandard argument some weight. But now that we're >> 13 years down the line from c99's publication I think we need >> to relax our standards a bit. I'd even argue that these >> functions being a little bad could easily spur people to make >> them better. Their absence makes people just >> #define llexp(x) lexp(x), etc. :( > > Of course, the converse argument is that people have had 10 years > to learn enough about floating point to actually write and submit > code. I knew very little about FP before I wrote sqrtl(). I had > a need for sqrtl() and so I went looking for a solution. > > PS: I also wrote sincos[fl](), which is very handy for the > complex trig functions. > >