mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-18 21:29:18 +02:00
302 lines
5.1 KiB
Markdown
302 lines
5.1 KiB
Markdown
# SRFI 143 - Fixnums
|
|
|
|
This SRFI describes arithmetic procedures applicable to a limited range of exact integers only. These procedures are semantically similar to the corresponding generic-arithmetic procedures, but allow more efficient implementations.
|
|
|
|
See the [SRFI document](http://srfi.schemers.org/srfi-143/srfi-143.html) for more information.
|
|
|
|
## Constants
|
|
[`fx-width`](#fx-width)
|
|
[`fx-greatest`](#fx-greatest)
|
|
[`fx-least`](#fx-least)
|
|
|
|
## Predicates
|
|
[`fixnum?`](#fixnum)
|
|
[`fx=?`](#fx)
|
|
[`fx<?`](#fx-1)
|
|
[`fx>?`](#fx-2)
|
|
[`fx<=?`](#fx-3)
|
|
[`fx>=?`](#fx-4)
|
|
[`fxzero?`](#fxzero)
|
|
[`fxpositive?`](#fxpositive)
|
|
[`fxnegative?`](#fxnegative)
|
|
[`fxodd?`](#fxodd)
|
|
[`fxeven?`](#fxeven)
|
|
[`fxmax`](#fxmax)
|
|
[`fxmin`](#fxmin)
|
|
|
|
## Basic arithmetic
|
|
[`fx+`](#fx-5)
|
|
[`fx-`](#fx-)
|
|
[`fx*`](#fx-6)
|
|
[`fxneg`](#fxneg)
|
|
[`fxquotient`](#fxquotient)
|
|
[`fxremainder`](#fxremainder)
|
|
[`fxabs`](#fxabs)
|
|
[`fxsquare`](#fxsquare)
|
|
[`fxsqrt`](#fxsqrt)
|
|
|
|
# Bitwise operations
|
|
[`fxnot`](#fxnot)
|
|
[`fxand`](#fxand)
|
|
[`fxior`](#fxior)
|
|
[`fxxor`](#fxxor)
|
|
[`fxarithmetic-shift`](#fxarithmetic-shift)
|
|
[`fxarithmetic-shift-left`](#fxarithmetic-shift-left)
|
|
[`fxarithmetic-shift-right`](#fxarithmetic-shift-right)
|
|
[`fxbit-count`](#fxbit-count)
|
|
[`fxlength`](#fxlength)
|
|
[`fxif`](#fxif)
|
|
[`fxbit-set?`](#fxbit-set)
|
|
[`fxcopy-bit`](#fxcopy-bit)
|
|
[`fxfirst-set-bit`](#fxfirst-set-bit)
|
|
[`fxbit-field`](#fxbit-field)
|
|
[`fxbit-field-rotate`](#fxbit-field-rotate)
|
|
[`fxbit-field-reverse`](#fxbit-field-reverse)
|
|
|
|
# fx-width
|
|
|
|
(fx-width)
|
|
|
|
Bound to the value `w` that specifies the implementation-defined fixnum integer range.
|
|
|
|
# fx-greatest
|
|
|
|
(fx-greatest)
|
|
|
|
Returns value of the largest representable fixnum.
|
|
|
|
# fx-least
|
|
|
|
(fx-least)
|
|
|
|
Returns value of the smallest representable fixnum.
|
|
|
|
# fixnum?
|
|
|
|
(fixnum? obj)
|
|
|
|
Returns `#t` if `obj` is an exact integer within the fixnum range, and `#f` otherwise.
|
|
|
|
# fx=?
|
|
|
|
(fx=? i j)
|
|
|
|
Semantically equivalent to `=`.
|
|
|
|
# fx<?
|
|
|
|
(fx<? i j)
|
|
|
|
Semantically equivalent to `<`.
|
|
|
|
# fx>?
|
|
|
|
(fx>? i j)
|
|
|
|
Semantically equivalent to `>`.
|
|
|
|
# fx<=?
|
|
|
|
(fx<=? i j)
|
|
|
|
Semantically equivalent to `<=`.
|
|
|
|
# fx>=?
|
|
|
|
(fx>=? i j)
|
|
|
|
Semantically equivalent to `>=`.
|
|
|
|
# fxzero?
|
|
|
|
(fxzero? i)
|
|
|
|
Semantically equivalent to `zero?`.
|
|
|
|
# fxpositive?
|
|
|
|
(fxpostiive? i)
|
|
|
|
Semantically equivalent to `positive?`.
|
|
|
|
# fxnegative?
|
|
|
|
(fxnegative? i)
|
|
|
|
Semantically equivalent to `negative?`.
|
|
|
|
# fxodd?
|
|
|
|
(fxodd? i)
|
|
|
|
Semantically equivalent to `odd?`.
|
|
|
|
# fxeven?
|
|
|
|
(fxeven? i)
|
|
|
|
Semantically equivalent to `even?`.
|
|
|
|
# fxmax
|
|
|
|
(fxmax i j)
|
|
|
|
Semantically equivalent to `max`.
|
|
|
|
# fxmin
|
|
|
|
(fxmin i j)
|
|
|
|
Semantically equivalent to `min`.
|
|
|
|
# fx+
|
|
|
|
(fx+ i j)
|
|
|
|
Semantically equivalent to `+`, but accepts exactly two arguments.
|
|
|
|
# fx-
|
|
|
|
(fx- i j)
|
|
|
|
Semantically equivalent to `-`, but accepts exactly two arguments.
|
|
|
|
# fx*
|
|
|
|
(fx* i j)
|
|
|
|
Semantically equivalent to `*`, but accepts exactly two arguments.
|
|
|
|
# fxneg
|
|
|
|
(fxneg i)
|
|
|
|
Semantically equivalent to `-`, but accepts exactly one argument.
|
|
|
|
# fxquotient
|
|
|
|
(fxquotient i j)
|
|
|
|
Semantically equivalent to `quotient`.
|
|
|
|
# fxremainder
|
|
|
|
(fxremainder i j)
|
|
|
|
Semantically equivalent to `remainder`.
|
|
|
|
# fxabs
|
|
|
|
(fxabs i)
|
|
|
|
Semantically equivalent to `abs`.
|
|
|
|
# fxsquare
|
|
|
|
(fxsquare i)
|
|
|
|
Semantically equivalent to `square`.
|
|
|
|
# fxsqrt
|
|
|
|
(fxsqrt i)
|
|
|
|
Semantically equivalent to `sqrt`.
|
|
|
|
# fxnot
|
|
|
|
(fxnot i)
|
|
|
|
Semantically equivalent to `bitwise-not`.
|
|
|
|
# fxand
|
|
|
|
(fxand i j)
|
|
|
|
Semantically equivalent to `bitwise-and`.
|
|
|
|
# fxior
|
|
|
|
(fxior i j)
|
|
|
|
Semantically equivalent to `bitwise-ior`.
|
|
|
|
# fxxor
|
|
|
|
(fxxor i j)
|
|
|
|
Semantically equivalent to `bitwise-xor`.
|
|
|
|
# fxarithmetic-shift
|
|
|
|
(fxarithmetic-shift i count)
|
|
|
|
Semantically equivalent to `arithmetic-shift`, except that it is an error for the absolute value of count to exceed `w-1`.
|
|
|
|
# fxarithmetic-shift-left
|
|
|
|
(fxarithmetic-shift-left i count)
|
|
|
|
The same as `fxarithmetic-shift` except that a negative value of count is an error. This is provided for additional efficiency.
|
|
|
|
# fxarithmetic-shift-right
|
|
|
|
(fxarithmetic-shift-right i count)
|
|
|
|
The same as `fxarithmetic-shift` except that a non-negative value of count specifies the number of bits to shift right, and a negative value is an error. This is provided for additional efficiency.
|
|
|
|
# fxbit-count
|
|
|
|
(fxbit-count i)
|
|
|
|
Semantically equivalent to SRFI 151 `bit-count`.
|
|
|
|
# fxlength
|
|
|
|
(fxlength i)
|
|
|
|
Semantically equivalent to `integer-length`.
|
|
|
|
# fxif
|
|
|
|
(fxif mask i j)
|
|
|
|
Semantically equivalent to `bitwise-if`.
|
|
|
|
|
|
# fxbit-set?
|
|
|
|
(fxbit-set? index i)
|
|
|
|
Semantically equivalent to SRFI 151 `bit-set?`, except that it is an error for `index` to be larger than or equal to `fx-width`.
|
|
|
|
# fxcopy-bit
|
|
|
|
(fxcopy-bit index i boolean)
|
|
|
|
Semantically equivalent to SRFI 151 `copy-bit`, except that it is an error for `index` to be larger than or equal to `fx-width`.
|
|
|
|
# fxfirst-set-bit
|
|
(fxfirst-set-bit i)
|
|
|
|
Semantically equivalent to `first-set-bit`.
|
|
|
|
|
|
# fxbit-field
|
|
|
|
(fxbit-field i start end)
|
|
|
|
Semantically equivalent to `bit-field`.
|
|
|
|
# fxbit-field-rotate
|
|
|
|
(fxbit-field-rotate i count start end)
|
|
|
|
Semantically equivalent to SRFI 151 `bit-field-rotate`.
|
|
|
|
# fxbit-field-reverse
|
|
|
|
(fxbit-field-reverse i start end)
|
|
|
|
Semantically equivalent to `bit-field-reverse`.
|
|
|