Skip to main content

Crate lapack_inject

Crate lapack_inject 

Source
Expand description

§lapack-inject

LAPACK compatible interface backed by Fortran LAPACK function pointers.

This crate allows you to use LAPACK functions while the actual computation is performed by Fortran LAPACK functions provided at runtime. This is useful for integrating with Python (scipy) or Julia (libblastrampoline) where Fortran LAPACK pointers are available.

§Usage

ⓘ
use lapack_inject::register_dgesv_lp64;

// Register Fortran dgesv pointer (e.g., from scipy or Julia)
unsafe {
    let status = register_dgesv_lp64(dgesv_ptr);
    assert_eq!(status, 0);
}

// Now lapack_inject exports dgesv_ symbol that can be used by other crates

§lapack-src/lapack-sys Compatibility

This crate exports a generated subset of Fortran-style LAPACK symbols such as dgesv_, dgetrf_, and dgesc2_. Register LP64 or ILP64 function pointers at runtime, and this crate provides those symbols to downstream crates that expect a LAPACK provider.

LAPACKE-style C entry points are exported for dgesv, dgetrf, dgetri, and dpotrf, including _64 variants and row-major layout handling.

§Supported Functions

The generated Fortran surface supports:

  • xGESV, xGETRF, xGETRS, xGETRI, xPOTRF
  • xGESVD
  • xGEQRF, real xORGQR, complex xUNGQR
  • xTRTRS
  • s/dSYEV, c/zHEEV
  • xGEEV
  • supplemental complete-pivoting LU routines xGETC2 and xGESC2

The default build keeps the consumer-facing Fortran symbols LP64-compatible. Register ILP64 host providers with the _ilp64 registration functions; do not enable the ilp64 feature just because the host provider is ILP64. The feature changes the consumer ABI too.

Re-exports§

pub use fortran::*;
pub use lapacke::*;

Modules§

fortran
Fortran LAPACK symbol exports with dual LP64/ILP64 dispatch.
lapacke
Minimal LAPACKE-compatible entry points for the generated Phase 1 surface.

Enums§

CgeevProvider
Enum representing either an LP64 or ILP64 provider for this function.
CgeqrfProvider
Enum representing either an LP64 or ILP64 provider for this function.
Cgesc2Provider
Enum representing either an LP64 or ILP64 provider for this function.
CgesvProvider
Enum representing either an LP64 or ILP64 provider for this function.
CgesvdProvider
Enum representing either an LP64 or ILP64 provider for this function.
Cgetc2Provider
Enum representing either an LP64 or ILP64 provider for this function.
CgetrfProvider
Enum representing either an LP64 or ILP64 provider for this function.
CgetriProvider
Enum representing either an LP64 or ILP64 provider for this function.
CgetrsProvider
Enum representing either an LP64 or ILP64 provider for this function.
CheevProvider
Enum representing either an LP64 or ILP64 provider for this function.
CpotrfProvider
Enum representing either an LP64 or ILP64 provider for this function.
CtrtrsProvider
Enum representing either an LP64 or ILP64 provider for this function.
CungqrProvider
Enum representing either an LP64 or ILP64 provider for this function.
DgeevProvider
Enum representing either an LP64 or ILP64 provider for this function.
DgeqrfProvider
Enum representing either an LP64 or ILP64 provider for this function.
Dgesc2Provider
Enum representing either an LP64 or ILP64 provider for this function.
DgesvProvider
Enum representing either an LP64 or ILP64 provider for this function.
DgesvdProvider
Enum representing either an LP64 or ILP64 provider for this function.
Dgetc2Provider
Enum representing either an LP64 or ILP64 provider for this function.
DgetrfProvider
Enum representing either an LP64 or ILP64 provider for this function.
DgetriProvider
Enum representing either an LP64 or ILP64 provider for this function.
DgetrsProvider
Enum representing either an LP64 or ILP64 provider for this function.
DorgqrProvider
Enum representing either an LP64 or ILP64 provider for this function.
DpotrfProvider
Enum representing either an LP64 or ILP64 provider for this function.
DsyevProvider
Enum representing either an LP64 or ILP64 provider for this function.
DtrtrsProvider
Enum representing either an LP64 or ILP64 provider for this function.
SgeevProvider
Enum representing either an LP64 or ILP64 provider for this function.
SgeqrfProvider
Enum representing either an LP64 or ILP64 provider for this function.
Sgesc2Provider
Enum representing either an LP64 or ILP64 provider for this function.
SgesvProvider
Enum representing either an LP64 or ILP64 provider for this function.
SgesvdProvider
Enum representing either an LP64 or ILP64 provider for this function.
Sgetc2Provider
Enum representing either an LP64 or ILP64 provider for this function.
SgetrfProvider
Enum representing either an LP64 or ILP64 provider for this function.
SgetriProvider
Enum representing either an LP64 or ILP64 provider for this function.
SgetrsProvider
Enum representing either an LP64 or ILP64 provider for this function.
SorgqrProvider
Enum representing either an LP64 or ILP64 provider for this function.
SpotrfProvider
Enum representing either an LP64 or ILP64 provider for this function.
SsyevProvider
Enum representing either an LP64 or ILP64 provider for this function.
StrtrsProvider
Enum representing either an LP64 or ILP64 provider for this function.
ZgeevProvider
Enum representing either an LP64 or ILP64 provider for this function.
ZgeqrfProvider
Enum representing either an LP64 or ILP64 provider for this function.
Zgesc2Provider
Enum representing either an LP64 or ILP64 provider for this function.
ZgesvProvider
Enum representing either an LP64 or ILP64 provider for this function.
ZgesvdProvider
Enum representing either an LP64 or ILP64 provider for this function.
Zgetc2Provider
Enum representing either an LP64 or ILP64 provider for this function.
ZgetrfProvider
Enum representing either an LP64 or ILP64 provider for this function.
ZgetriProvider
Enum representing either an LP64 or ILP64 provider for this function.
ZgetrsProvider
Enum representing either an LP64 or ILP64 provider for this function.
ZheevProvider
Enum representing either an LP64 or ILP64 provider for this function.
ZpotrfProvider
Enum representing either an LP64 or ILP64 provider for this function.
ZtrtrsProvider
Enum representing either an LP64 or ILP64 provider for this function.
ZungqrProvider
Enum representing either an LP64 or ILP64 provider for this function.

