問題タブ [fortran95]
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 90/95 で Infinite と NaN をチェックする標準的な方法はありますか?
Fortran 90/95 で Infinite 値と NaN 値をチェックする標準に準拠した方法を見つけようとしましたが、思ったより難しいことがわかりました。
- IEEE 754 で説明されているバイナリ表現を使用して Inf および NaN 変数を手動で作成しようとしましたが、そのような機能は見つかりませんでした。
ieee_arithmetic
Fortran 2003 の組み込みモジュールieee_is_nan()
と組み込み関数を認識していieee_is_finite()
ます。ただし、すべてのコンパイラ (特にバージョン 4.9 のgfortran ) でサポートされているわけではありません。
最初に無限大と NaN を定義するのはハックのようでpinf = 1. / 0
、nan = 0. / 0
IMHO はいくつかの構築上の問題を引き起こす可能性があります。たとえば、一部のコンパイラがコンパイル時にこれをチェックする場合、特別なフラグを提供する必要があります。
標準の Fortran 90/95 で実装できる方法はありますか?
そしてisnan()
?
arrays - Fortran 95 - モジュール間での配列の転送
モジュールとメイン プログラムの間で配列を転送する際に問題が発生しています。モジュールとメイン プログラムは、gfortranを使用して完全に正常にコンパイルされます。ただし、.exe ファイル ウィンドウを実行すると問題が発生し、ウィンドウを閉じる必要があります。これは、配列のサイズが不明な場合 (およびそのサイズを割り当てる必要がある場合) にのみ発生するようです。問題を説明するコードの小さなセクションを含めました。
仕組み: ユーザーは、正方行列のサイズを定義する整数 'i' を求められます。この整数はモジュール関数に渡され、行列が作成されてメイン プログラムに返されます。次に、マトリックスが画面に出力されます。
1 つのファイル内のメイン プログラム:
および別のファイル内のモジュール:
助けてくれてありがとう!
fortran95 - Fortran: タイプ変数をサブルーチンに渡す方法
サブルーチン (または関数) で派生データ型を計算したい。サブルーチンの引数で変数を参照するにはどうすればよいですか?
ここまでは、オブジェクト全体を参照してから、サブルーチン内の変数を参照することで目的を達成できました。サブルーチンの引数で変数 myObj%var のみを参照する方法はありますか?
fortran95 - この fortran はどういう意味ですか?
fortran で小さなアルゴリズムを実行しようとしています (残念ながら fortran プログラマーではありません) が、それが何をしているのかを理解する必要があります。
a1,a2,a3
ベクトル(それぞれ3つの要素、実数値、3次元空間のベクトルを表す)
s
は単位整数(交互に1または-1にすることができます)でありi,j,k
、整数ですがomega
(これはどのように到達したかを理解する必要があるものです)は浮動小数点です価値あるものですalat
。今何が起こっているのですか?特にそのiperm =1,3
部分は、ベクトルが作成されていますか?最初は iperm は派手な関数/ルーチンまたはイテレータかもしれないと思っていましたが、検索した結果、そうではないと思います.ipermの目的は何ですか? " " と " "iperm
の間に何かループがありますか?do
enddo
arrays - Fortran で行列の行と列が反転して印刷されているように見える
Fortran 95 の 2 次元の配列 (行列) について簡単な質問があります。私の知る限り、数学では行列内の要素を Aij として定義します。ここで、i はその行を表し、j はその列を表します。単純に をコーディングするwrite(*,*) Matrix
と、行と列が反転した結果が得られます。次のコード例を見てください。
上記のループ (行を修正し、その中の各列を出力する) を使用すると、期待どおりの結果が得られます。
最後のステートメントを使用すると、次のwrite(*,"(3(I1,1X))") P
ようになります。
ここで何か間違ったことをしていますか?
module - FORTRAN 95: ソースコードを共有せずにモジュールを共有することは可能ですか?
ソース コードを共有せずに FORTRAN 95 モジュールを共有できるようにしたいと考えています。そうすることは可能ですか (おそらく .MOD ファイルを共有することによって)? これが関連する場合、私は Plato で Silverfrost FTN95 コンパイラを使用します。これまでのところ、外部モジュールのソース コードを使用することによってのみ、これを機能させることができました。次に例を示します。
ファイル: module_test.f95
ファイル: main_program.f95
include "module_test.f95"
それで、私のファイル module_test.f95 もメインコードの行も持たずに、誰かが私のモジュール TEST を使用することは可能でしょうか?
どうもありがとう!
fortran - FORTRAN で単純なステートメントを記述しようとすると、数値ではなく @@ が出力されます。
3 つの数値を受け取り、その 3 つの数値が三角形を形成するかどうかを計算するプログラムがあります。含まれている場合は、3 辺と周囲が印刷されます。ただし、何らかの理由で、周囲を印刷すると、Perimeter= 3
(たとえば)と言う代わりに、と表示されますPerimeter= @@
。何が原因でしょうか?Fortran を使うのはこれが初めてなので、少し迷っています。
fortran - fortran 95 が独自に切り上げ
fortran95 言語を学ぶことにしました (理由は重要ではありません)。しかし、初心者なので、説明できない奇妙な問題に遭遇したため、助けが必要です。
私は挿入ソートアルゴリズムを持っています:
そして、メインプログラム(抜粋)があります:
最初のwrite
ステートメントが出力されます
数字が少し変わったのはなぜですか?fortran95 はデフォルトで IEEE754 標準を使用しませんか?
しかし、私はわずかな変化に耐えることができるとしましょう。2番目のwrite
ステートメントが出力されます
数値が丸められたのはなぜですか?それは本当に私を悩ませており、「書き込み」ステートメントをフォーマットしても何の役にも立たず、Google 検索もあまり役に立ちませんでした。Fortran は C のものなので、インターネット上にはそれほど多くの情報はないと思います。助けてくれてありがとう!