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 \([0, \infty)\).
Added Gauss-Hermite quadrature (64 nodes) for doubly-infinite integrals on \((-\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 formax_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()andvalidate_crv_pdf()returning structuredValidationResultdataclasses.Added
detect_series_pattern()andgenerate_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-testeval.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: addedautosectionlabel,sys.pathfor autodoc, MathJax config.Fixed
index.rsttoctree 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.