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

[dennou-ruby:000828] Re: numfft



高橋(北大)さん


> netlib/fftpack のほうは恐らくそれ自体では多次元配列への対応があ
> りません。従って C レベルで呼び出すときにループを回して多次元対
> 応をさせることになります。そうすると最初から多次元を意識したフー
> リエ変換より計算効率はかなり落ちるでしょう。でも少々効率が悪くて
> もないよりは絶対にましです。

ホームページをみて、1次元対応しかないかと早合点してこう書いたの
ですが、ソースをみたら多次元に対応してましたね。失礼しました。引
数で次元を指定できて、しなければ全部という仕様は好ましいと思いま
す。こちら(SPARC Ultra Solaris 2.6 + gcc)では Segmentation Fault 
が出てしまうのですが、恐らく NumArray のほうの問題です。現バージョ
ンは(いつからかわからないのですが)、Solaris で他にも同様な症状
を起こしてましたので。

ところでバグ(?)発見。dim<rank-1のとき、必要な回数の計算をしませ
んね。例えば2次元配列の1次元目に適用したら、2次元目の最初の要素
しか相手にしないように思います。それから、一般論として、引数には
まともな値が入って来ると仮定してはいけません。dim としてありえな
い値かどうかチェックして、駄目なら例外を発生してください。

NArray の fftw を見て頂ければ、高橋さんのでいう引数なしの場合し
か対応してないことがわかると思います。これを引数ありの場合にも対
応して頂きたいのです。引数の個数は1つでなくていいです。2次元目
と3次元目について fft するということを許容すべきです。なお、fftw 
を使えば、高橋さんのコードで言えば

    step=slide;
    for(k=0 ; k<shape[dim] ; k++ ){
      temp_ary[k]=ptr[step];
      step += stride;
    }

に相当する移し代えは一切要らないはずです。複数回の fft も一辺に
出来ます。


堀之内 武                    horinout@xxxxxx
京都大学宙空電波科学研究センター     611-0011 宇治市五ヶ庄