問題タブ [g77]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fortran - Fortranでの実数と整数
1つの変数をループし、各ステップで値を計算するプログラムがあります。
最初の試みではiT
、整数ループカウンターとして使用し、それを数式で直接使用しました。iT
これにより、 >の区分的グラフが作成されましたic8t
。i
カウンターとして追加iT
し、数式で使用する前に実数に変換すると、グラフはスムーズに表示されました。iT
数式にプラグインするときに、実数か整数かが重要なのはなぜですか?私のコンパイラはg77です。
iT
編集:式は<にもいくつかの不正確な値を与えic8t
ます。
dll - g77でのDLLの使用
古いg77コンパイラ(http://people.tamu.edu/~matthewmccleskey/g77.html)を使用していますが、コードで外部DLLを使用する方法がわからないようです。それも可能ですか、それとも新しいコンパイラを入手する必要がありますか?
DLLファイルとLIBファイルの両方があります。関数の名前はGetDBI(_GetDBI @ 32)です。
fortran 77でDLLを使用することさえ可能ですか?
linux - g77バージョン3.2は、オプション-finit-local-zeroを使用してラージオブジェクトファイルを作成します
コンパイルして正常に実行するためにg773.2.xを必要とするレガシー+アカデミック+数値のFortran-77コードを使用しています...RedHat Linux 9fori386でそのコンパイラーを使用しています
それらのfortran-77ファイルの1つは、ローカル変数として実数、整数、および倍精度の配列を多数含むサブルーチンを定義しています...次を使用してコンパイルした場合:
サイズが約10kBのオブジェクトファイルを生成します...ただし、次のようになります。
サイズ14MBのオブジェクトファイルを生成します
オブジェクトファイルを作成してみstrip
ましたが、サイズはあまり変わりません
コード内のそのようなファイルが数十個あり、実行可能バイナリのサイズは200MBになります。
何が起こっているのかについて何か考えはありますか?さらに重要なことに、オブジェクト/バイナリのサイズを正常に戻すにはどうすればよいですか?
PS:200MBのバイナリをtar.gzに圧縮したとき、tarballは1 MB未満でした...おそらく200MBが0か何かでいっぱいであることを意味します(16進エディターで開くことができますが、私はあまりにも怠惰な感じです今)
PS:コンパイラの詳細を以下に示します(g77の-vフラグを使用)
編集:新しいg77 / gfortranバージョンにはその問題はありません(オブジェクトファイルのサイズは-finit-local-zeroとほぼ同じです)が、それらを使用することはできません(最新のコンパイラバージョンでコードが正しい結果を生成するようにすることはプロジェクト自体)...そして-finit-local-zeroフラグが必要です(コードはそれなしでハングします)
編集2:16進ダンプを取得しましたが、ファイルの99%がゼロで構成されていることを確認してください。
numpy - LAPACK をビルドしたコンパイラを特定する
(Python の数値ライブラリ)の最新バージョンをインストールしたいのですがnumpy
、そのバージョン (v1.6.1) はまだUbuntu Oneiric リポジトリにありません。手動でインストールしようとしたとき、ビルドしたのと同じコンパイラ(で使用される fortran ライブラリ)でビルドする必要があるINSTALLファイルを読み込みました。残念ながら、それがどのコンパイラかはわかりません。私は自分でインストールしませんでした-以前のバージョン(v1.5.1)を. 私が推測しなければならないとしたら、私は言うだろうが、私はむしろこれを台無しにしたくない.numpy
LAPACK
numpy
LAPACK
apt-get
numpy
apt
gfortran
の現在のインストールをビルドしたコンパイラを特定するにはどうすればよいLAPACK
ですか? 簡単な方法はありますか - おそらくそれを使用するいくつかの fortran コードを実行し、出力を調べますか?
ありがとう!
libraries - gfortran の f77 コード - ライブラリ呼び出し
以前の研究者から古い f77/g77 プログラムを継承しましたが、Fortran の経験はほとんどありません。ファイルのほとんどの構文変換を実行しましたが、古いファイルがlibstrとして知られる (非推奨の?) ライブラリを呼び出すという問題が発生しています。現在の gfortran のドキュメントでこれへの参照を見つけることができないようです (ただし、適切な場所を探しているかどうかもわかりません)。私が知りたいのは、関数Union
と flostr
関数の呼び出しを回避し、代わりに値をファイルに直接出力する方法があるかどうかです。
コードの関連部分は次のとおりです。
ライブラリのインストール方法を理解するか (makefile を実行してみました。gfortran は検索パスで /usr/bin を調べます)、関数を置き換えることができれば問題は解決すると思います。OS X 10.8.3 に Homebrew からインストールされた gfortran 4.8 を使用しています。
ありがとう!
アップデート:
gfortran コンパイルにライブラリを含めることでコードをコンパイルすることに成功しましたが、出力プログラムを実行すると一連のエラーが発生します…</p>
出力エラーは次のとおりです。
ふりだしに戻る。
numpy - f2py: Windows の numpy に limit.h ファイルがありません
f2py と g77 コンパイラを使用して一部の FortranIV コードをコンパイルできません。Fortran で記述された非常に古いコードを既存の Python モジュールに呼び出すために、これを行う必要があります。MinGW を介して gcc をインストールしましたが、違いがあるかどうかはわかりません。Numpy 1.7 と SciPy 0.12 で Python 2.7 も実行しています。私の OS は Windows7 x64 ですが、すべてのインストールが 32 ビット バージョンであることを確認しました。Python、Fortran、およびこのフォーラムは初めてなので、ご容赦ください。f2py でコードをコンパイルすると、次のようなエラーが表示されます。
問題を特定するために、gfortran コンパイラと互換性のあるテスト コードを使用しました。「-c –compiler」を使用して、必要なコンパイラを呼び出します。テストは、基本的な「Hello World」と同じ行にあります。スローされるエラーは、実際のコードとテスト コードで同じです。エラーのあるファイル 'npy_common.h' を調べたところ、291 行目でヘッダー limit.h をインクルードする呼び出しが行われていることがわかりました。エラーは Numpy ライブラリで発生するので、エラーは Numpy にあると思いますか? このエラーが発生する理由がわかりません。
fortran - gfortran でコンパイルしたコードと g77 でコンパイルしたコードのコンソールへの書き込み/読み取りの違い
これは少し説明が必要です。我慢してください。
私が持っているもの
私はいくつかの Fortran ソース コードと、そのコードからコンパイルされたいくつかのバイナリを所有しています。私はコンパイルを行いませんでしたが、G77 を使用してコンパイルしたことを示唆するビルド スクリプトがあります。
Fortran のものと同様に、バイナリの周りに GUI の「ラッパー」をユーザーに提供する Java コードもあります。入力/出力/エラー パイプを介して、自身とバイナリの間で情報を渡します。Java コードは非常に乱雑で、この方法では多くの定型文と冗長性が追加されますが、それは仕事をし、機能することを私は知っています。
私が必要なもの
残念ながら、いくつかの変更を加えたいと思います:
バイナリ用の新しい Python ラッパーを作成したい (より正確には、既存の Python プログラムを拡張して新しいラッパーにしたい)。
この既存のプログラムのビルド プロセスの一部として Fortran コードをコンパイルできるようにしたいと考えています。MinGW はビルドの他の場所で使用されているため、すぐに利用できるため、これには gfortran を使用したいと思います。
問題
gfortran を使用して自分で Fortran コードをコンパイルすると、結果のバイナリを現在の Java ラッパーまたは新しい Python ラッパーのいずれかと「対話」することができません。
Fortran コードで試したコンソールへの出力のさまざまな方法を次に示します。
コマンドもありread
ますが、その部分を実行するためのコードも変更されていないので、まだ心配していません。
追加情報
コードがコンパイルされるように、フラグを指定して gfortran を呼び出す必要があり
-ffixed-line-length-132
ますが、それ以外には何も使用しません。私は-ff2c
漠然とした希望で旗を使ってみました。そうではありません。このスタックオーバーフローの投稿は有益ですが、機能するものは何も提供しません。
関連するマニュアルページは、printA が問題なく動作することを示唆しています。
私は Windows で作業していますが、これをマルチプラットフォームにする必要があります。
参考までに、Java コードは
Runtime.getRuntime().exec("prog.exe")
バイナリを呼び出してから、結果のProcess
オブジェクトのさまざまな「ストリーム」メソッドを呼び出してそれらと通信します。Python コードは、モジュールのPopen
オブジェクトによって提供されるこれと同等のものを使用します。subprocess
また、代替手段があることは承知しています。Python (または C++ など) でコードを書き直すか、F2Py 経由で呼び出せるように修正することは、オプションとして除外されています。g77 を使用することもできません。そのままで十分な依存関係があります。gfortran を使用してコンソールに適切に書き込み/読み取りできるようにしたい、またはそれが不可能であることを知りたいです。
dll - FORTRAN DLL のビルド
Windows で g77 コンパイラを使用して、次の fortran77 コードから dll を作成したいと考えています。
サンプル FORTRAN コード
test.f
次のコマンドを使用しました
しかし、それは言うエラーを出します
別の方法として、Mingw をダウンロードし、gfortran.exe を使用して同じことを試みました。
test.dll が正常に作成されました。
私の要件は、g77 を使用して dll を作成することですが、この「認識されないオプション `-shared'」が表示されます。
助けてください。