Stavros Macrakis <macrakis at alum.mit.edu> wrote:
Both the significand and the exponent are represented using normal
Lisp numbers, which can be "bignums", that is, limited only by the
size of memory (see previous discussion about 2^3^4^5).
A minor quibble, but this statement about the size of bignums in Common
Lisp implementations is not correct.
The ANS does not specify any minimal upper limit on the size of bignums
-- things like this and also performance are generally left to marketing
pressured, and I'm not aware of any serious implementation for which
that limit is not unattainably huge. But in at least two
implementations limit ranges between a few million and a few hundred
million binary bits. Manipulating (let alone printing!) bignums of
these magnitudes is impractical, but these limits are much smaller than
memory size.
The distinction of course has absolutely no _practical_ importance!
There may be _some_ CL implementations which support bignums limited
only by the size of virtual memory, but what disturbs me that Maxima
implementors so often unthinkingly generalize internals or performance
or scaling details of one implementation to all implementations. That
practice reduces the portability of Maxima.
The recent confusion about utf-8 support is another example. The
assumption that if the underlying Common Lisp platform supported utf-8
then it would "therefore" automatically be the case that Maxima would
support it on that platform. In a better computing universe this ought
be true, but on at least some platforms it would require Maxima be aware
of and manipulate the locale and stream external formats. Testing on
one platform and particular OS localization has little bearing on
whether it would work on another.