use super::Multiplier;
pub struct RegularMultiplier {}
impl RegularMultiplier {
#[inline]
pub fn new() -> Self {
RegularMultiplier { }
}
}
impl Multiplier for RegularMultiplier {
#[inline]
fn multiply(&mut self, a: &[f32], b: &[f32], sizes: (usize, usize, usize), c: &mut [f32]) {
multiply(a, b, sizes, c)
}
}
pub fn multiply(a: &[f32], b: &[f32], sizes: (usize, usize, usize), c: &mut [f32]) {
let (m, n, p) = sizes;
for i in 0..m { for j in 0..p { let mut sum = 0.0;
for k in 0..n { sum += a[i*n + k] * b[k*p + j];
}
c[i*p + j] = sum;
}
}
}