From owner-freebsd-current@FreeBSD.ORG Mon May 28 22:54:07 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 5F8A81065670 for ; Mon, 28 May 2012 22:54:07 +0000 (UTC) (envelope-from sgk@troutmask.apl.washington.edu) Received: from troutmask.apl.washington.edu (troutmask.apl.washington.edu [128.95.76.21]) by mx1.freebsd.org (Postfix) with ESMTP id 322E18FC17 for ; Mon, 28 May 2012 22:54:07 +0000 (UTC) Received: from troutmask.apl.washington.edu (localhost.apl.washington.edu [127.0.0.1]) by troutmask.apl.washington.edu (8.14.5/8.14.5) with ESMTP id q4SMs6LC077032; Mon, 28 May 2012 15:54:06 -0700 (PDT) (envelope-from sgk@troutmask.apl.washington.edu) Received: (from sgk@localhost) by troutmask.apl.washington.edu (8.14.5/8.14.5/Submit) id q4SMs6Z2077031; Mon, 28 May 2012 15:54:06 -0700 (PDT) (envelope-from sgk) Date: Mon, 28 May 2012 15:54:06 -0700 From: Steve Kargl To: Peter Jeremy Message-ID: <20120528225406.GB76723@troutmask.apl.washington.edu> References: <4FC30090.4070003@gwdg.de> <4D8CF7D2-CBEE-438E-A9E7-9C47A8892622@FreeBSD.org> <4FC36FE1.9080908@gwdg.de> <4FC38B81.6000302@gwdg.de> <4FC3A154.8030702@missouri.edu> <20120528203159.GA76340@troutmask.apl.washington.edu> <20120528220436.GA4445@server.rulingia.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120528220436.GA4445@server.rulingia.com> User-Agent: Mutt/1.4.2.3i Cc: Stephen Montgomery-Smith , freebsd-current@freebsd.org 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: Mon, 28 May 2012 22:54:07 -0000 On Tue, May 29, 2012 at 08:04:36AM +1000, Peter Jeremy wrote: > On 2012-May-28 13:31:59 -0700, Steve Kargl wrote: > >On Mon, May 28, 2012 at 11:01:24AM -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. > ... > >This is a horrible, horrible, horrible idea. Have you > >looked at the cephes code, particularly the complex.h > >functions? > > The cephes code is somewhat a mess layout-wise. Algorithmetically, > it seems somewhat variable - some functions are implemented (hopefully > correctly) using semi-numerical techniques, whereas others just use > mathematical identities which will result in precision loss - though > most of the functions include accuracy information. > > I agree it would be far preferable to have a properly validated C99 > libm with all functions having maximum errors of a no more than a few > LSB over their complete domain, as well as correct support for signed > zeroes, infinities and signalling and non-signalling NaNs but that is > a non-trivial undertaking. > > In the interim, how should FreeBSD handle apps that want a C99 libm? > 1) Fail to build them > 2) Provide possibly imperfect fallbacks for the unimplemented bits. > > If someone (I don't have the expertise) wants to identify the cephes > functions that are sub-standard, we can include link-time warnings > (as done for eg gets(3)) when they are used. Given that cephes was written years before C99 was even conceived, I suspect all functions are sub-standard. For example, AFAIK, none of the long double functions are appropriate for any platform that has an 128-bit long double; as cephes was written for an Intel 80-bit format. If portmgr or a port maintainer wants to use a library with untested implementations of missing libm functions, please do not put it into /usr/local/lib and call it libm. -- Steve