El n
- La raíz th de x
es un número r
tal que r
a la potencia de 1/n
es x
.
En números reales, existen algunas sub-casos:
- Hay dos soluciones (mismo valor con signo opuesto) cuando
x
es positivo y r
es par.
- Hay una solución positiva cuando
x
es positivo y r
es impar.
- Hay una solución negativa cuando
x
es negativo y r
es impar.
- No hay solución cuando
x
es negativo y r
es par.
Desde Math.pow
no le gusta una base negativa con un exponente no entero, se puede utilizar
function nthRoot(x, n) {
if(x < 0 && n%2 != 1) return NaN; // Not well defined
return (x < 0 ? -1 : 1) * Math.pow(Math.abs(x), 1/n);
}
Ejemplos:
nthRoot(+4, 2); // 2 (the positive is chosen, but -2 is a solution too)
nthRoot(+8, 3); // 2 (this is the only solution)
nthRoot(-8, 3); // -2 (this is the only solution)
nthRoot(-4, 2); // NaN (there is no solution)
¿Cuántas raíces quieres? ¿Solo el más obvio, o todos ellos? –