R6RS:翻訳:R6RS:3.2 Exactness

R6RS:翻訳:R6RS:3.2 Exactness

3.2 正確性

数に正確に対応することがわかっている数値オブジェクトと,計算過程で丸め誤差やその他のエラーを含んでいる数値オブジェクトを区別できることは有用である.例えば,データ構造の一部を指すにはそのインデックスを正確に知る必要があるだろうし,記号代数学における多項式係数への操作などでもまた然りであろう.一方で,何かの測定値は本質的に不正確であるし,無理数の有理数による近似は不正確な近似になる.不正確であることが分かっている数を正確な数が必要なところに使用したことを検知できるように,Schemeは正確な数値オブジェクトを不正確な数値オブジェクトと明確に区別する.この区別は型とは直交する.

ある数値オブジェクトが正確であるとは,それが正確な数値リテラルによる値であるか,正確な数値オブジェクトどうしの正確な演算のみから得られたときに言う.正確な数値オブジェクトは数学的な数と自明に対応する.

逆に,ある数値オブジェクトが不正確であるとは,それが不正確な数値リテラルによる値であるか,不正確な数値オブジェクトや不正確な演算から得られたときに言う.不正確性はこのように伝染する.

正確な演算は,以下のような意味において信頼できると言える.もし正確な数値オブジェクトが 11.7.1 で述べるような演算手続きに渡され,正確な数値オブジェクトが返されたとき,その計算は数学的に正しい.不正確数を伴う計算においては,浮動小数点演算などの近似アルゴリズムが用いられるかも知れないため,結果が数学的に正しいとは一般的にはいえないが,それを実用的なレベルまで数学的に理想とされる結果に近づけることは各実装の義務である.

More ...