sim_lib_pitch_ratio/
error.rs1use crate::MAX_PRIME_LIMIT;
4
5#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
7pub enum PitchRatioError {
8 #[error("pitch ratios require positive numerator and denominator")]
10 NonPositiveRatio,
11 #[error("pitch ratio integer operation overflowed")]
13 Overflow,
14 #[error("factorization requires a bounded prime limit")]
16 UnboundedFactorization,
17 #[error("prime limit {0} is outside 2..={MAX_PRIME_LIMIT}")]
19 InvalidPrimeLimit(u32),
20 #[error(
22 "ratio has factors above prime limit {prime_limit}: remaining {remaining_numerator}/{remaining_denominator}"
23 )]
24 PrimeLimitExceeded {
25 remaining_numerator: u64,
27 remaining_denominator: u64,
29 prime_limit: u32,
31 },
32 #[error("prime exponent exceeded bounded rank domain")]
34 ExponentOverflow,
35 #[error("factor vector primes and exponents do not match")]
37 InvalidFactorVector,
38 #[error("factor exponent {exponent} is outside {min}..={max}")]
40 RankExponentOutOfRange {
41 exponent: i16,
43 min: i16,
45 max: i16,
47 },
48 #[error("discrete rank error: {0}")]
50 DiscreteRank(String),
51 #[error("ratio chord requires at least one ratio")]
53 EmptyChord,
54 #[error("ratio chord root index {root_index} is outside chord length {len}")]
56 InvalidRootIndex {
57 root_index: usize,
59 len: usize,
61 },
62 #[error("generalized mean exponent must be finite and non-zero")]
64 InvalidMeanExponent,
65}