FortranをCに変換 @ Cygwin

cygwinでfortranのソースをコンパイルするにはg77コンパイラをいれればいい話ですが(やり方はここ)、fortranのソースをCにコンバートしてくれるf2cというものがあるので、それを使ってみることにしました。

インストール方法をいちいち解説するのは面倒なので、インターネット上にあったシェルスクリプトを改造してCygwin用の自動インストーラを作りました。ここからダウンロードできます。
やり方はCygwin上で(適当なディレクトリに移動後)、以下を実行してください。

$ wget https://fenrir.naruoka.org/download/archive/buildf2c
$ chmod +x buildf2c
$ ./buildf2c

もしbuildf2cというファイルが正しく落とせなかった場合はwgetというソフトがないことによるものです。Cygwinのインストーラのソフトを選択する画面でWebカテゴリの中に入っていると思うので、あらかじめインストールしておいてください。またインストールにはgccを利用しますので、それもお忘れなきよう。

あとはf2cの使用法ですが、以下の手順で利用できます。

$ f2c hoge.f

これでhoge.fはhoge.cというC言語のコードに翻訳されます。また、できたhoge.cをコンパイルするには
$ gcc hoge.c -I/usr/local/include -L/usr/local/lib -lf2c

となにやらオプションをたくさんつける必要があります。

実際、f2cを使用してみた結果は、shockt.fshockt.c。当然ながら可読性はありませんが、コンパイル後のバイナリを比較してみると、f2cを使用した方法のほうがファイルサイズが小さくなっています(『g77 shockt.f』は69196byte、『gcc shockt.c』は61355byte)。うわさによるとf2cを使用したほうがコードが多少高速化されるらしいです。
なおサンプルコードは衝撃波管問題をTVDスキームで解いたものです(=講義ノートからパクリ)。

February 08, 2004 19:13 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク

コメント

コメントする