R6RS:翻訳:Rationale:Numbers

R6RS:翻訳:Rationale:Numbers

3 章 数値

3.1 無限大、非数

無限大と非数は二進の浮動小数点数の不正確性をおぎなうものである。無限大と非数の意味論、ないしはその生成には任意の部分がある。ただし、ほとんどの処理系は IEEE-754 に適合した flonum の実装 [18] をしているため、R6RS では報告書内でこの標準規格に特有の意味論を使用することにした。これは非数と無限大が flonum、すなわち不正確な実数であり、IEEE-754 の浮動小数点数の一部であることによる生じる閉包性を活用できるようにしたものである。詳しくは、11.6.6 節の閉包性の節を参照されたい。

無限大と非数は、R6RS では整数(さらには有理数)とは見做されない。だがその代わりに、ceiling, floor, round, truncate 手続き(とそれぞれに対応する fl- 接頭辞のついたもの)は、引数として無限大や非数が与えられた場合に無限大や非数を返す。これは、任意の実数(または flonum)をとることができるという利点になるが、同時に、返値が常に整数であるわけではないという欠点にもなる。これらの手続きにおいて、無限大の入力に対して数学的に等価な結果はやはり無限大である。また、無限大は整数と見做されないが、無限大の整数も表現していると考えることができる。そのため、無限大への拡張には少なくとも何らかの意義がある。非数への拡張は若干、より任意性の高いものと言うことができるであろう。

R6RS では処理系に IEEE 754 で規定されている無限大と非数を使用することを要求していない。そのため、これらをサポートしなくてもかまわない。

3.2 -0.0 の区別

-0.0 の区別もまた IEEE 754 により作り出された概念であり、これにより、特定の枝刈りの可能性が生じることがある。処理系は -0.0 を区別する必要はない。ただし、区別を行う場合には、超越関数はこの区別に対して細心の注意を払う必要がある。


Last modified : 2012/02/07 07:43:33 UTC