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)

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top