From: Kenta Murata Date: 2008-04-16T13:14:46+09:00 Subject: [ruby-dev:34423] Re: ComplexFloat むらたです. 2008/4/16 Urabe Shyouhei : > > このまま Ruby の Complex の仕様が決定してしまうと,拡張モジュール内で > > 行われる複素演算の結果と Ruby 上で行なわれる複素演算の結果の違いに > > 注意しなければない可能性が高いですよね. > > > > それはRubyのBigDecimalとCのdoubleの演算結果でも同じ話だと思うのです。 BigDecimal と C の double は,仮数部の基数の底が異なっており, 相互変換不可能と考えるべきなので,比較しない方が良いのではないかと. > > ナンバクランチングという用語は初めて聞くので良く分からないのですが, > > C のみで実装すると面倒な部分を Ruby で書き,C でなければならない部分を > > 拡張モジュールとして実装する事は良く行われている気がします. > > > > そうですね。拡張ライブラリで充分だという気がします。むらたさんは今は組み > 込みにはこだわっておられないのでしょうか。 組込みの ComplexFloat (もしくはそれ相当) が欲しい理由は,拡張モジュール*でも* Ruby 上でも計算を行うからです. Complex (ComplexFloat) をただの Float に置き換え,C 側は double であると考えて みてください.きっと,Float が C の double と異なる定義になっていたら, かなりの割合で double と同じ規格の浮動小数点数を要求されると思います. 今回は,double ではなくて double _Complex だっただけだと思います. # もちろん,double よりも double _Complex の需要は少ないと思います. > Cの浮動小数点APIは唯一無二でも完璧でもないでしょう。たとえば、たとえばの > 話ですが、速度を犠牲にしてでももっと移植性の高い浮動小数点数を自前で実装 > することだって考えられますよね。 double から誤差なく変換できる多倍長精度の浮動小数点数は Ruby にないので, 私はあると便利だと思います.しかし,それと機械精度の浮動小数点数の存在は 独立したものだと思います.どちらかがあれば十分なのではなく,どちらも必要 なのではないかなと思っております. -- Kenta Murata OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC