- Replace per-term Python loop in _logpdf with a single vectorised kve
call (shape N×M) in both ricegamma_gen and logricegamma_gen, giving
order-of-magnitude speedup on large batch inputs.
- Add adaptive series truncation: n_terms ≈ 3K+30, collapses to n=1
when K=0 so no unnecessary computation.
- Cache Gauss-Laguerre quadrature nodes in _cdf to avoid recomputing
roots_genlaguerre on every optimiser call.
- Add fit() override that re-fits with K fixed to 0 when the MLE
estimate falls below _K_ZERO_THRESH (1e-2), avoiding near-zero Rice
series numerical issues.
- Register logricegamma in the generate_data.py fitting pipeline.
- Reduce ricegamma N_SERIES 90→36; adaptive truncation handles accuracy.
`generate_data.py` for processing and fitting statistical distributions to data.
'distributions.py' to create new dists to fit
'analysis_data.ipynb" notebook for data analysis