Come eseguire un codice Fortran più di 10 ^ 9 volte in ftn95? [chiuso]

-1

Ho bisogno di eseguire un codice Fortran più di 10 ^ 9 volte in ftn95. Quando provo a eseguire il mio codice più di 10 ^ 9 volte, viene visualizzato un messaggio di errore "questo ciclo non verrà mai eseguito". In un libro leggo che se dichiariamo una variabile come integer(kind=16)::k , allora sarà in grado di funzionare più di 10 ^ 9 volte, ma in ftn95 non funziona.

Quindi, se qualcuno lo sapesse, per favore dimmi come gestire interi interi in ftn95. Da quando ho iniziato a scrivere codice in fortran poco prima di alcuni giorni non ne so molto di questo linguaggio.

    
posta Atul Kumar Verma 05.02.2015 - 09:01
fonte

1 risposta

2

Usa solo due anelli annidati. Il ciclo esterno, ad esempio, passerebbe da i=1 a i=1000000 e il ciclo interno (all'interno del corpo del ciclo esterno) passerebbe da j=1 a j=10000 . Et voilà, una cosa in esecuzione da 10 10 .

 DO i=1, 1000000
   DO j=1, 10000
     CALL something() 
   END DO
 END DO

Il CALL something() sarebbe fatto 10 10 -times

Si noti che 10 10 non è rappresentabile come numero intero a 32 bit. Potresti provare a utilizzare un intero di 8 byte:

INTEGER (KIND=8) :: k
DO k=1, 10000000000_8
  CALL someotherthing(k)
END DO

Il suffisso _8 su 10000000000 indica che quella costante è un intero di 8 byte (64 bit).

BTW, non ho mai codificato in Fortran nella mia vita (preferisco di gran lunga Common Lisp, Ocaml o C ++ 11). Ma ho letto alcuni libri a riguardo. Quindi devi verificare da solo se il mio codice è corretto.

Potrebbe essere necessario aggiornare il compilatore. Hai considerato di utilizzare una versione recente (4.9 e presto 5.0) di GCC che fornisce gfortran , e potresti voler passare ad uno standard più recente (es. Fortran 2008 almeno).

    
risposta data 05.02.2015 - 09:04
fonte

Leggi altre domande sui tag