Beiträge durchsuchen

Beliebig potenzieren

In der Unit math.pas liegt eine Funktion namens ‚power‘ bei:

function Power(Base, Exponent: Extended): Extended;

Diese Unit ist leider nicht bei jedem Pakte dabei (bei älteren Versionen erst ab Prof.).

Function Potenz(Base, Exponent: Extended): Extended;
begin
  if Exponent = 0.0 then
    Result := 1.0
  else if (Base = 0.0) and (Exponent > 0.0) then
    Result := 0.0
  else if Exponent = 2 then
    result := Sqr(Base)
  else
    Result := Exp(Ln(Base) * Exponent );
end;

Dem ersten Parameter muss man die Basis übergeben und dem zweiten den Exponenten (‚Hochzahl‘). Auf diesem Weg kann man auch Wurzelberechnungen durchführen: Die Wurzel aus 2 ist nichts anderes als x^1/2 oder:

procedure TForm1.Button1Click(Sender: TObject);
var
  x: Extended;
begin
  x:=64 //Wurzel aus 64
  Caption:=FloatToStr(Potenz(x,0.5);
end;

Die Funktion funktioniert auf die gleiche Weise, wie das Original.