//このページが表示される方は、URLから「action=SOURCE&」を削除してみてください [[R備忘録 - 記事一覧]] !!!数値積分「QUADPACK」 *投稿者: みゅ *カテゴリ: なし *優先度: 普通 *状態: 完了 *日時: 2009年09月21日 23時33分44秒 //{{bugstate}} !!内容 *QUADPACK is a FORTRAN90 library which estimates integrals using quadrature. *http://people.sc.fsu.edu/~burkardt/f_src/quadpack/quadpack.html !!メモ *Rとは直接関係無いけどメモ *Rにはintegrateという「QUADPACK」ベースの関数があるけど、パフォーマンスを考えて、関数を直接FORTRANで書いてRで呼びたい場合が、ある(かもしれない) *そのうちRとリンクさせる予定 **RのC言語APIにQUADPACKへのインターフェースを発見(笑(2010/03) **[BugTrack- R備忘録/54|http://phoenixx.sakura.ne.jp/R/wiki.cgi?page=BugTrack%2D%A3%D2%C8%F7%CB%BA%CF%BF%2F54]の【6.9 Integration】を参照 !!QUADPACKのインストール *ソースを「http://people.sc.fsu.edu/~burkardt/f_src/quadpack/quadpack.html」からダウンロード. *みゅは「[quadpack.f90|http://people.sc.fsu.edu/~burkardt/f_src/quadpack/quadpack.f90]」を使用. !F90SPLIT *「F90SPLIT」を使って、このソースをサブルーティン毎に分割する必要あるらしい. *「http://people.sc.fsu.edu/~burkardt/f_src/f90split/f90split.html」から「F90SPLIT」をダウンロード. *[f90split.csh|http://people.sc.fsu.edu/~burkardt/f_src/f90split/f90split.csh]を参考に、実行ファイルを作成する. $ gfortran -c -g f90split.f90 *「f90split.o」ができる. $ gfortran f90split.o -o f90split *で「f90split」を作成 !quadpackのライブラリを作る *次に「[quadpack.csh|http://people.sc.fsu.edu/~burkardt/f_src/quadpack/quadpack.csh]」を参考に、quadpackのライブラリを作る. *以下のシェルを用意.「quadpack.csh」という名前にした. #!/bin/csh # mkdir temp cd temp rm * ../f90split ../quadpack.f90 # foreach FILE (`ls -1 *.f90`) F90 -c -g $FILE >& compiler.txt if ( $status != 0 ) then echo "Errors compiling " $FILE exit endif rm compiler.txt end rm *.f90 # ar qc libquadpack.a *.o *実行権限をつけて実行 $ ./quadpack.csh *tempの下に「libquadpack.a」というファイルができているので、これを好きなところへ. !a sample problem *次にサンプルを作成する. *「[quadpack_prb.csh|http://people.sc.fsu.edu/~burkardt/f_src/quadpack/quadpack_prb.csh]」を参考に、コンパイルする. $ gfortran -c -g quadpack_prb.f90 *「quadpack_prb.o」ができる. $ gfortran quadpack_prb.o -L. -lquadpack -o quadpack_prb *「quadpack_prb」ができる *実行 $ ./quadpack_prb !!コメント //{{comment}}