Polynomial<T>.fromRoots constructor
Polynomial<T>.fromRoots (
- DataType<
T> dataType, - List<
T> roots, { - PolynomialFormat? format,
Builds a polynomial from a list of roots.
Implementation
factory Polynomial.fromRoots(DataType<T> dataType, List<T> roots,
{PolynomialFormat? format}) {
final result =
Polynomial(dataType, desiredDegree: roots.length, format: format);
if (roots.isEmpty) {
result.setUnchecked(0, dataType.field.multiplicativeIdentity);
return result;
}
result.setUnchecked(0, dataType.field.neg(roots[0]));
result.setUnchecked(1, dataType.field.multiplicativeIdentity);
final sub = dataType.field.sub, mul = dataType.field.mul;
for (var i = 1; i < roots.length; i++) {
final root = roots[i];
for (var j = i + 1; j >= 0; j--) {
result.setUnchecked(
j,
sub(
j > 0
? result.getUnchecked(j - 1)
: dataType.field.additiveIdentity,
mul(root, result.getUnchecked(j))));
}
}
return result;
}