pub fn projected_gradient_step( grad: &[f64], x: &[f64], lr: f64, lower: &[f64], upper: &[f64], ) -> Vec<f64>