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

next in thread | previous in thread | raw e-mail | index | archive | help
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.)





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?502AAFAC.4020906>