Included in this update:
**Core Algorithm Improvements**
- improves the spectral rigidity and level variance algorithms
- algorithms now automatically determine the number of iterations needed for convergence, based on largest L value
- both algorithms now use more consistent Monte-Carlo approaches with a clear convergence criterion
- Kahan summation is now used for the summing/averaging of Monte-Carlo sample runs (doesn't seem to make a difference though - maybe Numba compiling it out...)
- progress monitoring during computation of spectral observables has been simplified
**API Changes / Improvements**
- `Eigenvalues` class constructor now accepts 2D matrices as inputs, and automatically tries to use the appropriate eigenvalue computation function to extract eigenvalues
- `generate_eigs` function moved to `Eigenvalues.generate` static method
- most string literals (e.g. "goe", "gue") have been replaced with Enum variants:
- `empyricalRMT._types.MatrixKind`
- `empyricalRMT.plot.PlotMode`
- `empyricalRMT.smoother.SmoothMethod`
- plotting no longer forces Seaborn style "darkgrid" on user
- passing in existing plt.Figure and plt.Axes objects to plotting functions should now always be possible
**Code Quality**
- updates Python version and library requirements
- improved type annotations, remove issues found by updated Pylance, etc.
- consistently use `np.float64` almost everywhere
This update will likely be the last, except for minor bugfixes.
prelim
Preliminary release for citation purposes.