From owner-freebsd-current@FreeBSD.ORG Tue Jul 10 18:11:39 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 94F84106564A for ; Tue, 10 Jul 2012 18:11:39 +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 3E25E8FC0C for ; Tue, 10 Jul 2012 18:11:39 +0000 (UTC) Received: from [127.0.0.1] (wilberforce.math.missouri.edu [128.206.184.213]) by wilberforce.math.missouri.edu (8.14.5/8.14.5) with ESMTP id q6AIBcts028977; Tue, 10 Jul 2012 13:11:38 -0500 (CDT) (envelope-from stephen@missouri.edu) Message-ID: <4FFC705A.6070403@missouri.edu> Date: Tue, 10 Jul 2012 13:11:38 -0500 From: Stephen Montgomery-Smith User-Agent: Mozilla/5.0 (X11; Linux i686; rv:13.0) Gecko/20120615 Thunderbird/13.0.1 MIME-Version: 1.0 To: Steve Kargl References: <20120529045612.GB4445@server.rulingia.com> <20120708124047.GA44061@zim.MIT.EDU> <210816F0-7ED7-4481-ABFF-C94A700A3EA0@bsdimp.com> <4FF9DA46.2010502@missouri.edu> <20120708235848.GB53462@troutmask.apl.washington.edu> <4FFA25EA.5090705@missouri.edu> <20120709020107.GA53977@troutmask.apl.washington.edu> <4FFA52F8.2080700@missouri.edu> <20120709050238.GA54634@troutmask.apl.washington.edu> <4FFC5ADF.2010601@missouri.edu> <20120710165045.GA94795@troutmask.apl.washington.edu> In-Reply-To: <20120710165045.GA94795@troutmask.apl.washington.edu> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: 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: Tue, 10 Jul 2012 18:11:39 -0000 On 07/10/2012 11:50 AM, Steve Kargl wrote: > On Tue, Jul 10, 2012 at 11:39:59AM -0500, Stephen Montgomery-Smith wrote: >> On 07/09/2012 12:02 AM, Steve Kargl wrote: >> >>> Yep. Another example is the use of upward recurion to compute >>> Bessel functions where the argument is larger than the order. >>> The algorithm is known to be unstable. >> >> By upward recursion, do you mean equation (1) in >> http://mathworld.wolfram.com/BesselFunction.html? > > Yes. > >> So what do people use. Maybe something like >> http://en.wikipedia.org/wiki/Bessel_function#Asymptotic_forms (second >> set of equations), but finding some asymptotics with a few extra terms >> in them? > > They use downward recursion, which is known to be stable. > NIST has revised Abramowitz and Stegun, and it is available > on line. For Bessel function computations, look at > http://dlmf.nist.gov/10.74 > and more importantly example 1 under the following link > http://dlmf.nist.gov/3.6#v These algorithms are going to be subject to the same problems as using Taylor's series to evaluate exp(x) for x>0. The computation will require several floating point operations. Even if the method is not unstable, I would think getting a ULP of about 1 is next to impossible, that is, unless one performs all the computations in a higher precision, and then rounds at the end. Whereas as a scientist, having a bessel function computed to within 10 ULP would be just fine. I am looking at the man page of j0 for FreeBSD-8.3. It says in conforms to IEEE Std 1003.1-2001. Does that specify a certain ULP? I am searching around in this document, and I am finding nothing. Whereas the IEEE-754 document seems rather rigid, but on the other hand it doesn't specifically talk about math functions other than sqrt.