I don't know what is the best approach, float numbers are always "rounded" values of decimals.
the code below shows that, for this input (0.1 maybe coming from other computations), the current intpower implementation is more accurate than do first the power and then the division
procedure TForm1.Button1Click(Sender: TObject);
var
X, Y : double;
begin
X:=0.1;
X:=IntPower(X, -10); // direct computation "intpower"
Y:=0.1;
Y:=IntPower(Y, 10); // do first power...
Y:=1/Y; //.. then divide
end;
but X = 10000000000.00 Exactly (00 00 00 20 5F A0 02 42)
and Y = 9999999999.99 (FA FF FF 1F 5F A0 02 42)
here win64, no back and forth with extended during the computation.
missed something ?