levenberg_marquardt/
problem.rs1use nalgebra::{
2 ComplexField, Dim, Matrix, Vector,
3 storage::{IsContiguous, RawStorageMut, Storage},
4};
5
6pub trait LeastSquaresProblem<F, M, N>
12where
13 F: ComplexField + Copy,
14 N: Dim,
15 M: Dim,
16{
17 type ResidualStorage: RawStorageMut<F, M> + Storage<F, M> + IsContiguous;
20 type JacobianStorage: RawStorageMut<F, M, N> + Storage<F, M, N> + IsContiguous;
21 type ParameterStorage: RawStorageMut<F, N> + Storage<F, N> + IsContiguous + Clone;
22
23 fn set_params(&mut self, x: &Vector<F, N, Self::ParameterStorage>);
25
26 fn params(&self) -> Vector<F, N, Self::ParameterStorage>;
28
29 fn residuals(&self) -> Option<Vector<F, M, Self::ResidualStorage>>;
31
32 fn jacobian(&self) -> Option<Matrix<F, M, N, Self::JacobianStorage>>;
34}