ごとけんです

In message "[ruby-math:00020] Re: (summary) SingleFloat, DoubleFloat < Float"
    on 00/01/11, Yukihiro Matsumoto <matz / netlab.co.jp> writes:
>matz> あ、それとも
>matz> 
>matz>   float op float op float -> float
>matz> 
>matz> 
>matz> 
>matz>   double op double op double cast -> float
>matz> 
>matz> でC世界でも結果が違うことがあるってことなのかしら?
>
>ということなんですか?

さすがに一つのプログラムの中ではそれはないことになってます。
double から float へする場合はなにか劣化させる必要があるので
すが、丸め一般に対して切捨てなのか、最近値にするのか、+inf 
向かって丸めるのかといったことは機種依存、もしくはユーザーが
指定できることになっています。

よくよく考えたらこの意味での内部精度は要求とは関係ないですね。
多少混乱してました。

>次に知りたいのは他の動的な型を持つ言語での浮動小数点数の精度
>の取り扱い方です。Cのように静的な型を持つ言語であれば変数の
>型の一部として精度を持つことができますが、そういうことのでき
>ない動的型の言語でどうしているかということ。

Mathematica のばあいは、機械精度と呼ばれる double 相当を含め
て有効桁数など自身の精度を知っています。#see [ruby-dev:5776]

Maple は手元にないので分かりません。

Python の場合は、そういう要求はとくに起こってないようです。
NumPython では LAPACK の簡易版みたいなモノをCで実装してて内
部ではすべて double です。

で、僕が取りたいと思っている方法はMathematicaの方針です。つ
まり、数値の持つ精度をコントロール出来るという立場です。たと
えば、現状では外から入力されたデータをFloatの配列に読み込ん
だときにその値がもともと倍精度だったか単精度だったかを動的に
知る方法がありませんが、これは特に出力の時に困ります。

# 電脳倶楽部方面のみなさん、どう思います??

-- gotoken