GNU Emacs Lisp Reference Manual 3.6 Arithmetic Operations
Emacs Lisp は, 伝統的な4つの四則演算:加算, 減算, 乗算, 除算を供給します.
remainder と modulus 関数は, 除算関数の補完です.
1を加算, または, 減算する関数は, Lisp における伝統で, かつ, よく使われるので, 供給されます.
`%' を除くそれらの関数の全ては, 何らかの引数が浮動小数であるならば, 浮動小数点を返します.
Emacs Lisp では, 算術関数は, オーバフローをチェックしないことに注意することが重要です.
従って, `(1+ 268435455)' は, あなたのハードウェアに依存して, -268435456 に評価されるでしょう.
- -- 関数: 1+ number-or-marker
-
この関数は, NUMBER-OR-MARKER 足す 1 を返します. 例えば,
(setq foo 4) => 4 (1+ foo) => 5
この関数は, C 演算子 `++' と似ていません. 変数をインクリメントしないからです.
ただ, 和を計算します. 従って, もし続けるなら,foo => 4
もし変数をインクリメントしたいならば, このように, `setq' を使わなければなりません.(setq foo (1+ foo)) => 5
- -- 関数: 1- number-or-marker
この関数は, NUMBER-OR-MARKER 引く 1 を返します.- -- 関数: + &rest numbers-or-markers
この関数は, その引数をいっしょに加えます. 引数が与えられないとき, `+' は, 0 を返します.(+) => 0 (+ 1) => 1 (+ 1 2 3 4) => 10
- -- 関数: - &optional number-or-marker &rest more-numbers-or-markers
`-' 関数は, 2つの目的を果たします. 否定と減算です.
`-' が1つの引数を持つとき, その値は, 引数の負数です.
複数の引数があるとき, `-' は, NUMBER-OR-MARKER から累積的に MORE-NUMBERS-OR-MARKERS のそれぞれを引きます.
引数がないなら, 結果は, 0です.(- 10 1 2 3 4) => 0 (- 10) => -10 (-) => 0
- -- 関数: * &rest numbers-or-markers
この関数は, その引数をいっしょに掛け, 積を返します. 引数が与えれてないとき, `*' は, 1 を返します.(*) => 1 (* 1) => 1 (* 1 2 3 4) => 24
- -- 関数: / dividend divisor &rest divisors
この関数は, DIVISORS により, DIVIDEND を割り, その商を返します.
追加の引数 DIVISORS があるならば, その時, 順番にそれぞれの除数で DIVIDEND を割ります. それぞれの引数は, 数値もしくは, マーカになるでしょう.
全ての引数が, 整数ならば, その時結果もまた, 整数になる. これは, 結果が丸められることを意味する.
ほとんどの計算機では, 結果は, 各々の除算の後にゼロに向かって丸められるが, いくらかの計算機では, 負の引数を異って丸めるかもしれない.
これは, Lisp 関数 `/' が C 除算演算子を使って実装されており, それはまた, 計算機依存の丸めを許可しているためです.
実用上, 全ての知られている計算機は, 標準的な方法で丸める.
0 で整数を割るならば, `arith-error' が通知されます. ( Erros:: を参照して下さい. )
ゼロによる浮動小数点除算は, もしあなたの計算機が IEEE 浮動小数点をサポートするならば, 無限, もしくは, NaN を返します.
そうでなければ, `arith-error' エラーを通知します.(/ 6 2) => 3 (/ 5 2) => 2 (/ 5.0 2) => 2.5 (/ 5 2.0) => 2.5 (/ 5.0 2.0) => 2.5 (/ 25 3 2) => 4 (/ -17 6) => -2 (could in theory be -3 on some machines)
- -- 関数: % dividend divisor
この関数は, DIVISOR で DIVIDEND を割った後の整数の余りを返します.
その引数は, 整数, もしくは, マーカにならなければならない.
負の引数では, 余りは, 商がそうなので, 原理的に計算機依存となる. しかし, 実用的には, 全ての知らている計算機は, 同じように振る舞う.
`arith-error' は, もし DIVISOR が 0 ならば, 結果となる.
(% 9 4) => 1 (% -9 4) => -1 (% 9 -4) => 1 (% -9 -4) => -1
何らかの2つの整数 DIVIDEND と DIVISOR では,(+ (% DIVIDEND DIVISOR) (* (/ DIVIDEND DIVISOR) DIVISOR))
常に DIVIDEND と同じになる.
- -- 関数: mod dividend divisor
この関数は, DIVIDEND 割る DIVISOR の余りの値を返す. 言いかえれば, DIVISOR による DIVIDEND の除算の後の余りであるが, DIVISOR と同じ符号である.
引数は, 数値, もしくは, マーカでなければならない.`%' と違い, `mod' は, 負の引数に対して, よく定義された結果を返す. また, 浮動小数点引数を許す.
商を整数に( マイナスの無限に向かって )下向きに丸め, 余りを計算するためにその商を使う.
`arith-error' は, DIVISOR が0 のとき結果となる.
(mod 9 4) => 1 (mod -9 4) => 3 (mod 9 -4) => -3 (mod -9 -4) => -1 (mod 5.5 2.5) => .5
何らかの2つの数値 DIVIDEND と DIVISOR において(+ (mod DIVIDEND DIVISOR) (* (floor DIVIDEND DIVISOR) DIVISOR))
常に DIVIDEND と同じになり, 引数のどちらかが浮動小数点ならば, 丸め誤差を前提とする.
`floor' については, Numeric Conversions:: を参照して下さい.
注意
なんとなく翻訳してみただけなので, 誤訳があると思います.
この元のマニュアルは, GNU Emacs 23.0.50.2 に付属してきたものです.
また, この先続くかどうかは, 不明です.
続くかどうかは, 気分しだいです.
誤訳, 日本語が変等の間違いがあったら, 指摘して頂けると嬉しいです.
更新時刻
2007年, 10月28日, 22:10