Leider wiedermal ziemlich ungetestet und falsch. Neben OldGrumpys Bedenken, hier ein fetter Bug: Jede Zahl number > 1 ist eine Potenz zu base < 1! Warum? Weil ln(number) > 0 und ln(base) < 0 also lgx(base, number) < 0 < 1e-9. Also ist mindestens ein
abs dringend erforderlich.
Delphi-Quellcode:
function IsPowerOfX(base, number: double): boolean;
begin
result := abs(frac(lgx(base, number))) < 1e-9;
end;