| IntPow Function |
Unit
QESBPCSMath
Declaration
Function IntPow(const Base: Extended; const Exponent: LongWord): Extended;
Description
Developed by Rory Daulton and used with permission. Last modified December 1998.
Implementation
function IntPow (const Base: Extended; const Exponent: LongWord): Extended;
{ Heart of Rory Daulton's IntPower: assumes valid parameters &
non-negative exponent }
asm
fld1 { Result := 1 }
cmp eax, 0 { eax := Exponent }
jz @@3
fld Base
jmp @@2
@@1: fmul ST, ST { X := Base * Base }
@@2: shr eax,1
jnc @@1
fmul ST(1),ST { Result := Result * X }
jnz @@1
fstp st { pop X from FPU stack }
@@3:
fwait
End; |
|
|