// 2x2 Complex matrix eigenvalues and trace-determinant solver.

///|
/// Compute 2x2 Complex Matrix Eigenvalues (lambda1, lambda2) via characteristic equation
pub fn matrix2x2_eigenvalues(m : Matrix2x2) -> (Complex, Complex) {
  let tr = matrix2x2_trace(m)
  let det = matrix2x2_det(m)

  // lambda^2 - tr * lambda + det = 0 -> lambda = (tr +- sqrt(tr^2 - 4*det)) / 2
  let tr2 = tr.mul(tr)
  let four_det = det.scale(4.0)
  let disc = tr2.sub(four_det)
  let sqrt_disc = disc.sqrt()

  let l1 = tr.add(sqrt_disc).scale(0.5)
  let l2 = tr.sub(sqrt_disc).scale(0.5)
  (l1, l2)
}