#![forbid(unsafe_code)]
pub mod matrix;
pub mod vector;
mod exact;
#[must_use]
pub struct Matrix<const D: usize> {
pub rows: [[f64; D]; D],
}
#[must_use]
pub struct Vector<const D: usize> {
pub(crate) data: [f64; D],
}
pub struct CleanMatrix<const D: usize> {
rows: [[f64; D]; D],
}
impl<const D: usize> Matrix<D> {
pub const fn from_rows_unchecked(rows: [[f64; D]; D]) -> Self {
Self { rows }
}
pub(crate) const fn from_rows_unchecked_internal(rows: [[f64; D]; D]) -> Self {
Self { rows }
}
}
impl<const D: usize> Vector<D> {
pub const fn new_unchecked(data: [f64; D]) -> Self {
Self { data }
}
pub(crate) const fn new_unchecked_internal(data: [f64; D]) -> Self {
Self { data }
}
}
pub struct Lu<const D: usize>;
impl<const D: usize> Lu<D> {
pub fn solve_vec(&self, rhs: Vector<D>) -> Vector<D> {
rhs
}
pub fn solve(&self, rhs: Vector<D>) -> Vector<D> {
rhs
}
}
fn call_sites<const D: usize>(lu: &Lu<D>, rhs: Vector<D>) {
let _ = lu.solve_vec(rhs);
}