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>

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>