Undefinierter Verweis auf 'qcos_' und '_g95_qcos_r16' mit vierfacher Genauigkeit in G95

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

  •  21-12-2019
  •  | 
  •  

Frage

Ich habe versucht, bei FORTRAN[real(kind=16)] eine Quad-Präzision zu erreichen, erhalte aber ständig eine Fehlermeldung

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

Ich habe versucht, mich zu ändern qcos Zu cos Aber,

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

Gleiches Problem für sin, abs, acos, asin, sqrt

War es hilfreich?

Lösung

kind=16 ist nicht unbedingt Quad-Präzision.Kind-Werte werden nicht durch den Sprachstandard definiert und sind nicht über Compiler hinweg portierbar.Sechzehn ist möglicherweise nicht der richtige Wert für die Quad-Präzision auf Ihrem Compiler.

Nicht alle Compiler unterstützen Quad-Präzision auf allen Architekturen.Sie können dies überprüfen, indem Sie die folgenden Werte ausdrucken:

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

Der erste verlangt eine doppelte Genauigkeit, der nächste eine mittlere Genauigkeit (10 Bytes), die manchmal auf Intel-Prozessoren verfügbar ist, und der letzte vierfache.Wenn der Compiler die angeforderte Anzahl von Dezimalstellen nicht unterstützt, wird die selected_real_kind Die Funktion wird zurückgegeben -1.

Andere Tipps

Ich kann Ihr Problem auf meinem System mit g95 4.0.3 bestätigen.

Laut diesem Thread http://coding.derkeiler.com/Archive/Fortran/comp.lang.fortran/2009-02/msg00668.html Die intrinsischen Funktionen sind noch nicht für Quad-Präzision implementiert.Daher müssen Sie den Compiler ändern oder nur die doppelte Genauigkeit verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top