2010-01-29 17 views
0

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)

+0

La motivation de la question est de savoir si le compilateur reconnaît l'instruction statique et pré-calcule la valeur. – ccook

Répondre

1

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

+0

wow, merci. Puis-je vous demander ce que vous avez l'habitude de regarder le binaire? – ccook

+0

J'ai utilisé IDA

+0

Merci pour le lien et la mise à jour concernant g77. – ccook

1

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.

+0

Bon point, merci. – ccook