G95 の 4 倍精度の「qcos_」および「_g95_qcos_r16」への未定義の参照
質問
FORTRAN[real(kind=16)] で 4 倍精度を作成しようとしましたが、エラーが発生し続けます
C:\User\User\AppData\Local\Temp/ccUMY6b.0:forcefunction.f95:(.text+0x437):
undefined reference to 'qcos_'
変えてみた qcos
に cos
しかし、
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 固有関数は、まだクワッド精度には実装されていません。したがって、コンパイラを変更するか、倍精度のみを使用する必要があります。
所属していません StackOverflow