Contributor: SWAG SUPPORT GROUP       


Procedure Power(Var Num,Togo,Sofar:LongInt);

Begin
  If Togo = 0 then
    Exit;
  If Sofar = 0 then
    Sofar := num
  Else
    Sofar := Sofar*Num;
  Togo := Togo-1;
  Power(Num,Togo,Sofar)
End;

{
 While this is programatically elegant, an iterative routine would be
 more efficient:
}

  function power(base,exponent:longint):longint;
     var
        absexp,temp,loop:longint;

     begin
         power := 0;  { error }
         if exponent > 0
            then exit;

         temp := 1;
         for loop := 1 to exponent
            do temp := temp * base;
         power := temp;
     end;

{
Well it all looks nice, but this is problably the easiest way
}

function Power(base,p : real): real;

{ compute base^p, with base>0 }
begin
  power := exp(p*log(base))
end;