23 懐かしの fftpack

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
Makefile を適当に編集する。FC くらいか。
#FC=g77
FC=gfortran-mp-5
make
sudo make install
これで /usr/local/lib/libdfftpack.a がインストールされる。

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
上と同様 Makefile を適当に編集する。
make
make test
問題がなさそうならば
sudo make install
これで /usr/local/lib/libdfftpack.a, /usr/local/include/dfftpack.h がインストールされる。


あまり使わないような気がするけれど、単精度版もインストールしてみる。 これは 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
これで /usr/local/lib/libfftpack.a, /usr/local/include/fftpack.h がインストールされる。


サンプル・プログラムは現在整理中。

tar xzf fftpack-sample20161230.tar.gz
cd fftpack-sample20161230
make

(2016/12/30追記) C言語の複素数を扱う機能を利用して、cfftf$ x$ () ($ x$ i, f, b のいずれか) (倍精度版は zfftf$ x$ ()) を使ってみた (もちろんうまく行った)。 これらの関数は以前は無視していた。ちゃんと使うように fftpack-c-interface.tar.gz を更新した (complex.h に依存するようになったけれど、 まあ良いだろう)。 色々なサンプル・プログラムがたまったので、そのうち公開しよう。

桂田 祐史
2018-03-01