Lors de l'utilisation de ce qui suit pour calculer PI dans fortran77, le compilateur évaluera-t-il cette valeur ou sera-t-il évalué au moment de l'exécution?Fortran77 traitement du compilateur de PI = 4.D0 * DATAN (1.D0)
PI = 4.D0 * DATAN (1.D0)
Lors de l'utilisation de ce qui suit pour calculer PI dans fortran77, le compilateur évaluera-t-il cette valeur ou sera-t-il évalué au moment de l'exécution?Fortran77 traitement du compilateur de PI = 4.D0 * DATAN (1.D0)
PI = 4.D0 * DATAN (1.D0)
EDIT: dépend du compilateur: voir mon EDIT ci-dessous. FIN DE L'ÉDITION
i deuxième suggestion de Mick Sharpe qu'il sera évalué à l'exécution. Juste par curiosité, j'ai compilé PI=4.D0*DATAN(1.D0)
avec Silverfrost's ftn77 compiler et regardé le binaire généré. la partie pertinente ressemble à ceci:
fld1 ; push 1.D0 onto the FPU register stack
call ATAN_X
fmul dbl_404000 ; multiply by 4.D0
donc en effet, aucune intelligence du compilateur ici.
cela peut bien sûr être différent avec un autre compilateur (par exemple, g77). EDIT: apparemment, avec g77 (le frontal fortran77 pour gcc) il est possible (et activé par défaut) d'utiliser built-in atan function de gcc à auto-fold PI=4.D0*DATAN(1.D0)
into a constant. EDIT END
Les appels vers les fonctions mathématiques sont normalement évalués au moment de l'exécution. Après tout, rien ne vous empêche d'écrire vos propres fonctions mathématiques. Cela ne serait pas possible s'ils étaient évalués au moment de la compilation.
Bon point, merci. – ccook
La motivation de la question est de savoir si le compilateur reconnaît l'instruction statique et pré-calcule la valeur. – ccook