BLAS for Rust.
- No special trait representing matrices or vectors
- Powerful generics
- Fully tested against REFERENCE BLAS Version 3.8.0
- Performance are equal or faster than Accelerate framework
- No hand tuned assembly
extern crate libblas;
use libblas::level3;
fn main {
// 3X2 matrix
let a = vec![1.,2.,3.,4.,5.,6.];
let b = vec![1.,1.,1.,1.,1.,1.];
let mut c = vec![2.,1.,3.,1.,4.,1.];
level3::gemm('n', 'n', 2, 2, 1, 0.3, &a, 3, &b, 3, 1.3, &mut c, 3);
assert!(c, vec![2.9, 1.9, 3.0, 1.6, 5.8, 1.0])
}Add this to your Cargo.toml:
[dependencies]
libblas = "0.1"and this to your crate root:
extern crate libblas;Release notes are available in RELEASES.md.
Conformance testing is done by generating fixtures from REFERENCE BLAS Version 3.8.0 and run against libblas.
To generate the fixture you need to have json-fortran installed.
Run sh ./script/conformance.sh && cargo test --test conformance.
NOTE: only double precision and complex*16 fixtures are generated.
The benchmark suite does not benchmark against other BLAS implemations. See libblas-bench.
Run cargo +nightly bench
NOTE: remember to have nightly installed rustup install nightly.
libblas is implemented following the REFERENCE BLAS Version 3.8.0 and blas-js.
libblas is primarily distributed under the terms of both the MIT license
and the Apache License (Version 2.0).
See LICENSE-APACHE, LICENSE-MIT, and COPYRIGHT for details.