pub enum SpecialError {
ComputationError(String),
DomainError(String),
ValueError(String),
NotImplementedError(String),
ConvergenceError(String),
OverflowError(String),
GpuNotAvailable(String),
CoreError(CoreError),
}Expand description
Error types for special function computations
This enum provides detailed error information for different failure modes that can occur during special function computations. Each variant includes contextual information to help users understand and resolve issues.
Variants§
ComputationError(String)
Generic computation error for unexpected failures
Used when a computation fails for reasons not covered by more specific error types. Often indicates internal algorithmic issues or unexpected edge cases.
§Examples
- Numerical integration failure
- Memory allocation failure during computation
- Internal algorithm assertion failure
DomainError(String)
Mathematical domain error - input outside the valid mathematical domain
Thrown when function arguments are outside the mathematical domain where the function is defined. This follows mathematical conventions strictly.
§Examples
gamma(-1)- gamma function undefined at negative integerssqrt(-1)for real-valued square rootlog(0)orlog(negative)for real logarithmasin(2)- arcsine undefined outside [-1, 1]
ValueError(String)
Input validation error for invalid parameter values
Used for parameter validation failures where inputs don’t meet function requirements (but may be mathematically valid elsewhere).
§Examples
- Negative array dimensions
- Invalid tolerance parameters (e.g., negative tolerance)
- Array shape mismatches
- Invalid enumeration values
NotImplementedError(String)
Feature or function not yet implemented
Indicates that a requested feature exists in the API but hasn’t been implemented yet. This is used during development phases.
§Examples
- Complex number support for certain functions
- Specific algorithm variants
- Platform-specific optimizations
ConvergenceError(String)
Iterative algorithm convergence failure
Thrown when iterative algorithms fail to converge within specified tolerances or iteration limits. Often indicates numerical instability or inappropriate algorithm parameters.
§Examples
- Newton-Raphson method divergence
- Series expansion truncation errors
- Root-finding algorithm failure
- Integration quadrature non-convergence
OverflowError(String)
Numerical overflow - result too large to represent
Occurs when mathematical operations produce results that exceed the representable range of floating-point numbers (typically > 1.8e308 for f64).
§Examples
gamma(1000)- extremely large gamma function valuesexp(1000)- exponential overflow- Factorial of large numbers
- Product operations with many large terms
GpuNotAvailable(String)
GPU acceleration unavailable, computation falls back to CPU
Indicates that GPU computation was requested but is not available. This is often a non-fatal error where computation continues on CPU, but can be used to inform users about performance implications.
§Examples
- No GPU hardware available
- GPU drivers not installed
- CUDA/OpenCL runtime unavailable
- GPU memory exhaustion
CoreError(CoreError)
Error propagated from scirs2-core dependency
Wraps errors from the core SciRS2 infrastructure. These typically relate to low-level operations like SIMD, parallel processing, or hardware acceleration.
Trait Implementations§
Source§impl Debug for SpecialError
impl Debug for SpecialError
Source§impl Display for SpecialError
impl Display for SpecialError
Source§impl Error for SpecialError
impl Error for SpecialError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
Source§impl From<CoreError> for SpecialError
impl From<CoreError> for SpecialError
Source§impl From<Error> for SpecialError
Convert from standard library IO errors
impl From<Error> for SpecialError
Convert from standard library IO errors
Automatically converts std::io::Error into SpecialError::ComputationError
for handling file I/O failures during computation or data loading.
Source§impl From<ParseFloatError> for SpecialError
Convert from standard library float parsing errors
impl From<ParseFloatError> for SpecialError
Convert from standard library float parsing errors
Automatically converts ParseFloatError into SpecialError::ValueError
for seamless error propagation when parsing numerical input.
Source§fn from(err: ParseFloatError) -> Self
fn from(err: ParseFloatError) -> Self
Auto Trait Implementations§
impl Freeze for SpecialError
impl RefUnwindSafe for SpecialError
impl Send for SpecialError
impl Sync for SpecialError
impl Unpin for SpecialError
impl UnwindSafe for SpecialError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more