[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:000435] Re: proto2c
堀之内さま
In message "[dennou-ruby:000431] Re: proto2c"
on 00/10/31, Takeshi Horinouchi <horinout@xxxxxx> writes:
> > > えっと、場合によりますね、可能性としては
> > > (1) Array
> > > (2) NumArray
> > > (3) NumArray の Array
> > > の3パターンがありえるはずです。とりあえず一律Arrayにしましょう。
> > > 逆に(2)や(3)でないとおかしなDCL関数には何がありますか?
> > よくわからないのですが、普通に絵を書くぐらいは (1) で大丈夫
> > のような気がします。
>
> 大丈夫ではあるのですが、今後主に使うのは NumArray というのが前提
> ですので、Array から始めるにしても NumArray には早めの対応して頂
> けると嬉しいです。なお、(3) は良く分からないのですが、必要ないよ
> うに思います。ところで、filterの中をまだ見てないので的外れなこと
> を言うかも知れませんが、実は NumArray に対応させるのが一番楽では
> ないですか。Arrayは何でも入れられますし、多次元にするには Array
> の Array となりますよね。
そうなんです、NumArray だけに対応させたら楽なんです。しかし、
real * の意味するところが大量のデータばかりでなく、実数型の
パラメータ数個の場合は、
rpara1, rpara2, rpar3 = xxx( ... )
xxx( [rpara1,rpara2], .... )
と書いた方が楽そうなので、Array にも対応した方がいいような気
がしました。
多次元の場合ですが、NumArray も Array もオブジェクトから取り
出した C の配列は1次元で、そのまま cdcl に渡すようになって
います。だから、Array はその中身を n 次元だと思ってユーザが
データを作れば OK ですが、Array の Array だとエラーです。
(こんな時は、NumArray を使って下さい、ということですよね。)
少し気にしていることは、、、
proto2c は、今のところ関数の引数が配列の場合、その次元を意識
した作りになっていないのです。もし、NumArray の shape との整
合をチェックする必要があるなら、次元の情報を持たないといけま
せん。
例えば、NumArrayクラスの オブジェクト data が data.shape =>
(l, m, n) で、これを使って2次元配列が前提の等高線を書く場合
udcntr(data, ... )
と指定したとき、ちょっと変な絵でも書いてくれた方がいいのか、
udcntr(data[0, true, true], ... )
などと書くまでエラーになるほうがいいかです。どうでしょうか?
( やっぱり、チェックが必要な気がしてきました… )
最初の話で、real * をオブジェクトにして返す場合は、ユーザが
Array か NumArray どちらを期待しているのか判断するのが難しい
です。(1) の Array に統一すると、math2 ( math1 も?) を除けば
あまり問題なさそうだと思いました。
ただ proto2c としては、堀之内さんがおっしゃるように、NumArray
も返せるようにできる仕掛けが必要なのかもしれません。
川那辺さま:
C の配列とそのサイズから、NumArray オブジェクトを作る関数を
教えてもらえますか?よろしくお願いします。
黒井 啓子