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

[dennou-ruby:002296] Re: Ruby-ISPACK 作成中



水田です。

私も返事してなくてすいません。
サブパッケージのLTPACKとFTPACKを追加して、SPPACKを修正したものを
http://www.gfd-dennou.org/arch/ruby/products/ruby-ispack/ruby-ispack-0.2.tar.gz
に置きました。
対応していないパッケージは文字列・入出力処理(BS,FE,FH,FLPACK)と
引数にサブルーチン名をとるTDPACK(ルンゲクッタなど)で、
それ以外はいちおうそろいました。
ごくごく簡単なextconf.rbも入れておきました。
gccのrubyとg77のISPACKとかならこれでうまくいかないでしょうか??


並行して北村さん堀之内さんの案に従って上位のラッパーを作ろうかと思います。
これもある程度自動化できるといいのですが。

> From:     Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxxx>
> Date:     Thu, 02 Jun 2005 10:23:36 +0900
> 
> 堀之内です.
> 
> 私もまさにこの設計がいいと思います.ポイントは,
> 
>   * 変換はクラス化し,new (initialize) でパラメターを与えて
>     初期化する.
>   * 作業領域は内部変数化し,利用者からは隠蔽されるが,不必要な
>     メモリー再割り当ては行われない.
>   * 変換の実行の際は変換対象だけを引数にすればすむ.
> 
> ただし,作業配列の長さは関数によって違い得ます.よって手持ちの作
> 業配列の長さが足りない場合は,より長くするといった工夫が要るでしょ
> う.private method 化するといいのでは?
> 
>    def _alloc_wkfft( length )
>      if !@wkfft || @wkfft.length < length
> 	@wkfft = NArray.float( length )
>      end
>    end
>    private _alloc_wkfft
> 
> これは,initialize 内でも使えます.
> 
> # 水田さま:こうするためには,Cラッパーにおいて,作業領域の長さ
>    は必要な分「以上」あれば良いという判定基準である必要がありま
>    すが,そうなってますか?

現在は原則は必要な分とマッチしていないとエラーです(例外もありますが)。
おっしゃるように作業変数だけ「以上」にするよう変更は可能です。
それか、クラス毎に必要最大限の作業配列を用意しておいて、
Cラッパーにはそこから切り出して渡すという方法もあるかと思います。


-- 
水田 亮
rmizuta@xxxxxxxxxxxxx