R6RS:翻訳:R6RS:3.4 Implementation requirements

R6RS:翻訳:R6RS:3.4 Implementation requirements

3.4 実装系への要求

Scheme言語の処理系は3.1節による部分型の塔全体の数値オブジェクトをサポートしなければならない.加えて,処理系は実用上無限の大きさ・精度を持つ正確な整数オブジェクトと正確な有理数オブジェクトをサポートしなければならず,11.7.1で挙げるいくつかの手続きについて正確数の引数に対し常に正確な結果を返さなければならない.(「実用上無限の」とは,これらの数の大きさ・精度が利用可能なメモリの大きさのみによって制限されるべきであるという意味である.)

本節(this section)で述べる制限に従う限り,処理系は任意の型の不正確数オブジェクトのある範囲のみをサポートしても良い.例えば,処理系は不正確な実数オブジェクトの範囲を(採用した)浮動小数点数フォーマットで表現可能なダイナミックレンジ(上下限)に制限してよい(これによって不正確な整数オブジェクトや有理数オブジェクトの範囲も制限される).このような制限をもつ処理系では,その上限や下限に近づくにつれ、不正確な整数オブジェクトや有理数の間隔が非常に大きくなり得る.

処理系は浮動小数点やその他の近似を不正確な数の実装に用いても良い.本報告書では, 浮動小数点表現を用いる処理系はIEEEの浮動小数点規格に準拠することを推奨するが,必須ではない.それ以外の表現を用いる処理系は[13]のような浮動小数点規格と同じかそれらを超える精度を実現するべきである.

特に,浮動小数点表現を使用する処理系は以下の規則に従わなくてはならない:ある演算が浮動小数点数を返すならば,引数のうち不正確数であるもののどれよりも低くない精度で表現しなければならない.sqrtなど結果が不正確になり得る演算が正確な数を引数に取った場合,可能な限り正確な数を返すべきである(例えば正確数4の平方根は正確数2になるだろう)が,これは必須ではない.一方,もし(sqrtなどが)正確な数値オブジェクトから不正確な結果を生成し,結果が浮動小数点で表現される場合は,利用できる最も高い精度の浮動小数点形式を利用しなければならない.結果が浮動小数点以外で表現される場合は,その表現は最も高い精度の浮動小数点形式と同じかより高い精度を持っていなければならない.

不正確な数値オブジェクトの仮数部や基数部が処理系が表現できないほど大きくなるのを避けることは,プログラマの責任である.


Last modified : 2008/03/10 03:12:40 UTC