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;