ごとけんです
In message "[ruby-list:15225] Re: LAPACK へのインターフェース"
on 99/07/05, Takashi Nishimoto <g96p0935 / mse.waseda.ac.jp> writes:
>Ruby の2次元配列 (要素は全部浮動小数点数) から C の配列に変換するとき
>(逆も)には、 浮動小数点数をすべて「コピー」するのですか?
どちらを主にするかによりますね。もし常に Matrix もしくは
Array で作ってから、C の配列に変換することを考えるとそうなり
ます。Ruby主体で汎用にするとそうならざるを得ないのですが、場
合によっては行列の生成自体が理論式で行われるので行列生成器を
C で書いてしまうという手もあると思います。
大抵の数値計算では DoubleMatrix とかいう double** な実体をも
つクラスを C で実装して CLAPACK で定義されてるようなよく使わ
れる操作は C レベルで回すのがいいんではないでしょうか?? 要
素を参照するときだけ Ruby オブジェクトにしてしまうという考え
方です。あ伊藤さん作の mdarray も参考にされるとよいやも知れ
ません。
>研究では 600x600 等の巨大な行列を扱ったりするので、このオーバーヘッド
>が気になります。大したことなければちょっとずつ実装に踏み切ろうと思って
>います。
<snip>
>だから現状では、行列の要素が「数値」の場合は Octave を、その他の場合は
>Ruby を研究で使っています。
うう、爪の垢を少し下さい。僕はちょっと問題がデカくなるとあま
り考えずにCで書いてしまいます。
-- gotoken