Function russell_lab::matrix::mat_t_mat_mul

source ·
pub fn mat_t_mat_mul(
    c: &mut Matrix,
    alpha: f64,
    a: &Matrix,
    b: &Matrix,
    beta: f64
) -> Result<(), StrError>
Expand description

(dgemm) Performs the transpose(matrix)-matrix multiplication

  c  :=  α   aᵀ  ⋅   b   +  β  c
(m,n)      (m,k)   (k,n)     (m,n)
         a:(k,m)

See also: https://www.netlib.org/lapack/explore-html/d7/d2b/dgemm_8f.html

§Examples

use russell_lab::{mat_t_mat_mul, Matrix, StrError};

fn main() -> Result<(), StrError> {
    let a = Matrix::from(&[
        [1.0, 3.0, 5.0],
        [2.0, 4.0, 6.0],
    ]);
    let b = Matrix::from(&[
        [-1.0, -2.0, -3.0],
        [-4.0, -5.0, -6.0],
    ]);
    let mut c = Matrix::new(3, 3);
    mat_t_mat_mul(&mut c, 1.0, &a, &b, 0.0)?;
    let correct = "┌             ┐\n\
                   │  -9 -12 -15 │\n\
                   │ -19 -26 -33 │\n\
                   │ -29 -40 -51 │\n\
                   └             ┘";
    assert_eq!(format!("{}", c), correct);
    Ok(())
}