Subject: Re: How to do fast matrix-multiplication?
From: rpw3@rpw3.org (Rob Warnock)
Date: Fri, 10 Feb 2006 00:01:26 -0600
Newsgroups: comp.lang.lisp
Message-ID: <0audnbPqPoKrsXHeRVn-jA@speakeasy.net>
Thomas A. Russ <tar@sevak.isi.edu> wrote:
+---------------
| Zach Beane <xach@xach.com> 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)

    30.0f0
    cmu> 


-Rob

[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			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607