use crate::sparse::SparseMatrix;
use simd_aligned::{
arch::{f32x8, f64x4},
MatSimd, Rows,
};
#[derive(Clone, Debug)]
#[doc(hidden)]
pub struct Class<M32> {
pub(crate) label: i32,
pub(crate) coefficients: MatSimd<f64x4, Rows>,
pub(crate) support_vectors: M32,
}
impl Class<MatSimd<f32x8, Rows>> {
pub fn with_parameters(classes: usize, support_vectors: usize, attributes: usize, label: i32) -> Self {
Self {
label,
coefficients: MatSimd::with_dimension(classes - 1, support_vectors),
support_vectors: MatSimd::with_dimension(support_vectors, attributes),
}
}
}
impl Class<SparseMatrix<f32>> {
pub fn with_parameters(classes: usize, support_vectors: usize, _attributes: usize, label: i32) -> Self {
Self {
label,
coefficients: MatSimd::with_dimension(classes - 1, support_vectors),
support_vectors: SparseMatrix::with(support_vectors),
}
}
}