pub fn forward_solve_lower(l: &[f64], b: &[f64], n: usize) -> Vec<f64>
Forward substitution: solve L * x = b for lower-triangular L (n×n, row-major).