Riferimento indefinito a "QCOS_" e '_G95_QCOS_R16' con Quad Precision in G95
Domanda
Ho provato a creare Quad Precision su Fortran [Real (tipo= 16)], ma continuo a ricevere errori
C:\User\User\AppData\Local\Temp/ccUMY6b.0:forcefunction.f95:(.text+0x437):
undefined reference to 'qcos_'
.
Ho provato a modificare qcos
a cos
ma,
C:\User\User\AppData\Local\Temp/ccM5CBUM.0:forcefunction.f95:(.text+0x2fd1):
undefined reference to '_g95_qcos_r16'
.
Lo stesso problema per sin
, abs
, acos
, asin
, sqrt
Soluzione
kind=16
non è necessariamente QUAD PRECISION.I valori gentili non sono definiti dallo standard della lingua e non sono portatili su compilatori.Sedici potrebbe non essere il valore gentile per Quad Precision sul tuo compilatore.
Non tutti i compilatori supportano la precisione Quad per tutte le architetture.È possibile controllare stampando i seguenti valori:
selected_real_kind (14)
selected_real_kind (17)
selected_real_kind (32)
.
Le prime richieste a doppia precisione, la successiva precisione intermedia (10 byte) disponibile a volte sui processori Intel e l'ultimo quad.Se il compilatore non supporta il numero richiesto di cifre decimali, la funzione selected_real_kind
restituirà -1
.
Altri suggerimenti
Posso confermare il tuo problema sul mio sistema con G95 4.0.3.
Secondo questo thread http://coding.derkeiler.com/archive/fortran/comp.lang.fortran/2009-02/msg00668.html Le funzioni intrinseche non sono ancora implementate per Quad Precision.Pertanto, è necessario modificare il compilatore o utilizzare solo la doppia precisione.