1use gamlss_core::ModelError;
2use thiserror::Error;
3
4#[derive(Debug, Clone, PartialEq, Error)]
6pub enum SplineError {
7 #[error("spline input must contain at least one value")]
9 EmptyInput,
10
11 #[error("spline input contains a non-finite value")]
13 NonFiniteValue,
14
15 #[error("spline range must have distinct finite boundaries")]
17 InvalidRange,
18
19 #[error("B-spline basis count {n_basis} must be greater than degree {degree}")]
21 NotEnoughBasis {
22 n_basis: usize,
24 degree: usize,
26 },
27
28 #[error("knot vector must be finite and nondecreasing")]
30 InvalidKnots,
31
32 #[error("spline knot vector must contain at least {min} knots")]
34 NotEnoughKnots {
35 min: usize,
37 },
38
39 #[error("spline period must be finite and positive")]
41 InvalidPeriod,
42
43 #[error("spline row count mismatch: expected {expected}, got {actual}")]
45 RowMismatch {
46 expected: usize,
48 actual: usize,
50 },
51
52 #[error("spline parameter count overflowed")]
54 ParameterOverflow,
55
56 #[error("spline degree {degree} is not supported")]
58 UnsupportedDegree {
59 degree: usize,
61 },
62
63 #[error(transparent)]
65 Model(#[from] ModelError),
66}
67
68#[derive(Debug, Clone, PartialEq, Error)]
70pub enum FourierError {
71 #[error("Fourier input contains a non-finite value")]
73 NonFiniteValue,
74
75 #[error("Fourier period must be finite and positive")]
77 InvalidPeriod,
78
79 #[error("Fourier order must be greater than zero")]
81 InvalidOrder,
82
83 #[error("Fourier coefficient count overflowed")]
85 CoefficientOverflow,
86}