Function RATIONAL, RATIONALIZE
rational number => rational
rationalize number => rational
number - 実数
rational - 実数
rationalとrationalizeは、 実数を有理数に変換します。
もしnumberがすでに有理数のときは、その値が返却されます。
もしnumberが浮動小数のときは、 rationalは 数学的に同一な浮動小数の値を返却します。 rationalizeは その浮動小数による浮動小数の表現を元とした精度を用いて近似した 有理数が返却されます。
rationalは その浮動小数が完全に正確であることを仮定します。
rationalizeは その浮動小数による浮動小数表現の精度のみを元に正確であることを仮定します。
(rational 0) =>  0
(rationalize -11/100) =>  -11/100
(rational .1) =>  13421773/134217728 ;implementation-dependent
(rationalize .1) =>  1/10なし。
実装
numberが実数ではないとき、型type-errorのエラーを通知するべきです。 型arithmetic-errorを通知するかもしれません。
なし。
下記のような場合は常に成り立ちます。
(float (rational x) x) ==  x下記も同様です。
(float (rationalize x) x) ==  xこれは、どちらの方法を用いた浮動小数から有理数への変換でも、 浮動小数の同じフォーマットへ戻す変換は 元のnumberを生成するということです。