Constants§

LAPACK_COL_MAJOR
LAPACKE column-major matrix layout.
LAPACK_ROW_MAJOR
LAPACKE row-major matrix layout.

Functions§

register_cgeev_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgeev_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgeqrf_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgeqrf_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgesc2_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgesc2_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgesv_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgesv_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgesvd_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgesvd_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgetc2_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgetc2_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgetrf_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgetrf_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgetri_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgetri_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgetrs_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cgetrs_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cheev_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cheev_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cpotrf_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cpotrf_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_ctrtrs_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_ctrtrs_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cungqr_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_cungqr_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgeev_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgeev_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgeqrf_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgeqrf_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgesc2_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgesc2_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgesv_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgesv_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgesvd_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgesvd_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgetc2_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgetc2_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgetrf_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgetrf_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgetri_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgetri_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgetrs_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dgetrs_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dorgqr_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dorgqr_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dpotrf_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dpotrf_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dsyev_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dsyev_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dtrtrs_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_dtrtrs_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgeev_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgeev_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgeqrf_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgeqrf_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgesc2_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgesc2_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgesv_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgesv_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgesvd_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgesvd_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgetc2_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgetc2_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgetrf_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgetrf_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgetri_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgetri_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgetrs_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sgetrs_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sorgqr_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_sorgqr_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_spotrf_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_spotrf_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_ssyev_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_ssyev_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_strtrs_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_strtrs_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgeev_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgeev_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgeqrf_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgeqrf_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgesc2_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgesc2_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgesv_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgesv_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgesvd_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgesvd_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgetc2_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgetc2_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgetrf_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgetrf_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgetri_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgetri_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgetrs_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zgetrs_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zheev_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zheev_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zpotrf_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zpotrf_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_ztrtrs_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_ztrtrs_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zungqr_ilp64⚠
Register the ILP64 (i64) Fortran function pointer. Returns 0 on success, 2 if already registered.
register_zungqr_lp64⚠
Register the LP64 (i32) Fortran function pointer. Returns 0 on success, 2 if already registered.

Type Aliases§

