pub struct TropicalNumber<T>where
T: Float,{ /* private fields */ }Expand description
A tropical number in the max-plus semiring
Represents a value in tropical algebra where:
- Addition is max(a, b)
- Multiplication is a + b
- Zero element is -∞
- Unit element is 0
Generic over any floating-point type supporting the Float trait.
Implementations§
Source§impl<T> TropicalNumber<T>where
T: Float,
impl<T> TropicalNumber<T>where
T: Float,
Sourcepub fn new(value: T) -> TropicalNumber<T>
pub fn new(value: T) -> TropicalNumber<T>
Create a new tropical number
§Example
use amari_tropical::TropicalNumber;
let t = TropicalNumber::new(3.5);
assert_eq!(t.value(), 3.5);Sourcepub fn zero() -> TropicalNumber<T>
pub fn zero() -> TropicalNumber<T>
Create tropical zero (-∞)
The additive identity in tropical algebra
Sourcepub fn neg_infinity() -> TropicalNumber<T>
pub fn neg_infinity() -> TropicalNumber<T>
Alias for zero() - tropical additive identity
Returns negative infinity, the additive identity in tropical algebra
Sourcepub fn tropical_zero() -> TropicalNumber<T>
pub fn tropical_zero() -> TropicalNumber<T>
Alias for zero() - tropical additive identity
Sourcepub fn one() -> TropicalNumber<T>
pub fn one() -> TropicalNumber<T>
Create tropical one (0)
The multiplicative identity in tropical algebra
Sourcepub fn tropical_one() -> TropicalNumber<T>
pub fn tropical_one() -> TropicalNumber<T>
Alias for one() - tropical multiplicative identity
Sourcepub fn is_infinity(&self) -> bool
pub fn is_infinity(&self) -> bool
Check if this value represents infinity (tropical zero)
Alias for is_zero() - checks if value is negative infinity
Sourcepub fn tropical_add(&self, other: &TropicalNumber<T>) -> TropicalNumber<T>
pub fn tropical_add(&self, other: &TropicalNumber<T>) -> TropicalNumber<T>
Tropical addition: max(self, other)
Sourcepub fn tropical_mul(&self, other: &TropicalNumber<T>) -> TropicalNumber<T>
pub fn tropical_mul(&self, other: &TropicalNumber<T>) -> TropicalNumber<T>
Tropical multiplication: self + other
Sourcepub fn tropical_pow(&self, k: T) -> TropicalNumber<T>
pub fn tropical_pow(&self, k: T) -> TropicalNumber<T>
Tropical power: self * k (standard multiplication)
Trait Implementations§
Source§impl<T> Add for TropicalNumber<T>where
T: Float,
impl<T> Add for TropicalNumber<T>where
T: Float,
Source§fn add(self, other: TropicalNumber<T>) -> TropicalNumber<T>
fn add(self, other: TropicalNumber<T>) -> TropicalNumber<T>
Implements tropical addition as max
Source§type Output = TropicalNumber<T>
type Output = TropicalNumber<T>
+ operator.Source§impl<T> Clone for TropicalNumber<T>
impl<T> Clone for TropicalNumber<T>
Source§fn clone(&self) -> TropicalNumber<T>
fn clone(&self) -> TropicalNumber<T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<T> Debug for TropicalNumber<T>
impl<T> Debug for TropicalNumber<T>
Source§impl<T> Display for TropicalNumber<T>
impl<T> Display for TropicalNumber<T>
Source§impl<T> Mul for TropicalNumber<T>where
T: Float,
impl<T> Mul for TropicalNumber<T>where
T: Float,
Source§fn mul(self, other: TropicalNumber<T>) -> TropicalNumber<T>
fn mul(self, other: TropicalNumber<T>) -> TropicalNumber<T>
Implements tropical multiplication as addition
Source§type Output = TropicalNumber<T>
type Output = TropicalNumber<T>
* operator.Source§impl<T> PartialEq for TropicalNumber<T>
impl<T> PartialEq for TropicalNumber<T>
impl<T> Copy for TropicalNumber<T>
impl<T> StructuralPartialEq for TropicalNumber<T>where
T: Float,
Auto Trait Implementations§
impl<T> Freeze for TropicalNumber<T>where
T: Freeze,
impl<T> RefUnwindSafe for TropicalNumber<T>where
T: RefUnwindSafe,
impl<T> Send for TropicalNumber<T>where
T: Send,
impl<T> Sync for TropicalNumber<T>where
T: Sync,
impl<T> Unpin for TropicalNumber<T>where
T: Unpin,
impl<T> UnwindSafe for TropicalNumber<T>where
T: UnwindSafe,
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.