Next: , Previous: , Up:   [Contents][Index]


8.2 数の関数

これらの関数は、さまざまな数の算術演算を行なう。

Function: abs number(数)

この関数は、numberの絶対値を戻す(より新しいEmacsの版は、これを 組み込み関数として提供する; このパッケージは、プリミティブとして 提供しないEmacs 18版用にだけabsを定義する)。

Function: expt base power

この関数は、number乗したbaseを戻す(より新しいEmacsの版は、 これを組み込み関数として提供する; このパッケージは、プリミティブとして 提供しないEmacs 18版用にだけexptを定義する)。

Function: gcd &rest integers

この関数は、引数の最大公約数を戻す。引数が1つの場合、その引数の絶対値 を戻す。引数がない場合は0を戻す。

Function: lcm &rest integers

この関数は、引数の最小公倍数を戻す。引数が1つの場合、その引数の絶対値 を戻す。引数がない場合は1を戻す。

Function: isqrt integer

この関数は、その整数引数の“整数平方根”、すなわち、引数の真の 平方根より小さいか等しい最大の整数を計算する。

Function: floor* number &optional divisor

この関数は、Common Lispのfloor関数を実装する。Emacs 19に 組み込みの単純なfloor関数との名前の衝突を避けるため、 floor*と呼ばれる。

引数が1つの場合、floor*は2つの数のリストを戻す: 2つの数は、 整数へ(負の無限大方向へ)丸められた引数と、引数を再び生み出すために 第1の戻り値に加え戻す必要があるような“余り”である。引数が整数x の場合、結果は常にリスト(x 0)である。引数がEmacs19の 浮動小数点数の場合、第1の結果はLisp整数であり、第2は0(含む)から 1(含まない)の間のLisp浮動小数点数である。

引数が2つの場合、floor*divisornumberを割り、 商の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つの結果を戻す点が 異なる。

Function: ceiling* number &optional divisor

この関数は、Common Lispのceiling関数を実装する。ceiling は、正の無限大方向へ引数または引数の商を丸める点を除いて、floor と類似している。余りは0から負のrまでである。

Function: truncate* number &optional divisor

この関数は、Common Lispのtruncate関数を実装する。 truncateは、0の方向へ引数または引数の商を丸める点を除いて、 floorと類似している。したがって、引数または商が正の場合は floor*と、さもなければceiling*と同等である。余りは numberと同じ符号を持つ。

Function: round* number &optional divisor

この関数は、Common Lispのround関数を実装する。roundは、 最も近い整数へ引数または引数の商を丸める点を除いて、floorと類似 している。タイ(引数または引数の商が正確に2つの整数の中間)の場合、偶数 へ丸める。

Function: mod* number divisor

この関数は、floorの2つ目の戻り値と同じ値を戻す。

Function: rem* number divisor

この関数は、truncateの2つ目の戻り値と同じ値を戻す。

これらの定義は、Quirozのcl.elパッケージと互換だが、この パッケージは、既存のEmacs Lisp関数との衝突を避けるために、ある種の 関数名に‘*’を付加している点と、多値戻しのメカニズムが異なる。