Skip to content

Improve Maxima backend usability and result handling#124

Open
Amin-El-Sayed wants to merge 5 commits into
JuliaSymbolics:mainfrom
Amin-El-Sayed:maxima-usability-0.2
Open

Improve Maxima backend usability and result handling#124
Amin-El-Sayed wants to merge 5 commits into
JuliaSymbolics:mainfrom
Amin-El-Sayed:maxima-usability-0.2

Conversation

@Amin-El-Sayed

Copy link
Copy Markdown

Summary

  • surface concrete Maxima assumption questions instead of parser failures
  • preserve exact constants and broaden special-function round-tripping
  • add exact simplification, numerical evaluation, status, and help utilities
  • document the backend and prepare SymbolicIntegrationMaxima v0.2.0

Motivation

Parametric improper integrals could previously end in a raw parser error when Maxima asked for an assumption. Exact special-function values could also be converted to floating-point values too early, and unsupported Maxima functions stopped otherwise usable results from returning to Symbolics.

This update makes the backend suitable for interactive use while keeping assumptions explicit: the package does not silently choose mathematical domains or signs for the user.

Behavior

The backend now:

  • captures Maxima's assumption requests and reports which assumption is missing
  • distinguishes assumption, timeout, process, parse, and unsupported-result failures
  • preserves exact %pi and %e
  • handles incomplete gamma values and common special functions more naturally
  • preserves unknown Maxima functions as symbolic calls when possible
  • provides maxima_simplify, maxima_numeric, maxima_help, and maxima_status
  • documents installation, assumptions, improper integrals, simplification, and diagnostics

Validation

  • Julia 1.10: 90/90 basic tests passed
  • Julia 1.12: 90/90 basic tests passed
  • difficult corpus, 103 cases: 62 ok, 35 maybe, 0 fail, 4 unevaluated, 2 assumption-needed, 0 exceptions
  • Documenter build and doctests passed
  • git diff --check passed

Release and registry

The subpackage version is bumped to 0.2.0. After this PR is merged, the General registry source entry should first be updated to:

repo = "https://github.com/JuliaSymbolics/SymbolicIntegration.jl.git"
subdir = "lib/SymbolicIntegrationMaxima"

Then 0.2.0 can be registered from the merged commit. Existing entries in Versions.toml, especially the 0.1.1 tree hash, must remain unchanged.

@codecov-commenter

codecov-commenter commented Jul 13, 2026

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 54.51%. Comparing base (8647f0d) to head (fd973fe).
⚠️ Report is 11 commits behind head on main.
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #124      +/-   ##
==========================================
+ Coverage   50.98%   54.51%   +3.52%     
==========================================
  Files          23       23              
  Lines        4309     4309              
==========================================
+ Hits         2197     2349     +152     
+ Misses       2112     1960     -152     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants