docs: private void tql2() {
      // This is derived from the Algol procedures tql2, by
      // Bowdler, Martin, Reinsch, and Wilkinson, Handbook for
      // Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
      // Fortran subroutine in EISPACK.
  
      System.arraycopy(e, 1, e, 0, n - 1);
      e[n - 1] = 0.;
  
      double f = 0., tst1 = 0.;
      for(int l = 0; l < n; l++) {
        // Find small subdiagonal element
        tst1 = max(tst1, abs(d[l]) + abs(e[l]));
        int m = l;
        for(; m < n; ++m) {
          if(abs(e[m]) <= 0x1P-52 * tst1) {
            break;
          }
        }
  
        // If m == l, d[l] is an eigenvalue,
        // otherwise, iterate.
        if(m > l) {
          do {
            // Compute implicit shift
            f += tql2ComputeImplicitShift(l);
            // Implicit QL transformation.
            tql2ImplicitQL(l, m, d[l + 1]);
            // Check for convergence.
            // TODO: Iteration limit?
          }
          while(abs(e[l]) > 0x1P-52 * tst1);
        }
        d[l] += f;
        e[l] = 0.;
      }
    }