Skip site navigation (1)Skip section navigation (2)
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>