regression in lambert_w (in Maxima 5.28 for Windows)



On 26/08/2012 12:32 AM, David Billinghurst wrote:
> On 25/08/2012 11:35 PM, Jean-Claude Arbaut wrote:
>> Hello,
>>
>> I get the following error in Maxima 5.28 on Windows (it works with 
>> Maxima 5.27, also on Windows) :
>>
>> (%i15) lambert_w(1), numer;
>> Maxima encountered a Lisp error:
>>  Error in MACSYMA-TOP-LEVEL [or a callee]: No matching method for the 
>> generic-function #<compiled-closure BIGFLOAT-IMPL:EPSILON>,
>> when called with arguments (1).
>> Automatically continuing.
>> To enable the Lisp debugger set *debugger-hook* to nil.
>>
>>
>> However, the following work (in both 5.27 and 5.28) :
>> lambert_w(1.0);
>> lambert_w(1), bfloat;
>
> Thanks for the report.  I rewrote parts of the lambert_w code since 
> 5.27 and probably introduced this bug.
>
> "lambert_w(2), float;" has the same problem.  I will investigate.
>
>
OK.  I see what happens here.  The function simp-lambert uses the 
function complex-float-numerical-eval-p to determine if lambert_w(1) 
should be evaluated numerically, then passes the integer 1 to 
bigfloat::lambert-w-k, which chokes as it was expecting a floating point 
number of some sort.

The numer evflag doesn't convert integers to floats, but I had forgotten 
that detail.

Fixed: 
http://maxima.git.sourceforge.net/git/gitweb.cgi?p=maxima/maxima;a=commit;h=7a55f2616bd46d6adb5fffa873c3c317b8e65b29