このパッケージは、数に関するいくつかの有用な定数を定義する。
この定数は、Lisp整数が保持できる最大値と等しい。典型的には
2^23-1
または2^25-1
である。
この定数は、Lisp整数が保持できる最小値(最も負の値)と等しい。
下記のパラメータは浮動小数点数と関係がある。このパッケージは、 さまざまな方法で計算機の浮動小数点算術を用いてこれらの値を決定する。 これらの演算は遅いかもしれないので、それらの初期化用のコードは、 パラメータが使われる可能性がある前に呼び出されなければならない切り 離された関数に保たれている。
この関数は、most-positive-float
のようなCommon Lisp浮動小数点
パラメータが初期化されていることを確実にする。この関数が呼び
出されるまで、これらのパラメータはnil
だろう。このEmacsの版が
(たとえばEmacs 18のほとんどの版のように)浮動小数点数をサポートしない
場合、それらのパラメータはnil
のままだろう。パラメータがすでに
初期化されている場合、この関数は直ちに戻る。
そのアルゴリズムはほとんどの現代のマシンに有効な仮定を置いているが、 マシンの算術が、たとえば10進法のようにきわめて普通でない場合は 失敗するだろう。
真のCommon Lispは、4つまでの異なる浮動小数点精度を持つので、
most-positive-single-float
やmost-positive-double-float
、
most-positive-long-float
などのような定数の一群を持つ。Emacsは
1つの浮動小数点精度のみを持つので、このパッケージは定数名から精度の
語を省略する。
この定数は、Lisp浮動小数点数が保持できる最大値と等しい。算術が無限を
サポートするようなシステムでは、これは最大の有限の値である。
IEEEマシンでは、その値はおおよそ1.79e+308
である。
この定数は、Lisp浮動小数点数が保持できる最も負の数と等しい
((- most-positive-float)
と等しいと仮定される)。
この定数は、0より大きい最小のLisp浮動小数点値と等しい。IEEEマシンでは、
非正規がサポートされている場合は約4.94e-324
、そうでなければ
約2.22e-308
である。
この定数は、0より大きい最小の正規化されたLisp浮動小数点(すなわち、IEEE
非正規化が精度の損失を生じない最小の値)と等しい。IEEEマシンでは、この
値は約2.22e-308
である。非正規化の概念や段階的なアンダーフローを
サポートしていないマシンでは、この定数は常に
least-positive-float
と等しい。
この定数は、least-positive-float
この定数は、least-positive-normalized-float
の負の相対物である。
この定数は、別の値を生み出すために1.0に加えることができる、最小の正の
Lisp浮動小数点値である。より小さな数を1.0に加えても、丸めのために再び
1.0を生じる。IEEEマシンでは、epsilonは約2.22e-16
である。
この定数は、別の値を生み出すために1.0から減じることができる、最小の正
の値である。IEEEマシンでは約1.11e-16
である。