Zitat von
alcaeus:
Manchmal wundere ich mich ueber die Fantasielosigkeit der Programmierer:
Delphi-Quellcode:
var
e: Extended;
//...
e := Exp(1);
Hier wird aber auch eine Konstante benutzt.
Die FPU des Prozessors bietet eine Konstante
FLDL2E.
FLDL2E entspricht
log2(e)
Exp(1) macht also "nur" ein
2^log2(e)
-> also 2 ^ FLDL2E-Konstante
(Anmerkung: ^ = hoch bzw Power() )
Ich perönlich bevorzuge da eine Konstante wie schon weiter oben beschrieben.
Das ist der
ASM Code von Exp()
Delphi-Quellcode:
asm
{ e**x = 2**(x*log2(e)) }
FLDL2E
{ y := x*log2e; }
FMUL
FLD ST(0)
{ i := round(y); }
FRNDINT
FSUB ST(1), ST
{ f := y - i; }
FXCH ST(1)
{ z := 2**f }
F2XM1
FLD1
FADD
FSCALE
{ result := z * 2**i }
FSTP ST(1)
end;