Lisp HUG Maillist Archive

overflow bug in system:int32 ?

LispWorks provides an API for 32-bit arithmetic

   http://www.lispworks.com/documentation/lw50/LWUG/html/lwuser-93.htm

On my 64-bit Linux installation using LispWorks 5.0.2, it looks like
this overflows into values that are 64-bits:
                                                             
    > (setf xx system:+int32-1+)                                              
    #<SYSTEM:INT32 1>                                                               
    > (setf xx (system:int32<< xx 20))                                        
    #<SYSTEM:INT32 1048576>                                                         
    > (setf xx (system:int32<< xx 20))                                        
    #<SYSTEM:INT32 1099511627776>                                                   
    > (setf xx (system:int32<< xx 20))                                        
    #<SYSTEM:INT32 1152921504606846976>                                             
    > (setf xx (system:int32<< xx 20))                                        
    #<SYSTEM:INT32 0>                                                               

Is the int32 type expected to work on 64 bit installations?

Cheers,
Chris Dean


Updated at: 2020-12-10 08:45 UTC