Des öfteren möchte man testen, ob eine ganze Zahl (>=1) eine ganze Potenz von n (>=1) ist,
zb. 1,3,9,27,81,243 für n=3 usw. Die beiden nachfolgenden Funktionen erledigen das.
Anmerkung: Bei
sehr großen Zahlen werden fehlerhafte Werte zurückgegeben.
Delphi-Quellcode:
//Wolfgang Mix - Delphi - PRAXiS
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); //plattformunabhängig
end;
//Wolfgang Mix - Delphi - PRAXiS
function IsPowerOfX(base, number: Double): Boolean;
begin
Result := Frac(LgX(base, number)) < 1e-9;
end;
Gruß
Wolfgang