go => L = [[2,2], [34,5], [34**5,5], [7131.5**10], [7,0.5], [1024,10], [5642, 125] ], foreach([A,N] in L) R = nthroot(A,N), printf("nthroot(%8w,%8w) %20w (check: %w)\n",A,N,R,A**(1/N)) end, nl. % % x^n = a % % Given a and n, find x (to Precision) % nthroot(A,N) = nthroot(A,N,0.000001). nthroot(A,N,Precision) = X1 => NF = N * 1.0, % float version of N X0 = A / NF, X1 = 1.0, do X0 := X1, X1 := (1.0 / NF)*((NF - 1.0)*X0 + (A / (X0 ** (NF - 1)))) while( abs(X0-X1) > Precision).