CSelectFn1
Select function type for complex GEES (single)
CSelectFn2
Select function type for complex (single) with 2 args
CgeevIlp64FnPtr
CgeevLp64FnPtr
CgeqrfIlp64FnPtr
CgeqrfLp64FnPtr
Cgesc2Ilp64FnPtr
Cgesc2Lp64FnPtr
CgesvIlp64FnPtr
CgesvLp64FnPtr
CgesvdIlp64FnPtr
CgesvdLp64FnPtr
Cgetc2Ilp64FnPtr
Cgetc2Lp64FnPtr
CgetrfIlp64FnPtr
CgetrfLp64FnPtr
CgetriIlp64FnPtr
CgetriLp64FnPtr
CgetrsIlp64FnPtr
CgetrsLp64FnPtr
CheevIlp64FnPtr
CheevLp64FnPtr
CpotrfIlp64FnPtr
CpotrfLp64FnPtr
CtrtrsIlp64FnPtr
CtrtrsLp64FnPtr
CungqrIlp64FnPtr
CungqrLp64FnPtr
DSelectFn2
Select function type for real GEES (double)
DSelectFn3
Select function type for real (double) with 3 args
DgeevIlp64FnPtr
DgeevLp64FnPtr
DgeqrfIlp64FnPtr
DgeqrfLp64FnPtr
Dgesc2Ilp64FnPtr
Dgesc2Lp64FnPtr
DgesvIlp64FnPtr
DgesvLp64FnPtr
DgesvdIlp64FnPtr
DgesvdLp64FnPtr
Dgetc2Ilp64FnPtr
Dgetc2Lp64FnPtr
DgetrfIlp64FnPtr
DgetrfLp64FnPtr
DgetriIlp64FnPtr
DgetriLp64FnPtr
DgetrsIlp64FnPtr
DgetrsLp64FnPtr
DorgqrIlp64FnPtr
DorgqrLp64FnPtr
DpotrfIlp64FnPtr
DpotrfLp64FnPtr
DsyevIlp64FnPtr
DsyevLp64FnPtr
DtrtrsIlp64FnPtr
DtrtrsLp64FnPtr
SSelectFn2
Select function type for real GEES (single)
SSelectFn3
Select function type for real (single) with 3 args
SgeevIlp64FnPtr
SgeevLp64FnPtr
SgeqrfIlp64FnPtr
SgeqrfLp64FnPtr
Sgesc2Ilp64FnPtr
Sgesc2Lp64FnPtr
SgesvIlp64FnPtr
SgesvLp64FnPtr
SgesvdIlp64FnPtr
SgesvdLp64FnPtr
Sgetc2Ilp64FnPtr
Sgetc2Lp64FnPtr
SgetrfIlp64FnPtr
SgetrfLp64FnPtr
SgetriIlp64FnPtr
SgetriLp64FnPtr
SgetrsIlp64FnPtr
SgetrsLp64FnPtr
SorgqrIlp64FnPtr
SorgqrLp64FnPtr
SpotrfIlp64FnPtr
SpotrfLp64FnPtr
SsyevIlp64FnPtr
SsyevLp64FnPtr
StrtrsIlp64FnPtr
StrtrsLp64FnPtr
ZSelectFn1
Select function type for complex GEES (double)
ZSelectFn2
Select function type for complex (double) with 2 args
ZgeevIlp64FnPtr
ZgeevLp64FnPtr
ZgeqrfIlp64FnPtr
ZgeqrfLp64FnPtr
Zgesc2Ilp64FnPtr
Zgesc2Lp64FnPtr
ZgesvIlp64FnPtr
ZgesvLp64FnPtr
ZgesvdIlp64FnPtr
ZgesvdLp64FnPtr
Zgetc2Ilp64FnPtr
Zgetc2Lp64FnPtr
ZgetrfIlp64FnPtr
ZgetrfLp64FnPtr
ZgetriIlp64FnPtr
ZgetriLp64FnPtr
ZgetrsIlp64FnPtr
ZgetrsLp64FnPtr
ZheevIlp64FnPtr
ZheevLp64FnPtr
ZpotrfIlp64FnPtr
ZpotrfLp64FnPtr
ZtrtrsIlp64FnPtr
ZtrtrsLp64FnPtr
ZungqrIlp64FnPtr
ZungqrLp64FnPtr
lapack_complex_double
lapack_complex_float
lapack_int
Integer type for LAPACK operations (LP64: 32-bit).
lapackint
Alias for backward compatibility