これらの関数は、さまざまな数の算術演算を行なう。
この関数は、numberの絶対値を戻す(より新しいEmacsの版は、これを
組み込み関数として提供する; このパッケージは、プリミティブとして
提供しないEmacs 18版用にだけabs
を定義する)。
この関数は、number乗したbaseを戻す(より新しいEmacsの版は、
これを組み込み関数として提供する; このパッケージは、プリミティブとして
提供しないEmacs 18版用にだけexpt
を定義する)。
この関数は、引数の最大公約数を戻す。引数が1つの場合、その引数の絶対値 を戻す。引数がない場合は0を戻す。
この関数は、引数の最小公倍数を戻す。引数が1つの場合、その引数の絶対値 を戻す。引数がない場合は1を戻す。
この関数は、その整数引数の“整数平方根”、すなわち、引数の真の 平方根より小さいか等しい最大の整数を計算する。
この関数は、Common Lispのfloor
関数を実装する。Emacs 19に
組み込みの単純なfloor
関数との名前の衝突を避けるため、
floor*
と呼ばれる。
引数が1つの場合、floor*
は2つの数のリストを戻す: 2つの数は、
整数へ(負の無限大方向へ)丸められた引数と、引数を再び生み出すために
第1の戻り値に加え戻す必要があるような“余り”である。引数が整数x
の場合、結果は常にリスト(x 0)
である。引数がEmacs19の
浮動小数点数の場合、第1の結果はLisp整数であり、第2は0(含む)から
1(含まない)の間のLisp浮動小数点数である。
引数が2つの場合、floor*
はdivisorでnumberを割り、
商のfloorと、対応する余りを2つの数のリストとして戻す。
(floor* x y)
が(q r)
を戻す場合、
rを0(含む) からr(含まない)までとして、
q*y + r = x
である。
(floor* x)
は、正確に(floor* x 1)
と同等である
ことにも注意せよ。
この関数は、Common Lispのfloor
と完全に互換だが、Emacs Lispは
多値関数をサポートしていないので、リストに入った2つの結果を戻す点が
異なる。
この関数は、Common Lispのceiling
関数を実装する。ceiling
は、正の無限大方向へ引数または引数の商を丸める点を除いて、floor
と類似している。余りは0から負のrまでである。
この関数は、Common Lispのtruncate
関数を実装する。
truncate
は、0の方向へ引数または引数の商を丸める点を除いて、
floor
と類似している。したがって、引数または商が正の場合は
floor*
と、さもなければceiling*
と同等である。余りは
numberと同じ符号を持つ。
この関数は、Common Lispのround
関数を実装する。round
は、
最も近い整数へ引数または引数の商を丸める点を除いて、floor
と類似
している。タイ(引数または引数の商が正確に2つの整数の中間)の場合、偶数
へ丸める。
この関数は、floor
の2つ目の戻り値と同じ値を戻す。
この関数は、truncate
の2つ目の戻り値と同じ値を戻す。
これらの定義は、Quirozのcl.elパッケージと互換だが、この パッケージは、既存のEmacs Lisp関数との衝突を避けるために、ある種の 関数名に‘*’を付加している点と、多値戻しのメカニズムが異なる。