16 lines
370 B
Java
16 lines
370 B
Java
public static double nthroot(int n, double x) {
|
|
assert (n > 1 && x > 0);
|
|
int np = n - 1;
|
|
double g1 = x;
|
|
double g2 = iter(g1, np, n, x);
|
|
while (g1 != g2) {
|
|
g1 = iter(g1, np, n, x);
|
|
g2 = iter(iter(g2, np, n, x), np, n, x);
|
|
}
|
|
return g1;
|
|
}
|
|
|
|
private static double iter(double g, int np, int n, double x) {
|
|
return (np * g + x / Math.pow(g, np)) / n;
|
|
}
|