Subject: Re: BIGNUM operators in ACL 4.3
From: Erik Naggum <erik@naggum.no>
Date: 1997/02/08
Newsgroups: comp.lang.lisp.franz,comp.lang.lisp,comp.lang.lisp.mcl
Message-ID: <3064356007804370@naggum.no>


* Winton Davies
| I am writing code in Mac Common Lisp, that uses BIGNUM's a lot (for
| representing sets).  I use EXPT a lot, and when I just copied my code to
| Allegro 4.3 on our Ultra-2 to get some more power and memory, was
| immediately faced with the fact that ACL cannot handle (EXPT 2 (EXPT 2
| 32)).  It seems a shame my little laptop is more capable than this
| behemoth Sun on my desk :-)

(you would have received a better answer by mailing bugs@franz.com.)

the answer to your question is also right there in the User Guide, Chapter
3 Implementation and Extensions, Section 3.2 Data Types, page 3-7.  I
quote:

    Bignums may be as large as 2**[1,048,576]

the reference for Common Lisp is now ANSI X3.226:1994 Programming Languages
-- Common Lisp.  the definition of the system class _integer_ goes as
follows:

    An integer is a mathematical integer.  There is no limit on the
    magnitude of an integer.

this definition makes an interesting implementation challenge, to put it
mildly.  it is, in fact, not possible to implement Common Lisp integers
_without_ an arbitrary limit.  however, `expt' is not specified to take
just a fixnum for exponent.

if you need more than 1 megabit integers, Franz, Inc, will most probably
accomodate you.  let them know and work with them.

now, if you don't actually _need_ 4 gigabit integers, I think it's a bit
silly to argue about it, but in terms of strict adherence, you've pointed
to something that might be worth persuing, namely the error you got.  talk
with Franz.  I have not found a more helpful group of people in my 15-year
career as a programmer.  (I don't have any ties to Franz, Inc, other than
being a very happy customer.)

#\Erik
-- 
my other car is a cdr