drfftmr.dll (倍精度離散型混合基数実フーリエ変換) Ver. 1.0
dcfftmr.dll (倍精度離散型混合基数複素フーリエ変換) Ver. 1.0
Oct. 1999, Copuright (C) Hiroshi KOBAYASHI

 2つのDLL(ダイナミックリンクライブラリ)は、それぞれ実数・複素数の離散型フーリエ変換を倍精度で行います。以下に各言語からの呼び出し方法を示します。DRFFTMRについてのみ例を示しますが、DCFFTMRについても手続き名と引数が違うだけでほぼ同じです。各プログラムの引数などの情報は contents.htm をご覧ください。
(1) Fortran90の場合
Intel Fortran を使う場合のサンプルコードをいかに示します。他のFortranコンパイラを使用する際は各コンパイラのDLL呼び出し方法の説明を参照してください。
!----- begining of sample code -----
PROGRAM usedrfftmr
  implicit none
  integer, parameter:: n = 3300
  double precision, dimension(0:(n-1)):: x
  integer isn, icon
  integer i
  character(10) cal_time

  INTERFACE
    SUBROUTINE DRFFTMR (x, n, isn, icon)
    !DEC$ ATTRIBUTES DLLIMPORT :: DRFFTMR
    !DEC$ ATTRIBUTES ALIAS:'DRFFTMR' :: DRFFTMR
    integer n, isn, icon
    double precision, dimension(0:(n-1)):: x
    END SUBROUTINE DRFFTMR
  END INTERFACE

  open(11,file="acc.txt",status="old", action="read")

  read(11,*) (x(i), i = 0, n-1)
  close(11)

  isn = 1

  open(14,file="testout.txt",status="unknown", action="write")

  call date_and_time(time = cal_time)
  write(*,'(1x,a)') 'start time = '//cal_time

  call DRFFTMR(x, n, isn, icon)
  write(6,*) 'icon = ',icon
  isn = -1
  call DRFFTMR(x, n, isn, icon)
  write(6,*) 'icon = ',icon

  call date_and_time(time = cal_time)
  write(*,'(1x,a)') 'end time = '//cal_time

  write(14,'(e23.14)') (x(i)/2/n, i = 0, n-1)
  endfile(14)
  close(14)

END program usedrfftmr
!----- end of sample code -----

この後プロジェクトに drfftmr.lib を追加してビルドします。できあがった実行ファイルと同じフォルダ(またはパスがきってあるフォルダ)に drfftmr.dll を置いて実行します。
本プログラムのソースコードもFortran90なので、コードをぺたぺたと切り貼りして一緒の実行ファイルにしてしまう手もありますね。

(2) Visual Basic または VBA などから呼び出す場合
まず標準モジュール(ファイル名 ********.bas )に次のように記述します
' ----- begining of sample code -----
Declare Sub DRFFTMR Lib "drfftmr.dll" _
  (x As Double, n As Long, isn As Long, icon As Long)
' ----- end of sample code -----
	
WindowsAPI を使うような場合も似た記述を行うので、解説書の類には大体このようなDLLを使う際のやり方が記述されています。

次に実際にイベントコードを記述します。例えば次のような感じです。
' ----- begining of sample code -----
Private Sub Command1_Click()
  Dim n As Long
  Dim x(0 To 3299) As Double
  Dim isn As Long
  Dim icon As Long
  n = 3300

  ' 配列 x にデータをセットします。次のようにファイルから読んだり
  ' エクセルVBA 等の場合はワークシートから読む方法もあります。
  Open "acc.txt" For Input Access Read As #1
  Open "testout.txt" For Output Access Write As #2

  For i = 0 To n - 1
    Input #1, x(i)
  Next
  Close #1

  isn = 1

  Call DRFFTMR(x(0), n, isn, icon)

  ' 計算結果を出力します。次のようにファイルに書き出したり、
  ' エクセルワークシートに出力したりできます。
  For k = 0 To (n - 1)
    Print #2, x(k)
  Next
  Close #2
End Sub
' ----- end of sample code -----
	
このイベントが実行されるとDRFFTMRが呼び出されます。もちろんdrfftmr.dllは実行ファイルと同じフォルダところに置くかパスのきってあるフォルダに置かなければいけません

(3) C/C++ から呼び出す方法
お手元のコンパイラでお試しいただけますでしょうか。