だから何だというの?
複素数の積とexpを求める関数さえあればできるんとちゃうの?
すぐに思いつく方法は、
exp(...)を cosとsinに展開して、実部と虚部をべつべつに計算するとか。
FFTはやったことがないので、詳しくはわからないです。
‥というか、DCTで無いような。
ところで「j」って虚数単位でいいのですか?
虚数単位をjで表さない世界(分野)もあるので。
標準C++使えば log10, exp, 四則演算, 三角関数 などなどの複素数版が全部あるです。
難しいことはなにひとつない。
宿題の丸投げか仕事の丸投げか知らんが
こういう質問者はむかつくな。
自分で考える気がまるで無い奴。
・・・
>> 実数のデータに DCT をかけたら結果も実数ですよ。
> 実数も複素数の仲間だから許す^^;
御意。
ほんとは FFT って書きたいのに,
わざわざ DCT を持ち出してきてるような気がしたのでつっこんでみましたです。
んでいちおう回答しておきますと,
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200311/03110022.txt
に書いてある rdft っていう関数は,(東大の大浦先生のところから持ってきたんだと思うけ
ど)
シグマ(上N-1下n=0)s(n)h(n)exp(-j2pink/N)
の部分を計算してくれる関数です。
s(n) h(n) の部分(実数)を rdft の a[] に入れて渡せば,
DFT をかけた結果(複素数)が a[] に格納されて返って来ます。
a[] は double 型の配列で,実部と虚部が別々に格納されていますので,
結局,「実部の2乗と虚部の2乗を足せばいいだけです。」
その後 log10 関数で対数をとって 10 倍すればおしまい。