問題タブ [fortran2003]

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.

0 投票する
2 に答える
2971 参照

integer - fortranの符号なし整数値へのアクセス

Fortranにc_int8_t変数があり、基になるビットを符号なし整数として解釈したい場合(算術ではなくインデックス付け用)、変換を行うための最も効率的な方法は何ですか?こんなことしたい

ここで、Xは配列でありsome_function、符号なしの値を含むc_int16_tを返す必要がありmy_c_int8_t_varます。転送、iadd(またはキャストと加算を使用した単純な条件付き)などのオプションを見てきましたが、最も効率的な方法を知りたいです(このインデックス作成は内部ループで行われます)。もちろん、関数である必要はありません。インライン式で実行できるのであれば、それは素晴らしいことです。

編集:このアプローチが他の整数サイズでも機能する場合は便利です...つまり、c_int32_tで符号なしc_int16_tの内容を取得し、c_int64_tで符号なしc_int32_tを取得します。

0 投票する
1 に答える
308 参照

c - 配列引数を使用して Fortran からスカラー C 関数を呼び出すことはできますか?

最近、C コードの便利なスニペットのために、Fortran から C 関数を呼び出したいという状況に遭遇しました。配列操作の便宜上、この関数を配列引数でも呼び出せるようにしたかったのですが、スカラー引数しか受け入れられませんでした。

Fortran では、もちろん、elementalこれを実現するために単純に手続きを宣言できます。また、C 手続きへのインターフェイスをbind(C). ただし、C には要素手続きの概念がないため、Fortran (2008) 標準はこの組み合わせを除外しています。

C1246 要素手続きは BIND 属性を持ってはならない.

では、この機能は Fortran で実現できますか?

0 投票する
1 に答える
199 参照

c - C+Fortran なぜ sigsegv なのですか?

Fortran と C の「マスター」を使用した次のコードがあります。sigsegv が表示されますが、その理由がわかりません。マスター C プログラムからポインターを取得し、それを Fortran ポインター形式に変換し、C ポインターが指していたデータを読み取ることになっています。特別なことは何もありませんが、それでも SigSegv です。これは、Fortran多次元配列との相互運用性の欠如を回避する唯一の方法です...(そう、Cには多次元配列がありません)。

Fortran の部分:

C パート:

SIGSEGV はprint *,i,j,a(i,j)、Fortran 部分の行で発生します。

編集:「整数* 8」を「整数」にdo i=1,10戻し、に戻しましたdo i=1,5。このバージョンでは、質問はまだ有効です

SIGSEGV は i=1、j=1 の場合に表示されます

0 投票する
1 に答える
1251 参照

pointers - Fortran2003: 多相型へのポインタを返す関数へのプロシージャ ポインタ

新しいプロジェクトで、Fortran2003 のオブジェクト指向機能を使用することを検討しています。私が試したことの 1 つは、多相型へのポインターを返す関数 (サブルーチンではない) を指すプロシージャー ポインターです。さまざまなコンパイラからさまざまな結果が得られるため、そのような構成が合法であるかどうか疑問に思います (以下を参照)。

具体的な例として、次の関数インターフェイスを考えてみましょう。

また、使用するコードには、このインターフェイスを使用して関数を指すことができるプロシージャ ポインターが必要です。

gfortran (4.7.2) がこのプロシージャ ポインタ宣言について次のメッセージで不平を言うため、これが合法かどうかを尋ねています。

エラー: (1) の CLASS 変数 'nt' は、ダミー、割り当て可能、またはポインターでなければなりません

このエラーメッセージ自体がポインターであるため、私は理解できませんnt。また、それが指す関数が返すものもポインターです。

参考までに、この例の完全なソース コードを次に示します。まず、私の派生型、インターフェイス、および関数/サブルーチンを含むモジュール:

そして、このモジュールを使用するメインプログラム:

