pub struct ElementaryProperties {
pub derivative_rule: Option<DerivativeRule>,
pub antiderivative_rule: Option<AntiderivativeRule>,
pub special_values: Vec<SpecialValue>,
pub identities: Box<Vec<MathIdentity>>,
pub domain_range: Box<DomainRangeData>,
pub periodicity: Option<Expression>,
pub wolfram_name: Option<&'static str>,
}Expand description
Elementary function properties (sin, cos, exp, log)
Performance-optimized layout with hot path data first for cache-friendly access patterns.
Note: Evaluation is handled by direct dispatch through
Expression::evaluate_function_dispatch() for performance.
This struct stores only mathematical properties, not evaluation logic.
Fields§
§derivative_rule: Option<DerivativeRule>Most frequently accessed property (hot path data)
antiderivative_rule: Option<AntiderivativeRule>Antiderivative rule for integration
special_values: Vec<SpecialValue>Special values for exact computation Examples: sin(0) = 0, cos(π/2) = 0, exp(0) = 1
identities: Box<Vec<MathIdentity>>Mathematical identities (boxed to keep struct small) Examples: sin²(x) + cos²(x) = 1, e^(ln(x)) = x
domain_range: Box<DomainRangeData>Domain and range information (cold path data)
periodicity: Option<Expression>Periodicity information (if applicable)
wolfram_name: Option<&'static str>Wolfram Language function name Used for Wolfram formatting without hardcoded matches Example: “sin” → “Sin”, “ln” → “Log”
Trait Implementations§
Source§impl Clone for ElementaryProperties
impl Clone for ElementaryProperties
Source§fn clone(&self) -> ElementaryProperties
fn clone(&self) -> ElementaryProperties
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ElementaryProperties
impl !RefUnwindSafe for ElementaryProperties
impl Send for ElementaryProperties
impl Sync for ElementaryProperties
impl Unpin for ElementaryProperties
impl !UnwindSafe for ElementaryProperties
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)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