Credits & provenance¶
scijit wraps established numerical libraries rather than reinventing them. The
hard numerical work is upstream; please credit it. Each subpackage carries its
upstream library’s license in src/<pack>/, and the full citation list is in
CITATION.cff (GitHub “Cite this repository”).
scipy’s classes are called like spl(x), but a numba jitclass has no
__call__, so a compiled class cannot be called that way. To mirror scipy,
scijit depends on scijitclass,
a companion package that adds __call__ to numba jitclasses. This is what lets
scijit’s spline and interpolator classes keep scipy’s call syntax inside @njit
code. It is a standalone @jitclass replacement, usable in any numba project.
Development¶
Much of scijit (the Fortran bind(c) wrappers, the pure-@njit ports, the
test suites, and this documentation) was written with Anthropic’s Claude, via
Claude Code. The direction is the author’s: the architecture, the decision of
what to wrap versus port, and the review of the output. Every routine is
verified against SciPy in the test suites. The numerical work itself belongs to
the upstream libraries credited below; scijit wraps and ports them, it does not
reinvent them.
Nicholas Wogan¶
Nicholas Wogan’s work runs through this project in three ways:
NumbaMinpack: demonstrated the approach this package is built on (call a compiled Fortran pack from inside
@njitvia a@cfuncaddress +bind(c)wrapper). scijit keeps its low-level MINPACK signatures (minpack_sig,hybrd,lmdif); the publicfsolve/leastsqfollow scipy’s API. His MIT notice is insrc/minpack/LICENSE_NumbaMinpack.txt.odepack: his thread-safe modern-Fortran ODEPACK is the library scijit vendored and wrapped for
scijit.integrate’s LSODA/LSODAR.numbalsoda:
scijit.integrate’slsoda_sigcfunc signature matches numbalsoda’s. scijit’sodeintitself follows scipy’s API.
A related project, not used here:
NumbaQuadpack (also
Nicholaswogan). scijit’s quad wraps jacobwilliams/quadpack with its own
wrappers; the only overlap is the natural integrand convention (return a value,
take an args pointer).
Acknowledgements¶
MINPACK is by Garbow, Hillstrom & Moré (Argonne, 1980); the sources in
src/minpack/are the modernized fortran-lang/minpack module (MIT + the University of Chicago MINPACK notice,src/minpack/LICENSE.txt).PRIMA is Zaikun Zhang’s modern reference implementation of M. J. D. Powell’s derivative-free solvers (libprima/prima, BSD-3-Clause;
src/prima/LICENCE.txt).L-BFGS-B is by Nocedal, Zhu, Byrd & Morales; SLSQP by Dieter Kraft. The sources in
src/lbfgsb/andsrc/slsqp/are Jacob Williams’ modern-Fortran refactors (jacobwilliams/lbfgsb, jacobwilliams/slsqp, both BSD-3-style; license files carried alongside).QUADPACK is by Piessens, de Doncker-Kapenga, Überhuber & Kahaner; the sources in
src/quadpack/are Jacob Williams’ jacobwilliams/quadpack double edition (BSD-3).ODEPACK (LSODA/LSODAR) is by Alan Hindmarsh (LLNL, public domain); the vendored modern edition is Nicholaswogan/odepack.
Reference-LAPACK + BLAS (Reference-LAPACK/lapack, Anderson et al., BSD-3) back
scijit.optimize’s least-squares path (curve_fit,lsq_linear) through the sharedscijit/_lib/liblapackref.FITPACK was written by Paul Dierckx (KU Leuven) and is described in his book Curve and Surface Fitting with Splines (Oxford University Press, 1993). The sources bundled in
src/fitpack/are his public-domain originals, with one edit: the twelve smoothing fitters (curfitpercurparcurclocurconcurregridparsurpogridspgridspheresurfitpolar) taketolandmaxitas trailing arguments instead of setting them as locals, so a caller can reach them. Each file carries a comment recording the change and the original values.scipy’s
scipy.interpolate,scipy.optimizeandscipy.integratewrap the same Fortran and are the references our test suites compare against.
Upstream libraries & licenses¶
Each subpackage wraps one upstream numerical library (or is a pure @njit port
of scipy’s pure-Python code); wrapped-library licenses are carried in
src/<pack>/ and the full citation list is in CITATION.cff.
subpackage |
wraps |
upstream |
license |
|---|---|---|---|
|
FITPACK |
Dierckx (netlib) |
public domain |
|
MINPACK |
fortran-lang/minpack; low-level API from Nicholaswogan/NumbaMinpack |
MIT |
|
L-BFGS-B |
Nocedal et al. / jacobwilliams/lbfgsb |
BSD-3 |
|
SLSQP |
Kraft / jacobwilliams/slsqp |
BSD-3 |
|
PRIMA |
Zhang, after Powell / libprima/prima |
BSD-3 |
|
Reference-LAPACK |
Reference-LAPACK/lapack (Anderson et al.) |
BSD-3 |
|
n/a |
pure |
BSD-3 (scijit) |
|
QUADPACK |
Piessens et al. / jacobwilliams/quadpack |
BSD-3 |
|
ODEPACK LSODA/LSODAR |
Hindmarsh (LLNL); modern edition Nicholaswogan/odepack |
public domain |
|
n/a |
pure |
BSD-3 (scijit) |