chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] 32 bit integers?

 From: Kon Lovett Subject: Re: [Chicken-users] 32 bit integers? Date: Tue, 22 May 2007 13:56:56 -0700

```
On May 22, 2007, at 12:33 PM, Dan Muresan wrote:

```
```
```
```<snip>
```
```
```
Actually, I haven't found the 31-bit format documented anywhere (maybe I missed it). I thought that at least normal C int's would always fit in a fixnum. It was an unpleasant surprise to see an expression like (logior flags ...) fail, when "flags" was promoted to a flonum.
```
```
If you use one of integer unsigned-integer integer32 unsigned- integer32 integer64 long unsigned-long as a foreign parameter/ return type Chicken will automatically convert a flonum integer to/ from the native type.
```
Yes, but flonum's can't be used in some contexts:

* bit ops

* modulo-2^32 arithmetic (i.e. C-like 32-bit wraparound arithmetic)

```
I don't see a way to hack these using flonums. Bignums would solve the problem but they're slow.
```
```
The bitwise-* procedures & arithmetic-shift are supposed to work w/ fixnums & integer flonums. The magnitude of a flonum is converted to a C unsigned int (on 32 bit machines, u_int64_t otherwise), operated upon, then the result is returned as a fixnum or flonum, depending on the precision of the operation result.
```
The modulo-2^32 is a problem though.

Sorry,
Kon

```
```
```
```<snip>

```

reply via email to

 [Prev in Thread] Current Thread [Next in Thread]