[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:000078] Re: gtrb & multi-D array



堀之内です。

>> 多分やりそうなことで速度的に問題になるのは,Ruby で書いた
>> 自前のメソッドを,配列の全データに当てはめたい,などと
>> いうときでしょうか.

>> しかし,
>>    def t2theta2(p)
>>        if (p>=0) 
>>          self * (P0/p)**K
>>        else
>>          self * (-p/P0)**K
>>        end
>>    end
>> とか条件判断が入ってくると少し苦しくなる


# はずしてたらごめんなさい:

IDL方式ですが、条件判断にはこんなやり方もあります。

idx=p.where{|i| i>0}    ## 0より大きいところのインデックスを集めた配列
self[idx]=self[idx]*(P0/p[idx])**K

elsewhere部分をどうすっきり書くかは問題ですが、各要素をオブジェクト化
する必要は無くなります (whereの実装を C のレベルでやれば。 ってどうす
るんだろう)。

# これを簡単にやるため IDL では多次元配列の一次元配列扱いが出来ます。
   (whereの出力はデータ先頭からの通し番号の配列でよい)

> # ま、いずれは ruby で super computing ってこともあるかも
> # 知れない、ということでご勘弁を。。。

現実問題として私はrubyをシミュレーションに使いたいと思っています。
CPUを目一杯使いたい重い計算でなく、ちょっと簡単なモデルを使いたいと
かいったことは良くありますよね。そういうときに開発コストの絶大なる低減
がはかれると思います。さらに、rubyでGCMというのもいいですね。Cや
Fortranで書かれた各種部品をそろえておいて rbuy で統合する。

堀之内 武                 horinout@xxxxxx
京都大学超高層電波研究センター    611-0011 宇治市五ヶ庄
phone:0774-38-3812                     fax:0774-31-8463