From owner-freebsd-current@FreeBSD.ORG Thu May 31 17:12:22 2012 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9A31A106566C for ; Thu, 31 May 2012 17:12:22 +0000 (UTC) (envelope-from stephen@missouri.edu) Received: from wilberforce.math.missouri.edu (wilberforce.math.missouri.edu [128.206.184.213]) by mx1.freebsd.org (Postfix) with ESMTP id 58F5B8FC0A for ; Thu, 31 May 2012 17:12:22 +0000 (UTC) Received: from [128.206.184.213] (wilberforce.math.missouri.edu [128.206.184.213]) by wilberforce.math.missouri.edu (8.14.5/8.14.5) with ESMTP id q4VHCGWD015237 for ; Thu, 31 May 2012 12:12:16 -0500 (CDT) (envelope-from stephen@missouri.edu) Message-ID: <4FC7A670.40004@missouri.edu> Date: Thu, 31 May 2012 12:12:16 -0500 From: Stephen Montgomery-Smith User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:12.0) Gecko/20120505 Thunderbird/12.0.1 MIME-Version: 1.0 To: freebsd-current@freebsd.org References: <4FC30090.4070003@gwdg.de> <20120528210507.GF2675@aspire.rulingia.com> <20120528230218.GC76723@troutmask.apl.washington.edu> <201205311145.15454.jhb@freebsd.org> In-Reply-To: <201205311145.15454.jhb@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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: Thu, 31 May 2012 17:12:22 -0000 On 05/31/12 10:45, John Baldwin wrote: > On Monday, May 28, 2012 7:02:18 pm Steve Kargl wrote: >> On Tue, May 29, 2012 at 07:05:07AM +1000, Peter Jeremy wrote: >>> On 2012-May-28 11:01:24 -0500, Stephen Montgomery-Smith > wrote: >>>> One thing that could be done is to have a "math/cephes" port that adds >>>> the extra C99 math functions. This is already done in the math/sage >>>> port, using a rather clever patch due to Peter Jeremy, that applies to >>>> the cephes code. >>>> >>>> What it would do is to create a /usr/local/lib/libm.so that would >>>> provide the extra functions not currently included in /lib/libm.so, and >>>> then link in /lib/libm.so as well. It would also create its own >>>> /usr/local/include/math.h and /usr/local/include/complex.h as well. >>> >>> Basically, as long as the compiler searches /usr/local/{include,lib} >>> before the base include/lib then, and -lm give >>> the application a complete C99 math implementation by using base >>> functions where they exist and cephes functions where they don't. >>> >>> The patch I wrote for sage can be found at >>> http://trac.sagemath.org/sage_trac/ticket/9543 >>> If there's any interest, I could produce a port for this. >>> >>> Another option would be to import cephes into base and use it to >>> provide the missing C99 functions. Cephes includes copyright notices >>> but the closest I can find to a license is: >>> " Some software in this archive may be from the book _Methods and >>> Programs for Mathematical Functions_ (Prentice-Hall or Simon& Schuster >>> International, 1989) or from the Cephes Mathematical Library, a >>> commercial product. In either event, it is copyrighted by the author. >>> What you see here may be used freely but it comes with no support or >>> guarantee." >> >> Please talk to das@ (although I believe he's finishing up his >> dissertation). I recall that he's stated that he looked into >> using cephes, and concluded that it is not suitable for libm. >> >> Note there is also >> >> http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/147599 >> >> which I've also objected to importing into libm. > > I do think we should provide something in ports as an interim solution. > There are other 3rd party applications looking to drop FreeBSD support > because we are missing APIs that almost all other OS's have. I'm fine > if the interim lives in ports and that we don't import substandard > routines into the base. I would even be fine with calling it > /usr/local/lib/libm_inaccurate.so. However, I do think we need an option. > I think it should be called libm.so. Otherwise we have to do a serious editing job on the Makefiles/configure scripts. sed -E 's/[[:<:]]-lm[[:>:]]/-lm_inaccuarate/' might have some false positives and false negatives. (Did I even get the sed syntax correct?) By the way, I was looking through: http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/147599 They say they compute cosh(2y) - cos(2x) using Taylor's series. I would agree with Steve that this is seriously low quality. Floating point errors are likely to be truly horrible. This will fail even for non-edge cases. (This was the same error that openoffice used to have for computing erf(x), that gave things like erf(100) = -4353243242.)