プログラムは最初にサブルーチン make_testとを介してオブジェクトを作成しますmake_test2。私のテストでは、これは私が試したすべてのコンパイラで動作します。次に、関数 new_testandを直接呼び出してオブジェクトを作成しnew_test2ます。これは私のテストでも機能します。最後に、これらの関数を介してオブジェクトを再度作成する必要がありますが、手続きポインタを介して間接的に作成する必要がありますnt

上記のように、gfortran (4.7.2) は の宣言をコンパイルしませんnt

ifort (12.0.4.191) は、行で内部コンパイラ エラーを生成しますnt => new_test

pgfortran (12.9) は警告なしでコンパイルされ、実行可能ファイルは期待される結果を生成します。

Fortran2003 によると、私がやろうとしていることは違法ですか、それともそのような機能に対するコンパイラのサポートはまだ不十分ですか? 関数の代わりにサブルーチンを使用する必要がありますか (動作しているようです)。

0 投票する
1 に答える
706 参照

fortran - c_ptr は Fortran でどのように割り当てられますか?

フィールドが c_ptr (iso_c_binding から) である Fortran 派生型と、その型の 2 つの変数 A と B が与えられた場合、代入 A = B はどのように定義されますか? ポインターが fortran ポインターである場合、それらは実際には代入中に逆参照されます。c_ptr についても同じですか。

0 投票する
1 に答える
224 参照

fortran - オペレーティング システムのタイプをチェックする Fortran 関数

オペレーティング システムの種類を問い合わせる Fortran の関数はありますか? この型を文字列などとして指定しますか? 基本的に、関数 SYSTEM を使用して、Linux と Windows マシンの両方でプログラムを実行したいと考えています。関数 SYSTEM を使用する私のプログラムは Linux でうまく動作しますが、今はそれを一般的に行い、Windows でも実行したいと考えています。私が探しているこの関数がINQUIRE_SYSTEMと呼ばれているとしましょう。私のプログラムは次のようになります。

助けてくれてありがとう。A.

0 投票する
3 に答える
10102 参照

fortran - fortranで「配列は遅延形状を持つことはできません」とはどういう意味ですか?

クロネッカー積を計算する単純な fortran 関数があります。

モジュール内にありますが、でコンパイルするとgfortran -static -ffree-form -std=f2003 -Wall、次のエラーが発生します。

返される配列のサイズを事前に知っているはずなので、このエラーが発生していますか?

0 投票する
1 に答える
4757 参照

optimization - Heaviside 関数の最適化された実装

Heaviside 関数の実装を (超) 最適化したいと考えています。

私は、速度が特に重要な数値アルゴリズム (Fortran) に取り組んでいます。これは Heaviside 関数を何度も使用しており、現在は次のように signum 組み込み関数によって実装されています。

私は主に、Intel プロセッサで x が倍精度実数である場合に興味があります。

Heaviside 関数のより効率的な実装を開発することは可能ですか? おそらく、アセンブリ言語、超最適化コード、または既存の外部ライブラリへの呼び出しを使用していますか?

0 投票する
2 に答える
4215 参照

fortran - Fortran 派生型の割り当て

Fortran 派生型があるとします。

このタイプのインスタンスが2つあります

次の割り当てを行うと、正確にはどうなりますか?

派生型変数の意味のコピーを正しく作成したいので、これに興味があります。スカラー コンポーネントは等しくなければならず、配列コンポーネントの各要素は等しくなければならず、割付け可能な配列は同じ割り当てサイズを持ち、要素は等しくなければなりません。現時点では、コンポーネントを正しくコピーして割り当てるサブルーチンを作成するだけです。

標準の適切なセクションへの指示をいただければ幸いです。

gfortran 4.7 を使用しています。

0 投票する
0 に答える
93 参照

r - Fortran の R リスト データ型

Fortran で R データ型を表現するのに助けが必要です。

私のRコード:

mList <- list()

mListFortran関数に引数として渡してFortran関数で使用したい。list()Fortran で対応する R データ型は何ですか?

私の Fortran コード

の代わりに何を用意すればよいXXXですか?