lapack-traits

Crates.iolapack-traits
lib.rslapack-traits
version0.4.0
sourcesrc
created_at2020-03-29 08:53:21.130602
updated_at2021-12-13 23:05:29.968158
descriptionGeneric real/complex scalar trait wrappers for BLAS and LAPACK routines
homepage
repositoryhttps://github.com/hmunozb/lapack-traits/
max_upload_size
id224003
size19,949
Humberto Munoz-Bauza (hmunozb)

documentation

README

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.

Commit count: 33

cargo fmt