pub trait EllipticalParams: RandomVariable {
// Required methods
fn mu(&self) -> &Vec<f64>;
fn sigma_inv_mul(&self, v: Matrix) -> Result<Matrix, DistributionError>;
fn lsigma_cols(&self) -> usize;
fn sample(&self, z: Vec<f64>) -> Result<Vec<f64>, DistributionError>;
// Provided method
fn x_mu(&self, x: &[f64]) -> Result<Vec<f64>, DistributionError> { ... }
}