keel-linalg: CBLAS/LAPACKE over a runtime-loaded OpenBLAS

[ library, math, mit, numeric ] [ Propose Tags ] [ Report a vulnerability ]

Dense linear algebra for Haskell with zero build-time native dependencies: CBLAS level-3 and LAPACKE drivers resolved at run time from an OpenBLAS shared library through keel-dyn, over Storable vectors. . The backend is located by the documented keel search policy (KEEL_OPENBLAS env override, then the per-user keel data dir, then the system search path), probed for ILP64 misconfiguration via openblas_get_config, and pinned immutably in a Backend handle — there is no global state and no backend swapping under a pure API.


[Skip to Readme]

Modules

  • Keel
    • Keel.Linalg
      • Keel.Linalg.Backend

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0
Change log CHANGELOG.md
Dependencies base (>=4.20 && <4.23), keel-dyn (>=0.1 && <0.2), vector (>=0.13 && <0.14) [details]
Tested with ghc ==9.10.3 || ==9.12.4 || ==9.14.1
License MIT
Author Zhe Zhang
Maintainer Zhe Zhang
Uploaded by azng_0 at 2026-08-19T23:30:28Z
Category Math, Numeric
Home page https://github.com/skymanbp/keel
Bug tracker https://github.com/skymanbp/keel/issues
Source repo head: git clone https://github.com/skymanbp/keel
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 1 total (1 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2026-08-19 [all 2 reports]

Readme for keel-linalg-0.1.0.0

[back to package description]

keel-linalg

Dense linear algebra with zero build-time native dependencies: CBLAS level-3 and LAPACKE drivers over Storable vectors, resolved at run time from an OpenBLAS shared library through keel-dyn.

import Keel.Linalg

main :: IO ()
main = do
  Right be <- loadBackend defaultOpenBlasSpec
  -- row-major dgemm: C := A(2x3) * B(3x2)
  c <- dgemm be NoTrans NoTrans 2 2 3 1.0 a b 0.0
  print c

The backend is located by the documented keel search policy (KEEL_OPENBLAS env override, the per-user keel data dir — populated by keel setup openblas from the umbrella package — then the system search path), probed for ILP64 misconfiguration via openblas_get_config, and pinned immutably in a Backend handle: no global state, no backend swapping under a pure API.

Every driver is checked against numpy/scipy oracles in the test suite (GEMM, LU/solve/inverse, Cholesky, QR, SVD, symmetric and general eigenvalues, least squares — agreement within 1e-10).

Part of the keel workspace — see the project repository.