Skip to content

hmunozb/lapack-traits

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 

Repository files navigation

BLAS/LAPACK Traits for Rust

Wraps real and complex scalar routines in BLAS/LAPACK as traits for use in scalar-generic mathematical/scientific Rust crates.

Currently implements a small subset of BLAS and LAPACK routines, but more are being added over time. Contributions for any missing routines are welcome.

Traits

Access BLAS and LAPACK methods through the BlasScalar and LapackScalar traits, respectively. Enabling simba provides access to the LComplexField trait, a convenient unifying trait for the (f32, f64, c32, c64) types that also derives from simba::scalar::ComplexField.

Naming and behavior conventions

Almost all simple routines with uniform patterns over all types behave as defined in BLAS/LAPACK. For a routine xgemm, where x is one of the types s, d, c, or z, the trait name is written as Tgemm, and the method is gemm. For some routines that mix real and complex scalars, such as yasum, where y = s, d, sc, dz, the traits are name RTasum, while the methods are simply asum. Routines with integer types such as ixamax correspond to ITamax and amax.

Additional naming and behavioral complexities arise when real and complex matrices are mixed together. These are explicitly documented and wrapped over all data types as uniformly as possible. In general, he means "hermitian" for complex types and "symmetric" for real types, while sy means "symmetric" for all types. Likewise, un means unitary for complex types and orthogonal for real types.

Related routines may be grouped under a single trait.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages