specular-differentiation
Abstract
Changes Refactored calculation backends into a routed backend structure. Added NumPy, Numba, and JAX calculation backend modules. Added explicit backend selection through specular.change_backend(...). Kept top-level imports lightweight; ODE and optimization APIs are now loaded lazily. Reduced core installation requirements to NumPy, with optional extras for ODE, optimization, Numba, and JAX. Updated A, derivative, gradient, Jacobian, and related calculation APIs to route through the active backend. Updated JAX calculations to use autodiff-based one-sided derivatives. Split ODE classical schemes into classical_solver.py. Added the specular Heun scheme. Fixed ODE step counting and trigonometric tangent singularity handling. Added backend-aware optimization solver routing for NumPy and JAX. Moved optional torch and scipy imports inside classical optimization functions. Fixed optimization history recording to store independent snapshots. Fixed stochastic quasi-Fermat branch logic. Fixed hybrid optimization step-size counter continuity across deterministic and stochastic phases. Updated documentation for installation extras, backend usage, and JAX usage. Replaced the old specular.jax documentation with a general backend page. Updated ODE documentation examples for the current API. Added regression tests for backend switching, optimization history, stochastic quasi-Fermat behavior, hybrid step-size continuity, optional dependency imports, and stale documentation references.
Fields of Study & Subjects
Computer Graphics and Visualization Techniques
Color Science and Applications
Surface Roughness and Optical Measurements
Publication details
- Journal / source
- Zenodo (CERN European Organization for Nuclear Research)
- Publication date
- 14 January 2026