pub fn approximate_jacobian<D>(
    jacobian: &mut JacobianMatrix<D>,
    method: UpdateQuasiNewtonMethod,
    iteratives_step_size: &OVector<f64, D>,
    residuals_step_size: &OVector<f64, D>,
    residuals_values_current: &OVector<f64, D>
) -> Result<(), NonInvertibleJacobian>where
    D: DimMin<D, Output = D>,
    DefaultAllocator: Allocator<f64, D>,
    DefaultAllocator: Allocator<f64, U1, D>,
    DefaultAllocator: Allocator<f64, D, D>,
    DefaultAllocator: Allocator<(usize, usize), D>,