operator / method

  1. @override
Number operator /(
  1. dynamic divisor
)
override

Returns the quotient of this Number divided by the divisor (a Number or num). This Number is unaffected.

Implementation

@override
Number operator /(dynamic divisor) {
  if (divisor is num) {
    return Number.simplifyType(Complex(real / divisor as Real, Imaginary(imaginary.value / divisor)));
  }
  if (divisor is Real) {
    return Number.simplifyType(Complex(real / divisor.value as Real, Imaginary(imaginary.value / divisor.value)));
  }
  if (divisor is Imaginary) {
    return Number.simplifyType(Complex(imaginary.value / divisor.value as Real, Imaginary(-real / divisor.value)));
  }
  if (divisor is Complex) {
    // (a + bi) / (c + di) = (ac + bd) / (c^2 + d^2) + i * (bc - ad) / (c^2 + d^2)
    final c2d2 = (divisor.real ^ 2.0) + (divisor.imaginary.value ^ 2.0);
    return Number.simplifyType(Complex(
        (real * divisor.real + imaginary.value * divisor.imaginary.value) / c2d2 as Real,
        Imaginary((imaginary.value * divisor.real - real * divisor.imaginary.value) / c2d2)));
  }

  // Treat divisor as 0
  return Number.simplifyType(Complex(real < 0 ? Double.negInfinity : Double.infinity,
      imaginary < 0 ? Imaginary(Double.negInfinity) : Imaginary(Double.infinity)));
}