pub fn mat_mul<T: BlasMul>(a: &Matrix<T>, b: &Matrix<T>) -> Result<Matrix<T>>Expand description
Matrix multiplication: A * B.
Uses BLAS-backed einsum via tenferro for high performance.
§Errors
Returns an error if a.ncols() != b.nrows() or the backend einsum fails.
§Examples
use tensor4all_tensorbackend::{from_vec2d, mat_mul};
let a = from_vec2d(vec![vec![1.0_f64, 2.0], vec![3.0, 4.0]]);
let b = from_vec2d(vec![vec![5.0, 6.0], vec![7.0, 8.0]]);
let c = mat_mul(&a, &b).unwrap();
assert!((c[[0, 0]] - 19.0).abs() < 1e-10);
assert!((c[[0, 1]] - 22.0).abs() < 1e-10);
assert!((c[[1, 0]] - 43.0).abs() < 1e-10);
assert!((c[[1, 1]] - 50.0).abs() < 1e-10);