[Maxima] Generalized Lambert W function - premature commit
toy.raymond at gmail.com
Tue May 22 22:30:17 CDT 2012
On 5/22/12 6:12 AM, David Billinghurst wrote:
> On 22/05/2012 12:20 AM, David Billinghurst wrote:
>> I have checked in a fix. It works for gcl under windows. Found
>> another problem.
>> (%i130) w:generalized_lambert_w(-1,z);
>> Maxima encountered a Lisp error:
>> Error in SETQ [or a callee]: Zero divisor.
> Fixed this one too. The bigfloat guess for the Halley iteration is
> generated in floating point. This doesn't work when z is -1/%e to
> machine precision. Need to use a bigfloat power series around the
> branch point.
Pretty cool stuff!
I found a few test failures with cmucl. I think they all stem for the
use of (exp 1) in 3 places. This produces a single-float approximation
to %e, but we really want a double-float value. I just used (exp 1.0)
in those 3 places. (I'm not surprised that this works for gcl (because
single-float = double-float there), but it should fail for other lisps.)
Now the only test that fails is 44, where cmucl only achieves an
accuracy of 3.89b-69 instead of 1b-77. Not sure why there should be
this discrepancy because bigfloats should produce the same answer
More information about the Maxima