## TOC »

## Module (chicken fixnum)

Because CHICKEN supports a full numeric tower, operations can sometimes incur a substantial overhead to simply detect the type of numbers you're passing in. When you know you're definitely dealing only with fixnums, you can choose to use fixnum-specific operations to avoid this overhead.

This is purely a performance hack. You might want to consider adding type annotations instead, this often gives the same performance boost without having to rewrite all numeric operators in your code.

### Arithmetic fixnum operations

`fx+``N1``N2`procedure`fx-``N1``N2`procedure`fx*``N1``N2`procedure`fx/``N1``N2`procedure`fxmod``N1``N2`procedure`fxrem``N1``N2`procedure`fxneg``N`procedure`fxmin``N1``N2`procedure`fxmax``N1``N2`procedure`fxand``N1``N2`procedure`fxior``N1``N2`procedure`fxxor``N1``N2`procedure`fxnot``N`procedure`fxshl``N1``N2`procedure`fxshr``N1``N2`procedure`fxgcd``N1``N2`procedure`fx+`and friends are arithmetic fixnum operations. These procedures do not check their arguments, so non-fixnum parameters will result in incorrect results.`fxneg`negates its argument.On division by zero,

`fx/`,`fxmod`and`fxrem`signal a condition of kind`(exn arithmetic)`.`fxshl`and`fxshr`perform arithmetic shift left and right, respectively.

### Overflow-aware fixnum operations

`fx+?``N1``N2`procedure`fx-?``N1``N2`procedure`fx*?``N1``N2`procedure`fx/?``N1``N2`procedureThese procedures behave similarly to their standard counterparts with the exception that

`#f`is returned if an argument is not a fixnum or the result of the operation overflows.Chaining of such procedures is well-defined and causes the overflow error to be propagated.

### Fixnum comparison and predicates

`fxodd?``N`procedure`fxeven?``N`procedure`fx=``N1``N2`procedure`fx>``N1``N2`procedure`fx<``N1``N2`procedure`fx>=``N1``N2`procedure`fx<=``N1``N2`procedureComparison of fixnums and predicates on them.

### Fixnum limits

`most-positive-fixnum`constant`most-negative-fixnum`constant`fixnum-bits`constant`fixnum-precision`constantPlatform-specific fixnum limits.

Previous: Module (chicken file posix)

Next: Module (chicken flonum)