Skip to content

Latest commit

 

History

History
46 lines (39 loc) · 3.01 KB

File metadata and controls

46 lines (39 loc) · 3.01 KB

Statistical numerical compatibility

The baseline is SplAdder v3.1.1 with NumPy 2.2.6, SciPy 1.13.1 and statsmodels 0.14.4 on Linux x86_64. Production code is Rust with native OpenBLAS/LAPACK and small source-derived special-function kernels; it never imports Python modules or starts a Python interpreter.

glm.rs follows statsmodels' NB/log and Gamma/identity IRLS, including the initial means, working weights, previous-iteration scale, deviance stopping rule, and final pseudoinverse refit. linalg.rs calls the same OpenBLAS 0.3.29 ILP64 kernels used by the pinned NumPy wheel: DGELSD, DGESDD, DGETRF and BLAS matrix products. Independent rows use Rayon; BLAS computation uses one thread. Set OPENBLAS_NUM_THREADS=1 before launching to prevent the native loader from creating its default idle worker pool.

optimize.rs ports SciPy 1.13.1's bounded Brent implementation and default termination/evaluation rules. likelihood.rs retains the reference's actual Cox–Reid determinant computation. statistics.rs follows raw dispersion, Gamma trend, empirical prior, shrunken dispersion, LRT and final isoform choice.

Numerical behavior depends on the reference reduction order: expression and PSI rows use sequential addition, while contiguous count rows use pairwise addition. Keep the LAPACK determinant followed by log in the Cox–Reid term; a log-determinant changes dispersion estimates. SciPy's xlog1py uses the Cephes log1p implementation shipped in vendor/scipy-special. JSON probes require exact float round trips; production HDF5 is binary.

The native dependency bootstrap extracts only the three redistributable shared libraries from a SHA-256-pinned NumPy wheel and validates each library's hash. The 16.5 MB archive and 27 MB extracted libraries stay under the configured data work root. See licenses/NumPy-wheel-native-notices.txt for OpenBLAS, LAPACK, GCC runtime and quadmath notices. Development library paths are set through RUSPLADDER_BLAS_DIR. Release packaging sets relative ELF library paths and includes the pinned native libraries beside the executable, with their notices. Source correspondence and distribution materials identify the exact GCC runtime source packages. The Linux amd64 archive requires glibc 2.28 or newer; Python is not a runtime dependency.

Primary references: