Status of expl logl

Stephen Montgomery-Smith stephen at missouri.edu
Tue Aug 14 20:06:10 UTC 2012


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.)




More information about the freebsd-numerics mailing list