Previous: , Up:   [Contents][Index]


8.4 処理系パラメータ

このパッケージは、数に関するいくつかの有用な定数を定義する。

Variable: most-positive-fixnum

この定数は、Lisp整数が保持できる最大値と等しい。典型的には 2^23-1または2^25-1である。

Variable: most-negative-fixnum

この定数は、Lisp整数が保持できる最小値(最も負の値)と等しい。

下記のパラメータは浮動小数点数と関係がある。このパッケージは、 さまざまな方法で計算機の浮動小数点算術を用いてこれらの値を決定する。 これらの演算は遅いかもしれないので、それらの初期化用のコードは、 パラメータが使われる可能性がある前に呼び出されなければならない切り 離された関数に保たれている。

Function: cl-float-limits

この関数は、most-positive-floatのようなCommon Lisp浮動小数点 パラメータが初期化されていることを確実にする。この関数が呼び 出されるまで、これらのパラメータはnilだろう。このEmacsの版が (たとえばEmacs 18のほとんどの版のように)浮動小数点数をサポートしない 場合、それらのパラメータはnilのままだろう。パラメータがすでに 初期化されている場合、この関数は直ちに戻る。

そのアルゴリズムはほとんどの現代のマシンに有効な仮定を置いているが、 マシンの算術が、たとえば10進法のようにきわめて普通でない場合は 失敗するだろう。

真のCommon Lispは、4つまでの異なる浮動小数点精度を持つので、 most-positive-single-floatmost-positive-double-floatmost-positive-long-floatなどのような定数の一群を持つ。Emacsは 1つの浮動小数点精度のみを持つので、このパッケージは定数名から精度の 語を省略する。

Variable: most-positive-float

この定数は、Lisp浮動小数点数が保持できる最大値と等しい。算術が無限を サポートするようなシステムでは、これは最大の有限の値である。 IEEEマシンでは、その値はおおよそ1.79e+308である。

Variable: most-negative-float

この定数は、Lisp浮動小数点数が保持できる最も負の数と等しい ((- most-positive-float)と等しいと仮定される)。

Variable: least-positive-float

この定数は、0より大きい最小のLisp浮動小数点値と等しい。IEEEマシンでは、 非正規がサポートされている場合は約4.94e-324、そうでなければ 約2.22e-308である。

Variable: least-positive-normalized-float

この定数は、0より大きい最小の正規化されたLisp浮動小数点(すなわち、IEEE 非正規化が精度の損失を生じない最小の値)と等しい。IEEEマシンでは、この 値は約2.22e-308である。非正規化の概念や段階的なアンダーフローを サポートしていないマシンでは、この定数は常に least-positive-floatと等しい。

Variable: least-negative-float

この定数は、least-positive-float

Variable: least-negative-normalized-float

この定数は、least-positive-normalized-floatの負の相対物である。

Variable: float-epsilon

この定数は、別の値を生み出すために1.0に加えることができる、最小の正の Lisp浮動小数点値である。より小さな数を1.0に加えても、丸めのために再び 1.0を生じる。IEEEマシンでは、epsilonは約2.22e-16である。

Variable: float-negative-epsilon

この定数は、別の値を生み出すために1.0から減じることができる、最小の正 の値である。IEEEマシンでは約1.11e-16である。