specular-differentiation

Read full text
Authors: Kiyuob Jung
Cited by: 0

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