数を扱うデータ型は以下の2つがある。
- 整数型 (int型)
- 浮動小数点数型 (float型)
単項命題関数
| 関数 | 説明 |
| (minusp x) | x < 0 の場合に t さもなくば nil |
| (negativep x) | (minusp x) と等価 |
| (zerop x) | x = 0 の場合に t さもなくば nil |
| (plusp x) | x > 0 の場合に t さもなくば nil |
| (onep x) | x = 1 の場合に t さもなくば nil |
| (evenp x) | x が偶数の場合に t さもなくば nil |
| (oddp x) | x が奇数の場合に t さもなくば nil |
二項命題関数
| 関数 | 説明 |
| (lessp x y) | x < y の場合に t さもなくば nil |
| (leqp x y) | x ≦ y の場合に t さもなくば nil |
| (eqv x y) | x = y の場合に t さもなくば nil |
| (geqp x y) | x ≧ y の場合に t さもなくば nil |
| (greaterp x y) | x > y の場合に t さもなくば nil |
| x < y | (lessp x y) と等価(中置記法の糖衣構文) |
| x <= y | (leqp x y) と等価(中置記法の糖衣構文) |
| x == y | (eqv x y) と等価(中置記法の糖衣構文) |
| x != y | (not (eqv x y)) と等価(中置記法の糖衣構文) |
| x >= y | (geqp x y) と等価(中置記法の糖衣構文) |
| x > y | (grexterp x y) と等価(中置記法の糖衣構文) |
数学関数
| 関数 | 説明 |
| (minus x) | x の反数(-x)を返す |
| (abs x) | x の絶対値を返す |
| (sqrt x) | x の平方根を返す |
| (exp x) | ネピア定数 e の x乗値を返す |
| (expt x y) | x の y 乗値を返す |
| (log x) | x の自然対数値を返す |
| (log10 x) | x の常用対数値を返す |
| (cos x) | 余弦値 cos x を返す |
| (sin x) | 正弦値 sin x を返す |
| (tan x) | 正接値 tan x を返す |
| (acos x) | 逆余弦(主)値 arccos x を返す |
| (asin x) | 逆正弦(主)値 arcsin x を返す |
| (atan x) | 逆正接(主)値 arctan x を返す |
| (ceiling x) | x の天井値(x の小数部分が 0 に等しいなら x、さもなくば x よりも大きい最小の整数値)を返す。返値は整数型。 |
| (floor x) | x の床値(x の小数部分が 0 に等しいなら x、さもなくば x よりも小さい最大の整数値)を返す。返値は整数型。 |
| (fix x) | (floor x) と等価 |
| (truncate x) | x の整数部分(x が正の数なら x の床値、x が負の数なら x の天井値)を返す。返値は整数型。 |
| (round x) | x が正の数なら x を小数点第一位の値で四捨五入した値を返す。x が負の数なら (minus (round (minus x))) と等価。返値は整数型。 |
| (plus x1 x2 …) | 和 x1 + x2 + … を返す |
| (xplus x1 x2 …) | 和 x1 + x2 + … を返す(整数型専用) |
| (difference x1 x2 …) | 差 x1 - x2 - … を返す |
| (xdifference x1 x2 …) | 差 x1 - x2 - … を返す(整数型専用) |
| (times x1 x2 …) | 積 x1 × x2 × … を返す |
| (xtimes x1 x2 …) | 積 x1 × x2 × … を返す(整数型専用) |
| (quotient x1 x2 …) | 商 x1 ÷ x2 ÷ … を返す |
| (xquotient x1 x2 …) | 商 x1 ÷ x2 ÷ … を返す(整数型専用) |
| x + y | (plus x y) と等価(中置記法の糖衣構文) |
| x - y | (difference x y) と等価(中置記法の糖衣構文) |
| x * y | (times x y) と等価(中置記法の糖衣構文) |
| x / y | (quotient x y) と等価(中置記法の糖衣構文) |
| x ** y | (expt x y) と等価(中置記法の糖衣構文) |
| (remainder x y) | xの絶対値 と yの絶対値 の商余に、x の符号を付けた値を返す |
| (mod x y) | (remainder x y) と等価 |
| (modulo x y) | (xdifference x (xtimes y (xquotient x y))) と等価 |
| (add1 x) | (plus x 1) と等価 |
| (sub1 x) | (difference x 1) と等価 |
| (max x1 x2 …) | 引数として与えられたすべての数値の最大値を返す |
| (min x1 x2 …) | 引数として与えられたすべての数値の最小値を返す |
不具合
恐らく2進法での計算に伴う誤差だと思いますが、割り算 quotient にはこのような不具合があることが分かっています。
(quotient -0.54 0.09) → -6.0
(floor (quotient -0.54 0.09)) → -7
「(atof (sprintf nil "%f" 値))」 で、いったん10進法の文字列にして浮動小数点数型データに戻すと、この誤差が解消されます。
(define (Float_intern this) (atof (sprintf nil "%f" this)) )
(Float_intern (quotient -0.54 0.09)) → -7.0
(floor (Float_intern (quotient -0.54 0.09))) → -7