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