Delphi-Quellcode:
function LgX(base, number: Double): Double; //inline;
begin
if (base <= 0.0) or (number <= 0.0) then
System.Error(reInvalidOp);
Result := Ln(number) / Ln(base);
end;
function IsPowerOfX(base, number: Double): Boolean; //inline;
begin
Result := Frac(LgX(base, number)) < 1e-9;
end;
Warum ich die Parameterprüfung verschoben hab:
Damit ein einzeln genutztes LgX auch geprüft wird und IsPowerOfX braucht diese nicht, da dort durch LgX gleich mitgeprüft wird,
PS: Das Inline kann man übrigens bei neueren Delphis "aktivieren", dann wird keine eigenständige Funktion erstellt, sondern der Code direkt an Ort und Stelle als Inline-Code eingefügt.
(ältere Versionen kennen den Befehl leider nicht ... drum auskommentiert)