roots property
Computes the complex roots of a polynomial.
Implementation
List<Complex> get roots {
if (degree <= 0) {
return [];
} else if (degree == 1) {
final a = getUnchecked(1), b = getUnchecked(0);
return [Complex(-b / a)];
} else {
final factor = -1.0 / getUnchecked(degree);
final matrix =
Matrix<double>.generate(DataType.float, degree, degree, (r, c) {
if (r == degree - 1) {
return factor * getUnchecked(c);
} else if (r + 1 == c) {
return 1;
} else {
return 0;
}
});
return matrix.eigenvalue.eigenvalues;
}
}