discriminant method

  1. @override
Complex discriminant()
override

The polynomial discriminant, if it exists.

Implementation

@override
Complex discriminant() {
  final k = (b * b * c * c * d * d) -
      (d * d * d * b * b * b * const Complex.fromReal(4)) -
      (d * d * c * c * c * a * const Complex.fromReal(4)) +
      (d * d * d * c * b * a * const Complex.fromReal(18)) -
      (d * d * d * d * a * a * const Complex.fromReal(27)) +
      (e * e * e * a * a * a * const Complex.fromReal(256));

  final p = e *
      ((c * c * c * b * b * const Complex.fromReal(-4)) +
          (b * b * b * c * d * const Complex.fromReal(18)) +
          (c * c * c * c * a * const Complex.fromReal(16)) -
          (d * c * c * b * a * const Complex.fromReal(80)) -
          (d * d * b * b * a * const Complex.fromReal(6)) +
          (d * d * a * a * c * const Complex.fromReal(144)));

  final r = (e * e) *
      (b * b * b * b * const Complex.fromReal(-27) +
          b * b * c * a * const Complex.fromReal(144) -
          a * a * c * c * const Complex.fromReal(128) -
          d * b * a * a * const Complex.fromReal(192));

  return k + p + r;
}