Chicken Scheme.- How to convert a complex number (for ex: (sqrt 2) ) to an integer? Regardless of rounding strategy

150 Views Asked by At

I am working on a C extension for Chicken Scheme and have everything in place but I am running into an issue with complex number types.

My code can only handle integers and when any math is done that involves say a square root my extension may end up having to handle complex number.

I just need to remove the decimal place and get whatever integer is close by. I am not worried about accuracy for this.

I have looked around and through the code but did not find anything.

Thanks!

1

There are 1 best solutions below

0
On

Well, you can inspect the number type from the header tag. A complex number is a block object which has 2 slots; the real and imaginary part. Then, those numbers themselves can be ratnums, flonums, fixnums or bignums. You'll need to handle those situations as well if you want to do it all in C.

It's probably a lot easier to declare your C code as accepting an integer and do any conversion necessary in Scheme.