Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Quadrature performance and comparison evidence

Purpose

This report separates numerical correctness from performance. Every library is judged against declared mathematical truth before any timing ratio is interpreted.

Comparison label definitions

LabelMeaningRecords
exactSame embedded rule family and order.11
strong_matchClosely matched global refinement capacity.6
node_matchedSame local node count with different estimators.10
family_matchedSame broad method family; algorithms differ.26
capabilityRelated capability only; no algorithmic equivalence claim.9
best_methodPredeclared practical choice using the frozen library-specific adapter settings.16

Cases and truth

The catalog includes smooth, vector-valued, localized, nonsmooth, endpoint-singular, improper, oscillatory, expensive, narrow-feature, and nonfinite cases. Truth comes from analytic derivations or an independent NumPy Gauss-Legendre convergence ladder.

εobs=I^I.\varepsilon_{\mathrm{obs}} = \lVert \widehat{I} - I \rVert_{\infty}.

Accuracy and calibration

49 of 78 records warrant primal timing interpretation. 30 warrant JVP timing, and 18 warrant a direct two-library reverse-mode comparison.

There are 15 records with available derivative truth that fail at least one JVP gate. Records without declared derivative truth are explicitly ineligible for AD comparisons. Reported-error ratios are calibration diagnostics, not automatic bound claims.

Work

Reported and normalized evaluations are retained separately. In particular, Quadax Clenshaw-Curtis interval work is converted to actual node evaluations before comparable-work analysis.

Compile, warm, VMAP, and AD timing

Lowering, compilation, warm scalar execution, VMAP batches of 16 and 128, JVP, and supported reverse mode are measured separately with synchronized outputs and interleaved library order. Every method-case record is measured in a fresh Python process so internal compilation caches cannot leak between records.

Using a descriptive stability threshold of MAD/median0.10\operatorname{MAD}/\operatorname{median} \le 0.10, 616 of 752 supported timed library-mode measurements are stable. Automatic regression decisions use the stricter predeclared ratio, minimum-case, and two-MAD separation rules.

Failure semantics

Jaxstro fails closed on nonfinite integrand samples. Quadax 0.2.13 masks nonfinite samples to zero, so that case is recorded as a semantic difference and excluded from performance claims.

Primary matched timing ratios

Each timing ratio is tjaxstro/tquadaxt_{\mathrm{jaxstro}}/t_{\mathrm{quadax}}; each work ratio is Njaxstro/NquadaxN_{\mathrm{jaxstro}}/N_{\mathrm{quadax}}. Values above one therefore favor Quadax for that metric. The parenthetical timing label states whether the Jaxstro slowdown exceeds twice the larger MAD; it is not a winner declaration.

CaseFamilyCompileWarmVMAP 128JVPWork
smooth_exponentialgauss_kronrodnot warrantednot warrantednot warrantednot warrantednot warranted
smooth_exponentialclenshaw_curtis0.930.74 (not separated)0.01 (not separated)0.81 (not separated)1.00
smooth_exponentialromberg1.760.56 (not separated)1.01 (not separated)1.73 (separated)1.00
localized_gaussiangauss_kronrodnot warrantednot warrantednot warrantednot warrantednot warranted
localized_gaussianclenshaw_curtis1.200.85 (not separated)0.22 (not separated)not warranted1.22
breakpoint_kinkgauss_kronrodnot warrantednot warrantednot warrantednot warrantednot warranted
breakpoint_kinkclenshaw_curtis1.280.79 (not separated)0.02 (not separated)not warranted1.00
oscillatory_cosinegauss_kronrodnot warrantednot warrantednot warrantednot warrantednot warranted
oscillatory_cosineclenshaw_curtis1.101.23 (separated)0.60 (not separated)1.20 (separated)1.85
oscillatory_cosineromberg1.730.91 (not separated)0.65 (not separated)1.74 (separated)1.00
expensive_identitygauss_kronrodnot warrantednot warrantednot warrantednot warrantednot warranted
expensive_identityclenshaw_curtis1.090.76 (not separated)0.01 (not separated)0.75 (not separated)1.00
expensive_identityromberg1.521.25 (separated)0.55 (not separated)1.71 (separated)1.00

Environment

Source revision: 35736fcc0fdaa7932b3bc67780567e24cf94638a

Optimization decision

Status: optimized_accepted_two_suite.

Two fresh isolated suites improve all three Romberg VMAP-128 targets without a reproducible scalar or JVP regression.

Reviewed baseline authorization: vmap_128.

The VMAP batch-128 trigger reproduced across smooth, oscillatory, and expensive-integrand Romberg cases in both clean baseline suites.

Post-optimization residual triggers: ad_jvp. These are observations from the accepted optimized suite, not additional authorization for the implemented change.

Two-suite optimization acceptance

The reviewed baseline is preserved unchanged. The two optimized suites have distinct generated run identifiers and distinct source revisions, with the exact same unique record set, unchanged runtime and measurement owners, matching controls and hardware, and per-record process isolation.

Romberg caseSuite 1 VMAP-128 speedupSuite 2 VMAP-128 speedup
smooth_exponential2.852.76
oscillatory_cosine2.532.48
expensive_identity12.4512.37

Warranted limitations