use optirs_core::optimizers::{Optimizer, LBFGS};
use scirs2_core::ndarray::Array1;
#[allow(dead_code)]
fn main() {
let mut optimizer: LBFGS<f64> = LBFGS::new(0.01);
let mut params = Array1::from_vec(vec![5.0]);
println!("LBFGS optimizer debug - minimizing x^2");
println!("Initial params: {:?}", params);
for i in 0..10 {
let gradients = Array1::from_vec(vec![2.0 * params[0]]);
println!("Iteration {}: gradient = {:?}", i, gradients);
params = optimizer.step(¶ms, &gradients).expect("unwrap failed");
println!(" new params = {:?}", params);
if params[0].is_nan() {
println!(" ERROR: NaN detected!");
break;
}
}
println!("Final params: {:?}", params);
}