1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
use crate::Scalar; use cblas::{Layout, Part, Transpose, ssyrk, dsyrk, csyrk, zsyrk}; use num_complex::Complex32 as c32; use num_complex::Complex64 as c64; pub trait Tsyrk : Scalar { unsafe fn syrk(layout: Layout, uplo: Part, trans: Transpose, n: i32, k: i32, alpha: Self, a: &[Self], lda: i32, beta: Self, c: &mut [Self], ldc: i32, ); } macro_rules! impl_tsyrk{ ($N: ty, $tsyrk: path) => ( impl Tsyrk for $N{ unsafe fn syrk( layout: Layout, uplo: Part, trans: Transpose, n: i32, k: i32, alpha: Self, a: &[Self], lda: i32, beta: Self, c: &mut [Self], ldc: i32 ) { $tsyrk(layout, uplo, trans, n, k, alpha, a, lda, beta, c, ldc) } } ) } impl_tsyrk!(f32, ssyrk); impl_tsyrk!(f64, dsyrk); impl_tsyrk!(c32, csyrk); impl_tsyrk!(c64, zsyrk);