use core::fmt;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum NttError {
NotPowerOfTwo(usize),
NotPrime(u64),
SizeTooLarge {
n: usize,
max: usize,
},
NoRootOfUnity {
n: usize,
modulus: u64,
},
}
impl fmt::Display for NttError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
NttError::NotPowerOfTwo(n) => {
write!(f, "NTT size {n} is not a power of two")
}
NttError::NotPrime(p) => {
write!(f, "modulus {p} is not a prime number")
}
NttError::SizeTooLarge { n, max } => {
write!(f, "NTT size {n} exceeds maximum {max} for this modulus")
}
NttError::NoRootOfUnity { n, modulus } => {
write!(
f,
"no primitive {n}-th root of unity exists modulo {modulus}"
)
}
}
}
}
#[cfg(feature = "std")]
impl std::error::Error for NttError {}