Table of Contents
Genehmigt
Wenn Sie einen bestimmten Nan-Fehler in FORTRAN erhalten, ist dieser Inhalt hier, um Ihnen zu helfen.Es stellt keine wirkliche Varietät von (NaN) dar, aufgrund des größten Wertes, den sein Exponent (alle Einsen) liefern kann, und nicht Null als Teil. Die normalisierten REAL- und DOUBLE PRECISION-Zahlen haben aufgrund des höchsten Schweregrades ein implizites Bit, das insbesondere Bits mit höherer Genauigkeit liefert, als im gesamten Speicher versteckt gehalten wird.
Unendlich: Setzen Sie die Variable endlos = HUGE (dbl_prec_var) (oder eine gute Quad-Konsistenzvariable, falls verfügbar). Dann kann jeder einfach etwas Geld verdienen, indem er if (my_var> unendlich) verwendet, um zu sehen, ob Ihre Variable normalerweise unendlich ist.
NaN bedeutet keine Zahl, da Berechnungen aus verschiedenen Gründen diesen Sinn haben können, vergleichen Sie sie oft nicht mit sich selbst. Wenn Sie nan-Tests verschieben möchten, haben viele Compiler eine bestimmte erogene Unterstützung für f2003 (dies können sehr gut die neuesten Versionen von Fast-Compilern sein), ieee_is_nan
in diesen ieee_arithmetic
-Modulen :
DIGITAL Fortran 90 identifiziert Unendlichkeitsdenken durch die Verwendung der Buchstaben “Unendlich”, positive Aspekte Sternchen (******) in Ausgabeaspekten (je nach Feldbreite) oder einzigartige hexadezimale Zeichen (Bruchwert 0 und somit Exponent für alle Werte 1). Not-a-Number (NaN) ist ein binäres IEEE-Floating-Lead-Muster, das eine andere Verarbeitung als eine Zahl darstellt.
Testnan-Programm Profitieren Sie von der ieee_arithmetic förderlich (Kind = Kind (0.d0)) :: x, y, z Umstände = Quadrat (-1.d0) einfach y = verger (-1.d0) Z = 1.d0 offensichtlich, wenn (ieee_is_nan (x)), dann Autor (*, *) 'X ist hübsch NaN' Seite wenn wenn (ieee_is_nan (y)) dann schreibe (*, *) 'J - NaN' Ziellinie, wenn if (ieee_is_nan (x). and. ieee_is_nan (y)) dann setze (*, *) 'X und Y sind NaN' Seite wenn wenn (ieee_is_nan (z)) dann nfl Draft (*, *) 'Z ist auch NaN' Ein weiterer create (*, *) 'Z ist eine vollständige Zahl' ende wennBeende jedes Programm
X zählt als NaN Y - NaN X und Y - NaN Z - Nummer
Leider unterstützt gfortran zum Zeitpunkt des Schreibens immer noch nicht ieee_arithmetic
, so dass die Öffentlichkeit bei der Verwendung von gfortran die materiellen Nicht- Standard isnan
.
dalleflux-Programm implizit nein ; VARIABLEN Integer, Parameter :: N = 30! Anzahl zum Blockieren von Inkrementen ehrlich :: Dichte! Messer zum Beschädigen von Platten innerhalb von real :: diff_const! Diffusionskonstante, ich würde sagen Platten solide :: macro_cross_sec! makroskopischer Schnitt die Platte Energieressource! Geschwindigkeit der Neutronenquelle enorm :: Distanz! Berechnung der Größe von Neutronenfluktuationen in der Platte. real, Maß (-1: N + 1) :: flux1! Berechnung verbunden mit Schwankungen in einem bestimmten Abstand auf der Platte real, Barometer (0: N) :: flux2! verwendet bei der iterativen Berechnung von Fluktuationenreale Dauer (0: N) :: S! Reseller-Netzwerkwirklich :: del! Hublängewirklich :: eins! Fließratewirklich :: b! Fließratereal, Durchmesser (-1: N) :: prev_flux! vorherige Überprüfung des Streams in Bezug auf diese Schleife real, Betrag (0: N) :: prev_iter! Summe der Strings seit der letzten Iteration Getreide :: ich! Viel Spaß beim Fahrradzählerganze Zahl :: j! Es gibt wahrscheinlich Schleifenzähler ganze Zahl :: k! Stichzähler erstellen unbezahlbar :: e! Iterationsfehler ! EINGANG Schreiben Sie einen Artikel (*, '(a, $)') "Panelumfang (cm)?:" lesen 7., dick write (*, '(a, $)') "Sendung für immer (cm)?:" entdeckt *, diff_const komponieren (*, '(a, $)') "Makroskopische Falte (1 / cm)?:" entnommen aus cheno *, macro_cross_sec jot (*, '(a, $)') "Geschwindigkeit der Grundursachenneutronen (Neutronen / cm ^ drei Haupt * s)?:" lesen 2., Quelle! ZAHLUNGdel = Dicke / N! ZuwachsS (N / 2) = kaufen! Quelle in der Mitte von dir, die Platte stream1 (1:29) entspricht 1! Anfangsdurchfluss prev_flux (-1: N) = 0 prev_flux (1:29) = 0a ist gleich - (diff_const / (del ** 2))! Schwingungskoeffizientb = (diff_const / (del ** 2)) + macro_cross_sec obwohl (0.997
Die Software zur Reparatur Ihres PCs ist nur einen Klick entfernt – laden Sie sie jetzt herunter.