FFTのライブラリィというと、FFTW とか FFTW3 とか、 大浦FFTなんだろうけれど、 古いサンプル・プログラムを学生に見せることになって、 FFTPACK をインストールすることになった。
まず倍精度版のインストールから。
NETLIB から、http://www.netlib.org/fftpack/dp.tgz を入手する。
curl -O http://www.netlib.org/fftpack/dp.tgz tar xzf dp.tgz cd dfftpack |
#FC=g77 FC=gfortran-mp-5 |
make sudo make install |
C言語のインターフェイスをつけよう。
http://nalab.mind.meiji.ac.jp/~mk/fftpack-c-interface.tar.gzを入手する。
curl -O http://nalab.mind.meiji.ac.jp/~mk/fftpack-c-interface.tar.gz tar xzf fftpack-c-interface.tar.gz mv fftpack-c-interface/* . mv Makefile Makefile.org cp Makefile-dfftpack Makefile |
make make test |
sudo make install |
あまり使わないような気がするけれど、単精度版もインストールしてみる。 これは NETLIB にはアーカイブファイルがなく、 バラのファイルがあるだけである (少しだけ面倒)。 (wget を使って一気に落とすことにするが、 最後の / を忘れると、fftpack 以外もダウンロードしてしまうので要注意)
wget --mirror --no-parent -P savefftpack -nH http://www.netlib.org/fftpack/ mv savefftpack/fftpack . cd fftpack wget http://nalab.mind.meiji.ac.jp/~mk/fftpack-c-interface.tar.gz tar xzf fftpack-c-interface.tar.gz mv fftpack-c-interface/* . cp Makefile-fftpack Makefile make make test cat testprog.out(これで各サブルーチンのテストの結果、誤差が小さいことを確認する。) sudo make install |
サンプル・プログラムは現在整理中。
tar xzf fftpack-sample20161230.tar.gz cd fftpack-sample20161230 make |
(2016/12/30追記) C言語の複素数を扱う機能を利用して、cfftf () ( はi, f, b のいずれか) (倍精度版は zfftf ()) を使ってみた (もちろんうまく行った)。 これらの関数は以前は無視していた。ちゃんと使うように fftpack-c-interface.tar.gz を更新した (complex.h に依存するようになったけれど、 まあ良いだろう)。 色々なサンプル・プログラムがたまったので、そのうち公開しよう。
桂田 祐史