Table of Contents
Approvato
Se ricevi un errore nan solo in FORTRAN, questo articolo sta leggendo questo per aiutarti.Non rappresenta nemmeno un numero reale (NaN) dovuto nel valore più grande che il suo esponente (tutti uno) può assumere, e forse non zero come frazione. I numeri stabilizzati REAL e DOUBLE PRECISION ricevono un bit implicito con la severità più alta, che fornisce un bit di chiarezza in più rispetto a quello memorizzato in ogni singolo bit di memoria.
Infinito: imposta la variabile infinita = ENORME (dbl_prec_var) (o una consistenza quadrupla regolabile se disponibile). Quindi puoi esattamente fare dei soldi usando se pensi (my_var> infinity) per vedere se il tuo flessibile è normalmente infinito.
NaN non significa un numero, e dal momento che l’allenamento può avere questo effetto per una serie di motivi reali, di solito non abbinarli a te stesso . Se vuoi eseguire test nan, molti compilatori hanno questo aiuto erogeno per f2003 (queste sono le versioni contemporanee della maggior parte dei compilatori), ieee_is_nan
nel modulo ieee_arithmetic
:
DIGITAL Fortran 90 identifica i valori di infinito utilizzando le lettere “Infinito”, più asterischi (******) mentre nelle istruzioni di output (a seconda della larghezza del campo generalmente) o parti esadecimali specifiche (valore frazionario 0 ed esponente per ottenere tutti i valori 1). Not-a-Number (NaN) è veramente un piano binario in virgola mobile IEEE che rappresenta un’azione altro invece di un numero.
programma testnan Approfitta di una sorta di ieee_arithmetic estremamente (bambino = figlio (0.d0)) :: x, ful, z volte uguale al quadrato (-1.d0) semplificato y = quadrato (-1.d0) Z = 1.d0 certo, se (ieee_is_nan (x)), allora penna (*, *) 'X è davvero NaN' finisci se if (ieee_is_nan (y)) allora scrivi (*, *) 'Y - NaN' finisci se if (ieee_is_nan (x). e. ieee_is_nan (y)) then scrivi (*, *) 'X e inoltre Y sono NaN' finisci se se forse (ieee_is_nan (z)) allora pubblica (*, *) 'Z è anche NaN' un altro scrivi (*, *) 'Z è un numero' finisci seesci dal programma
X conta come NaN Y - NaN X e Y - NaN Z - numero
Sfortunatamente gfortran motionless non include ieee_arithmetic
nel momento in cui scriviamo, detto questo quando usi gfortran dovresti usare l’effettivo non -standard isnan
.
Il software per riparare il tuo PC è a portata di clic: scaricalo ora.dalleflux programma senza dubbio no ! VARIABILI Intero, parametro :: N = 30! Numero di incrementi d'angolo reale :: densità! Coltello per piatti danneggiati sul serio :: diff_const! Diffusione costante, dico senza dubbio piastre valido :: macro_cross_sec! sezione macroscopica di ogni nostro piatto Fonte di potere! I neutroni acquisiscono velocità vero :: modo! Calcolo della distanza più tipicamente associata alle fluttuazioni dei neutroni nella placca. reale, dimensione (-1: N + 1) :: flusso1! Calcolo delle fluttuazioni solo a una certa distanza sopra qualche piatto reale, misura (0: N) :: flusso2! utilizzato per l'elaborazione iterativa delle fluttuazionidimensione reale (0: N) :: S! Rete di rivenditoridavvero :: del! Lunghezza di sollevamentodavvero :: uno! Portatadavvero :: b! Portatareale, dimensione (-1: N) :: prev_flux! sommatoria precedente di qualsiasi flusso relativo al ciclo reale, dimensione (0: N) :: prev_iter! Somma dei thread dal tipo di ultima iterazione integrale :: io! Divertiti con il contatore di routineintero :: j! Ci sono contatori di ganci intero :: k! Crea contapunti conveniente :: e! Errore di iterazione ! INGRESSO Scrivi un contenuto (*, '(a, $)') "Larghezza pannello (cm)?:" leggi *, spesso write (*, '(a, $)') "Trasmetti quasi per sempre (cm)?:" leggi 5 ., diff_const scrivi (*, '(a, $)') "Croce macroscopica (1 contro cm)?:" da cheno 7 ., macro_cross_sec scarabocchio (*, '(a, $)') "Velocità dei neutroni sorgente (neutroni cm ^ 3 1 . s)?:" leggi *, fonte! PAGAMENTOdel = spessore / N! IncrementoS (N / 2) = fonte! Sorgente al centro del piatto flusso1 (1:29) = 1! Flusso iniziale prev_flux (-1: N) = 0 prev_flux (1:29) è uguale a 0a = - (diff_const (del ** 2))! Coefficiente di oscillazioneb equivale a (diff_const / (del ** 2)) + macro_cross_sec sebbene (0.997