24 lines
587 B
Plaintext
24 lines
587 B
Plaintext
procedure main()
|
|
showroot(125,3)
|
|
showroot(27,3)
|
|
showroot(1024,10)
|
|
showroot(39.0625,4)
|
|
showroot(7131.5^10,10)
|
|
end
|
|
|
|
procedure showroot(a,n)
|
|
printf("%i-th root of %i = %i\n",n,a,root(a,n))
|
|
end
|
|
|
|
procedure root(a,n,p) #: finds the n-th root of the number a to precision p
|
|
if n < 0 | type(n) !== "integer" then runerr(101,n)
|
|
if a < 0 then runerr(205,a)
|
|
/p := 1e-14 # precision
|
|
xn := a / real(n) # initial guess
|
|
while abs(a - xn^n) > p do
|
|
xn := ((n - 1) * (xi := xn) + a / (xi ^ (n-1))) / real(n)
|
|
return xn
|
|
end
|
|
|
|
link printf
|