Bug#707596: maxima: 1000!^0.01 produces i.nfE+142498684



On 2013-09-05, Raymond Toy <toy.raymond at gmail.com> wrote:

>>>>>> "Camm" == Camm Maguire <camm at maguirefamily.org> writes:
>
>    Camm> forwarded 707596 maxima at math.utexas.edu thanks
>
>    Camm> Sanjoy Mahajan <sanjoy at olin.edu> writes:
>
>     >> Package: maxima Version: 5.30.0-4 Severity: normal
>     >>
>     >> Here's a transcript:
>     >>
>     >> $ maxima
>     >>
>     >> Maxima 5.30.0 http://maxima.sourceforge.net using Lisp GNU
>     >> Common Lisp (GCL) GCL 2.6.7 (a.k.a. GCL) Distributed under the
>     >> GNU Public License. See the file COPYING.  Dedicated to the
>     >> memory of William Schelter.  The function bug_report() provides
>     >> bug reporting information.
>     >> (%i1) 1000!^0.01;
>     >> (%o1)
>     >> i.nfE+142498684
>
> I think this is really an issue with gcl, not maxima.  With cmucl and
> ccl, maxima complains that 1000! is too big to fit in a double-float.
> It looks as if gcl just converts that to double-float infinity.

Well, the larger problem is that nonnumerical floats (inf, nan) don't
exist in CL. So at best we can patch up Maxima with implementation-
specific code. 

In the case of GCL, at least for formatting numbers for display, I
suppose we can test for equality of numbers to +/- inf and go from
there. (There is only one IEEE 754 +inf and one -inf, unlike nan,
for which there are a lot. However, nans have the useful property
that nan != nan so they are easy to detect.)

I have to say that the complaint about 1000! too big to fit in a float
seems less helpful. Why not just make it inf? (If such numbers are
allowed at all.) Why should exp(1000e0) => inf while float(1000!) =>
error?

best

Robert Dodier