Fortran77 Compiler Behandlung von PI = 4.D0 * DATAN (1.D0)
Frage
Bei Verwendung des folgenden Rechen PI in FORTRAN77, wird der Compiler bewerten Sie diesen Wert oder wird es zur Laufzeit ausgewertet werden?
PI = 4.D0 * DATAN (1.D0)
Lösung
Bearbeiten : abhängig vom Compiler: siehe meine EDIT unten. EDIT END
i zweiter Mick Sharpe Vorschlag, dass es zur Laufzeit ausgewertet werden. nur aus Neugier, ich zusammengestellt PI=4.D0*DATAN(1.D0)
mit Silver des ftn77 Compiler und die sah erzeugt binär. der relevante Teil sieht so aus:
fld1 ; push 1.D0 onto the FPU register stack
call ATAN_X
fmul dbl_404000 ; multiply by 4.D0
so in der Tat, kein Compiler Klugheit hier.
dies natürlich könnte mit einem anderen Compiler unterschiedlich sein (z. B. G77). Bearbeiten : offenbar, mit G77 (die FORTRAN77 Frontend für gcc) ist es möglich (und standardmäßig aktiviert) gcc verwenden Einbau-atan Funktion auto-fach PI=4.D0*DATAN(1.D0)
in eine konstante . EDIT END
Andere Tipps
Anrufe auf mathematische Funktionen werden in der Regel zur Laufzeit ausgewertet. Immerhin gibt es nichts, Sie zu stoppen Ihre eigenen mathematischen Funktionen zu schreiben. Dies wäre nicht möglich, wenn sie zum Zeitpunkt der Kompilierung ausgewertet wurden.