汎用 FFT (高速 フーリエ/コサイン/サイン 変換) パッケージ

[English]


一次元 DFT / DCT / DST

詳細

一次元,2の整数乗個のデータの離散 Fourier 変換, コサイン変換,サイン変換等を行います. このパッケージには C と Fortran の FFT コードが含まれます.

パッケージ

内容

fft4g.c : FFT パッケージ in C - 高速版 (基数 4, 2)
fft4g.f : FFT パッケージ in Fortran - 高速版 (基数 4, 2)
fft4g_h.c : FFT パッケージ in C - 簡易版 (基数 4, 2)
fft8g.c : FFT パッケージ in C - 高速版 (基数 8, 4, 2)
fft8g.f : FFT パッケージ in Fortran - 高速版 (基数 8, 4, 2)
fft8g_h.c : FFT パッケージ in C - 簡易版 (基数 8, 4, 2)
fftsg.c : FFT パッケージ in C - 高速版 (Split-Radix)
fftsg.f : FFT パッケージ in Fortran - 高速版 (Split-Radix)
fftsg_h.c : FFT パッケージ in C - 簡易版 (Split-Radix)
readme.txt : readme file
sample1/ : サンプルプログラム1 - テスト用
Makefile : Makefile (gcc, cc 用)
Makefile.f77 : Makefile (Fortran 用)
testxg.c : "fft*g.c" のテスト
testxg.f : "fft*g.f" のテスト
testxg_h.c : "fft*g_h.c" のテスト
sample2/ : サンプルプログラム2 - ベンチマーク用
Makefile : Makefile (gcc, cc 用)
Makefile.pth : Makefile (マルチスレッド用)
pi_fft.c : π(= 3.1415926535897932384626...) の計算プログラム
- "fft*g.c" に対するベンチマークテスト用

ファイルの違い

簡易版は作業用配列を一切使いません. 高速版は三角関数表などの作業用配列を使います. 高速版は簡易版に比べて高速かつ高精度. 高速版の仕様はすべて同じ.

パッケージ内のルーチン

cdft() : 複素離散 Fourier 変換
rdft() : 実離散 Fourier 変換
ddct() : 離散コサイン変換
ddst() : 離散サイン変換
dfct() : RDFT のコサイン変換 (実対称 DFT)
dfst() : RDFT のサイン変換 (実反対称 DFT)

使用法

簡潔な使用法は,パッケージプログラムのコメントにあります. 具体例は,テストプログラムを参照して下さい.


二次元/三次元 DFT / DCT / DST

詳細

二次元または三次元の2の整数乗個のデータの離散 Fourier 変換, コサイン変換,サイン変換等を行います.

パッケージ

内容

alloc.c : 配列の動的確保ルーチン in C
fft4f2d.c : 二次元 FFT パッケージ in C - Version I
fft4f2d.f : 二次元 FFT パッケージ in Fortran - Version I
fftsg.c : 一次元 FFT パッケージ in C - 基数 Split-Radix
fftsg.f : 一次元 FFT パッケージ in Fortran - 基数 Split-Radix
fftsg2d.c : 二次元 FFT パッケージ in C - Version II
fftsg2d.f : 二次元 FFT パッケージ in Fortran - Version II
fftsg3d.c : 三次元 FFT パッケージ in C
fftsg3d.f : 三次元 FFT パッケージ in Fortran
shrtdct.c : 8x8, 16x16 DCT パッケージ - ddct2d() よりも高速
readme2d.txt : readme file
sample2d/ : サンプルプログラム - テスト用
Makefile : Makefile (gcc, cc 用)
Makefile.f77 : Makefile (Fortran 用)
Makefile.pth : Makefile (マルチスレッド用)
fft4f2dt.c : "fft4f2d.c" のテストプログラム
fft4f2dt.f : "fft4f2d.f" のテストプログラム
fftsg2dt.c : "fftsg2d.c" のテストプログラム
fftsg2dt.f : "fftsg2d.f" のテストプログラム
fftsg3dt.c : "fftsg3d.c" のテストプログラム
fftsg3dt.f : "fftsg3d.f" のテストプログラム
shrtdctt.c : "shrtdct.c" のテストプログラム

ファイルの違い

Version II は一次元 FFT を用いるが,Version I は単独で使用可能. 通常 Version II の方が高速.

パッケージ内のルーチン

cdft2d() : 二次元 複素離散 Fourier 変換
rdft2d() : 二次元 実離散 Fourier 変換
ddct2d() : 二次元 離散コサイン変換
ddst2d() : 二次元 離散サイン変換
cdft3d() : 三次元 複素離散 Fourier 変換
rdft3d() : 三次元 実離散 Fourier 変換
ddct3d() : 三次元 離散コサイン変換
ddst3d() : 三次元 離散サイン変換

ライセンス

Copyright Takuya OOURA, 1996-2001

このソースコードはフリーソフトです.商用目的を含め,このコードの使用, コピー,修正及び配布は自由に行って結構です.ただし,このコードの修正を 行った場合は,そのことを明記してください.

このパッケージのパフォーマンス

FFT の概略と設計法のページ

FFT リンク


メインページ