fn gaussian_smooth_3d( data: &[f64], nx: usize, ny: usize, nz: usize, sigma: f64, ) -> Vec<f64>
3D Gaussian smoothing using separable 1D convolutions