1use linfa::Float;
3use thiserror::Error;
4
5pub type Result<T, F> = std::result::Result<T, LinearError<F>>;
6
7#[derive(Error, Debug)]
9#[non_exhaustive]
10pub enum LinearError<F: Float> {
11 #[error("argmin {0}")]
13 Argmin(#[from] argmin::core::Error),
14 #[error(transparent)]
15 BaseCrate(#[from] linfa::Error),
16 #[error("At least one sample needed")]
17 NotEnoughSamples,
18 #[error("At least one target needed")]
19 NotEnoughTargets,
20 #[error("penalty should be positive, but is {0}")]
21 InvalidPenalty(F),
22 #[error("tweedie distribution power should not be in (0, 1), but is {0}")]
23 InvalidTweediePower(F),
24 #[error("some value(s) of y are out of the valid range for power value {0}")]
25 InvalidTargetRange(F),
26 #[error(transparent)]
27 #[cfg(feature = "blas")]
28 LinalgBlasError(#[from] ndarray_linalg::error::LinalgError),
29 #[error(transparent)]
30 LinalgError(#[from] linfa_linalg::LinalgError),
31}