#[derive(Debug, Clone, PartialEq)]
pub enum Task {
Start,
NewX,
FunctionGradientEval,
LineSearch,
ConvergedGradient,
ConvergedFunction,
StoppedCpuTime,
Stopped,
Restart,
Abnormal,
}
#[derive(Debug, Clone, PartialEq)]
pub enum LbfgsbError {
InvalidInput(String),
SingularSystem,
NonPositiveDefinite,
BadDirection,
LineSearchFailed,
MaxIterations,
Other(String),
}
#[derive(Debug, Clone)]
pub struct OptimizationState {
pub task: Task,
pub function_value: f64,
pub x: Vec<f64>,
pub gradient: Vec<f64>,
pub gradient_norm: f64,
pub iterations: i32,
pub function_evals: i32,
}
pub type LbfgsbResult<T> = Result<T, LbfgsbError>;