32 lines
725 B
Text
32 lines
725 B
Text
const func float: fltIPow (in var float: base, in var integer: exponent) is func
|
|
result
|
|
var float: power is 1.0;
|
|
local
|
|
var integer: stop is 0;
|
|
begin
|
|
if base = 0.0 then
|
|
if exponent < 0 then
|
|
power := Infinity;
|
|
elsif exponent > 0 then
|
|
power := 0.0;
|
|
end if;
|
|
else
|
|
if exponent < 0 then
|
|
stop := -1;
|
|
end if;
|
|
if odd(exponent) then
|
|
power := base;
|
|
end if;
|
|
exponent >>:= 1;
|
|
while exponent <> stop do
|
|
base *:= base;
|
|
if odd(exponent) then
|
|
power *:= base;
|
|
end if;
|
|
exponent >>:= 1;
|
|
end while;
|
|
if stop = -1 then
|
|
power := 1.0 / power;
|
|
end if;
|
|
end if;
|
|
end func;
|