Subject: Re: How to do fast matrix-multiplication?
From: (Rob Warnock)
Date: Fri, 10 Feb 2006 00:01:26 -0600
Newsgroups: comp.lang.lisp
Message-ID: <>
Thomas A. Russ <> wrote:
| Zach Beane <> writes:
| > Assuming you mean "29-30 bits", the specification mandates only that
| > it is a supertype of (signed-byte 16). Some implementations have much
| > smaller than 30 bits available in their fixnums.
| Quite so.  Actually 29 bits seems to be quite popular, but with some
| lower values.
| On Mac OS X:
|   29 bits:  MCL, OpenMCL, SBCL, CMUCL
| On Linux
|   29 bits:  ACL, CMUCL

Actually, the 32-bit versions of CMUCL (and I would suspect SBCL as well) 
have *30*-bit (signed) fixnums. Yes, the object representation does use
the low three bits as tags, but *two* of the eight encodings are assigned
to FIXNUM[1], so there's an effective 30-bit (signed) range:

    cmu> (log (- most-positive-fixnum most-negative-fixnum -1) 2)



[1] Lowtag #b000 is EVEN-FIXNUM-TYPE and lowtag #b100 is ODD-FIXNUM-TYPE.
    Thus, in the absence of overflow, native 32-bit machine arithmetic
    can be used to add or subtract FIXNUMs.

Rob Warnock			<>
627 26th Avenue			<URL:>
San Mateo, CA 94403		(650)572-2607