G95 の 4 倍精度の「qcos_」および「_g95_qcos_r16」への未定義の参照

StackOverflow https://stackoverflow.com//questions/20036637

  •  21-12-2019
  •  | 
  •  

質問

FORTRAN[real(kind=16)] で 4 倍精度を作成しようとしましたが、エラーが発生し続けます

C:\User\User\AppData\Local\Temp/ccUMY6b.0:forcefunction.f95:(.text+0x437):
undefined reference to 'qcos_'

変えてみた qcoscos しかし、

C:\User\User\AppData\Local\Temp/ccM5CBUM.0:forcefunction.f95:(.text+0x2fd1):
undefined reference to '_g95_qcos_r16'

同じ問題 sin, abs, acos, asin, sqrt

役に立ちましたか?

解決

kind=16 必ずしも 4 倍精度である必要はありません。kind 値は言語標準によって定義されておらず、コンパイラ間で移植可能ではありません。16 は、コンパイラの 4 倍精度の種類の値ではない可能性があります。

すべてのコンパイラがすべてのアーキテクチャで 4 倍精度をサポートしているわけではありません。次の値を出力することで確認できます。

selected_real_kind (14)
selected_real_kind (17)
selected_real_kind (32)

最初は倍精度を要求し、次は Intel プロセッサで時々利用可能な中間精度 (10 バイト)、そして最後のクワッドを要求します。コンパイラが要求された 10 進数の桁数をサポートしていない場合、 selected_real_kind 関数は戻ります -1.

他のヒント

G95 4.0.3を使用して、私のシステムで問題を確認できます。

このスレッドに従って http://coding.derkeiler.com/archive / friftran/comp.lang.fortran/2009-02/msg00668.html 固有関数は、まだクワッド精度には実装されていません。したがって、コンパイラを変更するか、倍精度のみを使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top