RosettaCodeData/Task/Nth-root/Phix/nth-root.phix
2026-04-30 12:34:36 -04:00

27 lines
760 B
Text

with javascript_semantics
function pow_(atom x, integer e)
atom r = 1
for i=1 to e do
r *= x
end for
return r
end function
function nth_root(atom y, n)
atom eps = 1e-15, -- relative accuracy
x = 1
while 1 do
-- atom d = ( y / power(x,n-1) - x ) / n
atom d = ( y / pow_(x,n-1) - x ) / n
x += d
atom e = eps*x -- absolute accuracy
if d > -e and d < e then exit end if
end while
return x
end function
procedure test(sequence yn)
atom {y,n} = yn
printf(1,"nth_root(%d,%d) = %.10g, builtin = %.10g\n",{y,n,nth_root(y,n),power(y,1/n)})
end procedure
papply({{1024,10},{27,3},{2,2},{5642,125},{4913,3},{8,3},{16,2},{16,4},{125,3},{1000000000,3},{1000000000,9}},test)