.. _changelog: Changelog ========= All notable changes to ToFUL are documented here. Versions follow `Semantic Versioning `_. ---- v2.0.0 — 2025 -------------- Major rewrite of the computational backend and complete frontend redesign. **Backend (core.py)** * Replaced naive Python loops with NumPy vectorised evaluation — 10–50× faster PMF/PDF evaluation over array-valued support. * Implemented expression compile cache via ``functools.lru_cache`` — the expression AST is parsed once per unique string and the code object reused for all evaluations. * Added Wynn ε-algorithm convergence accelerator for discrete series — effective for algebraically converging series, used internally by Mathematica and other CAS systems. * Added Aitken Δ² three-point extrapolation as a lightweight convergence cross-check. * Added Cohen-Villegas-Zagier algorithm for alternating series — achieves near-machine-precision in exactly N evaluations. * Added geometric ratio-bound tail correction for slowly converging series. * Added Gauss-Laguerre quadrature (64 nodes) for semi-infinite integrals on :math:`[0, \infty)`. * Added Gauss-Hermite quadrature (64 nodes) for doubly-infinite integrals on :math:`(-\infty, \infty)`. * Added SymPy symbolic integration path — exact closed-form moments for unconditional PDFs. * Added mpmath tanh-sinh arbitrary-precision quadrature — activates automatically above 12 decimal places of Calc precision. * Added parallel moment computation via ``concurrent.futures.ThreadPoolExecutor`` — all orders computed concurrently for ``max_order > 2``. * Added Richardson error estimation for Gauss-Laguerre and Gauss-Hermite results. * Added ``compute_moments_parallel()`` as the unified public entry point for all moment computation. * Added ``compute_statistical_summary()`` for derived variance, std dev, skewness, kurtosis from central moments. * Added ``validate_drv_probabilities()`` and ``validate_crv_pdf()`` returning structured ``ValidationResult`` dataclasses. * Added ``detect_series_pattern()`` and ``generate_extended_series()`` as standalone functions. * Retained full backward-compatible shim classes (``EnhancedMomentCalculator``, ``EnhancedProbabilityValidator``, ``InfiniteSeriesHandler``, ``rth_moment``) for existing call sites. **Parser (toful_parser.py)** * New module — two-pass input normalisation pipeline. * Pass 1 (``normalise_for_eval``): caret exponents, implicit multiplication, ``e^x → exp(x)``, Unicode operators, absolute value bars, function aliases (``ln``, ``arcsin``, ``√``), Greek letters, subscript/superscript digits. * Pass 2 (``normalise_for_display``): ``**n → ⁿ``, ``x1 → x₁``, ``<= → ≤``, ``* → ·``, spelled Greek names. * ``prepare_expression()`` convenience function: normalises, produces display form, validates syntax with a smoke-test ``eval``. * ``normalise_range_input()`` for cleaning bound and range strings. * ``build_safe_dict()`` as canonical source of the eval namespace. **Frontend (app.py)** * Complete redesign. New aesthetic: dark scientific instrument theme with amber accent, DM Serif Display headings, JetBrains Mono data. * Two-page structure: landing page with mathematical introduction and examples; calculator as a separate page. * Five result tabs: Moments, Statistics, Distribution, Table, Convergence. * Auto-correction collapsible notice showing every parser change applied. * Plotly distribution plot (filled PDF / stem PMF) annotated with mean and reference point. * Plotly moment magnitude bar chart. * Method-distribution pie chart in Convergence tab. * Per-moment convergence diagnostic rows. * CSV download button in Table tab. * Interpretation labels (right-skewed / leptokurtic / etc.) with pill badges in Statistics tab. * Interpreted expression preview before computing. * Full CSS design system with CSS variables for consistent theming. **Documentation** * Complete rewrite of all RST pages. All "Coming soon!" stubs replaced with full content. * New pages: ``getting-started/installation``, ``getting-started/input-syntax``. * New API reference pages: ``api-reference/core``, ``api-reference/toful-parser``. * Theory section fully written: statistical moments, raw vs central, skewness-kurtosis, convergence methods. * Troubleshooting section fully written: common errors, debugging functions, convergence issues. * All examples verified against known analytical values. * Fixed ``conf.py``: added ``autosectionlabel``, ``sys.path`` for autodoc, MathJax config. * Fixed ``index.rst`` toctree to match actual files. ---- v1.0.0 — 2024 -------------- Initial release. * Streamlit web application. * Discrete and continuous random variable support. * PMF/PDF validation with probability sum/integral check. * Moment computation via Python loops and SciPy ``quad``. * Basic convergence detection (last-10-terms magnitude test and ratio test). * Geometric and arithmetic infinite series pattern detection. * Adjustable calculation and display precision. * Sidebar-based configuration. * Deployed to `toful1.streamlit.app `_.