Date: Tue, 14 Aug 2012 15:06:04 -0500 From: Stephen Montgomery-Smith <stephen@missouri.edu> To: Steve Kargl <sgk@troutmask.apl.washington.edu> Cc: freebsd-numerics@freebsd.org Subject: Re: Status of expl logl Message-ID: <502AAFAC.4020906@missouri.edu> In-Reply-To: <20120814195659.GA70571@troutmask.apl.washington.edu> References: <502A8CCC.5080606@missouri.edu> <20120814175257.GA69865@troutmask.apl.washington.edu> <20120814183518.GA70092@troutmask.apl.washington.edu> <502AA971.4010403@missouri.edu> <20120814195659.GA70571@troutmask.apl.washington.edu>
index | next in thread | previous in thread | raw e-mail
On 08/14/2012 02:56 PM, Steve Kargl wrote: > 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). > OK. I'll look into trying to reverse engineer the code. But the new semester is starting, and I will have to go back to work. So I may put it off for a long time, or not do it. (That is to say, if someone else wants to do it, they will not be treading on my toes.)home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?502AAFAC.4020906>
