Date: Thu, 31 May 2012 12:12:16 -0500 From: Stephen Montgomery-Smith <stephen@missouri.edu> To: freebsd-current@freebsd.org Subject: Re: Use of C99 extra long double math functions after r236148 Message-ID: <4FC7A670.40004@missouri.edu> In-Reply-To: <201205311145.15454.jhb@freebsd.org> References: <4FC30090.4070003@gwdg.de> <20120528210507.GF2675@aspire.rulingia.com> <20120528230218.GC76723@troutmask.apl.washington.edu> <201205311145.15454.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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 > <stephen@missouri.edu> 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<math.h>,<complex.h> 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.)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4FC7A670.40004>