nthRoot method
Computes the complex n-th root of this object. The returned root is the one with the smallest positive argument.
Implementation
Complex nthRoot(int nth) {
var a = 0.0;
var b = 0.0;
var neg = false;
var n = nth;
if (n < 0) {
n = -n;
neg = true;
}
if (n == 0) {
a = 1;
b = 0;
} else {
if (n == 1) {
a = real;
b = imaginary;
} else {
var length = abs();
var angle = phase();
if (angle < 0) {
angle += math.pi * 2;
}
length = math.pow(length, 1.0 / n) as double;
angle = angle / n;
a = length * math.cos(angle);
b = length * math.sin(angle);
}
}
if (neg) {
final den = a * a + b * b;
a = a / den;
b = -b / den;
}
return Complex(a, b);
}