reciprocal method

  1. @override
Cartesian reciprocal()
override

Returns the multiplicative inverse of this element.

Implementation

@override
Cartesian reciprocal() {
  if (isNaN) {
    return Complex.nan;
  }

  if (real == 0.0 && imaginary == 0.0) {
    return Complex.infinity;
  }

  if (isInfinite) {
    return Complex.zero;
  }

  if (real.abs() < imaginary.abs()) {
    final q = real / imaginary;
    final scale = 1.0 / (real * q + imaginary);
    return Cartesian(scale * q, -scale);
  } else {
    final q = imaginary / real;
    final scale = 1.0 / (imaginary * q + real);
    return Cartesian(scale, -scale * q);
  }
}