2012-04-04 10 views
-2

Ich habe Programm mit implicit real*8 geschrieben. Das Programm funktioniert gut, aber sobald ich eine andere Datei eingefügt habe, die die Daten von langen und doppelten Genauigkeitsziffern enthält, waren die Ergebnisse, die ich fand, nicht geeignet. Experten und die Programmentwickler rieten mir, zu ändern. Aber es funktioniert nicht in meinem Fortran-Kraftwerk 4.0 und gibt impliziten Fehler. Wie kann man das Kraftwerk so umbauen oder aufrüsten, dass es mit oder mehr arbeiten kann?Impliziter realer Fehler

+1

Fortag, da ich glaube, dass das nichts mit Java zu tun hat. Lass es mich wissen, wenn ich mich irre. –

+7

Kein 'Experte' riet Ihnen, 'implizite Real *' zu verwenden. –

Antwort

2

Powerstation ist zu alt. Nicht jeder Compiler unterstützt real * 16 auch jetzt noch. Erwägen Sie, einen neuen Compiler zu erhalten. Ich schlage vor, mit gfortran zu beginnen, das Quad-Präzision sicher unterstützt.

Auch ich bin besorgt, dass mit diesen impliziten Dingen viele andere Probleme versteckt sein könnten. Berücksichtigen Sie auch die explizite Typisierung für Ihre Variablen und verwenden Sie implicit none.

2

Was sind die Werte in Ihrer Datei? Integer- und Double-Precision-Gleitkommawerte? Dann scheint es sehr unwahrscheinlich, dass das Problem dadurch verursacht wird, dass Sie sie nicht in Quad-Precision-Realvariablen einlesen. Nur selten benötigen Berechnungen Quad-Präzision. Liest du die Integer-Werte in Integer-Variablen und die Floats in Fortran-Reals? Wie die anderen geschrieben haben, ist die implizite Typisierung der schlechteste Ansatz ... es ist immer noch ein Teil von Fortran, nur um Legacy-Code zu unterstützen. Es empfiehlt sich, "implizite None" zu verwenden und alle Ihre Variablen explizit einzugeben. Dadurch kann der Compiler Fehler wie Tippfehler in Variablennamen abfangen. Weitere Informationen zur Variablen-Typisierung finden Sie unter Fortran: integer*4 vs integer(4) vs integer(kind=4) und Extended double precision

Verwandte Themen