BENCHMARK NOTES

How the integrator comparison was measured

The table on the main website is a fixed, interactive view of 15 illustrative expressions. Filtering the table does not run either solver. The cases were selected from a private 5,000-expression development benchmark to show different mathematical families and both supported and unsupported results. They are not a random or representative sample.

Engineering Workspace

Its values come from the v0.1.0 release benchmark report. Each value is the C++ application's reported engine time in milliseconds for one command from the batch run. The engine includes its own parsing, integration, and result verification work. “Completed” is the app's result status; “Unsupported” means it did not return a supported symbolic antiderivative.

SymPy

SymPy 1.14.0 was run separately on the same Windows computer, one expression per fresh Python process. The displayed time begins before SymPy parses the expression and ends after integrate returns; Python process startup and import time are excluded. Each case had an eight-second wall-clock limit. A returned expression containing an unevaluated Integral is shown as “Unevaluated.” SymPy results in this sample were not separately checked for real-domain equivalence with the C++ results. No SymPy code is shipped with Engineering Workspace or this website.

Interpreting the numbers

The solvers use different measurement boundaries and were measured in separate runs. Individual timings can change with computer load, cache state, and software version. The table is useful for exploring specific expressions, but it does not establish an overall speed or coverage advantage. A returned antiderivative may have domain restrictions; check results in the context of your problem.

Download the displayed case data · Back to the comparison

Batches 3–9 comparison

The cumulative-time chart and batch table use all 5,521 commands from the seven local batch files. The installed Engineering Workspace development build and SymPy 1.14.0 ran every command with a 10-second limit per integral. Both indefinite and numeric-bound definite integrals are included. The chart plots the sum of per-integral times in the original batch order; it is not wall-clock time for the complete run. SymPy's cases ran in six concurrent worker processes, so its individual timings include the effects of that machine load. The timing starts after process startup and SymPy import, then includes parsing and integration. An error without a measured duration is counted as an attempted case but is omitted from timing sums and averages.

For the type comparison, a reproducible sample of 20 expressions was selected from each of five broad structural families, using seed 20261024. Engineering Workspace and SymPy received the same 100 expressions. Each family label is a heuristic classification based on expression syntax, not a claim about whether the integral has an elementary antiderivative. Rubi was not included in this edition's reported comparison.

“Returned” counts indicate that the solver returned an answer without an unresolved integral marker. They do not mean that SymPy's results were independently proved equivalent to every input. Engineering Workspace reports its own verification status. The two systems also use different measurement boundaries, so read the average-time plot with those limits in mind.

Source batch SHA-256 hashes and the full per-batch results are included in the downloadable result data. This is a benchmark of the installed development build and does not describe the older v0.1.0 download.