use num_traits::Float;
pub mod accumulators_1d;
pub mod accumulators_2d;
pub mod accumulators_3d;
pub mod impls;
pub trait SolverLinalg: Float + 'static {
fn solve_2x2(a: [Self; 4], b: [Self; 2]) -> Option<[Self; 2]>;
fn solve_3x3(a: [Self; 9], b: [Self; 3]) -> Option<[Self; 3]>;
fn solve_6x6(a: [Self; 36], b: [Self; 6]) -> Option<[Self; 6]>;
fn accumulate_1d_linear(
x: &[Self],
y: &[Self],
indices: &[usize],
weights: &[Self],
query: Self,
xtwx: &mut [Self; 4],
xtwy: &mut [Self; 2],
);
fn accumulate_1d_quadratic(
x: &[Self],
y: &[Self],
indices: &[usize],
weights: &[Self],
query: Self,
xtwx: &mut [Self; 9],
xtwy: &mut [Self; 3],
);
fn accumulate_1d_cubic(
x: &[Self],
y: &[Self],
indices: &[usize],
weights: &[Self],
query: Self,
xtwx: &mut [Self; 16],
xtwy: &mut [Self; 4],
);
#[allow(clippy::too_many_arguments)]
fn accumulate_2d_linear(
x: &[Self],
y: &[Self],
indices: &[usize],
weights: &[Self],
query_x: Self,
query_y: Self,
xtwx: &mut [Self; 9],
xtwy: &mut [Self; 3],
);
#[allow(clippy::too_many_arguments)]
fn accumulate_2d_quadratic(
x: &[Self],
y: &[Self],
indices: &[usize],
weights: &[Self],
query_x: Self,
query_y: Self,
xtwx: &mut [Self; 36],
xtwy: &mut [Self; 6],
);
#[allow(clippy::too_many_arguments)]
fn accumulate_2d_cubic(
x: &[Self],
y: &[Self],
indices: &[usize],
weights: &[Self],
query_x: Self,
query_y: Self,
xtwx: &mut [Self; 100],
xtwy: &mut [Self; 10],
);
#[allow(clippy::too_many_arguments)]
fn accumulate_3d_linear(
x: &[Self],
y: &[Self],
indices: &[usize],
weights: &[Self],
query_x: Self,
query_y: Self,
query_z: Self,
xtwx: &mut [Self; 16],
xtwy: &mut [Self; 4],
);
#[allow(clippy::too_many_arguments)]
fn accumulate_3d_quadratic(
x: &[Self],
y: &[Self],
indices: &[usize],
weights: &[Self],
query_x: Self,
query_y: Self,
query_z: Self,
xtwx: &mut [Self; 100],
xtwy: &mut [Self; 10],
);
}