Date: Tue, 14 Aug 2012 12:56:59 -0700 From: Steve Kargl <sgk@troutmask.apl.washington.edu> To: Stephen Montgomery-Smith <stephen@missouri.edu> Cc: freebsd-numerics@freebsd.org Subject: Re: Status of expl logl Message-ID: <20120814195659.GA70571@troutmask.apl.washington.edu> In-Reply-To: <502AA971.4010403@missouri.edu> References: <502A8CCC.5080606@missouri.edu> <20120814175257.GA69865@troutmask.apl.washington.edu> <20120814183518.GA70092@troutmask.apl.washington.edu> <502AA971.4010403@missouri.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Aug 14, 2012 at 02:39:29PM -0500, Stephen Montgomery-Smith wrote: > On 08/14/2012 01:35 PM, Steve Kargl wrote: > >On Tue, Aug 14, 2012 at 10:52:57AM -0700, Steve Kargl wrote: > >>On Tue, Aug 14, 2012 at 12:37:16PM -0500, Stephen Montgomery-Smith wrote: > >>>Are people working on expl, logl and log1pl? > >>> > >> > > > >I forgot to mention that if you're looking for another > >function to implement, then AFAIK no one is working on > >ld80/powl() and ld128/powl(). See the comment in > >src/e_pow.c for the algorithm used in fdlibm. > > > > So I am looking through src/e_pow.c. > > It seems to me that the constants L1, L2, L3, etc, are 3/5, 3/7, 3/9, > etc, but not exactly these constants. So they must have used some > process where they jiggled the constants around, perhaps using trial and > error, to get a few extra ulp. Is that right? > > Also, I am trying to see what P1, P2, P3, etc are. They seem to be > related to the factorial (maybe a power series related to exp(x)), but I > must admit that I am not getting it. > > Is there a more detailed reference to how these numbers were obtained? > A paper somewhere? > > Finally, what is ovfl (in the definition of ovt) meant to be? I haven't looked too closely at the details of pow[fl](). I am not aware of any published paper that gives the details. AFAIK, the comment in e_pow.c is only detailed description (other than the code). I tried to find a paper about pow() implementations on Sunday with a very cursory google search. Came up empty. The L and P constants are used in lines 235 and 299, line 235: r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6))))); line 299: t1 = z - t*(P1+t*(P2+t*(P3+t*(P4+t*P5)))); These are polynomials that are evaluated via Horner's method. I suspect the jiggling that you mention is actually a result of a Remes minimax procedure. ovfl looks like it's used to define an overflow threshold (ie, ovt). -- Steve
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120814195659.GA70571>