23 lines
384 B
Awk
23 lines
384 B
Awk
#!/usr/bin/awk -f
|
|
BEGIN {
|
|
# test
|
|
print nthroot(8,3)
|
|
print nthroot(16,2)
|
|
print nthroot(16,4)
|
|
print nthroot(125,3)
|
|
print nthroot(3,3)
|
|
print nthroot(3,2)
|
|
}
|
|
|
|
function nthroot(y,n) {
|
|
eps = 1e-15; # relative accuracy
|
|
x = 1;
|
|
do {
|
|
d = ( y / ( x^(n-1) ) - x ) / n ;
|
|
x += d;
|
|
e = eps*x; # absolute accuracy
|
|
} while ( d < -e || d > e )
|
|
|
|
return x
|
|
}
|